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