use clap::{Parser, Subcommand};
use openstack_sdk::{AsyncOpenStack, types::ServiceType};
use crate::{Cli, OpenStackCliError};
pub mod amphorae;
pub mod availability_zone;
pub mod availability_zone_profile;
pub mod flavor;
pub mod flavor_profile;
pub mod healthmonitor;
pub mod l7policy;
pub mod listener;
pub mod loadbalancer;
pub mod pool;
pub mod provider;
pub mod quota;
pub mod version;
#[derive(Parser)]
pub struct LoadBalancerCommand {
#[command(subcommand)]
command: LoadBalancerCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum LoadBalancerCommands {
Amphorae(amphorae::AmphoraeCommand),
AvailabilityZone(availability_zone::AvailabilityZoneCommand),
AvailabilityZoneProfile(availability_zone_profile::AvailabilityZoneProfileCommand),
Flavor(flavor::FlavorCommand),
FlavorProfile(flavor_profile::FlavorProfileCommand),
Healthmonitor(healthmonitor::HealthmonitorCommand),
L7policy(l7policy::L7PolicyCommand),
Listener(listener::ListenerCommand),
Loadbalancer(loadbalancer::LoadbalancerCommand),
Pool(pool::PoolCommand),
Provider(provider::ProviderCommand),
Quota(quota::QuotaCommand),
Version(version::VersionCommand),
}
impl LoadBalancerCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
session
.discover_service_endpoint(&ServiceType::LoadBalancer)
.await?;
match &self.command {
LoadBalancerCommands::Amphorae(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::AvailabilityZone(cmd) => {
cmd.take_action(parsed_args, session).await
}
LoadBalancerCommands::AvailabilityZoneProfile(cmd) => {
cmd.take_action(parsed_args, session).await
}
LoadBalancerCommands::Flavor(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::FlavorProfile(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Healthmonitor(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::L7policy(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Listener(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Loadbalancer(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Pool(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Provider(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Quota(cmd) => cmd.take_action(parsed_args, session).await,
LoadBalancerCommands::Version(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}