Skip to content
2 changes: 1 addition & 1 deletion image/cli/masfvt/fvt-monitor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
{%- if '9.1' in mas_app_channel_monitor -%}
fvt_91x
{%- elif '9.2' in mas_app_channel_monitor -%}
fvt_91x
fvt_9x
{%- elif mas_app_channel_manage == '' -%}
monitor_fvt
{%- else -%}
Expand Down
19 changes: 9 additions & 10 deletions tekton/src/pipelines/mas-fvt-launcher.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -834,8 +834,9 @@ spec:
runAfter:
- approval-manage

# Launch Monitor FVT (Monitor < 9.2.0 - after IoT)
- name: launchfvt-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
Expand All @@ -851,13 +852,12 @@ spec:
values: ["true", "True"]
- input: $(params.mas_monitor_install_order)
operator: in
values: ["after-iot"]
values: ["before-iot"]
runAfter:
- waitfor-monitor
- waitfor-monitor-before-iot

# 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
# Launch Monitor FVT (Monitor < 9.2.0 - after IoT) - LEGACY
- name: launchfvt-monitor
timeout: "0"
params:
- name: image_pull_policy
Expand All @@ -873,10 +873,9 @@ spec:
values: ["true", "True"]
- input: $(params.mas_monitor_install_order)
operator: in
values: ["before-iot"]
values: ["after-iot"]
runAfter:
- waitfor-monitor-before-iot
- waitfor-iot-after-monitor
- waitfor-monitor

# Approve Monitor for Monitor < 9.2.0 (after-iot scenario)
- name: approval-monitor
Expand Down
68 changes: 52 additions & 16 deletions tekton/src/pipelines/mas-fvt-monitor.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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_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:
Expand Down Expand Up @@ -122,30 +122,66 @@ spec:
operator: notin
values: [""]

# 2. Monitor FVT (with or without Manage Integration)
# 2. Monitor FVT Phase 1 - Pre-IoT (File Ingest)
# -----------------------------------------------------------------------------
# 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
#
# fvt_test_suite should be set to one of the following:
# - monitor_fvt
# - monitor_fvt_with_manage
#
# These testsuites are mutually exclusive
- name: fvt-monitor
# 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
- 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"
Expand All @@ -158,7 +194,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:
Expand All @@ -169,7 +205,7 @@ spec:
# -------------------------------------------------------------------------
{{ lookup('template', 'taskdefs/fvt-data-dictionary/data-dictionary.yml.j2') | indent(4) }}
runAfter:
- fvt-monitor
- fvt-monitor-with-manage

finally:
# 1. Run CV
Expand Down
10 changes: 10 additions & 0 deletions tekton/src/pipelines/taskdefs/fvt-monitor/params.yml.j2
Original file line number Diff line number Diff line change
@@ -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)
27 changes: 27 additions & 0 deletions tekton/src/pipelines/taskdefs/fvt-monitor/phase1.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# -------------------------------------------------------------
# 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.launchfvt_monitor)"
operator: in
values: ["true", "True"]
- 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
144 changes: 144 additions & 0 deletions tekton/src/pipelines/taskdefs/fvt-monitor/phase2.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# -------------------------------------------------------------
# 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.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"]
- 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

# 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.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"]
- 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

# 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.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"]
- 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

# 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.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"]
- 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

# 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.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"]
- 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
Original file line number Diff line number Diff line change
@@ -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
Loading
Loading