diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index fa542a71..8032f0cc 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -520,6 +520,7 @@ PLATFORM_TEST_SUITE_NAMES = [ "pegasus", "soteria", "titan_iac", + "typhon", "bstein_home", "data_prepper", ] @@ -536,6 +537,7 @@ PLATFORM_TEST_SUITE_VALUE_BY_NAME = { "pegasus": "pegasus|pegasus-health|pegasus_health", "soteria": "soteria", "titan_iac": "titan_iac|titan-iac", + "typhon": "typhon", "bstein_home": "bstein_home|bstein-home", "data_prepper": "data_prepper|data-prepper", } @@ -544,9 +546,11 @@ PLATFORM_TEST_JENKINS_JOB_BY_SUITE = { "metis": "metis", "ananke": "ananke", "atlasbot": "atlasbot", + "lesavka": "lesavka", "pegasus": "pegasus", "soteria": "Soteria", "titan_iac": "titan-iac", + "typhon": "typhon", "bstein_home": "bstein-dev-home", "data_prepper": "data-prepper", } @@ -556,6 +560,7 @@ PLATFORM_TEST_SUITE_MATCHER = "|".join( ) PLATFORM_TEST_SUITE_CANONICAL_MATCHER = "|".join(PLATFORM_TEST_SUITE_NAMES) PLATFORM_TEST_SUITE_VARIABLE_ALL_MATCHER = PLATFORM_TEST_SUITE_CANONICAL_MATCHER +PLATFORM_TEST_SUPPORT_CATEGORY_REGEX = "fixtures|golden|helpers" PLATFORM_TEST_SUCCESS_EVENTS_30D = ( f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[30d])) or on() vector(0))' ) @@ -594,7 +599,7 @@ PLATFORM_TEST_ACTIVITY_30D = ( ) PLATFORM_TEST_RUNS_24H_TOTAL = PLATFORM_TEST_TOTAL_EVENTS_24H PLATFORM_TEST_ACTIVE_SUITES_24H = ( - f'sum((sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) > 0)) ' + f'sum((sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) > bool 0)) ' "or on() vector(0)" ) PLATFORM_TEST_POINT_WINDOW = "1h" @@ -637,12 +642,20 @@ PLATFORM_TEST_CHECKS_SELECTOR = ( f'__name__=~".*_quality_gate_checks_total",suite=~"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}",' f"{PLATFORM_TEST_EXPORT_FILTER}" ) +PLATFORM_TEST_CHECK_ROLLUP_MATCHERS = ( + f'suite=~"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}",branch!="",check!=""' +) +PLATFORM_TEST_CHECK_ROLLUP_SELECTOR = ( + f'platform_quality:check_status:present_1h{{{PLATFORM_TEST_CHECK_ROLLUP_MATCHERS},status!=""}}' +) +PLATFORM_TEST_CHECK_ROLLUP_OK_SELECTOR = ( + f'platform_quality:check_status:present_1h{{{PLATFORM_TEST_CHECK_ROLLUP_MATCHERS},status=~"{PLATFORM_TEST_NON_FAILURE_STATUS}"}}' +) PLATFORM_TEST_CURRENT_GATE_HEALTH_BY_SUITE = ( f'(100 * sum by (suite) (max by (suite, check) ' - f'((({{{PLATFORM_TEST_CHECKS_SELECTOR},result=~"{PLATFORM_TEST_NON_FAILURE_STATUS}"}} > bool 0) ' - f'or ({{{PLATFORM_TEST_CHECKS_SELECTOR},status=~"{PLATFORM_TEST_NON_FAILURE_STATUS}"}} > bool 0)))) ' + f'(({PLATFORM_TEST_CHECK_ROLLUP_OK_SELECTOR}) > bool 0)) ' f'/ clamp_min(sum by (suite) (max by (suite, check) ' - f'(({{{PLATFORM_TEST_CHECKS_SELECTOR}}} > bool 0))), 1))' + f'(({PLATFORM_TEST_CHECK_ROLLUP_SELECTOR}) > bool 0)), 1))' ) PVC_BACKUP_AGE_HOURS_BY_PVC = "sort_desc(max by (namespace, pvc) (pvc_backup_age_hours or on(namespace, pvc) ((1 - pvc_backup_health) * 999)))" ANANKE_SELECTOR = 'job="ananke-power"' @@ -1283,12 +1296,38 @@ def testing_suite_variable(): } +def overview_testing_suite_variable(): + preferred = "lesavka" + options = [ + { + "text": suite, + "value": suite, + "selected": suite == preferred, + } + for suite in PLATFORM_TEST_SUITE_NAMES + ] + return { + "name": "overview_suite", + "label": "Testing Suite", + "type": "custom", + "query": ",".join(f"{suite} : {suite}" for suite in PLATFORM_TEST_SUITE_NAMES), + "current": {"text": preferred, "value": preferred, "selected": True}, + "options": options, + "hide": 0, + "multi": False, + "includeAll": False, + "refresh": 1, + "sort": 1, + "skipUrlSync": False, + } + + def testing_case_variable(): return { "name": "test", "label": "Test Case", "type": "query", - "query": f'label_values(platform_quality_gate_test_case_result{{suite=~"${{suite:regex}}",branch!="",branch=~"${{branch:regex}}",test!="",test!="__no_test_cases__",{PLATFORM_TEST_EXPORT_FILTER}}}, test)', + "query": f'label_values(platform_quality_gate_test_case_result{{suite=~"${{suite:regex}}",branch!="",branch=~"${{branch:regex}}",test!="",test!="__no_test_cases__",category!~"{PLATFORM_TEST_SUPPORT_CATEGORY_REGEX}",{PLATFORM_TEST_EXPORT_FILTER}}}, test)', "current": {"text": "All", "value": "$__all", "selected": True}, "options": [], "hide": 0, @@ -1581,13 +1620,13 @@ OVERVIEW_PANEL_DESCRIPTIONS = { "Flux Source": "Git branch Flux is applying; this should normally be the intended production branch.", "Run Reliability (24h)": "Percent of CI runs that completed successfully in 24h; higher is better for release confidence.", "Failed Runs (24h)": "CI runs that failed in 24h; zero is good, any value means recent test signal is noisy.", - "Fresh Suites (24h)": "Suites with at least one run in 24h; higher is better because stale suites hide failures.", + "Suites Reporting (24h)": "Suites with at least one CI run in 24h; full count means the dashboard signal is fresh.", "Avg Coverage": "Average latest line coverage across suites; higher means code is better protected by tests.", "LOC Clean Suites": "Suites with no source files over 500 LOC; full count is good for maintainability.", "GitOps Health": "Flux readiness and suspension health over time; blue is perfect, warmer colors mean drift or pause.", "One-off Job Pods (age hours)": "Temporary job pods by age; low or empty is good, old pods usually need cleanup.", "Ariadne Run Volume": "Ariadne automation attempts and failures; attempts show activity, failures show work to investigate.", - "Gate Checks Passing by Suite": "Current quality gates passing per suite; blue means all gates pass, warmer colors mean blockers.", + "Test Category Pass Rate": "Pass rate by test category for the selected suite; blue means clean categories, warmer colors show problem areas.", "Jenkins Last Success (h, newest first)": "Age of recent Jenkins successes; lower is fresher and better.", "Jenkins Last Failure (h, newest first)": "Age of recent Jenkins failures; lower means a failure happened more recently.", "PVC Backup Health / Age": "Restic backup age by PVC; lower is better, very old backups mean restore risk.", @@ -2023,6 +2062,12 @@ def build_overview(): } overview_avg_coverage = f"(avg(({QUALITY_GATE_COVERAGE_BY_SUITE})) or on() vector(0))" overview_loc_clean_suites = f"(sum(({QUALITY_GATE_SMELL_INFRACTIONS_BY_SUITE}) == bool 0) or on() vector(0))" + overview_category_pass_rate = ( + 'avg by (category) (platform_quality:test_case_pass_rate:percent_1h{' + 'suite=~"${overview_suite:regex}",branch!="",branch=~"main|master|origin/main|origin/master",' + f'test!="",test!="__no_test_cases__",category!="",category!~"{PLATFORM_TEST_SUPPORT_CATEGORY_REGEX}"' + "})" + ) for panel_id, title, draw_expr, runtime_expr, y_pos in [ (40, "Pyrphoros UPS Current", ANANKE_UPS_DRAW_WATTS_DB, ANANKE_UPS_RUNTIME_DB, 7), (144, "Statera UPS Current", ANANKE_UPS_DRAW_WATTS_TETHYS, ANANKE_UPS_RUNTIME_TETHYS, 10), @@ -2283,7 +2328,7 @@ def build_overview(): for panel_id, title, expr, y_pos, unit, decimals, thresholds, links in [ (151, "Run Reliability (24h)", TEST_SUCCESS_RATE_24H, 9, "percent", 1, test_success_thresholds, "atlas-testing"), (152, "Failed Runs (24h)", TEST_FAILURES_24H_TOTAL, 11, "none", 0, failure_count_thresholds, "atlas-testing"), - (153, "Fresh Suites (24h)", PLATFORM_TEST_ACTIVE_SUITES_24H, 13, "none", 0, perfect_count_thresholds, "atlas-testing"), + (153, "Suites Reporting (24h)", PLATFORM_TEST_ACTIVE_SUITES_24H, 13, "none", 0, perfect_count_thresholds, "atlas-testing"), (154, "Avg Coverage", overview_avg_coverage, 15, "percent", 1, test_success_thresholds, "atlas-testing"), (155, "LOC Clean Suites", overview_loc_clean_suites, 17, "none", 0, perfect_count_thresholds, "atlas-testing"), ]: @@ -2354,16 +2399,16 @@ def build_overview(): panels.append( state_timeline_panel( 46, - "Gate Checks Passing by Suite", - PLATFORM_TEST_CURRENT_GATE_HEALTH_BY_SUITE, + "Test Category Pass Rate", + overview_category_pass_rate, {"h": 6, "w": 6, "x": 15, "y": 13}, unit="percent", min_value=0, max_value=100, - legend="{{suite}}", + legend="{{category}}", thresholds=test_success_thresholds, links=overview_link("atlas-testing"), - description="Percent of current gate dimensions passing per suite over time. There are seven gate dimensions, so 85.7% means one gate is failing.", + description="Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", ) ) panels[-1]["options"]["legend"] = {"displayMode": "list", "placement": "bottom"} @@ -2792,6 +2837,7 @@ def build_overview(): namespace_scope_variable("namespace_scope_cpu", "CPU namespace filter"), namespace_scope_variable("namespace_scope_gpu", "GPU namespace filter"), namespace_scope_variable("namespace_scope_ram", "RAM namespace filter"), + overview_testing_suite_variable(), ] }, "time": {"from": "now-1h", "to": "now"}, @@ -3690,6 +3736,10 @@ def build_jobs_dashboard(): runs_success_selector = f'{runs_selector},status=~"{success}"' runs_failure_selector = f'{runs_selector},status!~"{success}"' checks_selector = f'__name__=~".*_quality_gate_checks_total",suite=~"{suite_var}",{exported}' + check_rollup_selector = ( + f'platform_quality:check_status:present_1h{{suite=~"{suite_var}",branch!="",' + f'branch=~"{branch_var}",check!="",status!=""}}' + ) coverage_metric_selector = f'__name__=~".*_quality_gate_coverage_percent",suite=~"{suite_var}",{exported}' workspace_coverage_selector = f'suite=~"{suite_var}",{exported}' smell_selector = f'suite=~"{suite_var}",{exported}' @@ -3729,11 +3779,12 @@ def build_jobs_dashboard(): f'or on(suite) ({selected_suite_missing})' ) non_failure = PLATFORM_TEST_NON_FAILURE_STATUS - current_gate_ok_vector = ( - f'(({{{checks_selector},result=~"{non_failure}"}} > bool 0) ' - f'or ({{{checks_selector},status=~"{non_failure}"}} > bool 0))' + current_gate_ok_selector = ( + f'platform_quality:check_status:present_1h{{suite=~"{suite_var}",branch!="",' + f'branch=~"{branch_var}",check!="",status=~"{non_failure}"}}' ) - current_gate_seen_vector = f'({{{checks_selector}}} > bool 0)' + current_gate_ok_vector = f"(({current_gate_ok_selector}) > bool 0)" + current_gate_seen_vector = f'({check_rollup_selector} > bool 0)' current_gate_ok_checks = ( f"sum by (suite) (max by (suite, check) ({current_gate_ok_vector}))" ) @@ -3796,17 +3847,21 @@ def build_jobs_dashboard(): check_regex_supply_chain = "ironbank|supply_chain|image_compliance|artifact_security" def _check_state_percent_series(regex: str, failed: bool) -> str: - result_state = f'result!="",result!~"{non_failure}"' if failed else f'result=~"{non_failure}"' - status_state = f'status!="",status!~"{non_failure}"' if failed else f'status=~"{non_failure}"' - state_vector = ( - f'(({{{checks_selector},check=~"{regex}",{result_state}}} > bool 0) ' - f'or ({{{checks_selector},check=~"{regex}",{status_state}}} > bool 0))' + status_state = f'status!~"{non_failure}"' if failed else f'status=~"{non_failure}"' + family_selector = ( + f'platform_quality:check_status:present_1h{{suite=~"{suite_var}",branch!="",' + f'branch=~"{branch_var}",check=~"{regex}",status!=""}}' ) + state_selector = ( + f'platform_quality:check_status:present_1h{{suite=~"{suite_var}",branch!="",' + f'branch=~"{branch_var}",check=~"{regex}",{status_state}}}' + ) + state_vector = f"(({state_selector}) > bool 0)" state_checks = ( f'sum by (suite) (max by (suite, check) ({state_vector}))' ) total_checks = ( - f'sum by (suite) (max by (suite, check) (({{{checks_selector},check=~"{regex}"}} > bool 0)))' + f'sum by (suite) (max by (suite, check) (({family_selector}) > bool 0))' ) state_percent = f"(100 * ({state_checks}) / clamp_min(({total_checks}), 1))" return f"(({state_percent}) or on(suite) ({selected_suite_zero}))" @@ -3860,7 +3915,8 @@ def build_jobs_dashboard(): ) category_pass_rate_history = ( f'avg by (category) (platform_quality:test_case_pass_rate:percent_1h{{suite=~"{suite_var}",' - f'branch!="",branch=~"{branch_var}",test!="",test!="__no_test_cases__",category!=""}})' + f'branch!="",branch=~"{branch_var}",test!="",test!="__no_test_cases__",' + f'category!="",category!~"{PLATFORM_TEST_SUPPORT_CATEGORY_REGEX}"}})' ) recent_branch_evidence = ( f'sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{{{build_info_selector}}}[30d])))' diff --git a/scripts/tests/test_dashboards_render_atlas.py b/scripts/tests/test_dashboards_render_atlas.py index fa52503e..1f8d210b 100644 --- a/scripts/tests/test_dashboards_render_atlas.py +++ b/scripts/tests/test_dashboards_render_atlas.py @@ -72,9 +72,10 @@ def test_overview_uses_readable_quality_power_and_gitops_panels(): ] assert "atlas-jobs" not in repr(dashboard) assert "Platform Test Success Rate" not in panels_by_title - assert panels_by_title["Gate Checks Passing by Suite"]["type"] == "state-timeline" - assert panels_by_title["Gate Checks Passing by Suite"]["gridPos"] == {"h": 6, "w": 6, "x": 15, "y": 13} - assert panels_by_title["Gate Checks Passing by Suite"]["targets"][0]["legendFormat"] == "{{suite}}" + assert panels_by_title["Test Category Pass Rate"]["type"] == "state-timeline" + assert panels_by_title["Test Category Pass Rate"]["gridPos"] == {"h": 6, "w": 6, "x": 15, "y": 13} + assert panels_by_title["Test Category Pass Rate"]["targets"][0]["legendFormat"] == "{{category}}" + assert "${overview_suite:regex}" in panels_by_title["Test Category Pass Rate"]["targets"][0]["expr"] assert panels_by_title["UPS History (Power Draw)"]["gridPos"] == {"h": 6, "w": 6, "x": 3, "y": 7} assert panels_by_title["Ariadne Run Volume"]["gridPos"] == {"h": 6, "w": 6, "x": 9, "y": 7} assert panels_by_title["Pyrphoros UPS Current"]["gridPos"]["w"] == 3 @@ -118,18 +119,22 @@ def test_overview_uses_readable_quality_power_and_gitops_panels(): assert panels_by_title["Flux Source"]["gridPos"] == {"h": 2, "w": 3, "x": 21, "y": 7} assert panels_by_title["Flux Source"]["targets"][0]["legendFormat"] == "{{branch}}" assert panels_by_title["Run Reliability (24h)"]["gridPos"] == {"h": 2, "w": 3, "x": 21, "y": 9} - assert panels_by_title["Fresh Suites (24h)"]["gridPos"] == {"h": 2, "w": 3, "x": 21, "y": 13} + assert panels_by_title["Suites Reporting (24h)"]["gridPos"] == {"h": 2, "w": 3, "x": 21, "y": 13} + suites_reporting_expr = panels_by_title["Suites Reporting (24h)"]["targets"][0]["expr"] + assert "> bool 0" in suites_reporting_expr + assert "Suites with at least one CI run" in panels_by_title["Suites Reporting (24h)"]["description"] assert panels_by_title["LOC Clean Suites"]["gridPos"] == {"h": 2, "w": 3, "x": 21, "y": 17} assert panels_by_title["GitOps Health"]["type"] == "state-timeline" assert panels_by_title["GitOps Health"]["gridPos"] == {"h": 6, "w": 6, "x": 15, "y": 7} gitops_expr = panels_by_title["GitOps Health"]["targets"][0]["expr"] assert "Kustomizations Not Suspended" in gitops_expr assert "HelmReleases Not Suspended" in gitops_expr - assert panels_by_title["Gate Checks Passing by Suite"]["options"]["legend"]["displayMode"] == "list" - assert panels_by_title["Gate Checks Passing by Suite"]["options"]["legend"]["placement"] == "bottom" - assert panels_by_title["Gate Checks Passing by Suite"]["options"]["mergeValues"] is False - assert panels_by_title["Gate Checks Passing by Suite"]["options"]["showValue"] == "auto" - assert "rowHeight" not in panels_by_title["Gate Checks Passing by Suite"]["options"] + assert panels_by_title["Test Category Pass Rate"]["options"]["legend"]["displayMode"] == "list" + assert panels_by_title["Test Category Pass Rate"]["options"]["legend"]["placement"] == "bottom" + assert panels_by_title["Test Category Pass Rate"]["options"]["mergeValues"] is False + assert panels_by_title["Test Category Pass Rate"]["options"]["showValue"] == "auto" + assert "rowHeight" not in panels_by_title["Test Category Pass Rate"]["options"] + assert any(variable["name"] == "overview_suite" for variable in dashboard["templating"]["list"]) pvc_backup_expr = panels_by_title["PVC Backup Health / Age"]["targets"][0]["expr"] assert "backup-telemetry-missing" in pvc_backup_expr @@ -148,6 +153,7 @@ def test_overview_and_testing_panels_all_have_concise_descriptions(): for dashboard in [mod.build_overview(), mod.build_jobs_dashboard(), mod.build_testing_dashboard()]: panels = flatten_panels(dashboard["panels"]) assert all(panel.get("description") for panel in panels if panel["type"] != "row") + assert "85.7" not in repr(dashboard) def test_render_configmap_writes(tmp_path): @@ -176,6 +182,8 @@ def test_testing_suite_variable_uses_canonical_values_only(): assert not any(alias in variable["query"] for alias in legacy_names) assert not any(alias in variable["allValue"] for alias in legacy_names) assert [option["value"] for option in variable["options"]] == mod.PLATFORM_TEST_SUITE_NAMES + assert "lesavka" in variable["allValue"] + assert "typhon" in variable["allValue"] def test_testing_dashboard_is_public_but_jobs_dashboard_remains_internal(): @@ -209,7 +217,8 @@ def test_jobs_dashboard_separates_current_gate_health_from_reliability(): current_gate_expr = panels_by_title["Current Gate Health by Suite"]["targets"][0]["expr"] assert 'check)' in current_gate_expr - assert 'result=~"ok|passed|success|not_applicable|skipped|na|n/a"' in current_gate_expr + assert "platform_quality:check_status:present_1h" in current_gate_expr + assert "platform_quality_gate_checks_total" not in current_gate_expr assert 'status=~"ok|passed|success|not_applicable|skipped|na|n/a"' in current_gate_expr assert panels_by_title["Current Gate Health by Suite"]["gridPos"]["w"] == 6 assert panels_by_title["Run Reliability by Suite (24h)"]["gridPos"]["w"] == 6 @@ -232,6 +241,7 @@ def test_jobs_dashboard_separates_current_gate_health_from_reliability(): category_panel = panels_by_title["Test Category Pass Rate History"] assert category_panel["type"] == "state-timeline" assert "category" in category_panel["targets"][0]["expr"] + assert 'category!~"fixtures|golden|helpers"' in category_panel["targets"][0]["expr"] assert "Use the Suite filter" in category_panel["description"] assert "category-aware results" in category_panel["description"] @@ -313,6 +323,8 @@ def test_jobs_dashboard_collapses_heavy_drilldowns_for_light_first_paint(): assert failure_rate_panel["fieldConfig"]["defaults"]["max"] == 100 assert failure_rate_panel["fieldConfig"]["defaults"]["thresholds"]["steps"][0]["color"] == "dark-blue" assert "increase(" not in failure_rate_panel["targets"][0]["expr"] + assert "platform_quality:check_status:present_1h" in failure_rate_panel["targets"][0]["expr"] + assert "platform_quality_gate_checks_total" not in failure_rate_panel["targets"][0]["expr"] assert "0 *" in failure_rate_panel["targets"][0]["expr"] assert "and on(suite)" not in failure_rate_panel["targets"][0]["expr"] @@ -366,3 +378,12 @@ def test_lesavka_jenkins_job_has_daily_refresh_trigger(): assert "scmpoll_spec('H/5 * * * *')" in lesavka_block assert "cron" in lesavka_block assert "spec('H H * * *')" in lesavka_block + + +def test_typhon_jenkins_job_has_daily_refresh_trigger(): + casc = pathlib.Path("services/jenkins/configmap-jcasc.yaml").read_text() + typhon_block = casc.split("pipelineJob('typhon')", 1)[1].split("pipelineJob(", 1)[0] + + assert "scmpoll_spec('H/5 * * * *')" in typhon_block + assert "cron" in typhon_block + assert "spec('H H * * *')" in typhon_block diff --git a/services/jenkins/configmap-jcasc.yaml b/services/jenkins/configmap-jcasc.yaml index ed697afc..877e0e53 100644 --- a/services/jenkins/configmap-jcasc.yaml +++ b/services/jenkins/configmap-jcasc.yaml @@ -408,6 +408,9 @@ data: scmpoll_spec('H/5 * * * *') ignorePostCommitHooks(false) } + cron { + spec('H H * * *') + } } } } diff --git a/services/monitoring/dashboards/atlas-overview.json b/services/monitoring/dashboards/atlas-overview.json index 6011f3d1..e8645980 100644 --- a/services/monitoring/dashboards/atlas-overview.json +++ b/services/monitoring/dashboards/atlas-overview.json @@ -2127,7 +2127,7 @@ }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -2213,7 +2213,7 @@ }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", "refId": "A", "instant": true } @@ -2282,7 +2282,7 @@ { "id": 153, "type": "stat", - "title": "Fresh Suites (24h)", + "title": "Suites Reporting (24h)", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2295,7 +2295,7 @@ }, "targets": [ { - "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) > 0)) or on() vector(0)", + "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) > bool 0)) or on() vector(0)", "refId": "A", "instant": true } @@ -2315,15 +2315,15 @@ }, { "color": "dark-yellow", - "value": 8 - }, - { - "color": "dark-green", "value": 9 }, { - "color": "dark-blue", + "color": "dark-green", "value": 10 + }, + { + "color": "dark-blue", + "value": 11 } ] }, @@ -2359,7 +2359,7 @@ "targetBlank": true } ], - "description": "Suites with at least one run in 24h; higher is better because stale suites hide failures." + "description": "Suites with at least one CI run in 24h; full count means the dashboard signal is fresh." }, { "id": 154, @@ -2483,15 +2483,15 @@ }, { "color": "dark-yellow", - "value": 8 - }, - { - "color": "dark-green", "value": 9 }, { - "color": "dark-blue", + "color": "dark-green", "value": 10 + }, + { + "color": "dark-blue", + "value": 11 } ] }, @@ -2795,8 +2795,8 @@ { "id": 46, "type": "state-timeline", - "title": "Gate Checks Passing by Suite", - "description": "Percent of current gate dimensions passing per suite over time. There are seven gate dimensions, so 85.7% means one gate is failing.", + "title": "Test Category Pass Rate", + "description": "Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2809,9 +2809,9 @@ }, "targets": [ { - "expr": "(100 * sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0)))) / clamp_min(sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"} > bool 0))), 1))", + "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", "refId": "A", - "legendFormat": "{{suite}}" + "legendFormat": "{{category}}" } ], "fieldConfig": { @@ -4483,6 +4483,80 @@ "refresh": 1, "sort": 0, "skipUrlSync": false + }, + { + "name": "overview_suite", + "label": "Testing Suite", + "type": "custom", + "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", + "current": { + "text": "lesavka", + "value": "lesavka", + "selected": true + }, + "options": [ + { + "text": "ariadne", + "value": "ariadne", + "selected": false + }, + { + "text": "metis", + "value": "metis", + "selected": false + }, + { + "text": "ananke", + "value": "ananke", + "selected": false + }, + { + "text": "atlasbot", + "value": "atlasbot", + "selected": false + }, + { + "text": "lesavka", + "value": "lesavka", + "selected": true + }, + { + "text": "pegasus", + "value": "pegasus", + "selected": false + }, + { + "text": "soteria", + "value": "soteria", + "selected": false + }, + { + "text": "titan_iac", + "value": "titan_iac", + "selected": false + }, + { + "text": "typhon", + "value": "typhon", + "selected": false + }, + { + "text": "bstein_home", + "value": "bstein_home", + "selected": false + }, + { + "text": "data_prepper", + "value": "data_prepper", + "selected": false + } + ], + "hide": 0, + "multi": false, + "includeAll": false, + "refresh": 1, + "sort": 1, + "skipUrlSync": false } ] }, diff --git a/services/monitoring/dashboards/atlas-testing.json b/services/monitoring/dashboards/atlas-testing.json index d189e240..4417cf5c 100644 --- a/services/monitoring/dashboards/atlas-testing.json +++ b/services/monitoring/dashboards/atlas-testing.json @@ -455,7 +455,7 @@ }, "targets": [ { - "expr": "sort(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"} > bool 0)))), 1)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1))))", + "expr": "sort(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check!=\"\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check!=\"\",status!=\"\"} > bool 0)))), 1)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -916,7 +916,7 @@ }, "targets": [ { - "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\"})", + "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", "refId": "A", "legendFormat": "{{category}}" } @@ -1060,6 +1060,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -1320,7 +1330,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1396,7 +1406,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1472,7 +1482,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1548,7 +1558,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1624,7 +1634,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1700,7 +1710,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1776,7 +1786,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1867,7 +1877,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1943,7 +1953,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2019,7 +2029,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2095,7 +2105,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2171,7 +2181,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2247,7 +2257,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2323,7 +2333,7 @@ }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2569,6 +2579,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -2758,6 +2778,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -2953,6 +2983,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -3149,6 +3189,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -3202,7 +3252,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3285,7 +3335,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3368,7 +3418,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3451,7 +3501,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}) and on(suite) count by (suite) (platform_quality_gate_source_files_total{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}) and on(suite) count by (suite) (platform_quality_gate_source_files_total{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3534,7 +3584,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3617,7 +3667,7 @@ }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3840,6 +3890,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -4018,6 +4078,16 @@ "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -4430,7 +4500,7 @@ "name": "suite", "label": "Suite", "type": "custom", - "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,bstein_home : bstein_home,data_prepper : data_prepper", + "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", "current": { "text": "All", "value": "$__all", @@ -4477,6 +4547,11 @@ "value": "titan_iac", "selected": false }, + { + "text": "typhon", + "value": "typhon", + "selected": false + }, { "text": "bstein_home", "value": "bstein_home", @@ -4491,7 +4566,7 @@ "hide": 0, "multi": false, "includeAll": true, - "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper", + "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper", "refresh": 1, "sort": 1, "skipUrlSync": false @@ -4519,7 +4594,7 @@ "name": "test", "label": "Test Case", "type": "query", - "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\"}, test)", + "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!~\"fixtures|golden|helpers\",exported_job=\"platform-quality-ci\"}, test)", "current": { "text": "All", "value": "$__all", diff --git a/services/monitoring/grafana-dashboard-overview.yaml b/services/monitoring/grafana-dashboard-overview.yaml index 0c764294..ab532468 100644 --- a/services/monitoring/grafana-dashboard-overview.yaml +++ b/services/monitoring/grafana-dashboard-overview.yaml @@ -2136,7 +2136,7 @@ data: }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -2222,7 +2222,7 @@ data: }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", "refId": "A", "instant": true } @@ -2291,7 +2291,7 @@ data: { "id": 153, "type": "stat", - "title": "Fresh Suites (24h)", + "title": "Suites Reporting (24h)", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2304,7 +2304,7 @@ data: }, "targets": [ { - "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) > 0)) or on() vector(0)", + "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) > bool 0)) or on() vector(0)", "refId": "A", "instant": true } @@ -2324,15 +2324,15 @@ data: }, { "color": "dark-yellow", - "value": 8 - }, - { - "color": "dark-green", "value": 9 }, { - "color": "dark-blue", + "color": "dark-green", "value": 10 + }, + { + "color": "dark-blue", + "value": 11 } ] }, @@ -2368,7 +2368,7 @@ data: "targetBlank": true } ], - "description": "Suites with at least one run in 24h; higher is better because stale suites hide failures." + "description": "Suites with at least one CI run in 24h; full count means the dashboard signal is fresh." }, { "id": 154, @@ -2492,15 +2492,15 @@ data: }, { "color": "dark-yellow", - "value": 8 - }, - { - "color": "dark-green", "value": 9 }, { - "color": "dark-blue", + "color": "dark-green", "value": 10 + }, + { + "color": "dark-blue", + "value": 11 } ] }, @@ -2804,8 +2804,8 @@ data: { "id": 46, "type": "state-timeline", - "title": "Gate Checks Passing by Suite", - "description": "Percent of current gate dimensions passing per suite over time. There are seven gate dimensions, so 85.7% means one gate is failing.", + "title": "Test Category Pass Rate", + "description": "Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2818,9 +2818,9 @@ data: }, "targets": [ { - "expr": "(100 * sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0)))) / clamp_min(sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"} > bool 0))), 1))", + "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", "refId": "A", - "legendFormat": "{{suite}}" + "legendFormat": "{{category}}" } ], "fieldConfig": { @@ -4492,6 +4492,80 @@ data: "refresh": 1, "sort": 0, "skipUrlSync": false + }, + { + "name": "overview_suite", + "label": "Testing Suite", + "type": "custom", + "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", + "current": { + "text": "lesavka", + "value": "lesavka", + "selected": true + }, + "options": [ + { + "text": "ariadne", + "value": "ariadne", + "selected": false + }, + { + "text": "metis", + "value": "metis", + "selected": false + }, + { + "text": "ananke", + "value": "ananke", + "selected": false + }, + { + "text": "atlasbot", + "value": "atlasbot", + "selected": false + }, + { + "text": "lesavka", + "value": "lesavka", + "selected": true + }, + { + "text": "pegasus", + "value": "pegasus", + "selected": false + }, + { + "text": "soteria", + "value": "soteria", + "selected": false + }, + { + "text": "titan_iac", + "value": "titan_iac", + "selected": false + }, + { + "text": "typhon", + "value": "typhon", + "selected": false + }, + { + "text": "bstein_home", + "value": "bstein_home", + "selected": false + }, + { + "text": "data_prepper", + "value": "data_prepper", + "selected": false + } + ], + "hide": 0, + "multi": false, + "includeAll": false, + "refresh": 1, + "sort": 1, + "skipUrlSync": false } ] }, diff --git a/services/monitoring/grafana-dashboard-testing.yaml b/services/monitoring/grafana-dashboard-testing.yaml index d08c4baa..8fddc01c 100644 --- a/services/monitoring/grafana-dashboard-testing.yaml +++ b/services/monitoring/grafana-dashboard-testing.yaml @@ -464,7 +464,7 @@ data: }, "targets": [ { - "expr": "sort(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"} > bool 0)))), 1)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1))))", + "expr": "sort(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check!=\"\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check!=\"\",status!=\"\"} > bool 0)))), 1)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -925,7 +925,7 @@ data: }, "targets": [ { - "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\"})", + "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", "refId": "A", "legendFormat": "{{category}}" } @@ -1069,6 +1069,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -1329,7 +1339,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1405,7 +1415,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1481,7 +1491,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1557,7 +1567,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1633,7 +1643,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1709,7 +1719,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1785,7 +1795,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!=\"\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1876,7 +1886,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"tests|unit|build\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1952,7 +1962,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"coverage\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2028,7 +2038,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"loc|smell\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2104,7 +2114,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2180,7 +2190,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"gate|glue|gate_glue\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2256,7 +2266,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"sonarqube|sonar\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2332,7 +2342,7 @@ data: }, "targets": [ { - "expr": "(((100 * (sum by (suite) (max by (suite, check) ((({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0) or ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"} > bool 0))))) / clamp_min((sum by (suite) (max by (suite, check) (({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\"} > bool 0)))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", + "expr": "(((100 * (sum by (suite) (max by (suite, check) (((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status=~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) > bool 0)))) / clamp_min((sum by (suite) (max by (suite, check) ((platform_quality:check_status:present_1h{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",status!=\"\"}) > bool 0))), 1))) or on(suite) ((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))))", "refId": "A", "legendFormat": "{{suite}}" } @@ -2578,6 +2588,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -2767,6 +2787,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -2962,6 +2992,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -3158,6 +3198,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -3211,7 +3261,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_tests_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3294,7 +3344,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) ({__name__=~\".*_quality_gate_checks_total\",exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3377,7 +3427,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_workspace_line_coverage_percent{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3460,7 +3510,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}) and on(suite) count by (suite) (platform_quality_gate_source_files_total{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_source_lines_over_500_total{exported_job=\"platform-quality-ci\"}) and on(suite) count by (suite) (platform_quality_gate_source_files_total{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3543,7 +3593,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3626,7 +3676,7 @@ data: }, "targets": [ { - "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "expr": "sort((100 * (((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) and on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"})))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"lesavka\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"typhon\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -3849,6 +3899,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -4027,6 +4087,16 @@ data: "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", "targetBlank": true }, + { + "title": "typhon: Job", + "url": "${jenkins_base}/job/typhon/", + "targetBlank": true + }, + { + "title": "typhon: Last Artifacts", + "url": "${jenkins_base}/job/typhon/lastCompletedBuild/artifact/", + "targetBlank": true + }, { "title": "bstein_home: Job", "url": "${jenkins_base}/job/bstein-dev-home/", @@ -4439,7 +4509,7 @@ data: "name": "suite", "label": "Suite", "type": "custom", - "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,bstein_home : bstein_home,data_prepper : data_prepper", + "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", "current": { "text": "All", "value": "$__all", @@ -4486,6 +4556,11 @@ data: "value": "titan_iac", "selected": false }, + { + "text": "typhon", + "value": "typhon", + "selected": false + }, { "text": "bstein_home", "value": "bstein_home", @@ -4500,7 +4575,7 @@ data: "hide": 0, "multi": false, "includeAll": true, - "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|bstein_home|data_prepper", + "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper", "refresh": 1, "sort": 1, "skipUrlSync": false @@ -4528,7 +4603,7 @@ data: "name": "test", "label": "Test Case", "type": "query", - "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\"}, test)", + "query": "label_values(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",test!=\"\",test!=\"__no_test_cases__\",category!~\"fixtures|golden|helpers\",exported_job=\"platform-quality-ci\"}, test)", "current": { "text": "All", "value": "$__all", diff --git a/services/monitoring/vmalert-atlas-availability.yaml b/services/monitoring/vmalert-atlas-availability.yaml index 50d79345..05803b86 100644 --- a/services/monitoring/vmalert-atlas-availability.yaml +++ b/services/monitoring/vmalert-atlas-availability.yaml @@ -179,6 +179,17 @@ data: ) labels: rollup: hourly + - record: platform_quality:check_status:present_1h + expr: | + sum by (suite, branch, check, status) ( + max_over_time({__name__=~".*_quality_gate_checks_total",exported_job="platform-quality-ci",suite!="",branch!="",check!="",status!=""}[1h]) + or label_replace( + max_over_time({__name__=~".*_quality_gate_checks_total",exported_job="platform-quality-ci",suite!="",branch!="",check!="",result!="",status=""}[1h]), + "status", "$1", "result", "(.*)" + ) + ) + labels: + rollup: hourly ---