Skip to content

Commit 0cebbf1

Browse files
committed
fix: make the oem lockdown_status function more efficient
Signed-off-by: Krish Dandiwala <kdandiwala@nvidia.com>
1 parent 0d06e0a commit 0cebbf1

1 file changed

Lines changed: 22 additions & 33 deletions

File tree

src/ami.rs

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -65,41 +65,30 @@ impl Bmc {
6565

6666
/// LenovoAMI-specific lockdown status via OEM ConfigBMC endpoint.
6767
async fn lockdown_status_lenovo_ami(&self) -> Result<Status, RedfishError> {
68-
let url = "Managers/Self/Oem/ConfigBMC";
69-
let (_status, body): (_, serde_json::Value) = self.s.client.get(url).await?;
70-
71-
let lockout_host = body
72-
.get("LockoutHostControl")
73-
.and_then(|v| v.as_str())
74-
.unwrap_or("unknown");
75-
let lockout_bios_var = body
76-
.get("LockoutBiosVariableWriteMode")
77-
.and_then(|v| v.as_str())
78-
.unwrap_or("unknown");
79-
let lockdown_settings = body
80-
.get("LockdownBiosSettingsChange")
81-
.and_then(|v| v.as_str())
82-
.unwrap_or("unknown");
83-
let lockdown_upgrade = body
84-
.get("LockdownBiosUpgradeDowngrade")
85-
.and_then(|v| v.as_str())
86-
.unwrap_or("unknown");
68+
const LOCKDOWN_FIELDS: &[&str] = &[
69+
"LockoutHostControl",
70+
"LockoutBiosVariableWriteMode",
71+
"LockdownBiosSettingsChange",
72+
"LockdownBiosUpgradeDowngrade",
73+
];
8774

88-
let message = format!(
89-
"lockout_host_control={lockout_host}, \
90-
lockout_bios_variable_write={lockout_bios_var}, \
91-
lockdown_bios_settings={lockdown_settings}, \
92-
lockdown_bios_upgrade={lockdown_upgrade}"
93-
);
75+
let (_status, body): (_, serde_json::Value) =
76+
self.s.client.get("Managers/Self/Oem/ConfigBMC").await?;
9477

95-
let all_fields = [
96-
lockout_host,
97-
lockout_bios_var,
98-
lockdown_settings,
99-
lockdown_upgrade,
100-
];
101-
let is_locked = all_fields.iter().all(|&v| v == "Enable");
102-
let is_unlocked = all_fields.iter().all(|&v| v == "Disable");
78+
let values: Vec<&str> = LOCKDOWN_FIELDS
79+
.iter()
80+
.map(|key| body.get(key).and_then(|v| v.as_str()).unwrap_or("unknown"))
81+
.collect();
82+
83+
let message = LOCKDOWN_FIELDS
84+
.iter()
85+
.zip(&values)
86+
.map(|(k, v)| format!("{k}={v}"))
87+
.collect::<Vec<_>>()
88+
.join(", ");
89+
90+
let is_locked = values.iter().all(|&v| v == "Enable");
91+
let is_unlocked = values.iter().all(|&v| v == "Disable");
10392

10493
Ok(Status {
10594
message,

0 commit comments

Comments
 (0)