openstack_cli_load_balancer/
v2.rs1use clap::{Parser, Subcommand};
18
19use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
20use openstack_sdk::{AsyncOpenStack, types::ServiceType};
21
22pub mod amphorae;
23pub mod availability_zone;
24pub mod availability_zone_profile;
25pub mod flavor;
26pub mod flavor_profile;
27pub mod healthmonitor;
28pub mod l7policy;
29pub mod listener;
30pub mod loadbalancer;
31pub mod pool;
32pub mod provider;
33pub mod quota;
34pub mod version;
35
36#[derive(Parser)]
38pub struct LoadBalancerCommand {
39 #[command(subcommand)]
41 command: LoadBalancerCommands,
42}
43
44#[allow(missing_docs)]
46#[derive(Subcommand)]
47pub enum LoadBalancerCommands {
48 Amphorae(amphorae::AmphoraeCommand),
49 AvailabilityZone(availability_zone::AvailabilityZoneCommand),
50 AvailabilityZoneProfile(availability_zone_profile::AvailabilityZoneProfileCommand),
51 Flavor(flavor::FlavorCommand),
52 FlavorProfile(flavor_profile::FlavorProfileCommand),
53 Healthmonitor(healthmonitor::HealthmonitorCommand),
54 L7policy(l7policy::L7PolicyCommand),
55 Listener(listener::ListenerCommand),
56 Loadbalancer(loadbalancer::LoadbalancerCommand),
57 Pool(pool::PoolCommand),
58 Provider(provider::ProviderCommand),
59 Quota(quota::QuotaCommand),
60 Version(version::VersionCommand),
61}
62
63impl LoadBalancerCommand {
64 pub async fn take_action<C: CliArgs>(
66 &self,
67 parsed_args: &C,
68 session: &mut AsyncOpenStack,
69 ) -> Result<(), OpenStackCliError> {
70 session
71 .discover_service_endpoint(&ServiceType::LoadBalancer)
72 .await?;
73
74 match &self.command {
75 LoadBalancerCommands::Amphorae(cmd) => cmd.take_action(parsed_args, session).await,
76 LoadBalancerCommands::AvailabilityZone(cmd) => {
77 cmd.take_action(parsed_args, session).await
78 }
79 LoadBalancerCommands::AvailabilityZoneProfile(cmd) => {
80 cmd.take_action(parsed_args, session).await
81 }
82 LoadBalancerCommands::Flavor(cmd) => cmd.take_action(parsed_args, session).await,
83 LoadBalancerCommands::FlavorProfile(cmd) => cmd.take_action(parsed_args, session).await,
84 LoadBalancerCommands::Healthmonitor(cmd) => cmd.take_action(parsed_args, session).await,
85 LoadBalancerCommands::L7policy(cmd) => cmd.take_action(parsed_args, session).await,
86 LoadBalancerCommands::Listener(cmd) => cmd.take_action(parsed_args, session).await,
87 LoadBalancerCommands::Loadbalancer(cmd) => cmd.take_action(parsed_args, session).await,
88 LoadBalancerCommands::Pool(cmd) => cmd.take_action(parsed_args, session).await,
89 LoadBalancerCommands::Provider(cmd) => cmd.take_action(parsed_args, session).await,
90 LoadBalancerCommands::Quota(cmd) => cmd.take_action(parsed_args, session).await,
91 LoadBalancerCommands::Version(cmd) => cmd.take_action(parsed_args, session).await,
92 }
93 }
94}