openstack_cli_compute/v2/server/
metadata.rs1use clap::{Parser, Subcommand};
17
18use openstack_sdk::AsyncOpenStack;
19
20use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
21
22mod create;
23mod delete;
24mod list;
25mod replace;
26mod set;
27mod show;
28
29#[derive(Parser)]
35#[command(about = "Server metadata")]
36pub struct MetadataCommand {
37 #[command(subcommand)]
39 command: MetadataCommands,
40}
41
42#[allow(missing_docs)]
44#[derive(Subcommand)]
45pub enum MetadataCommands {
46 Create(Box<create::MetadataCommand>),
47 Delete(Box<delete::MetadataCommand>),
48 List(Box<list::MetadatasCommand>),
49 Replace(Box<replace::MetadataCommand>),
50 Set(Box<set::MetadataCommand>),
51 Show(Box<show::MetadataCommand>),
52}
53
54impl MetadataCommand {
55 pub async fn take_action<C: CliArgs>(
57 &self,
58 parsed_args: &C,
59 session: &mut AsyncOpenStack,
60 ) -> Result<(), OpenStackCliError> {
61 match &self.command {
62 MetadataCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
63 MetadataCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
64 MetadataCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
65 MetadataCommands::Replace(cmd) => cmd.take_action(parsed_args, session).await,
66 MetadataCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
67 MetadataCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
68 }
69 }
70}