elasticctl_api/rules_ops/
observed.rs1use super::*;
2use crate::observe::{Observed, Preconditions};
3
4pub async fn plan_set_enabled_observed(
5 t: &Transport,
6 selectors: &[String],
7 enable: bool,
8) -> Result<(MutationPlan, Preconditions)> {
9 let resolved = resolve_targets(t, selectors).await?;
10 let seen = Preconditions(
11 resolved
12 .iter()
13 .map(|(id, rule)| Observed {
14 object: "rule",
15 id: id.clone(),
16 state: Some(normalize::canonical(rule).into_value()),
17 })
18 .collect(),
19 );
20 let preview_details = resolved
21 .iter()
22 .map(|(id, r)| {
23 let from = if r.enabled() { "enabled" } else { "disabled" };
24 let to = if enable { "enabled" } else { "disabled" };
25 format!("{id} {} {from} -> {to}", r.name())
26 })
27 .collect();
28 let verb = if enable { "Enable" } else { "Disable" };
29 Ok((
30 MutationPlan {
31 preview_action: format!("{verb} {} rule(s)", resolved.len()),
32 preview_details,
33 targets: resolved.into_iter().map(|(id, _)| id).collect(),
34 },
35 seen,
36 ))
37}