use clap::{Parser, Subcommand};
use openstack_sdk::{AsyncOpenStack, types::ServiceType};
use crate::{Cli, OpenStackCliError};
pub mod certificate;
pub mod cluster;
pub mod clustertemplate;
pub mod federation;
pub mod mservice;
pub mod quota;
pub mod stat;
pub mod version;
#[derive(Parser)]
pub struct ContainerInfrastructureCommand {
#[command(subcommand)]
command: ContainerInfrastructureCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum ContainerInfrastructureCommands {
Certificate(Box<certificate::CertificateCommand>),
Cluster(Box<cluster::ClusterCommand>),
Clustertemplate(Box<clustertemplate::ClustertemplateCommand>),
Federation(Box<federation::FederationCommand>),
#[command(alias = "mservice")]
Service(Box<mservice::ServiceCommand>),
Quota(Box<quota::QuotaCommand>),
Stat(Box<stat::StatCommand>),
Version(Box<version::VersionCommand>),
}
impl ContainerInfrastructureCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
session
.discover_service_endpoint(&ServiceType::ContainerInfrastructureManagement)
.await?;
match &self.command {
ContainerInfrastructureCommands::Certificate(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Cluster(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Clustertemplate(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Federation(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Service(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Quota(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Stat(cmd) => {
cmd.take_action(parsed_args, session).await
}
ContainerInfrastructureCommands::Version(cmd) => {
cmd.take_action(parsed_args, session).await
}
}
}
}