diff --git a/apps/api/src/services/awoooi_priority_work_order_readback.py b/apps/api/src/services/awoooi_priority_work_order_readback.py index ee6a09a08..b73fa6420 100644 --- a/apps/api/src/services/awoooi_priority_work_order_readback.py +++ b/apps/api/src/services/awoooi_priority_work_order_readback.py @@ -3694,6 +3694,38 @@ def _enrich_from_current_readbacks( ) is True ) + state[ + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package" + ] = bool( + windows99_vmware_autostart_check_mode_package.get( + "check_mode_execute_allowed_by_this_package" + ) + is True + ) + state["windows99_vmware_autostart_check_mode_runtime_write_authorized"] = bool( + windows99_vmware_autostart_check_mode_package.get( + "check_mode_runtime_write_authorized" + ) + is True + ) + state["windows99_vmware_autostart_check_mode_collector_command"] = str( + windows99_vmware_autostart_check_mode_package.get( + "check_mode_collector_command" + ) + or "" + ) + state["windows99_vmware_autostart_check_mode_scorecard_command"] = str( + windows99_vmware_autostart_check_mode_package.get( + "check_mode_scorecard_command" + ) + or "" + ) + state["windows99_vmware_autostart_check_mode_post_verifier_count"] = _int( + windows99_vmware_autostart_check_mode_package.get( + "check_mode_post_verifier_count" + ) + or state["windows99_vmware_autostart_check_mode_post_apply_verifier_count"] + ) state["windows99_vmware_autostart_check_mode_collector_readback_present"] = bool( windows99_vmware_autostart_check_mode_package.get( "collector_readback_present" @@ -5414,6 +5446,29 @@ def _set_rollups_and_summary( ) is True ), + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package": ( + state.get( + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package" + ) + is True + ), + "windows99_vmware_autostart_check_mode_runtime_write_authorized": ( + state.get( + "windows99_vmware_autostart_check_mode_runtime_write_authorized" + ) + is True + ), + "windows99_vmware_autostart_check_mode_collector_command": str( + state.get("windows99_vmware_autostart_check_mode_collector_command") + or "" + ), + "windows99_vmware_autostart_check_mode_scorecard_command": str( + state.get("windows99_vmware_autostart_check_mode_scorecard_command") + or "" + ), + "windows99_vmware_autostart_check_mode_post_verifier_count": _int( + state.get("windows99_vmware_autostart_check_mode_post_verifier_count") + ), "windows99_vmware_autostart_check_mode_collector_readback_present": ( state.get( "windows99_vmware_autostart_check_mode_collector_readback_present" @@ -5896,6 +5951,29 @@ def _set_rollups_and_summary( ) is True ), + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package": ( + state.get( + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package" + ) + is True + ), + "windows99_vmware_autostart_check_mode_runtime_write_authorized": ( + state.get( + "windows99_vmware_autostart_check_mode_runtime_write_authorized" + ) + is True + ), + "windows99_vmware_autostart_check_mode_collector_command": str( + state.get("windows99_vmware_autostart_check_mode_collector_command") + or "" + ), + "windows99_vmware_autostart_check_mode_scorecard_command": str( + state.get("windows99_vmware_autostart_check_mode_scorecard_command") + or "" + ), + "windows99_vmware_autostart_check_mode_post_verifier_count": _int( + state.get("windows99_vmware_autostart_check_mode_post_verifier_count") + ), "windows99_vmware_autostart_check_mode_collector_readback_present": ( state.get( "windows99_vmware_autostart_check_mode_collector_readback_present" diff --git a/apps/api/src/services/windows99_vmware_autostart_check_mode_package.py b/apps/api/src/services/windows99_vmware_autostart_check_mode_package.py index bd0489e65..12b60017d 100644 --- a/apps/api/src/services/windows99_vmware_autostart_check_mode_package.py +++ b/apps/api/src/services/windows99_vmware_autostart_check_mode_package.py @@ -34,6 +34,8 @@ def _with_ui_counts( scorecard: dict[str, Any], ) -> dict[str, Any]: payload = dict(package) + action_chain = _dict(payload.get("action_chain")) + check_mode = dict(_dict(action_chain.get("check_mode"))) powered_off_aliases = _strings(payload.get("powered_off_aliases")) readback = _dict(scorecard.get("readback")) windows99_management = _dict(scorecard.get("windows99_management_channel")) @@ -86,6 +88,43 @@ def _with_ui_counts( or payload["local_console_channel_reachable"] ) ) + check_mode_execute_allowed = bool( + payload["effective_check_mode_execution_ready"] + and payload.get("apply_allowed_by_this_package") is not True + ) + collector_command = str( + check_mode.get("collector_command") + or "bash scripts/reboot-recovery/collect-windows99-vmware-verify.sh --collect" + ) + scorecard_command = str( + check_mode.get("scorecard_command") + or ( + "python3.11 scripts/reboot-recovery/" + "reboot-auto-recovery-slo-scorecard.py --output " + ) + ) + check_mode.update( + { + "execute_allowed_by_this_package": check_mode_execute_allowed, + "execution_ready": payload["effective_check_mode_execution_ready"], + "runtime_write_authorized": False, + "collector_command": collector_command, + "scorecard_command": scorecard_command, + } + ) + action_chain["check_mode"] = check_mode + payload["action_chain"] = action_chain + payload["check_mode_execute_allowed_by_this_package"] = check_mode_execute_allowed + payload["check_mode_execution_ready"] = payload[ + "effective_check_mode_execution_ready" + ] + payload["check_mode_runtime_write_authorized"] = False + payload["check_mode_collector_command"] = collector_command + payload["check_mode_scorecard_command"] = scorecard_command + payload["check_mode_post_verifier"] = _strings(payload.get("post_apply_verifier")) + payload["check_mode_post_verifier_count"] = len( + payload["check_mode_post_verifier"] + ) payload["public_display_only"] = True payload["check_mode_package_execution_authorized_by_this_endpoint"] = False return payload diff --git a/apps/api/tests/test_awoooi_priority_work_order_readback_api.py b/apps/api/tests/test_awoooi_priority_work_order_readback_api.py index 09704fd0e..e664e0a81 100644 --- a/apps/api/tests/test_awoooi_priority_work_order_readback_api.py +++ b/apps/api/tests/test_awoooi_priority_work_order_readback_api.py @@ -1004,6 +1004,24 @@ def test_awoooi_priority_work_order_readback_routes_closed_backup_to_host_boot_a state["windows99_vmware_autostart_check_mode_effective_execution_ready"] is True ) + assert ( + state[ + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package" + ] + is True + ) + assert ( + state["windows99_vmware_autostart_check_mode_runtime_write_authorized"] + is False + ) + assert state["windows99_vmware_autostart_check_mode_collector_command"] == ( + "bash scripts/reboot-recovery/collect-windows99-vmware-verify.sh --collect" + ) + assert state["windows99_vmware_autostart_check_mode_scorecard_command"] == ( + "python3.11 scripts/reboot-recovery/" + "reboot-auto-recovery-slo-scorecard.py --output " + ) + assert state["windows99_vmware_autostart_check_mode_post_verifier_count"] == 5 assert ( state["windows99_vmware_autostart_check_mode_collector_readback_present"] is True @@ -1207,6 +1225,25 @@ def test_awoooi_priority_work_order_readback_routes_closed_backup_to_host_boot_a assert payload["summary"][ "windows99_vmware_autostart_check_mode_effective_execution_ready" ] is True + assert payload["summary"][ + "windows99_vmware_autostart_check_mode_execute_allowed_by_this_package" + ] is True + assert payload["summary"][ + "windows99_vmware_autostart_check_mode_runtime_write_authorized" + ] is False + assert payload["summary"][ + "windows99_vmware_autostart_check_mode_collector_command" + ] == "bash scripts/reboot-recovery/collect-windows99-vmware-verify.sh --collect" + assert payload["summary"][ + "windows99_vmware_autostart_check_mode_scorecard_command" + ] == ( + "python3.11 scripts/reboot-recovery/" + "reboot-auto-recovery-slo-scorecard.py --output " + ) + assert ( + payload["summary"]["windows99_vmware_autostart_check_mode_post_verifier_count"] + == 5 + ) assert payload["summary"][ "windows99_vmware_autostart_check_mode_public_display_only" ] is True diff --git a/apps/api/tests/test_windows99_vmware_autostart_check_mode_package_api.py b/apps/api/tests/test_windows99_vmware_autostart_check_mode_package_api.py index 3ef149b5f..c9f87cc8f 100644 --- a/apps/api/tests/test_windows99_vmware_autostart_check_mode_package_api.py +++ b/apps/api/tests/test_windows99_vmware_autostart_check_mode_package_api.py @@ -114,6 +114,20 @@ def test_windows99_vmware_autostart_check_mode_package_builder_is_no_power_write assert payload["collector_readback_present"] is True assert payload["local_console_channel_reachable"] is True assert payload["effective_check_mode_execution_ready"] is True + assert payload["check_mode_execute_allowed_by_this_package"] is True + assert payload["check_mode_execution_ready"] is True + assert payload["check_mode_runtime_write_authorized"] is False + assert payload["check_mode_collector_command"] == ( + "bash scripts/reboot-recovery/collect-windows99-vmware-verify.sh --collect" + ) + assert payload["check_mode_scorecard_command"] == ( + "python3.11 scripts/reboot-recovery/" + "reboot-auto-recovery-slo-scorecard.py --output " + ) + assert payload["check_mode_post_verifier_count"] == 5 + assert payload["action_chain"]["check_mode"][ + "execute_allowed_by_this_package" + ] is True assert "vm_power_change" in payload["forbidden_actions"] assert "scheduled_task_register_or_modify" in payload["forbidden_actions"] @@ -147,6 +161,8 @@ def test_windows99_vmware_autostart_check_mode_package_endpoint_returns_readback ) assert payload["public_display_only"] is True assert payload["check_mode_package_execution_authorized_by_this_endpoint"] is False + assert payload["check_mode_execute_allowed_by_this_package"] is True + assert payload["check_mode_runtime_write_authorized"] is False assert payload["apply_allowed_by_this_package"] is False assert payload["operation_boundaries"]["vm_power_change_performed"] is False assert payload["action_chain"]["execution_boundary"][