openstack_cli_block_storage/v3/
snapshot.rs1use clap::{Parser, Subcommand};
19
20use openstack_cli_core::{cli::CliArgs, error::OpenStackCliError};
21use openstack_sdk::AsyncOpenStack;
22
23pub mod create;
24pub mod delete;
25pub mod list;
26pub mod os_force_delete;
27pub mod os_reset_status;
28pub mod os_unmanage;
29pub mod os_update_snapshot_status;
30pub mod set;
31pub mod show;
32
33#[derive(Parser)]
57pub struct SnapshotCommand {
58 #[command(subcommand)]
60 command: SnapshotCommands,
61}
62
63#[allow(missing_docs)]
65#[derive(Subcommand)]
66pub enum SnapshotCommands {
67 Create(Box<create::SnapshotCommand>),
68 Delete(Box<delete::SnapshotCommand>),
69 ForceDelete(Box<os_force_delete::SnapshotCommand>),
70 List(Box<list::SnapshotsCommand>),
71 ResetStatus(Box<os_reset_status::SnapshotCommand>),
72 Set(Box<set::SnapshotCommand>),
73 Show(Box<show::SnapshotCommand>),
74 Unmanage(Box<os_unmanage::SnapshotCommand>),
75 UpdateStatus(Box<os_update_snapshot_status::SnapshotCommand>),
76}
77
78impl SnapshotCommand {
79 pub async fn take_action<C: CliArgs>(
81 &self,
82 parsed_args: &C,
83 session: &mut AsyncOpenStack,
84 ) -> Result<(), OpenStackCliError> {
85 match &self.command {
86 SnapshotCommands::Create(cmd) => cmd.take_action(parsed_args, session).await,
87 SnapshotCommands::Delete(cmd) => cmd.take_action(parsed_args, session).await,
88 SnapshotCommands::ForceDelete(cmd) => cmd.take_action(parsed_args, session).await,
89 SnapshotCommands::List(cmd) => cmd.take_action(parsed_args, session).await,
90 SnapshotCommands::ResetStatus(cmd) => cmd.take_action(parsed_args, session).await,
91 SnapshotCommands::Set(cmd) => cmd.take_action(parsed_args, session).await,
92 SnapshotCommands::Show(cmd) => cmd.take_action(parsed_args, session).await,
93 SnapshotCommands::Unmanage(cmd) => cmd.take_action(parsed_args, session).await,
94 SnapshotCommands::UpdateStatus(cmd) => cmd.take_action(parsed_args, session).await,
95 }
96 }
97}