fix(recovery): persist host112 SSD readiness
This commit is contained in:
@@ -1524,6 +1524,8 @@ run_output="${RUN_ID:-none}"
|
||||
work_item_output="${WORK_ITEM_ID:-none}"
|
||||
readback="schema_version=host112_guest_recovery_v2 mode=$MODE trace_id=$trace_output run_id=$run_output work_item_id=$work_item_output boot_id=$boot_id uptime_seconds=$uptime_seconds systemd_state=$systemd_state startup_enabled=$startup_enabled startup_active=$startup_active default_target=$default_target graphical_target=$graphical_target display_manager=$display_manager lightdm=$lightdm vmware_tools=$vmware_tools xorg=$xorg wazuh_indexer=$wazuh_indexer wazuh_manager=$wazuh_manager wazuh_manager_result=$manager_result manager_failed_state_observed=$manager_failed_state_observed wazuh_analysisd_process_count=$analysisd_count wazuh_dashboard=$wazuh_dashboard filebeat=$filebeat ssh_service=$ssh_service ssh_enabled=$ssh_enabled ssh_port_listening=$ssh_port_listening ssh_ready=$ssh_ready console_ready=$console_ready services_ready=$services_ready recovery_timer_ready=$recovery_timer_ready guest_ready=$guest_ready manager_preflight_status=$manager_preflight_status manager_terminal=$manager_terminal run_terminal=$run_terminal terminal=$run_terminal action_failure_observed=$action_failure_observed manager_orphan_analysisd=$manager_orphan_analysisd manager_memory_available_kb=$manager_memory_available_kb manager_disk_available_kb=$manager_disk_available_kb manager_disk_used_percent=$manager_disk_used_percent manager_resource_ready=$manager_resource_ready wazuh_agent_event_port_1514_tcp=$event_1514_tcp wazuh_agent_event_port_1514_udp=$event_1514_udp wazuh_agent_event_port_1514_ready=$manager_event_port_ready wazuh_agent_enrollment_port_1515_tcp=$enrollment_1515_tcp wazuh_manager_api_port_55000_tcp=$manager_api_55000_tcp manager_independent_verifier_ready=$manager_verifier_ready manager_cooldown_remaining_seconds=$manager_cooldown_remaining_seconds manager_attempt_count=$manager_attempt_count manager_start_exit=$manager_start_exit apply_phase_timeout_budget_seconds=$APPLY_PHASE_TIMEOUT_BUDGET_SECONDS executor_deadline_seconds=$EXECUTOR_DEADLINE_SECONDS runtime_write_performed=$runtime_write_performed state_write_performed=$state_write_performed manager_marker_write_performed=$manager_marker_write_performed manager_runtime_write_performed=$manager_runtime_write_performed artifact_transaction_status=$artifact_transaction_status artifact_transaction_phase=$artifact_transaction_phase artifact_transaction_path=$ARTIFACT_TRANSACTION_PATH artifact_transaction_started=$artifact_transaction_started artifact_transaction_blocked=$artifact_transaction_blocked artifact_transaction_write_performed=$artifact_transaction_write_performed artifact_transaction_pair_verified=$artifact_transaction_pair_verified artifact_transaction_prior_pair_verified=$artifact_transaction_prior_pair_verified receipt_write_performed=$receipt_write_performed receipt_status=$receipt_status receipt_ref=$receipt_ref receipt_path=$receipt_path receipt_sha256=$receipt_sha256 receipt_reused=$receipt_reused durable_receipt_present=$durable_receipt_present durable_receipt_identity_match=$durable_receipt_identity_match durable_receipt_boot_match=$durable_receipt_boot_match durable_receipt_terminal=$durable_receipt_terminal durable_readback_present=$durable_readback_present durable_readback_identity_match=$durable_readback_identity_match durable_readback_boot_match=$durable_readback_boot_match durable_readback_receipt_link_match=$durable_readback_receipt_link_match durable_readback_terminal_match=$durable_readback_terminal_match rollback_attempted=$rollback_attempted rollback_verified=$rollback_verified rollback_terminal=$rollback_terminal timer_artifact_policy=$timer_artifact_policy timer_ledger_capacity=$timer_ledger_capacity timer_ledger_slot=$timer_ledger_slot timer_observation_status=$timer_observation_status timer_observation_path=$timer_observation_path timer_observation_sha256=$timer_observation_sha256 timer_observation_repeat_count=$timer_observation_repeat_count timer_observation_write_performed=$timer_observation_write_performed signal_readback_status=$signal_readback_status signal_readback_path=$signal_readback_path signal_readback_sha256=$signal_readback_sha256 action_count=${#actions[@]} actions=$action_text prohibited_actions=host_reboot,vm_power_change,vm_reset,firewall_change,secret_read,database_write"
|
||||
|
||||
readback="$readback systemd_state_raw=$systemd_state_raw nonself_failed_count=$nonself_failed_count nonself_failed_units=$nonself_failed_text"
|
||||
|
||||
canonical_readback_base() {
|
||||
printf '%s\n' "$readback" | awk '
|
||||
{
|
||||
|
||||
@@ -73,6 +73,7 @@ class FakeHttpResponse:
|
||||
def test_reboot_p0_contract_covers_all_required_hosts_and_vmware_autostart() -> None:
|
||||
host_probe = read("scripts/reboot-recovery/reboot-auto-recovery-host-probe.sh")
|
||||
windows99 = read("scripts/reboot-recovery/windows99-vmware-autostart.ps1")
|
||||
scorecard = read("apps/api/src/services/reboot_auto_recovery_slo_scorecard.py")
|
||||
|
||||
for host in ["99", "110", "111", "112", "120", "121", "188"]:
|
||||
assert host in host_probe
|
||||
@@ -85,6 +86,11 @@ def test_reboot_p0_contract_covers_all_required_hosts_and_vmware_autostart() ->
|
||||
assert '"111=ooo@192.168.0.111:com.momo.ollama111-allow-proxy"' in host_probe
|
||||
assert '"112=kali@192.168.0.112:awoooi-host112-guest-recovery.timer"' in host_probe
|
||||
assert "probe_host112_guest()" in host_probe
|
||||
host112_vmx = r"S:\VMs\host112\kali-linux-2025.4-vmware-amd64.vmx"
|
||||
assert host112_vmx in windows99
|
||||
assert host112_vmx in scorecard
|
||||
assert "D:\\Downloads\\kali-linux-2025.4-vmware-amd64" not in windows99
|
||||
assert "D:\\Downloads\\kali-linux-2025.4-vmware-amd64" not in scorecard
|
||||
for field in ["console_ready", "services_ready", "recovery_timer_ready", "guest_ready"]:
|
||||
assert field in host_probe
|
||||
|
||||
@@ -120,6 +126,9 @@ def test_reboot_p0_contract_covers_all_required_hosts_and_vmware_autostart() ->
|
||||
assert "INDEXER_RETRY_COOLDOWN_SECONDS" in host112_readiness
|
||||
assert "console_ready=$console_ready" in host112_readiness
|
||||
assert "guest_ready=$guest_ready" in host112_readiness
|
||||
assert "systemd_state_raw=$systemd_state_raw" in host112_readiness
|
||||
assert "nonself_failed_count=$nonself_failed_count" in host112_readiness
|
||||
assert "^awoooi-host112-guest-recovery\\.service$" in host112_readiness
|
||||
assert "restrict,command=" in host112_installer
|
||||
assert "visudo -cf" in host112_installer
|
||||
assert "--rollback" in host112_installer
|
||||
|
||||
Reference in New Issue
Block a user