fix(reboot): surface windows99 console artifact blockers
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m13s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m13s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -598,6 +598,56 @@ def test_windows99_management_channel_unavailable_is_visible(tmp_path: Path) ->
|
||||
assert payload["readback"]["windows99_remote_execution_channel_ready"] is False
|
||||
|
||||
|
||||
def test_windows99_console_artifact_blocker_is_visible(tmp_path: Path) -> None:
|
||||
management = {
|
||||
**WINDOWS99_MANAGEMENT_BLOCKED,
|
||||
"console_artifact_status": "blocked_clipboard_unreliable",
|
||||
"console_artifact_reliable": False,
|
||||
"console_artifact_blockers": ["windows99_console_clipboard_unreliable"],
|
||||
"console_artifact_safe_next_step": (
|
||||
"use_authorized_no_secret_management_channel_or_manual_console_stdout_capture"
|
||||
),
|
||||
"blockers": [
|
||||
*WINDOWS99_MANAGEMENT_BLOCKED["blockers"],
|
||||
"windows99_console_clipboard_unreliable",
|
||||
],
|
||||
}
|
||||
payload = run_scorecard(
|
||||
tmp_path,
|
||||
GREEN_SUMMARY,
|
||||
windows99="",
|
||||
windows99_management=json.dumps(management),
|
||||
)
|
||||
|
||||
assert "windows99_console_clipboard_unreliable" in payload["active_blockers"]
|
||||
collection = payload["windows99_verify_collection"]
|
||||
assert collection["console_artifact_status"] == "blocked_clipboard_unreliable"
|
||||
assert collection["console_artifact_reliable"] is False
|
||||
assert collection["console_artifact_blockers"] == [
|
||||
"windows99_console_clipboard_unreliable"
|
||||
]
|
||||
assert "windows99_console_clipboard_unreliable" in collection[
|
||||
"collection_blockers"
|
||||
]
|
||||
assert payload["rollups"]["windows99_console_artifact_status"] == (
|
||||
"blocked_clipboard_unreliable"
|
||||
)
|
||||
assert payload["rollups"]["windows99_console_artifact_reliable"] is False
|
||||
assert payload["readback"]["windows99_console_artifact_blockers"] == [
|
||||
"windows99_console_clipboard_unreliable"
|
||||
]
|
||||
action_by_blocker = {
|
||||
item["blocker"]: item
|
||||
for item in payload["active_blocker_action_matrix"]["items"]
|
||||
}
|
||||
assert action_by_blocker["windows99_console_clipboard_unreliable"][
|
||||
"next_safe_action"
|
||||
] == (
|
||||
"stop_unreliable_rdp_clipboard_path_and_use_authorized_no_secret_"
|
||||
"management_channel_or_validated_console_stdout_artifact"
|
||||
)
|
||||
|
||||
|
||||
def test_windows99_no_secret_collector_publickey_blocker_is_visible(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
|
||||
@@ -51,6 +51,8 @@ def test_management_probe_surfaces_no_secret_console_channels(monkeypatch):
|
||||
ssh_timeout=1,
|
||||
ports=None,
|
||||
skip_ssh=False,
|
||||
console_artifact_status="not_attempted",
|
||||
console_artifact_blockers=None,
|
||||
generated_at="2026-07-02T16:00:00+08:00",
|
||||
output=None,
|
||||
)
|
||||
@@ -65,6 +67,9 @@ def test_management_probe_surfaces_no_secret_console_channels(monkeypatch):
|
||||
"rdp_console",
|
||||
"hyperv_vmconnect",
|
||||
]
|
||||
assert payload["console_artifact_status"] == "not_attempted"
|
||||
assert payload["console_artifact_reliable"] is False
|
||||
assert payload["console_artifact_blockers"] == []
|
||||
assert payload["remote_execution_channel_ready"] is False
|
||||
assert payload["can_collect_vmware_verify_without_secret"] is False
|
||||
assert "windows99_remote_execution_channel_unavailable" in payload["blockers"]
|
||||
@@ -105,6 +110,8 @@ def test_management_probe_surfaces_multiple_ssh_candidates(monkeypatch):
|
||||
ssh_timeout=1,
|
||||
ports=None,
|
||||
skip_ssh=False,
|
||||
console_artifact_status="not_attempted",
|
||||
console_artifact_blockers=None,
|
||||
generated_at="2026-07-02T16:00:00+08:00",
|
||||
output=None,
|
||||
)
|
||||
@@ -129,3 +136,51 @@ def test_management_probe_surfaces_multiple_ssh_candidates(monkeypatch):
|
||||
"status": "ready",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_management_probe_surfaces_console_artifact_clipboard_blocker(monkeypatch):
|
||||
module = _load_module()
|
||||
|
||||
def fake_tcp_status(_host: str, port: int, _timeout: float) -> str:
|
||||
return "open" if port in {22, 2179, 3389} else "timeout"
|
||||
|
||||
monkeypatch.setattr(module, "tcp_status", fake_tcp_status)
|
||||
monkeypatch.setattr(
|
||||
module,
|
||||
"ping_status",
|
||||
lambda _host: {"checked": True, "ok": True, "status": "ok"},
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
module,
|
||||
"ssh_batch_status",
|
||||
lambda *_args, **_kwargs: {
|
||||
"checked": True,
|
||||
"ready": False,
|
||||
"status": "permission_denied",
|
||||
},
|
||||
)
|
||||
|
||||
payload = module.build_payload(
|
||||
argparse.Namespace(
|
||||
host="192.168.0.99",
|
||||
ssh_users=["administrator"],
|
||||
tcp_timeout=0.01,
|
||||
ssh_timeout=1,
|
||||
ports=None,
|
||||
skip_ssh=False,
|
||||
console_artifact_status="blocked_clipboard_unreliable",
|
||||
console_artifact_blockers=None,
|
||||
generated_at="2026-07-03T09:20:00+08:00",
|
||||
output=None,
|
||||
)
|
||||
)
|
||||
|
||||
assert payload["console_artifact_status"] == "blocked_clipboard_unreliable"
|
||||
assert payload["console_artifact_reliable"] is False
|
||||
assert payload["console_artifact_blockers"] == [
|
||||
"windows99_console_clipboard_unreliable"
|
||||
]
|
||||
assert "windows99_console_clipboard_unreliable" in payload["blockers"]
|
||||
assert payload["console_artifact_safe_next_step"] == (
|
||||
"use_authorized_no_secret_management_channel_or_manual_console_stdout_capture"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user