openstack_cli_dns/v2/
zone.rs1use clap::{Parser, Subcommand};
17
18use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
19use openstack_sdk::AsyncOpenStack;
20
21pub mod create;
22pub mod delete;
23pub mod list;
24pub mod nameserver;
25pub mod recordset;
26pub mod set;
27pub mod show;
28
29#[derive(Parser)]
31pub struct ZoneCommand {
32 #[command(subcommand)]
34 command: ZoneCommands,
35}
36
37#[allow(missing_docs)]
39#[derive(Subcommand)]
40pub enum ZoneCommands {
41 Create(create::ZoneCommand),
42 Delete(delete::ZoneCommand),
43 List(list::ZonesCommand),
44 Nameserver(nameserver::NameserverCommand),
45 Recordset(recordset::RecordsetCommand),
46 Show(show::ZoneCommand),
47 Set(set::ZoneCommand),
48}
49
50impl ZoneCommand {
51 pub async fn take_action<C: CliArgs>(
53 &self,
54 parsed_args: &C,
55 session: &mut AsyncOpenStack,
56 ) -> Result<(), OpenStackCliError> {
57 match &self.command {
58 ZoneCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
59 ZoneCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
60 ZoneCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
61 ZoneCommands::Nameserver(cmd) => cmd.take_action(parsed_args, session).await,
62 ZoneCommands::Recordset(cmd) => cmd.take_action(parsed_args, session).await,
63 ZoneCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
64 ZoneCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
65 }
66 }
67}