use clap::{Parser, Subcommand};
use openstack_sdk::AsyncOpenStack;
use crate::{Cli, OpenStackCliError};
pub mod add_host;
pub mod create_21;
pub mod delete;
pub mod list;
pub mod image {
pub mod cache_281;
}
pub mod remove_host;
pub mod set_21;
pub mod set_metadata;
pub mod show;
#[derive(Parser)]
pub struct AggregateCommand {
#[command(subcommand)]
command: AggregateCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum AggregateCommands {
#[command(about = "Add Host")]
AddHost(add_host::AggregateCommand),
#[command(visible_alias = "create")]
Create21(create_21::AggregateCommand),
CacheImage(image::cache_281::ImageCommand),
Delete(delete::AggregateCommand),
List(list::AggregatesCommand),
#[command(about = "Remove Host")]
RemoveHost(remove_host::AggregateCommand),
Show(show::AggregateCommand),
#[command(visible_alias = "set")]
Set21(set_21::AggregateCommand),
#[command(about = "Create Or Update Aggregate Metadata")]
SetMetadata(set_metadata::AggregateCommand),
}
impl AggregateCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
match &self.command {
AggregateCommands::AddHost(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::Create21(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::CacheImage(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::RemoveHost(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::Set21(cmd) => cmd.take_action(parsed_args, session).await,
AggregateCommands::SetMetadata(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}