fix(reboot): surface windows99 vmware alias metrics
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 58s
CD Pipeline / build-and-deploy (push) Successful in 5m15s
CD Pipeline / post-deploy-checks (push) Successful in 1m51s

This commit is contained in:
Your Name
2026-07-03 02:26:16 +08:00
parent 86a01df058
commit 8a0ddc8d71
4 changed files with 259 additions and 11 deletions

View File

@@ -44,6 +44,13 @@ _PROMETHEUS_RUNTIME_QUERIES = {
"blocker_count": "awoooi_reboot_auto_recovery_slo_blocker_count",
"ready": "awoooi_reboot_auto_recovery_slo_ready",
"last_run_timestamp": "awoooi_reboot_auto_recovery_slo_last_run_timestamp",
"windows99_vmware_readback_present": "awoooi_windows99_vmware_readback_present",
"windows99_vmware_verify_ready": "awoooi_windows99_vmware_verify_ready",
"windows99_windows_update_ready": (
"awoooi_windows99_vmware_windows_update_no_auto_reboot_ready"
),
"windows99_missing_vmx_alias": "awoooi_windows99_vmware_missing_vmx_alias",
"windows99_powered_off_alias": "awoooi_windows99_vmware_powered_off_alias",
}
_PROMETHEUS_RUNTIME_COMBINED_QUERY = (
'{__name__=~"'
@@ -261,8 +268,22 @@ def _load_reboot_slo_prometheus_metric_readback(
scalar_results = {
key: results_by_name.get(query, [])
for key, query in _PROMETHEUS_RUNTIME_QUERIES.items()
if key not in {"active_blocker", "primary_blocker"}
if key
not in {
"active_blocker",
"primary_blocker",
"windows99_missing_vmx_alias",
"windows99_powered_off_alias",
}
}
missing_vmx_results = results_by_name.get(
_PROMETHEUS_RUNTIME_QUERIES["windows99_missing_vmx_alias"],
[],
)
powered_off_results = results_by_name.get(
_PROMETHEUS_RUNTIME_QUERIES["windows99_powered_off_alias"],
[],
)
active_blockers = _unique_strings(
[
str(_dict(result.get("metric")).get("blocker") or "")
@@ -289,6 +310,35 @@ def _load_reboot_slo_prometheus_metric_readback(
scalar_results.get("last_run_timestamp") or [],
default=0,
)
windows99_readback_present = (
_prometheus_first_int(
scalar_results.get("windows99_vmware_readback_present") or [],
default=0,
)
== 1
)
windows99_verify_ready = (
_prometheus_first_int(
scalar_results.get("windows99_vmware_verify_ready") or [],
default=0,
)
== 1
)
windows99_update_ready = (
_prometheus_first_int(
scalar_results.get("windows99_windows_update_ready") or [],
default=0,
)
== 1
)
windows99_missing_vmx_aliases = _prometheus_label_values(
missing_vmx_results,
"alias",
)
windows99_powered_off_aliases = _prometheus_label_values(
powered_off_results,
"alias",
)
return {
"schema_version": "reboot_slo_prometheus_metric_readback_v1",
"readback_present": bool(combined_results),
@@ -299,6 +349,11 @@ def _load_reboot_slo_prometheus_metric_readback(
"primary_blocker": primary_blocker,
"ready": ready,
"last_run_timestamp": last_run_timestamp,
"windows99_vmware_readback_present": windows99_readback_present,
"windows99_vmware_verify_ready": windows99_verify_ready,
"windows99_windows_update_no_auto_reboot_ready": windows99_update_ready,
"windows99_missing_vmx_aliases": windows99_missing_vmx_aliases,
"windows99_powered_off_aliases": windows99_powered_off_aliases,
}
@@ -329,6 +384,19 @@ def _prometheus_first_int(results: list[dict[str, Any]], *, default: int) -> int
return default
def _prometheus_label_values(
results: list[dict[str, Any]],
label_name: str,
) -> list[str]:
return _unique_strings(
[
str(_dict(result.get("metric")).get(label_name) or "")
for result in results
if str(_dict(result.get("metric")).get(label_name) or "")
]
)
def _annotate_prometheus_metric_readback(
payload: dict[str, Any],
metric_readback: dict[str, Any],
@@ -367,6 +435,59 @@ def _annotate_prometheus_metric_readback(
"runtime_metric_last_run_timestamp"
]
rollups["runtime_metric_source_control_reconciled_blocker_count"] = 0
_apply_prometheus_windows99_vmware_readback(payload, metric_readback)
def _apply_prometheus_windows99_vmware_readback(
payload: dict[str, Any],
metric_readback: dict[str, Any],
) -> None:
if metric_readback.get("readback_present") is not True:
return
if metric_readback.get("windows99_vmware_readback_present") is not True:
return
active_blockers = _strings(metric_readback.get("active_blockers"))
missing_vmx_aliases = _strings(metric_readback.get("windows99_missing_vmx_aliases"))
powered_off_aliases = _strings(metric_readback.get("windows99_powered_off_aliases"))
windows99_blockers = [
blocker for blocker in active_blockers if blocker.startswith("windows99_")
]
verify_ready = metric_readback.get("windows99_vmware_verify_ready") is True
update_ready = (
metric_readback.get("windows99_windows_update_no_auto_reboot_ready") is True
)
windows99 = _dict(payload.setdefault("windows99_vmware_autostart", {}))
windows99.update(
{
"readback_present": True,
"verify_ready": verify_ready,
"vmrun_present": True,
"config_ready": not missing_vmx_aliases,
"power_ready": not powered_off_aliases,
"windows_update_no_auto_reboot_ready": update_ready,
"missing_vmx_aliases": missing_vmx_aliases,
"powered_off_aliases": powered_off_aliases,
"blockers": windows99_blockers,
"runtime_metric_overlay_applied": True,
}
)
payload["windows99_vmware_verify_ready"] = verify_ready
payload["windows99_update_no_auto_reboot_ready"] = update_ready
readback = _dict(payload.setdefault("readback", {}))
readback["windows99_vmware_verify_ready"] = verify_ready
readback["windows99_update_no_auto_reboot_ready"] = update_ready
readback["windows99_runtime_metric_overlay_applied"] = True
readback["windows99_missing_vmx_aliases"] = missing_vmx_aliases
readback["windows99_powered_off_aliases"] = powered_off_aliases
rollups = _dict(payload.setdefault("rollups", {}))
rollups["windows99_vmware_verify_ready"] = verify_ready
rollups["windows99_update_no_auto_reboot_ready"] = update_ready
rollups["windows99_runtime_metric_overlay_applied"] = True
rollups["windows99_missing_vmx_alias_count"] = len(missing_vmx_aliases)
rollups["windows99_powered_off_alias_count"] = len(powered_off_aliases)
def _reconcile_prometheus_metric_active_blockers_with_source_controls(