use clap::{Parser, Subcommand};
use openstack_sdk::{AsyncOpenStack, types::ServiceType};
use crate::{Cli, OpenStackCliError};
pub mod limit;
pub mod quota;
pub mod recordset;
pub mod reverse;
pub mod zone;
#[derive(Parser)]
pub struct DnsCommand {
#[command(subcommand)]
command: DnsCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum DnsCommands {
Limit(Box<limit::LimitCommand>),
Quota(Box<quota::QuotaCommand>),
Recordset(Box<recordset::RecordsetCommand>),
Reverse(Box<reverse::ReverseCommand>),
Zone(Box<zone::ZoneCommand>),
}
impl DnsCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
session.discover_service_endpoint(&ServiceType::Dns).await?;
match &self.command {
DnsCommands::Limit(cmd) => cmd.take_action(parsed_args, session).await,
DnsCommands::Quota(cmd) => cmd.take_action(parsed_args, session).await,
DnsCommands::Recordset(cmd) => cmd.take_action(parsed_args, session).await,
DnsCommands::Reverse(cmd) => cmd.take_action(parsed_args, session).await,
DnsCommands::Zone(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}