use clap::{Parser, Subcommand};
use openstack_sdk::AsyncOpenStack;
use crate::{Cli, OpenStackCliError};
pub mod alias_bandwidth_limit_rule;
pub mod alias_dscp_marking_rule;
pub mod alias_minimum_bandwidth_rule;
pub mod alias_minimum_packet_rate_rule;
pub mod policy;
pub mod rule_type;
#[derive(Parser)]
pub struct QosCommand {
#[command(subcommand)]
command: QosCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum QosCommands {
AliasBandwidthLimitRule(Box<alias_bandwidth_limit_rule::AliasBandwidthLimitRuleCommand>),
AliasDscpMarkingRule(Box<alias_dscp_marking_rule::AliasDscpMarkingRuleCommand>),
AliasMinimumBandwidthRule(Box<alias_minimum_bandwidth_rule::AliasMinimumBandwidthRuleCommand>),
AliasMinimumPacketRateRule(
Box<alias_minimum_packet_rate_rule::AliasMinimumPacketRateRuleCommand>,
),
Policy(Box<policy::PolicyCommand>),
RuleType(Box<rule_type::RuleTypeCommand>),
}
impl QosCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
match &self.command {
QosCommands::AliasBandwidthLimitRule(cmd) => {
cmd.take_action(parsed_args, session).await
}
QosCommands::AliasDscpMarkingRule(cmd) => cmd.take_action(parsed_args, session).await,
QosCommands::AliasMinimumBandwidthRule(cmd) => {
cmd.take_action(parsed_args, session).await
}
QosCommands::AliasMinimumPacketRateRule(cmd) => {
cmd.take_action(parsed_args, session).await
}
QosCommands::Policy(cmd) => cmd.take_action(parsed_args, session).await,
QosCommands::RuleType(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}