openstack_cli_image/v2/
image.rs1use clap::{Parser, Subcommand};
18
19use openstack_sdk::AsyncOpenStack;
20
21use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
22
23pub mod create;
24pub mod deactivate;
25pub mod delete;
26pub mod file {
28 pub mod download;
29 pub mod upload;
30}
31pub mod list;
32pub mod patch;
33pub mod reactivate;
34pub mod show;
35
36#[derive(Parser)]
38pub struct ImageCommand {
39 #[command(subcommand)]
41 command: ImageCommands,
42}
43
44#[allow(missing_docs)]
46#[derive(Subcommand)]
47pub enum ImageCommands {
48 Create(create::ImageCommand),
49 #[command(about = "Deactivate image")]
53 Deactivate(deactivate::ImageCommand),
54 Delete(delete::ImageCommand),
55 Download(Box<file::download::FileCommand>),
56 List(Box<list::ImagesCommand>),
57 #[command(about = "Reactivate image")]
61 Reactivate(reactivate::ImageCommand),
62 Set(patch::ImageCommand),
63 Show(show::ImageCommand),
64 Upload(file::upload::FileCommand),
65}
66
67impl ImageCommand {
68 pub async fn take_action<C: CliArgs>(
70 &self,
71 parsed_args: &C,
72 session: &mut AsyncOpenStack,
73 ) -> Result<(), OpenStackCliError> {
74 match &self.command {
75 ImageCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
76 ImageCommands::Deactivate(cmd) => cmd.take_action(parsed_args, session).await,
77 ImageCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
78 ImageCommands::Download(cmd) => cmd.take_action(parsed_args, session).await,
79 ImageCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
80 ImageCommands::Reactivate(cmd) => cmd.take_action(parsed_args, session).await,
81 ImageCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
82 ImageCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
83 ImageCommands::Upload(cmd) => cmd.take_action(parsed_args, session).await,
84 }
85 }
86}