openstack_cli_network/v2/qos/
policy.rs1use clap::{Parser, Subcommand};
18
19use openstack_sdk::AsyncOpenStack;
20
21use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
22
23pub mod bandwidth_limit_rule;
24pub mod create;
25pub mod delete;
26pub mod dscp_marking_rule;
27pub mod list;
28pub mod minimum_bandwidth_rule;
29pub mod minimum_packet_rate_rule;
30pub mod set;
31pub mod show;
32
33#[derive(Parser)]
37pub struct PolicyCommand {
38 #[command(subcommand)]
40 command: PolicyCommands,
41}
42
43#[allow(missing_docs)]
45#[derive(Subcommand)]
46pub enum PolicyCommands {
47 BandwidthLimitRule(Box<bandwidth_limit_rule::BandwidthLimitRuleCommand>),
48 Create(Box<create::PolicyCommand>),
49 Delete(delete::PolicyCommand),
50 DscpMarkingRule(dscp_marking_rule::DscpMarkingRuleCommand),
51 List(Box<list::PoliciesCommand>),
52 MinimumBandwidthRule(Box<minimum_bandwidth_rule::MinimumBandwidthRuleCommand>),
53 MinimumPacketRateRule(Box<minimum_packet_rate_rule::MinimumPacketRateRuleCommand>),
54 Set(Box<set::PolicyCommand>),
55 Show(Box<show::PolicyCommand>),
56}
57
58impl PolicyCommand {
59 pub async fn take_action<C: CliArgs>(
61 &self,
62 parsed_args: &C,
63 session: &mut AsyncOpenStack,
64 ) -> Result<(), OpenStackCliError> {
65 match &self.command {
66 PolicyCommands::BandwidthLimitRule(cmd) => cmd.take_action(parsed_args, session).await,
67 PolicyCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
68 PolicyCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
69 PolicyCommands::DscpMarkingRule(cmd) => cmd.take_action(parsed_args, session).await,
70 PolicyCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
71 PolicyCommands::MinimumBandwidthRule(cmd) => {
72 cmd.take_action(parsed_args, session).await
73 }
74 PolicyCommands::MinimumPacketRateRule(cmd) => {
75 cmd.take_action(parsed_args, session).await
76 }
77 PolicyCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
78 PolicyCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
79 }
80 }
81}