use crate::common::app_context::AppContext;
use crate::http_client::{AddKernelParametersRequest, MantaClient};
use crate::output::action_result;
use anyhow::Error;
pub struct ExecParams<'a> {
pub kernel_params: &'a str,
pub hosts_expression: Option<&'a str>,
pub hsm_group: Option<&'a str>,
pub overwrite: bool,
pub dry_run: bool,
pub output: Option<&'a str>,
}
pub async fn exec(
ctx: &AppContext<'_>,
token: &str,
p: ExecParams<'_>,
) -> Result<(), Error> {
let xnames_expression = if p.hsm_group.is_none() {
p.hosts_expression
} else {
None
};
let result = MantaClient::from_app_ctx(ctx)?
.add_kernel_parameters(
token,
&AddKernelParametersRequest {
params: p.kernel_params.to_string(),
xnames_expression: xnames_expression.map(str::to_string),
hsm_group: p.hsm_group.map(str::to_string),
overwrite: p.overwrite,
project_sbps: false,
dry_run: p.dry_run,
},
)
.await?;
if p.dry_run {
action_result::print_with_data(
"Dry-run enabled. No changes persisted into the system.",
&result,
p.output,
)?;
} else {
action_result::print("Kernel parameters added.", p.output)?;
}
Ok(())
}