Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
97c825e
Fix ODF operator version in OPP preflight compat matrix for 5.0
redhat-chai-bot Sep 15, 2026
6d5de0d
Add ipi-vsphere-pre chain and post block to OCP 5.0/5.1 vSphere inter…
redhat-chai-bot Sep 15, 2026
b0ad60a
Add jq to cli-with-git image for stolostron/policy-collection configs
redhat-chai-bot Sep 15, 2026
86bb8f6
ci-operator/config: fix firewatch config path and GCS credentials for…
redhat-chai-bot Sep 15, 2026
b074525
firewatch: default to public GCS bucket when private deck is not enabled
claude Sep 16, 2026
3304a9f
ci-operator/config: restore published OPP Firewatch config path
redhat-chai-bot Sep 16, 2026
c92bc2e
INTEROP-9447: Add missing ACS-dependent policies to SKIP_POLICIES and…
redhat-chai-bot Sep 11, 2026
31b5d82
interop: add ACS central policies to 4.22/4.22-fips SKIP_POLICIES
redhat-chai-bot Sep 16, 2026
2a63a34
interop: fix OPP test step symmetry across all variants
redhat-chai-bot Sep 16, 2026
b3218bd
interop: remove legacy acm-tests-observability from ocp5.0 config
claude Sep 16, 2026
ab010dd
interop: add interop-tests-ocs-tests to 4.22 and 5.0 vSphere
redhat-chai-bot Sep 16, 2026
bbad50a
interop: fix ref-only step definitions
redhat-chai-bot Sep 16, 2026
695002c
INTEROP-9484: Add best_effort to failing OPP interop test steps
redhat-chai-bot Sep 15, 2026
7d5626b
interop: move best_effort from ref YAMLs to OPP ci-operator configs
redhat-chai-bot Sep 16, 2026
6bf2ad1
interop: propagate JUnit XMLs to SHARED_DIR for skip-ratio-gate
redhat-chai-bot Sep 16, 2026
1870451
interop-tests/ocs-tests: propagate JUnit XML to SHARED_DIR
claude Sep 16, 2026
ab9fc69
test-only: disable skip-ratio gate
redhat-chai-bot Sep 16, 2026
3bb8e55
fix: restore best_effort in ref YAMLs, remove invalid overrides from …
redhat-chai-bot Sep 16, 2026
0c5a0bb
Add missing ocs-ci-tests base_image to ocp4.22/5.0 configs
redhat-chai-bot Sep 17, 2026
7e92f24
Add vsphere-ibmcloud-ci credential to interop-tests-ocs-tests step
redhat-chai-bot Sep 17, 2026
60f1d0a
fix: observability-odf label selectors, JUnit propagation, and ocs-te…
redhat-chai-bot Sep 17, 2026
4c18e02
Remove FAIL_ON_BREACH from CR-compliant configs
redhat-chai-bot Sep 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ base_images:
name: "2.17"
namespace: acm-qe
tag: multicluster-observability-operator-opp
ocs-ci-tests:
name: ocs-ci-container
namespace: ci
tag: stable
tests-private:
name: tests-private
namespace: ci
Expand All @@ -36,7 +40,7 @@ images:
items:
- dockerfile_literal: |
FROM this-is-ignored
RUN dnf install -y git python39
RUN dnf install -y git python39 jq
from: cli
optional: true
to: cli-with-git
Expand Down Expand Up @@ -104,6 +108,7 @@ tests:
{"name": "advanced-cluster-management", "source": "redhat-operators", "channel": "release-2.17", "install_namespace": "ocm", "target_namespaces": "ocm", "operator_group": "acm-operator-group"}
]
QUAY_OPERATOR_CHANNEL: stable-3.17
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
ZONES_COUNT: "3"
post:
- ref: acm-fetch-operator-versions
Expand Down Expand Up @@ -134,6 +139,7 @@ tests:
- ref: acm-opp-app
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: interop-tests-opp-quay-smoke
- ref: acm-tests-observability
- as: cr--full-stack--vsphere
Expand Down Expand Up @@ -172,6 +178,7 @@ tests:
QUAY_OPERATOR_CHANNEL: stable-3.17
RESOURCE_BIND_TIMEOUT: "180"
SIZE_VARIANT: large
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
post:
- ref: acm-fetch-operator-versions
- ref: acm-must-gather
Expand All @@ -187,6 +194,7 @@ tests:
- chain: cucushift-installer-check-cluster-health
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: acm-tests-observability
- ref: acm-opp-app
workflow: acm-ipi-vsphere
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ base_images:
name: "2.17"
namespace: acm-qe
tag: multicluster-observability-operator-opp
ocs-ci-tests:
name: ocs-ci-container
namespace: ci
tag: stable
tests-private:
name: tests-private
namespace: ci
Expand All @@ -32,7 +36,7 @@ images:
items:
- dockerfile_literal: |
FROM this-is-ignored
RUN dnf install -y git python39
RUN dnf install -y git python39 jq
from: cli
optional: true
to: cli-with-git
Expand Down Expand Up @@ -88,6 +92,7 @@ tests:
[
{"name": "advanced-cluster-management", "source": "redhat-operators", "channel": "release-2.17", "install_namespace": "ocm", "target_namespaces": "ocm", "operator_group": "acm-operator-group"}
]
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
ZONES_COUNT: "3"
post:
- ref: acm-fetch-operator-versions
Expand All @@ -111,11 +116,15 @@ tests:
- ref: acm-policies-openshift-plus-setup
- ref: acm-policies-openshift-plus
- chain: cucushift-installer-check-cluster-health
- ref: interop-opp-wait-mcp
- ref: stackrox-opp-readiness
- ref: stackrox-opp-smoke
- ref: acm-tests-clc-smoke
- ref: acm-fetch-managed-clusters
- ref: acm-opp-app
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: interop-tests-opp-quay-smoke
- ref: acm-tests-observability
- as: cr--full-stack--vsphere
Expand Down Expand Up @@ -153,13 +162,19 @@ tests:
]
RESOURCE_BIND_TIMEOUT: "180"
SIZE_VARIANT: large
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
post:
- ref: acm-fetch-operator-versions
- ref: acm-must-gather
- ref: mce-must-gather
- chain: ipi-vsphere-post
- ref: mpiit-data-router-reporter
- ref: firewatch-report-issues
pre:
- chain: ipi-vsphere-pre
- ref: interop-opp-disk-diag
- ref: interop-opp-kubelet-config
- ref: interop-opp-wait-for-api
test:
- ref: install-operators
- ref: acm-mch
Expand All @@ -168,6 +183,7 @@ tests:
- chain: cucushift-installer-check-cluster-health
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: acm-tests-observability
- ref: acm-opp-app
workflow: acm-ipi-vsphere
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ images:
items:
- dockerfile_literal: |
FROM this-is-ignored
RUN dnf install -y git python39
RUN dnf install -y git python39 jq
from: cli
optional: true
to: cli-with-git
Expand Down Expand Up @@ -89,6 +89,7 @@ tests:
[
{"name": "advanced-cluster-management", "source": "redhat-operators", "channel": "release-2.17", "install_namespace": "ocm", "target_namespaces": "ocm", "operator_group": "acm-operator-group"}
]
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
ZONES_COUNT: "3"
post:
- ref: acm-fetch-operator-versions
Expand All @@ -112,9 +113,14 @@ tests:
- ref: acm-policies-openshift-plus-setup
- ref: acm-policies-openshift-plus
- chain: cucushift-installer-check-cluster-health
- ref: acm-tests-clc-create
- ref: interop-opp-wait-mcp
- ref: stackrox-opp-readiness
- ref: stackrox-opp-smoke
- ref: acm-tests-clc-smoke
- ref: acm-fetch-managed-clusters
- ref: acm-opp-app
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: interop-tests-opp-quay-smoke
- ref: acm-tests-observability
Expand Down Expand Up @@ -153,20 +159,30 @@ tests:
[
{"name": "advanced-cluster-management", "source": "redhat-operators", "channel": "release-2.17", "install_namespace": "ocm", "target_namespaces": "ocm", "operator_group": "acm-operator-group"}
]
RESOURCE_BIND_TIMEOUT: "180"
SIZE_VARIANT: large
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
post:
- ref: acm-fetch-operator-versions
- ref: acm-must-gather
- ref: mce-must-gather
- chain: ipi-vsphere-post
- ref: mpiit-data-router-reporter
- ref: firewatch-report-issues
pre:
- chain: ipi-vsphere-pre
- ref: interop-opp-disk-diag
- ref: interop-opp-kubelet-config
- ref: interop-opp-wait-for-api
test:
- ref: install-operators
- ref: acm-mch
- ref: acm-policies-openshift-plus-setup
- ref: acm-policies-openshift-plus
- chain: cucushift-installer-check-cluster-health
- ref: interop-opp-wait-mcp
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: acm-tests-observability
- ref: acm-opp-app
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ base_images:
name: "2.17"
namespace: acm-qe
tag: multicluster-observability-operator-opp
ocs-ci-tests:
name: ocs-ci-container
namespace: ci
tag: stable
tests-private:
name: tests-private
namespace: ci
Expand All @@ -36,7 +40,7 @@ images:
items:
- dockerfile_literal: |
FROM this-is-ignored
RUN dnf install -y git python39
RUN dnf install -y git python39 jq
from: cli
optional: true
to: cli-with-git
Expand Down Expand Up @@ -95,7 +99,7 @@ tests:
COMPUTE_NODE_REPLICAS: "3"
COMPUTE_NODE_TYPE: m6a.2xlarge
CONTROL_PLANE_INSTANCE_TYPE: m6a.2xlarge
FAIL_ON_BREACH: "true"
FAIL_ON_BREACH: "false"
FIPS_ENABLED: "true"
FIREWATCH_CONFIG_FILE_PATH: https://raw.githubusercontent.com/CSPI-QE/cspi-utils/refs/heads/main/firewatch-base-configs/opp/lp-interop-aws.json
FIREWATCH_DEFAULT_JIRA_ADDITIONAL_LABELS: '["4.22-lp","opp-aws-lp","opp-lp","fips"]'
Expand All @@ -109,7 +113,7 @@ tests:
{"name": "advanced-cluster-management", "source": "redhat-operators", "channel": "release-2.17", "install_namespace": "ocm", "target_namespaces": "ocm", "operator_group": "acm-operator-group"}
]
QUAY_OPERATOR_CHANNEL: stable-3.17
SKIP_POLICIES: policy-acs,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
SKIP_POLICIES: policy-acs,policy-acs-central-ca-bundle,policy-acs-central-status,policy-acs-monitor-certs,policy-acs-operator-central,policy-acs-sync-resources,policy-advanced-managed-cluster-security,policy-advanced-managed-cluster-status,policy-compliance-operator-install,policy-config-quay,policy-hub-quay-bridge,policy-install-quay,policy-observability-operator,policy-observability-storage,policy-observability-storage-status,policy-odf,policy-odf-cluster,policy-odf-noobaa,policy-odf-status,policy-quay-bridge,policy-quay-status
ZONES_COUNT: "3"
post:
- ref: acm-fetch-operator-versions
Expand Down Expand Up @@ -138,11 +142,12 @@ tests:
- ref: interop-opp-wait-mcp
- ref: stackrox-opp-readiness
- ref: stackrox-opp-smoke
- ref: acm-tests-clc-create
- ref: acm-tests-clc-smoke
- ref: acm-fetch-managed-clusters
- ref: acm-opp-app
- ref: interop-opp-odf-health
- ref: interop-opp-observability-odf
- ref: interop-tests-ocs-tests
- ref: interop-tests-opp-quay-smoke
- ref: interop-opp-skip-ratio-gate
zz_generated_metadata:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ tests:
COMPUTE_NODE_REPLICAS: "6"
COMPUTE_NODE_TYPE: m6a.2xlarge
CONTROL_PLANE_INSTANCE_TYPE: m6a.2xlarge
FAIL_ON_BREACH: "true"
FAIL_ON_BREACH: "false"
FIREWATCH_CONFIG_FILE_PATH: https://raw.githubusercontent.com/CSPI-QE/cspi-utils/refs/heads/main/firewatch-base-configs/opp/lp-interop-aws.json
FIREWATCH_DEFAULT_JIRA_ADDITIONAL_LABELS: '["4.22-lp","opp-aws-lp","opp-lp","opp-upgrade"]'
FIREWATCH_DEFAULT_JIRA_ASSIGNEE: mpruitt@redhat.com
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,14 @@ tests:
steps:
allow_best_effort_post_steps: true
cluster_profile: aws-cspi-qe
dependencies:
OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE: release:initial
env:
ACM_SUBSCRIPTION_NAMESPACE: ocm
AWS_COMPUTE_VOLUME_SIZE: "500"
BASE_DOMAIN: cspilp.interop.ccitredhat.com
COMPUTE_NODE_REPLICAS: "6"
COMPUTE_NODE_TYPE: m6a.2xlarge
CONTROL_PLANE_INSTANCE_TYPE: m6a.2xlarge
FAIL_ON_BREACH: "true"
FAIL_ON_BREACH: "false"
FIREWATCH_CONFIG_FILE_PATH: https://raw.githubusercontent.com/CSPI-QE/cspi-utils/refs/heads/main/firewatch-base-configs/opp/lp-interop-aws.json
FIREWATCH_DEFAULT_JIRA_ADDITIONAL_LABELS: '["5.0-lp","opp-aws-lp","opp-lp","opp-upgrade"]'
FIREWATCH_DEFAULT_JIRA_ASSIGNEE: mpruitt@redhat.com
Expand All @@ -79,7 +77,7 @@ tests:
- ref: ipi-conf-aws
- ref: ipi-conf-aws-rootvolume
- ref: ipi-install-monitoringpvc
- chain: ipi-install
- chain: ipi-install-stableinitial
- ref: interop-opp-disk-diag
- ref: interop-opp-kubelet-config
- ref: interop-opp-wait-for-api
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,13 @@ tests:
steps:
allow_best_effort_post_steps: true
cluster_profile: aws-cspi-qe
dependencies:
OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE: release:initial
env:
AWS_COMPUTE_VOLUME_SIZE: "500"
BASE_DOMAIN: cspilp.interop.ccitredhat.com
COMPUTE_NODE_REPLICAS: "6"
COMPUTE_NODE_TYPE: m6a.2xlarge
CONTROL_PLANE_INSTANCE_TYPE: m6a.2xlarge
FAIL_ON_BREACH: "true"
FAIL_ON_BREACH: "false"
FIREWATCH_CONFIG_FILE_PATH: https://raw.githubusercontent.com/CSPI-QE/cspi-utils/refs/heads/main/firewatch-base-configs/opp/lp-interop-aws.json
FIREWATCH_DEFAULT_JIRA_ADDITIONAL_LABELS: '["5.1-lp","opp-aws-lp","opp-lp","opp-upgrade"]'
FIREWATCH_DEFAULT_JIRA_ASSIGNEE: mpruitt@redhat.com
Expand All @@ -76,7 +74,7 @@ tests:
- ref: ipi-conf-aws
- ref: ipi-conf-aws-rootvolume
- ref: ipi-install-monitoringpvc
- chain: ipi-install
- chain: ipi-install-stableinitial
- ref: interop-opp-disk-diag
- ref: interop-opp-kubelet-config
- ref: interop-opp-wait-for-api
Expand All @@ -86,6 +84,7 @@ tests:
- ref: interop-opp-preflight
- ref: interop-opp-upgrade
- ref: cucushift-upgrade-healthcheck
- ref: interop-opp-product-upgrade-acm
- ref: interop-opp-smoke
- ref: interop-opp-skip-ratio-gate
zz_generated_metadata:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
set -euxo pipefail
shopt -s inherit_errexit

# shellcheck disable=SC2317
_propagate_junit () {
mkdir -p "${SHARED_DIR}/junit"
find "${ARTIFACT_DIR}" -name '*.xml' -exec cp {} "${SHARED_DIR}/junit/" \; 2>/dev/null || true
}

################################################################################
# Test Overview
################################################################################
Expand Down Expand Up @@ -283,7 +289,7 @@ function RunTestCase2 () {
# Test Execution Setup
################################################################################
# Set trap to generate JUnit XML on exit (regardless of success or failure)
trap '{( GenerateJunitXml; true )}' EXIT
trap '{( GenerateJunitXml; _propagate_junit; true )}' EXIT

if [ "${MAP_TESTS:-}" = "true" ]; then
eval "$(
Expand All @@ -295,6 +301,7 @@ if [ "${MAP_TESTS:-}" = "true" ]; then
if type -t ExitTrap--PostProcessPrep; then
trap '{(
GenerateJunitXml
_propagate_junit
LP_IO__ET_PPP__NEW_TS_NAME="${DR__RP__CR_COMP_NAME}--%s" \
ExitTrap--PostProcessPrep junit--acm-opp-app.xml
true
Expand Down
1 change: 1 addition & 0 deletions ci-operator/step-registry/acm/opp-app/acm-opp-app-ref.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ref:
as: acm-opp-app
best_effort: true
from: cli-with-git
commands: acm-opp-app-commands.sh
timeout: 1h0m0s
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ if (( ${#skipPoliciesArr[@]} > 0 )); then
: "Non-skipped policies failed to become compliant:"
oc get policies -n policies --ignore-not-found | grep -Ev "/(${skipRegex})$"
oc get policies -n policies --ignore-not-found -o yaml
oc describe policies --all -n policies
oc describe policies -n policies
exit 1
fi
else
Expand All @@ -125,7 +125,7 @@ else
: "Policies failed to become compliant:"
oc get policies -n policies --ignore-not-found
oc get policies -n policies --ignore-not-found -o yaml
oc describe policies --all -n policies
oc describe policies -n policies
exit 1
fi
fi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ cleanup() {
[[ -d "${CLUSTER_PATH}/auth" ]] && rm -rf "${CLUSTER_PATH}/auth"
}

_propagate_junit() {
local shared_junit="${SHARED_DIR}/junit"
mkdir -p "${shared_junit}"
# ocs-tests writes JUnit into ${ARTIFACT_DIR}/ocs-tests/
local ocs_dir="${ARTIFACT_DIR}/ocs-tests"
if compgen -G "${ocs_dir}"/junit*.xml > /dev/null 2>&1; then
cp -v "${ocs_dir}"/junit*.xml "${shared_junit}/"
fi
}

if [ "${MAP_TESTS}" = "true" ]; then
# Avoid conflicts with the older versioned yq from the image:
# Write /tmp/bin/yq as a tiny script (#!/bin/sh; exit 1), so yq --version fails and ExitTrap EnsureReqs downloads latest yq (replacing the stub).
Expand All @@ -49,7 +59,7 @@ if [ "${MAP_TESTS}" = "true" ]; then
ExitTrap--PostProcessPrep junit--odf__interop-tests__ocs-tests__interop-tests-ocs-tests.xml
' EXIT
else
trap 'cleanup' EXIT
trap 'cleanup; _propagate_junit' EXIT
fi

#
Expand Down
Loading