diff --git a/ops/runner/read-public-gitea-actions-queue.py b/ops/runner/read-public-gitea-actions-queue.py index df84339c..c0f6611c 100644 --- a/ops/runner/read-public-gitea-actions-queue.py +++ b/ops/runner/read-public-gitea-actions-queue.py @@ -401,6 +401,7 @@ def build_readback( ) harbor_110_repair_waiting = harbor_110_repair_status == "Waiting" harbor_110_repair_running = harbor_110_repair_status == "Running" + harbor_110_repair_failed = harbor_110_repair_status == "Failure" harbor_110_repair_status_blocked = harbor_110_repair_status == "Blocked" harbor_110_repair_jobs_run_id_matches_visible = ( bool(harbor_110_repair_run_id) @@ -440,6 +441,9 @@ def build_readback( harbor_110_repair_visible_waiting_stale = ( harbor_110_repair_waiting and harbor_110_repair_jobs_all_success ) + harbor_110_repair_visible_failure_jobs_api_stale = ( + harbor_110_repair_failed and harbor_110_repair_jobs_stale_or_mismatched + ) cd_harbor_repair_requires_110_controlled_lane = ( build_log_classifier["harbor_public_route_blocked_or_retrying"] and build_log_classifier["harbor_controlled_repair_skip_reason"] @@ -465,6 +469,7 @@ def build_readback( ) harbor_110_repair_blocked = ( harbor_110_repair_status_blocked + or harbor_110_repair_failed or bool(harbor_110_repair_no_matching_runner_label) or harbor_110_repair_waiting_after_cd_harbor_blocker ) @@ -576,6 +581,7 @@ def build_readback( ), "latest_visible_harbor_110_repair_waiting": harbor_110_repair_waiting, "latest_visible_harbor_110_repair_running": harbor_110_repair_running, + "latest_visible_harbor_110_repair_failed": harbor_110_repair_failed, "latest_visible_harbor_110_repair_status_blocked": ( harbor_110_repair_status_blocked ), @@ -615,6 +621,9 @@ def build_readback( "harbor_110_repair_visible_waiting_stale": ( harbor_110_repair_visible_waiting_stale ), + "harbor_110_repair_visible_failure_jobs_api_stale": ( + harbor_110_repair_visible_failure_jobs_api_stale + ), "latest_visible_cd_host_pressure_classifier": effective_tests_log_classifier[ "host_pressure_classifier" ], @@ -665,6 +674,11 @@ def build_readback( if latest_cd_visible_blocked else "blocked_current_cd_workflow_waiting_for_runner_or_queue" if latest_cd_waiting + else "blocked_harbor_110_repair_failed" + if ( + build_log_classifier["harbor_public_route_blocked_or_retrying"] + and harbor_110_repair_failed + ) else ( "blocked_harbor_public_route_unavailable_after_harbor_110_repair_success" ) @@ -696,6 +710,8 @@ def build_readback( if harbor_110_repair_waiting else "harbor_110_repair_running" if harbor_110_repair_running + else "blocked_harbor_110_repair_failed" + if harbor_110_repair_failed else "blocked_harbor_110_repair_run" if harbor_110_repair_blocked else "harbor_110_repair_jobs_stale_or_mismatched" @@ -782,6 +798,7 @@ def build_readback( "harbor_110_repair_run_status": harbor_110_repair_status, "harbor_110_repair_waiting": harbor_110_repair_waiting, "harbor_110_repair_running": harbor_110_repair_running, + "harbor_110_repair_failed": harbor_110_repair_failed, "harbor_110_repair_blocked": harbor_110_repair_blocked, "harbor_110_repair_waiting_after_cd_harbor_blocker": ( harbor_110_repair_waiting_after_cd_harbor_blocker @@ -813,6 +830,9 @@ def build_readback( "harbor_110_repair_visible_waiting_stale": ( harbor_110_repair_visible_waiting_stale ), + "harbor_110_repair_visible_failure_jobs_api_stale": ( + harbor_110_repair_visible_failure_jobs_api_stale + ), }, "operation_boundaries": { "public_gitea_read_only": True, diff --git a/ops/runner/test_read_public_gitea_actions_queue.py b/ops/runner/test_read_public_gitea_actions_queue.py index 02cd8aba..6bf29de9 100644 --- a/ops/runner/test_read_public_gitea_actions_queue.py +++ b/ops/runner/test_read_public_gitea_actions_queue.py @@ -132,6 +132,16 @@ def _actions_html_cd_running_harbor_repair_waiting() -> str: """ +def _actions_html_cd_failed_harbor_repair_failed() -> str: + return ( + _actions_html_cd_running_harbor_repair_waiting() + .replace('data-tooltip-content="Running"', 'data-tooltip-content="Failure"', 1) + .replace('data-tooltip-content="Waiting"', 'data-tooltip-content="Failure"', 1) + .replace("4061", "4211") + .replace("4060", "4212") + ) + + def _actions_html_harbor_repair_waiting_with_workflow_no_matching() -> str: return """