use clap::{Parser, Subcommand};
use openstack_sdk::AsyncOpenStack;
use crate::{Cli, OpenStackCliError};
pub mod auth;
pub mod credential;
pub mod domain;
pub mod endpoint;
pub mod group;
pub mod limit;
pub mod os_ep_filter;
pub mod os_federation;
pub mod project;
pub mod region;
pub mod registered_limit;
pub mod role;
pub mod role_assignment;
pub mod role_inference;
pub mod service;
pub mod user;
#[derive(Parser)]
pub struct IdentityCommand {
#[command(subcommand)]
command: IdentityCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum IdentityCommands {
Auth(auth::AuthCommand),
AccessRule(user::access_rule::AccessRuleCommand),
ApplicationCredential(user::application_credential::ApplicationCredentialCommand),
Credential(credential::CredentialCommand),
Domain(domain::DomainCommand),
Endpoint(endpoint::EndpointCommand),
EndpointFilter(os_ep_filter::EndpointFilterCommand),
Federation(os_federation::FederationCommand),
Group(group::GroupCommand),
Limit(limit::LimitCommand),
Project(project::ProjectCommand),
Region(region::RegionCommand),
RegisteredLimit(Box<registered_limit::RegisteredLimitCommand>),
Role(role::RoleCommand),
RoleAssignment(role_assignment::RoleAssignmentCommand),
RoleInference(role_inference::RoleInferenceCommand),
Service(service::ServiceCommand),
User(user::UserCommand),
}
impl IdentityCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
match &self.command {
IdentityCommands::Auth(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::AccessRule(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::ApplicationCredential(cmd) => {
cmd.take_action(parsed_args, session).await
}
IdentityCommands::Credential(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Domain(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Endpoint(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::EndpointFilter(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Federation(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Group(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Limit(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Project(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Region(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::RegisteredLimit(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::RoleAssignment(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::RoleInference(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Role(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::Service(cmd) => cmd.take_action(parsed_args, session).await,
IdentityCommands::User(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}