From c06d31e9beca5b104ef993eab11b29f95b62d7dd Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Tue, 28 Apr 2026 19:44:43 +0530 Subject: [PATCH 1/7] [patch] Align Monitor FVT suite names with restructured test suites - Update fvt-monitor.yml to use 'fvt_9x' instead of 'fvt_91x' - Update phase1.yml.j2 to run fvt-monitor-only for all modern suites - Update mas-fvt-monitor.yml.j2 parameter descriptions and comments - Ensures File Ingest tests run before IoT for Monitor >= 9.2 --- image/cli/masfvt/fvt-monitor.yml | 4 +- tekton/src/pipelines/mas-fvt-monitor.yml.j2 | 39 +++++---- .../taskdefs/fvt-monitor/params.yml.j2 | 10 +++ .../taskdefs/fvt-monitor/phase1.yml.j2 | 18 +++++ .../taskdefs/fvt-monitor/phase2.yml.j2 | 79 +++++++++++++++++++ .../taskdefs/fvt-monitor/taskref.yml.j2 | 14 ++++ tekton/src/tasks/fvt/mas-fvt-monitor.yml.j2 | 8 +- 7 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/params.yml.j2 create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 diff --git a/image/cli/masfvt/fvt-monitor.yml b/image/cli/masfvt/fvt-monitor.yml index 6708713d10e..71e0354921a 100644 --- a/image/cli/masfvt/fvt-monitor.yml +++ b/image/cli/masfvt/fvt-monitor.yml @@ -22,9 +22,9 @@ # For Monitor 8.x and 9.0.x, use legacy suites based on Manage presence fvt_test_suite: >- {%- if '9.1' in mas_app_channel_monitor -%} - fvt_91x + fvt_9x {%- elif '9.2' in mas_app_channel_monitor -%} - fvt_91x + fvt_9x {%- elif mas_app_channel_manage == '' -%} monitor_fvt {%- else -%} diff --git a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 index 42362853c6c..933e8d41a76 100644 --- a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 @@ -59,7 +59,7 @@ spec: - name: fvt_test_suite type: string - description: Which Monitor FVT suite to run [monitor_fvt, monitor_fvt_with_manage, fvt_91x] + description: Which Monitor FVT suite to run [fvt_monitor_only, fvt_9x, fvt_mref, fvt_iot, fvt_scada, fvt_mist, monitor_fvt_with_manage (8.x/9.0 only)] default: "" tasks: @@ -122,30 +122,41 @@ spec: operator: notin values: [""] - # 2. Monitor FVT (with or without Manage Integration) + # 2. Monitor FVT - Phased Execution (Version > 9.2) # ----------------------------------------------------------------------------- - # When Manage is installed in the cluster, many Monitor APIs are disabled, this - # prevents the standard Monitor FVT suite from running so this IVT suite must run instead + # Monitor FVT for version > 9.2 is split into specialized suites organized in phases: # - # fvt_test_suite should be set to one of the following: - # - monitor_fvt - # - monitor_fvt_with_manage + # Phase 1 (Pre-IoT): File Ingest tests that don't require IoT - runs BEFORE IoT install + # Phase 2 (Post-IoT): All other suites run in PARALLEL after IoT installation + # - fvt-9x (Core Monitor tests) + # - fvt-mref (Bootstrap & integration setup) + # - fvt-iot (IoT integration tests) + # - fvt-scada (SCADA connector tests) + # - fvt-mist (MIST integration tests) # - # These testsuites are mutually exclusive - - name: fvt-monitor + # Note: monitor_fvt_with_manage is a separate suite for older versions (8.10, 8.11, 9.0) + # and is NOT part of this phased execution model + # + # Each suite runs as a separate task to enable IoT-independent execution for version > 9.2 + {{ lookup('template', 'taskdefs/fvt-monitor/phase1.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-monitor/phase2.yml.j2') | indent(4) }} + + # 2b. Monitor FVT with Manage Integration (Version 8.x/9.0 only) + # ----------------------------------------------------------------------------- + # This is a separate suite for older Monitor versions (8.10, 8.11, 9.0) when Manage is installed + # It is NOT part of the phased execution model above + - name: fvt-monitor-with-manage params: - name: mas_instance_id value: $(params.mas_instance_id) - name: mas_workspace_id value: $(params.mas_workspace_id) - - name: fvt_image_registry value: $(params.fvt_image_registry) - name: fvt_image_digest value: $(params.fvt_digest_monitor) - - name: fvt_test_suite - value: $(params.fvt_test_suite) # pytest_marker in Monitor Test Framework + value: $(params.fvt_test_suite) - name: product_channel value: $(params.mas_app_channel_monitor) timeout: "0" @@ -158,7 +169,7 @@ spec: values: [""] - input: "$(params.fvt_test_suite)" operator: in - values: ["monitor_fvt", "monitor_fvt_with_manage", "fvt_91x"] + values: ["monitor_fvt_with_manage"] runAfter: - ivtcore-monitor workspaces: @@ -169,7 +180,7 @@ spec: # ------------------------------------------------------------------------- {{ lookup('template', 'taskdefs/fvt-data-dictionary/data-dictionary.yml.j2') | indent(4) }} runAfter: - - fvt-monitor + - fvt-9x finally: # 1. Run CV diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/params.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/params.yml.j2 new file mode 100644 index 00000000000..7d322dd5cc1 --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/params.yml.j2 @@ -0,0 +1,10 @@ +- name: mas_instance_id + value: $(params.mas_instance_id) +- name: mas_workspace_id + value: $(params.mas_workspace_id) +- name: fvt_image_registry + value: $(params.fvt_image_registry) +- name: fvt_image_digest + value: $(params.fvt_digest_monitor) +- name: product_channel + value: $(params.mas_app_channel_monitor) \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 new file mode 100644 index 00000000000..64c2a90426d --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 @@ -0,0 +1,18 @@ +# ------------------------------------------------------------- +# PHASE 1 - Pre-IoT Installation +# - fvt-monitor-only (File Ingest - NO IoT required) +# ------------------------------------------------------------- + +# Monitor FVT - File Ingest (runs BEFORE IoT installation) +- name: fvt-monitor-only + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_monitor_only + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_monitor_only", "fvt_9x", "fvt_mref", "fvt_iot", "fvt_scada", "fvt_mist"] + runAfter: + - ivtcore-monitor \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 new file mode 100644 index 00000000000..4dc9b885b67 --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 @@ -0,0 +1,79 @@ +# ------------------------------------------------------------- +# PHASE 2 - Post-IoT Installation (Parallel Execution) +# All suites for version > 9.2 run in PARALLEL after IoT installation: +# - fvt-9x (Core Monitor tests) +# - fvt-mref (Bootstrap & integration setup) +# - fvt-iot (IoT integration tests) +# - fvt-scada (SCADA connector tests) +# - fvt-mist (MIST integration tests) +# ------------------------------------------------------------- + +# Monitor FVT - Core Monitor Tests (runs in PARALLEL after IoT installation) +- name: fvt-9x + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_9x + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_9x"] + runAfter: + - fvt-monitor-only + +# Monitor FVT - Bootstrap & Integration Setup (runs in PARALLEL after IoT installation) +- name: fvt-mref + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_mref + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_mref"] + runAfter: + - fvt-monitor-only + +# Monitor FVT - IoT Integration Tests (runs in PARALLEL after IoT installation) +- name: fvt-iot + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_iot + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_iot"] + runAfter: + - fvt-monitor-only + +# Monitor FVT - SCADA Connector Tests (runs in PARALLEL after IoT installation) +- name: fvt-scada + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_scada + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_scada"] + runAfter: + - fvt-monitor-only + +# Monitor FVT - MIST Integration Tests (runs in PARALLEL after IoT installation) +- name: fvt-mist + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_mist + when: + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_mist"] + runAfter: + - fvt-monitor-only diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 new file mode 100644 index 00000000000..c57172a6978 --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 @@ -0,0 +1,14 @@ +timeout: "0" +taskRef: + kind: Task + name: mas-fvt-monitor +when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] +workspaces: + - name: configs + workspace: shared-configs \ No newline at end of file diff --git a/tekton/src/tasks/fvt/mas-fvt-monitor.yml.j2 b/tekton/src/tasks/fvt/mas-fvt-monitor.yml.j2 index 37c561d02f8..fafd34313cd 100644 --- a/tekton/src/tasks/fvt/mas-fvt-monitor.yml.j2 +++ b/tekton/src/tasks/fvt/mas-fvt-monitor.yml.j2 @@ -40,7 +40,11 @@ spec: default: "true" - name: fvt_test_suite type: string - description: Which Monitor FVT suite to run ('monitor_fvt' or 'monitor_fvt_with_manage') + description: Which Monitor FVT suite to run ('fvt_91x', 'fvt_monitor_only', or 'monitor_fvt_with_manage') + - name: test_marker + type: string + description: Pytest marker to filter tests (e.g., 'monitor_only', 'requires_iot', 'integration') + default: "" - name: ctf_is_local type: string description: Boolean value to check if tests are runninng locally or on fvt @@ -84,6 +88,8 @@ spec: # Test Data - name: FVT_TEST_SUITE value: $(params.fvt_test_suite) + - name: TEST_MARKER + value: $(params.test_marker) - name: FVT_ENABLE_DEBUG value: "$(params.fvt_enable_debug)" - name: CTF_IS_LOCAL From 3a4aefbf6f91c0e25cacbaa5e2fcf11c6818e57f Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Tue, 28 Apr 2026 23:50:06 +0530 Subject: [PATCH 2/7] [patch] feat: Add version-specific Monitor FVT execution for 9.1 and 9.2+ - Monitor 9.1: Runs fvt_9x, fvt_mref, fvt_scada in Phase 2 (no Phase 1) - Monitor 9.2+: Runs fvt_monitor_only in Phase 1, ALL 5 suites in Phase 2 - Legacy versions (8.x/9.0): Unchanged, runs monitor_fvt_with_manage only Changes: - fvt-monitor.yml: Set fvt_91x for 9.1, fvt_9x for 9.2+ - phase1.yml.j2: Exclude fvt_91x from Phase 1 execution - phase2.yml.j2: Add fvt_9x to all suite conditions, fvt_91x to 3 suites - mas-fvt-monitor.yml.j2: Update parameter description --- image/cli/masfvt/fvt-monitor.yml | 2 +- tekton/src/pipelines/mas-fvt-monitor.yml.j2 | 2 +- .../src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/image/cli/masfvt/fvt-monitor.yml b/image/cli/masfvt/fvt-monitor.yml index 71e0354921a..92d99663cf6 100644 --- a/image/cli/masfvt/fvt-monitor.yml +++ b/image/cli/masfvt/fvt-monitor.yml @@ -22,7 +22,7 @@ # For Monitor 8.x and 9.0.x, use legacy suites based on Manage presence fvt_test_suite: >- {%- if '9.1' in mas_app_channel_monitor -%} - fvt_9x + fvt_91x {%- elif '9.2' in mas_app_channel_monitor -%} fvt_9x {%- elif mas_app_channel_manage == '' -%} diff --git a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 index 933e8d41a76..bb180712588 100644 --- a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 @@ -59,7 +59,7 @@ spec: - name: fvt_test_suite type: string - description: Which Monitor FVT suite to run [fvt_monitor_only, fvt_9x, fvt_mref, fvt_iot, fvt_scada, fvt_mist, monitor_fvt_with_manage (8.x/9.0 only)] + description: Which Monitor FVT suite to run [fvt_91x (9.1 only), fvt_9x (9.2+), fvt_monitor_only, fvt_mref, fvt_iot, fvt_scada, fvt_mist, monitor_fvt_with_manage (8.x/9.0 only)] default: "" tasks: diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 index 4dc9b885b67..9832456d310 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 @@ -18,7 +18,7 @@ when: - input: "$(params.fvt_test_suite)" operator: in - values: ["fvt_9x"] + values: ["fvt_9x", "fvt_91x"] runAfter: - fvt-monitor-only @@ -32,7 +32,7 @@ when: - input: "$(params.fvt_test_suite)" operator: in - values: ["fvt_mref"] + values: ["fvt_mref", "fvt_9x", "fvt_91x"] runAfter: - fvt-monitor-only @@ -46,7 +46,7 @@ when: - input: "$(params.fvt_test_suite)" operator: in - values: ["fvt_iot"] + values: ["fvt_iot", "fvt_9x"] runAfter: - fvt-monitor-only @@ -60,7 +60,7 @@ when: - input: "$(params.fvt_test_suite)" operator: in - values: ["fvt_scada"] + values: ["fvt_scada", "fvt_9x", "fvt_91x"] runAfter: - fvt-monitor-only @@ -74,6 +74,6 @@ when: - input: "$(params.fvt_test_suite)" operator: in - values: ["fvt_mist"] + values: ["fvt_mist", "fvt_9x"] runAfter: - fvt-monitor-only From 23a55628d81f8b2ae466226a76dd6de589800c6c Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Wed, 29 Apr 2026 23:48:39 +0530 Subject: [PATCH 3/7] [patch] feat: Support version-specific Monitor FVT execution with Phase 1/Phase 2 model - Updated phase1.yml.j2: Added fvt-monitor-only task for file ingest before IoT - Updated phase2.yml.j2: Added 5 parallel tasks (fvt-9x, fvt-mref, fvt-iot, fvt-scada, fvt-mist) after IoT - Updated mas-fvt-launcher.yml.j2: Integrated Phase 1 and Phase 2 task definitions - Monitor 9.1: Runs fvt_91x suite - Monitor 9.2+: Runs fvt_9x suite with all Phase 2 tasks in parallel - All Phase 2 tasks depend on waitfor-iot-after-monitor completion --- tekton/src/pipelines/mas-fvt-launcher.yml.j2 | 33 +++++------------ .../taskdefs/fvt-monitor/phase1.yml.j2 | 9 +++-- .../taskdefs/fvt-monitor/phase2.yml.j2 | 35 +++++++++++++++++++ 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 index ac48a4c7126..f06f9bfc6f2 100644 --- a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 @@ -832,7 +832,15 @@ spec: runAfter: - approval-manage - # Launch Monitor FVT (Monitor < 9.2.0 - after IoT) + # ============================================================ + # Monitor FVT - Phase 1 & Phase 2 Execution + # Phase 1: File Ingest (runs after Monitor install, before IoT) + # Phase 2: All other suites (run in parallel after IoT install) + # ============================================================ + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/phase1.yml.j2') | indent(4) }} + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/phase2.yml.j2') | indent(4) }} + + # Launch Monitor FVT (Monitor < 9.2.0 - after IoT) - LEGACY - name: launchfvt-monitor timeout: "0" params: @@ -853,29 +861,6 @@ spec: runAfter: - waitfor-monitor - # Launch Monitor FVT (Monitor >= 9.2.0 - before IoT) - # Waits for both Monitor and IoT installations to complete before launching - - name: launchfvt-monitor-before-iot - timeout: "0" - params: - - name: image_pull_policy - value: $(params.image_pull_policy) - - name: pipelinerun_name - value: "$(params.mas_instance_id)-fvt-monitor" - taskRef: - kind: Task - name: mas-launchfvt-monitor - when: - - input: $(params.launchfvt_monitor) - operator: in - values: ["true", "True"] - - input: $(params.mas_monitor_install_order) - operator: in - values: ["before-iot"] - runAfter: - - waitfor-monitor-before-iot - - waitfor-iot-after-monitor - # Approve Monitor for Monitor < 9.2.0 (after-iot scenario) - name: approval-monitor timeout: "0" diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 index 64c2a90426d..7af978842ce 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 @@ -11,8 +11,11 @@ - name: fvt_test_suite value: fvt_monitor_only when: - - input: "$(params.fvt_test_suite)" + - input: "$(params.launchfvt_monitor)" operator: in - values: ["fvt_monitor_only", "fvt_9x", "fvt_mref", "fvt_iot", "fvt_scada", "fvt_mist"] + values: ["true", "True"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - - ivtcore-monitor \ No newline at end of file + - waitfor-monitor-before-iot \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 index 9832456d310..ef15748d375 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 @@ -16,11 +16,18 @@ - name: fvt_test_suite value: fvt_9x when: + - input: "$(params.launchfvt_monitor)" + operator: in + values: ["true", "True"] - input: "$(params.fvt_test_suite)" operator: in values: ["fvt_9x", "fvt_91x"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - fvt-monitor-only + - waitfor-iot-after-monitor # Monitor FVT - Bootstrap & Integration Setup (runs in PARALLEL after IoT installation) - name: fvt-mref @@ -30,11 +37,18 @@ - name: fvt_test_suite value: fvt_mref when: + - input: "$(params.launchfvt_monitor)" + operator: in + values: ["true", "True"] - input: "$(params.fvt_test_suite)" operator: in values: ["fvt_mref", "fvt_9x", "fvt_91x"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - fvt-monitor-only + - waitfor-iot-after-monitor # Monitor FVT - IoT Integration Tests (runs in PARALLEL after IoT installation) - name: fvt-iot @@ -44,11 +58,18 @@ - name: fvt_test_suite value: fvt_iot when: + - input: "$(params.launchfvt_monitor)" + operator: in + values: ["true", "True"] - input: "$(params.fvt_test_suite)" operator: in values: ["fvt_iot", "fvt_9x"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - fvt-monitor-only + - waitfor-iot-after-monitor # Monitor FVT - SCADA Connector Tests (runs in PARALLEL after IoT installation) - name: fvt-scada @@ -58,11 +79,18 @@ - name: fvt_test_suite value: fvt_scada when: + - input: "$(params.launchfvt_monitor)" + operator: in + values: ["true", "True"] - input: "$(params.fvt_test_suite)" operator: in values: ["fvt_scada", "fvt_9x", "fvt_91x"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - fvt-monitor-only + - waitfor-iot-after-monitor # Monitor FVT - MIST Integration Tests (runs in PARALLEL after IoT installation) - name: fvt-mist @@ -72,8 +100,15 @@ - name: fvt_test_suite value: fvt_mist when: + - input: "$(params.launchfvt_monitor)" + operator: in + values: ["true", "True"] - input: "$(params.fvt_test_suite)" operator: in values: ["fvt_mist", "fvt_9x"] + - input: "$(params.mas_monitor_install_order)" + operator: in + values: ["before-iot"] runAfter: - fvt-monitor-only + - waitfor-iot-after-monitor From 9467642b4ce7ea7059a6d69828aa66c7d4b3539f Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Thu, 30 Apr 2026 08:50:11 +0530 Subject: [PATCH 4/7] [patch] Fix duplicate when clause causing Tekton build failure - Removed when clause from taskref.yml.j2 to prevent duplication - Added validation checks directly to phase1.yml.j2 and phase2.yml.j2 - Ensures fvt_digest_monitor and mas_app_channel_monitor are validated - Fixes BadRequest error during pipeline apply --- .../taskdefs/fvt-monitor/phase1.yml.j2 | 6 ++++ .../taskdefs/fvt-monitor/phase2.yml.j2 | 30 +++++++++++++++++++ .../taskdefs/fvt-monitor/taskref.yml.j2 | 7 ----- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 index 7af978842ce..3b4afa5d37d 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2 @@ -17,5 +17,11 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - waitfor-monitor-before-iot \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 index ef15748d375..67feda88770 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2 @@ -25,6 +25,12 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - fvt-monitor-only - waitfor-iot-after-monitor @@ -46,6 +52,12 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - fvt-monitor-only - waitfor-iot-after-monitor @@ -67,6 +79,12 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - fvt-monitor-only - waitfor-iot-after-monitor @@ -88,6 +106,12 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - fvt-monitor-only - waitfor-iot-after-monitor @@ -109,6 +133,12 @@ - input: "$(params.mas_monitor_install_order)" operator: in values: ["before-iot"] + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.mas_app_channel_monitor)" + operator: notin + values: [""] runAfter: - fvt-monitor-only - waitfor-iot-after-monitor diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 index c57172a6978..0fba5df9c1d 100644 --- a/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/taskref.yml.j2 @@ -2,13 +2,6 @@ timeout: "0" taskRef: kind: Task name: mas-fvt-monitor -when: - - input: "$(params.fvt_digest_monitor)" - operator: notin - values: [""] - - input: "$(params.mas_app_channel_monitor)" - operator: notin - values: [""] workspaces: - name: configs workspace: shared-configs \ No newline at end of file From 292c667fea7829dda2aea684b08104f54e95203a Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Thu, 30 Apr 2026 09:27:53 +0530 Subject: [PATCH 5/7] [patch] Add missing Monitor FVT parameters to pipeline - Added fvt_digest_monitor parameter for Monitor FVT image digest - Added mas_app_channel_monitor parameter for Monitor app channel version - Added mas_workspace_id parameter for MAS workspace ID - Added fvt_test_suite parameter to specify which test suite to run These parameters are required by the new Phase 1 (fvt-monitor-only) and Phase 2 (fvt-9x, fvt-mref, fvt-iot, fvt-scada, fvt-mist) Monitor FVT tasks. Fixes Tekton validation error: non-existent variable in pipeline parameters --- tekton/src/pipelines/mas-fvt-launcher.yml.j2 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 index f06f9bfc6f2..46b03b3c91e 100644 --- a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 @@ -149,6 +149,25 @@ spec: - name: aiservice_instance_id type: string default: "" + + # Monitor FVT Parameters + # ------------------------------------------------------------------------- + - name: fvt_digest_monitor + type: string + default: "" + description: "Monitor FVT image digest" + - name: mas_app_channel_monitor + type: string + default: "" + description: "Monitor app channel version" + - name: mas_workspace_id + type: string + default: "" + description: "MAS workspace ID" + - name: fvt_test_suite + type: string + default: "fvt_9x" + description: "Monitor FVT test suite to run (fvt_9x, fvt_91x, fvt_mref, fvt_iot, fvt_scada, fvt_mist, fvt_monitor_only)" tasks: # 0. Configuration From b04cb5880236b86f463746e03d048d61e6eddf44 Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Thu, 30 Apr 2026 11:31:09 +0530 Subject: [PATCH 6/7] [patch] Remove phase1/phase2 templates from mas-fvt-monitor pipeline The phase1 and phase2 templates should ONLY be included in mas-fvt-launcher pipeline, not in mas-fvt-monitor pipeline. The mas-fvt-monitor pipeline is a standalone pipeline that runs a single FVT test suite based on the fvt_test_suite parameter. It should not contain the phased execution logic with IoT dependencies. Fixes: - Removed phase1.yml.j2 and phase2.yml.j2 template includes - Fixed data-dictionary task dependency from 'fvt-9x' to 'fvt-monitor-with-manage' - Removed incorrect references to launchfvt_monitor and mas_monitor_install_order parameters - Removed dependency on non-existent waitfor-iot-after-monitor task This resolves Tekton validation errors: - 'task fvt-9x depends on waitfor-iot-after-monitor but waitfor-iot-after-monitor wasn't present' - 'non-existent variable in $(params.launchfvt_monitor)' - 'non-existent variable in $(params.mas_monitor_install_order)' --- tekton/src/pipelines/mas-fvt-monitor.yml.j2 | 23 ++------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 index bb180712588..5d359a8eefd 100644 --- a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 @@ -122,26 +122,7 @@ spec: operator: notin values: [""] - # 2. Monitor FVT - Phased Execution (Version > 9.2) - # ----------------------------------------------------------------------------- - # Monitor FVT for version > 9.2 is split into specialized suites organized in phases: - # - # Phase 1 (Pre-IoT): File Ingest tests that don't require IoT - runs BEFORE IoT install - # Phase 2 (Post-IoT): All other suites run in PARALLEL after IoT installation - # - fvt-9x (Core Monitor tests) - # - fvt-mref (Bootstrap & integration setup) - # - fvt-iot (IoT integration tests) - # - fvt-scada (SCADA connector tests) - # - fvt-mist (MIST integration tests) - # - # Note: monitor_fvt_with_manage is a separate suite for older versions (8.10, 8.11, 9.0) - # and is NOT part of this phased execution model - # - # Each suite runs as a separate task to enable IoT-independent execution for version > 9.2 - {{ lookup('template', 'taskdefs/fvt-monitor/phase1.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-monitor/phase2.yml.j2') | indent(4) }} - - # 2b. Monitor FVT with Manage Integration (Version 8.x/9.0 only) + # 2. Monitor FVT with Manage Integration (Version 8.x/9.0 only) # ----------------------------------------------------------------------------- # This is a separate suite for older Monitor versions (8.10, 8.11, 9.0) when Manage is installed # It is NOT part of the phased execution model above @@ -180,7 +161,7 @@ spec: # ------------------------------------------------------------------------- {{ lookup('template', 'taskdefs/fvt-data-dictionary/data-dictionary.yml.j2') | indent(4) }} runAfter: - - fvt-9x + - fvt-monitor-with-manage finally: # 1. Run CV From 01548afce583df4b5b420d95714e0982506b8b36 Mon Sep 17 00:00:00 2001 From: Jvaneel Dwivedi Date: Fri, 1 May 2026 13:52:44 +0530 Subject: [PATCH 7/7] [patch] Implement phase-based execution for Monitor FVT - Fixed regression where fvt-monitor-only was not running after Monitor installation - Restored launchfvt-monitor-before-iot task in FVT launcher pipeline - Removed broken inline phase tasks and unnecessary parameters from FVT launcher - Implemented phase-based execution in mas-fvt-monitor pipeline: * Phase 1: fvt-monitor-only runs immediately after Monitor installation * Wait task: Waits for IoT installation to complete * Phase 2: 5 suites run in parallel (fvt-9x, fvt-mref, fvt-iot, fvt-scada, fvt-mist) - Created pipeline-phase1.yml.j2 and pipeline-phase2.yml.j2 task definitions - Follows same pattern as Manage FVT but adapted for Monitor's pre/post IoT requirements This ensures Monitor FVT tests execute correctly: 1. Monitor installation completes 2. fvt-monitor-only suite runs (File Ingest tests) 3. Pipeline waits for IoT installation 4. All remaining suites execute in parallel --- tekton/src/pipelines/mas-fvt-launcher.yml.j2 | 47 ++++----- tekton/src/pipelines/mas-fvt-monitor.yml.j2 | 46 ++++++++- .../fvt-monitor/pipeline-phase1.yml.j2 | 21 ++++ .../fvt-monitor/pipeline-phase2.yml.j2 | 99 +++++++++++++++++++ 4 files changed, 186 insertions(+), 27 deletions(-) create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase1.yml.j2 create mode 100644 tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase2.yml.j2 diff --git a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 index 46b03b3c91e..749a3dd0e4d 100644 --- a/tekton/src/pipelines/mas-fvt-launcher.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-launcher.yml.j2 @@ -149,25 +149,6 @@ spec: - name: aiservice_instance_id type: string default: "" - - # Monitor FVT Parameters - # ------------------------------------------------------------------------- - - name: fvt_digest_monitor - type: string - default: "" - description: "Monitor FVT image digest" - - name: mas_app_channel_monitor - type: string - default: "" - description: "Monitor app channel version" - - name: mas_workspace_id - type: string - default: "" - description: "MAS workspace ID" - - name: fvt_test_suite - type: string - default: "fvt_9x" - description: "Monitor FVT test suite to run (fvt_9x, fvt_91x, fvt_mref, fvt_iot, fvt_scada, fvt_mist, fvt_monitor_only)" tasks: # 0. Configuration @@ -851,13 +832,27 @@ spec: runAfter: - approval-manage - # ============================================================ - # Monitor FVT - Phase 1 & Phase 2 Execution - # Phase 1: File Ingest (runs after Monitor install, before IoT) - # Phase 2: All other suites (run in parallel after IoT install) - # ============================================================ - {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/phase1.yml.j2') | indent(4) }} - {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/phase2.yml.j2') | indent(4) }} + # Launch Monitor FVT (Monitor >= 9.2.0 - before IoT) + # Waits for both Monitor and IoT installations to complete before launching + - name: launchfvt-monitor-before-iot + timeout: "0" + params: + - name: image_pull_policy + value: $(params.image_pull_policy) + - name: pipelinerun_name + value: "$(params.mas_instance_id)-fvt-monitor" + taskRef: + kind: Task + name: mas-launchfvt-monitor + when: + - input: $(params.launchfvt_monitor) + operator: in + values: ["true", "True"] + - input: $(params.mas_monitor_install_order) + operator: in + values: ["before-iot"] + runAfter: + - waitfor-monitor-before-iot # Launch Monitor FVT (Monitor < 9.2.0 - after IoT) - LEGACY - name: launchfvt-monitor diff --git a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 index 5d359a8eefd..c843ff8fcea 100644 --- a/tekton/src/pipelines/mas-fvt-monitor.yml.j2 +++ b/tekton/src/pipelines/mas-fvt-monitor.yml.j2 @@ -122,7 +122,51 @@ spec: operator: notin values: [""] - # 2. Monitor FVT with Manage Integration (Version 8.x/9.0 only) + # 2. Monitor FVT Phase 1 - Pre-IoT (File Ingest) + # ----------------------------------------------------------------------------- + # Phase 1 runs immediately after Monitor installation completes + {{ lookup('template', 'taskdefs/fvt-monitor/pipeline-phase1.yml.j2') | indent(4) }} + + # 3. Wait for IoT Installation + # ----------------------------------------------------------------------------- + - name: waitfor-iot + timeout: "0" + taskRef: + kind: Task + name: mas-devops-wait-for-configmap + params: + - name: image_pull_policy + value: $(params.image_pull_policy) + - name: namespace + value: $(context.taskRun.namespace) + - name: configmap_name + value: sync-install + - name: configmap_key + value: IOT_INSTALL_STATUS + - name: configmap_target_value + value: Completed + - name: delay + value: "60" + - name: max_retries + value: "60" + - name: ignore_failure + value: "False" + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: notin + values: ["monitor_fvt_with_manage"] + runAfter: + - fvt-monitor-only + + # 4. Monitor FVT Phase 2 - Post-IoT (Parallel Execution) + # ----------------------------------------------------------------------------- + # Phase 2 runs in parallel after IoT installation completes + {{ lookup('template', 'taskdefs/fvt-monitor/pipeline-phase2.yml.j2') | indent(4) }} + + # 5. Monitor FVT with Manage Integration (Version 8.x/9.0 only - LEGACY) # ----------------------------------------------------------------------------- # This is a separate suite for older Monitor versions (8.10, 8.11, 9.0) when Manage is installed # It is NOT part of the phased execution model above diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase1.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase1.yml.j2 new file mode 100644 index 00000000000..39c8499e5bc --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase1.yml.j2 @@ -0,0 +1,21 @@ +# ------------------------------------------------------------- +# PHASE 1 - Pre-IoT Installation +# - fvt-monitor-only (File Ingest - NO IoT required) +# ------------------------------------------------------------- + +# Monitor FVT - File Ingest (runs BEFORE IoT installation) +- name: fvt-monitor-only + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_monitor_only + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: notin + values: ["monitor_fvt_with_manage"] + runAfter: + - ivtcore-monitor \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase2.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase2.yml.j2 new file mode 100644 index 00000000000..46a80d6cc1f --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-monitor/pipeline-phase2.yml.j2 @@ -0,0 +1,99 @@ +# ------------------------------------------------------------- +# PHASE 2 - Post-IoT Installation (Parallel Execution) +# All suites run in PARALLEL after IoT installation: +# - fvt-9x (Core Monitor tests) +# - fvt-mref (Bootstrap & integration setup) +# - fvt-iot (IoT integration tests) +# - fvt-scada (SCADA connector tests) +# - fvt-mist (MIST integration tests) +# ------------------------------------------------------------- + +# Monitor FVT - Core Monitor Tests (runs in PARALLEL after IoT installation) +- name: fvt-9x + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_9x + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_9x", "fvt_91x"] + runAfter: + - fvt-monitor-only + - waitfor-iot + +# Monitor FVT - Bootstrap & Integration Setup (runs in PARALLEL after IoT installation) +- name: fvt-mref + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_mref + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_mref", "fvt_9x", "fvt_91x"] + runAfter: + - fvt-monitor-only + - waitfor-iot + +# Monitor FVT - IoT Integration Tests (runs in PARALLEL after IoT installation) +- name: fvt-iot + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_iot + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_iot", "fvt_9x"] + runAfter: + - fvt-monitor-only + - waitfor-iot + +# Monitor FVT - SCADA Connector Tests (runs in PARALLEL after IoT installation) +- name: fvt-scada + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_scada + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_scada", "fvt_9x", "fvt_91x"] + runAfter: + - fvt-monitor-only + - waitfor-iot + +# Monitor FVT - MIST Integration Tests (runs in PARALLEL after IoT installation) +- name: fvt-mist + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/taskref.yml.j2') | indent(2) }} + params: + {{ lookup('template', pipeline_src_dir ~ '/taskdefs/fvt-monitor/params.yml.j2') | indent(4) }} + - name: fvt_test_suite + value: fvt_mist + when: + - input: "$(params.fvt_digest_monitor)" + operator: notin + values: [""] + - input: "$(params.fvt_test_suite)" + operator: in + values: ["fvt_mist", "fvt_9x"] + runAfter: + - fvt-monitor-only + - waitfor-iot \ No newline at end of file