openstack_cli_block_storage/v3/
qos_spec.rs1use clap::{Parser, Subcommand};
18
19use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
20use openstack_sdk::AsyncOpenStack;
21
22pub mod associate;
23pub mod association;
24pub mod create;
25pub mod delete;
26pub mod delete_keys;
27pub mod disassociate;
28pub mod disassociate_all;
29pub mod list;
30pub mod set;
31pub mod show;
32
33#[derive(Parser)]
40pub struct QosSpecCommand {
41 #[command(subcommand)]
43 command: QosSpecCommands,
44}
45
46#[allow(missing_docs)]
48#[derive(Subcommand)]
49pub enum QosSpecCommands {
50 Association(Box<association::AssociationCommand>),
51 Associate(Box<associate::QosSpecCommand>),
52 Create(Box<create::QosSpecCommand>),
53 Delete(Box<delete::QosSpecCommand>),
54 DeleteKeys(Box<delete_keys::QosSpecCommand>),
55 Disassociate(Box<disassociate::QosSpecCommand>),
56 DisassociateAll(Box<disassociate_all::QosSpecCommand>),
57 List(Box<list::QosSpecsCommand>),
58 Set(Box<set::QosSpecCommand>),
59 Show(Box<show::QosSpecCommand>),
60}
61
62impl QosSpecCommand {
63 pub async fn take_action<C: CliArgs>(
65 &self,
66 parsed_args: &C,
67 session: &mut AsyncOpenStack,
68 ) -> Result<(), OpenStackCliError> {
69 match &self.command {
70 QosSpecCommands::Association(cmd) => cmd.take_action(parsed_args, session).await,
71 QosSpecCommands::Associate(cmd) => cmd.take_action(parsed_args, session).await,
72 QosSpecCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
73 QosSpecCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
74 QosSpecCommands::DeleteKeys(cmd) => cmd.take_action(parsed_args, session).await,
75 QosSpecCommands::Disassociate(cmd) => cmd.take_action(parsed_args, session).await,
76 QosSpecCommands::DisassociateAll(cmd) => cmd.take_action(parsed_args, session).await,
77 QosSpecCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
78 QosSpecCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
79 QosSpecCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
80 }
81 }
82}