use clap::{Parser, Subcommand};
use crate::{Cli, OpenStackCliError};
use openstack_sdk::AsyncOpenStack;
pub mod create_313;
pub mod create_from_src_314;
pub mod delete_313;
pub mod disable_replication_338;
pub mod enable_replication_338;
pub mod failover_replication_338;
pub mod list;
pub mod list_replication_targets_338;
pub mod reset_status_320;
pub mod set_313;
pub mod show;
#[derive(Parser)]
pub struct GroupCommand {
#[command(subcommand)]
command: GroupCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum GroupCommands {
#[command(visible_alias = "create")]
Create313(Box<create_313::GroupCommand>),
#[command(visible_alias = "create_from_src")]
CreateFromSrc314(Box<create_from_src_314::GroupCommand>),
#[command(visible_alias = "delete")]
Delete313(Box<delete_313::GroupCommand>),
#[command(visible_alias = "disable-replication")]
DisableReplication338(Box<disable_replication_338::GroupCommand>),
#[command(visible_alias = "enable-replication")]
EnableReplication338(Box<enable_replication_338::GroupCommand>),
#[command(visible_alias = "failover-replication")]
FailoverReplication338(Box<failover_replication_338::GroupCommand>),
List(Box<list::GroupsCommand>),
#[command(visible_alias = "list-replication-targets")]
ListReplicationTargets338(Box<list_replication_targets_338::GroupCommand>),
#[command(visible_alias = "reset-status")]
ResetStatus320(Box<reset_status_320::GroupCommand>),
Set313(Box<set_313::GroupCommand>),
Show(Box<show::GroupCommand>),
}
impl GroupCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
match &self.command {
GroupCommands::Create313(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::CreateFromSrc314(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::Delete313(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::DisableReplication338(cmd) => {
cmd.take_action(parsed_args, session).await
}
GroupCommands::EnableReplication338(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::FailoverReplication338(cmd) => {
cmd.take_action(parsed_args, session).await
}
GroupCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::ListReplicationTargets338(cmd) => {
cmd.take_action(parsed_args, session).await
}
GroupCommands::ResetStatus320(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::Set313(cmd) => cmd.take_action(parsed_args, session).await,
GroupCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}