fix(reboot): fallback post reboot readiness readback
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 57s
CD Pipeline / build-and-deploy (push) Successful in 5m41s
CD Pipeline / post-deploy-checks (push) Successful in 1m45s

This commit is contained in:
Your Name
2026-07-03 03:42:04 +08:00
parent b38337b5f2
commit 17ba08cbc7
4 changed files with 82 additions and 7 deletions

View File

@@ -1098,14 +1098,18 @@ def apply_stockplatform_runtime_readback(
if payload.get("product_data_green") is not True:
blocking_fields.append("product_data_green")
service_backup["blocking_fields"] = _unique_strings(blocking_fields)
service_backup["controlled_service_data_backup_blocker_count"] = len(
service_backup["blocking_fields"]
blocker_count = len(service_backup["blocking_fields"])
can_clear = blocker_count == 0
service_backup["controlled_service_data_backup_blocker_count"] = blocker_count
service_backup["status"] = (
"ready_service_data_backup_green"
if can_clear
else "blocked_service_data_backup_readback_not_green"
)
rollups["controlled_service_data_backup_blocker_count"] = len(
service_backup["blocking_fields"]
)
service_backup["status"] = "blocked_service_data_backup_readback_not_green"
service_backup["can_clear_service_data_backup_blockers"] = False
service_backup["can_clear_service_data_backup_blockers"] = can_clear
rollups["controlled_service_data_backup_blocker_count"] = blocker_count
rollups["controlled_service_data_backup_can_clear_blockers"] = can_clear
rollups["controlled_service_data_backup_readback_status"] = service_backup["status"]
def _append_live_stockplatform_blockers(

View File

@@ -476,6 +476,31 @@ def test_reboot_auto_recovery_slo_scorecard_overlays_prometheus_runtime_metrics(
)
def test_reboot_auto_recovery_slo_scorecard_keeps_service_backup_ready_after_live_stockplatform_ok():
payload = load_latest_reboot_auto_recovery_slo_scorecard(
prometheus_metric_readback=PROMETHEUS_RUNTIME_READBACK
)
reboot_slo_scorecard.apply_stockplatform_runtime_readback(
payload,
_stockplatform_runtime_ready(),
)
service_data_backup = payload["controlled_service_data_backup_readback"]
assert service_data_backup["service_green"] is True
assert service_data_backup["backup_core_green"] is True
assert service_data_backup["product_data_green"] is True
assert service_data_backup["post_start_blocked"] == 0
assert service_data_backup["blocking_fields"] == []
assert service_data_backup["status"] == "ready_service_data_backup_green"
assert service_data_backup["can_clear_service_data_backup_blockers"] is True
assert payload["rollups"]["controlled_service_data_backup_blocker_count"] == 0
assert (
payload["rollups"]["controlled_service_data_backup_readback_status"]
== "ready_service_data_backup_green"
)
def test_reboot_auto_recovery_slo_scorecard_keeps_prometheus_source_missing_when_source_control_missing(
tmp_path,
):