use clap::{Parser, Subcommand};
use openstack_sdk::AsyncOpenStack;
use crate::{Cli, OpenStackCliError};
pub mod namespace;
pub mod namespaces;
pub mod object;
pub mod objects;
pub mod properties;
pub mod property;
pub mod resource_type;
pub mod resource_types;
pub mod tag;
pub mod tags;
#[derive(Parser)]
pub struct MetadefCommand {
#[command(subcommand)]
command: MetadefCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum MetadefCommands {
Namespace(namespace::NamespaceCommand),
Namespaces(namespaces::NamespacesCommand),
Object(object::ObjectCommand),
Objects(objects::ObjectsCommand),
Properties(properties::PropertiesCommand),
Property(property::PropertyCommand),
ResourceType(resource_type::ResourceTypeCommand),
ResourceTypes(resource_types::ResourceTypesCommand),
Tag(tag::TagCommand),
Tags(tags::TagsCommand),
}
impl MetadefCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
match &self.command {
MetadefCommands::Namespace(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Namespaces(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Object(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Objects(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Properties(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Property(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::ResourceType(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::ResourceTypes(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Tag(cmd) => cmd.take_action(parsed_args, session).await,
MetadefCommands::Tags(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}