openstack_cli_image/
v2.rs1use clap::{Parser, Subcommand};
18
19use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
20use openstack_sdk::{AsyncOpenStack, types::ServiceType};
21
22pub mod image;
23pub mod metadef;
24pub mod schema;
25
26#[derive(Parser)]
28pub struct ImageCommand {
29 #[command(subcommand)]
31 command: ImageCommands,
32}
33
34#[allow(missing_docs)]
36#[derive(Subcommand)]
37pub enum ImageCommands {
38 Image(Box<image::ImageCommand>),
40 Metadef(Box<metadef::MetadefCommand>),
42 Schema(Box<schema::SchemaCommand>),
44}
45
46impl ImageCommand {
47 pub async fn take_action<C: CliArgs>(
49 &self,
50 parsed_args: &C,
51 session: &mut AsyncOpenStack,
52 ) -> Result<(), OpenStackCliError> {
53 session
54 .discover_service_endpoint(&ServiceType::Image)
55 .await?;
56
57 match &self.command {
58 ImageCommands::Image(cmd) => cmd.take_action(parsed_args, session).await,
59 ImageCommands::Metadef(cmd) => cmd.take_action(parsed_args, session).await,
60 ImageCommands::Schema(cmd) => cmd.take_action(parsed_args, session).await,
61 }
62 }
63}