mas-devops 10.0.0__tar.gz → 10.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mas_devops-10.0.0/src/mas_devops.egg-info → mas_devops-10.1.2}/PKG-INFO +1 -1
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/__init__.py +1 -1
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/backup.py +2 -2
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/restore.py +4 -1
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-backup.yml.j2 +8 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-install.yml.j2 +52 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-restore.yml.j2 +8 -0
- mas_devops-10.1.2/src/mas/devops/utils.py +171 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2/src/mas_devops.egg-info}/PKG-INFO +1 -1
- mas_devops-10.0.0/src/mas/devops/utils.py +0 -76
- {mas_devops-10.0.0 → mas_devops-10.1.2}/LICENSE +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/MANIFEST.in +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/README.md +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/bin/mas-devops-apply-preinstall-rbac-for-saas +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/bin/mas-devops-create-initial-users-for-saas +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/bin/mas-devops-db2-validate-config +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/bin/mas-devops-notify-slack +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/bin/mas-devops-saas-job-cleaner +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/pyproject.toml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/setup.cfg +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/setup.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/aiservice.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/__init__.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230414-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230518-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230526-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230616-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230627-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230721-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230725-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230829-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-230926-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-231004-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-231031-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-231128-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-231228-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240130-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240227-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240326-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240405-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240430-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v8-240528-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-240625-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-240730-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-240827-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-241003-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-241107-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-241107-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-241205-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-241205-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250109-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250109-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250206-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250206-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250306-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250306-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250403-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250403-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250501-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250501-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250624-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250624-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250624-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250731-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250731-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250731-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250828-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250828-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250828-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250902-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250902-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250902-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250925-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-250925-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251010-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251010-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251030-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251030-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251030-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251127-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251127-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251127-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251224-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251224-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251224-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251231-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251231-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-251231-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260129-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260129-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260129-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260216-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260216-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260216-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260226-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260226-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260226-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260305-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260305-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260305-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260313-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260313-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260313-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260318-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260318-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260318-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260326-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260326-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260326-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260430-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260430-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260430-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260527-amd64.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260527-ppc64le.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/catalogs/v9-260527-s390x.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/data/ocp.yaml +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/db2.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/mas/__init__.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/mas/apps.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/mas/suite.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/ocp.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/olm.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/pre_install.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/saas/__init__.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/saas/job_cleaner.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/slack.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/sls.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/tekton.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/aiservice-pipelines-pvc.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/aiservice-pipelines-rbac.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/ibm-entitlement-dockerconfig.json.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/ibm-entitlement-secret.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/operatorgroup.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipeline-additional-configs.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-aiservice-upgrade.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-uninstall.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-update.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-upgrade.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-backup-pvc.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-pvc.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-rbac-cluster.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-rbac.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/subscription.yml.j2 +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/users.py +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas_devops.egg-info/SOURCES.txt +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas_devops.egg-info/dependency_links.txt +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas_devops.egg-info/requires.txt +0 -0
- {mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas_devops.egg-info/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ import logging
|
|
|
11
11
|
import os
|
|
12
12
|
import yaml
|
|
13
13
|
from openshift.dynamic import DynamicClient
|
|
14
|
-
from openshift.dynamic.exceptions import NotFoundError
|
|
14
|
+
from openshift.dynamic.exceptions import NotFoundError, ResourceNotFoundError
|
|
15
15
|
import boto3
|
|
16
16
|
from botocore.exceptions import ClientError, NoCredentialsError
|
|
17
17
|
|
|
@@ -244,7 +244,7 @@ def backupResources(
|
|
|
244
244
|
|
|
245
245
|
return (backed_up_count, not_found_count, failed_count, discovered_secrets)
|
|
246
246
|
|
|
247
|
-
except NotFoundError:
|
|
247
|
+
except (NotFoundError, ResourceNotFoundError):
|
|
248
248
|
if name:
|
|
249
249
|
logger.info(f"{kind} '{name}' not found in {scope_desc}")
|
|
250
250
|
not_found_count = 1
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import logging
|
|
11
11
|
import yaml
|
|
12
12
|
from openshift.dynamic import DynamicClient
|
|
13
|
-
from openshift.dynamic.exceptions import NotFoundError
|
|
13
|
+
from openshift.dynamic.exceptions import NotFoundError, ResourceNotFoundError
|
|
14
14
|
|
|
15
15
|
logger = logging.getLogger(name=__name__)
|
|
16
16
|
|
|
@@ -125,6 +125,9 @@ def restoreResource(dynClient: DynamicClient, resource_data: dict, namespace=Non
|
|
|
125
125
|
logger.error(error_msg)
|
|
126
126
|
return (False, resource_name, error_msg)
|
|
127
127
|
|
|
128
|
+
except ResourceNotFoundError:
|
|
129
|
+
return (True, resource_data.get("kind"), "skipped")
|
|
130
|
+
|
|
128
131
|
except Exception as e:
|
|
129
132
|
error_msg = f"Error restoring resource: {e}"
|
|
130
133
|
logger.error(error_msg)
|
|
@@ -130,6 +130,10 @@ spec:
|
|
|
130
130
|
- name: manage_workspace_id
|
|
131
131
|
value: "{{ manage_workspace_id }}"
|
|
132
132
|
{% endif %}
|
|
133
|
+
{% if backup_manage_include_pvc is defined and backup_manage_include_pvc != "" %}
|
|
134
|
+
- name: backup_manage_include_pvc
|
|
135
|
+
value: "{{ backup_manage_include_pvc }}"
|
|
136
|
+
{% endif %}
|
|
133
137
|
|
|
134
138
|
# Manage Db2 Backup Configuration
|
|
135
139
|
{% if manage_db2_namespace is defined and manage_db2_namespace != "" %}
|
|
@@ -178,6 +182,10 @@ spec:
|
|
|
178
182
|
- name: facilities_workspace_id
|
|
179
183
|
value: "{{ facilities_workspace_id }}"
|
|
180
184
|
{% endif %}
|
|
185
|
+
{% if backup_facilities_include_pvc is defined and backup_facilities_include_pvc != "" %}
|
|
186
|
+
- name: backup_facilities_include_pvc
|
|
187
|
+
value: "{{ backup_facilities_include_pvc }}"
|
|
188
|
+
{% endif %}
|
|
181
189
|
|
|
182
190
|
# Facilities Db2 Backup Configuration
|
|
183
191
|
{% if facilities_db2_namespace is defined and facilities_db2_namespace != "" %}
|
|
@@ -840,6 +840,58 @@ spec:
|
|
|
840
840
|
- name: mas_ws_facilities_properties_secret_name
|
|
841
841
|
value: "{{ mas_ws_facilities_properties_secret_name }}"
|
|
842
842
|
{%- endif %}
|
|
843
|
+
{%- if mas_ws_facilities_dataconnectagent_deploymentmode is defined and mas_ws_facilities_dataconnectagent_deploymentmode != "" %}
|
|
844
|
+
- name: mas_ws_facilities_dataconnectagent_deploymentmode
|
|
845
|
+
value: "{{ mas_ws_facilities_dataconnectagent_deploymentmode }}"
|
|
846
|
+
{%- endif %}
|
|
847
|
+
{%- if mas_ws_facilities_extendedformulaagent_deploymentmode is defined and mas_ws_facilities_extendedformulaagent_deploymentmode != "" %}
|
|
848
|
+
- name: mas_ws_facilities_extendedformulaagent_deploymentmode
|
|
849
|
+
value: "{{ mas_ws_facilities_extendedformulaagent_deploymentmode }}"
|
|
850
|
+
{%- endif %}
|
|
851
|
+
{%- if mas_ws_facilities_formularecalcagent_deploymentmode is defined and mas_ws_facilities_formularecalcagent_deploymentmode != "" %}
|
|
852
|
+
- name: mas_ws_facilities_formularecalcagent_deploymentmode
|
|
853
|
+
value: "{{ mas_ws_facilities_formularecalcagent_deploymentmode }}"
|
|
854
|
+
{%- endif %}
|
|
855
|
+
{%- if mas_ws_facilities_incomingmailagent_deploymentmode is defined and mas_ws_facilities_incomingmailagent_deploymentmode != "" %}
|
|
856
|
+
- name: mas_ws_facilities_incomingmailagent_deploymentmode
|
|
857
|
+
value: "{{ mas_ws_facilities_incomingmailagent_deploymentmode }}"
|
|
858
|
+
{%- endif %}
|
|
859
|
+
{%- if mas_ws_facilities_objectmigrationagent_deploymentmode is defined and mas_ws_facilities_objectmigrationagent_deploymentmode != "" %}
|
|
860
|
+
- name: mas_ws_facilities_objectmigrationagent_deploymentmode
|
|
861
|
+
value: "{{ mas_ws_facilities_objectmigrationagent_deploymentmode }}"
|
|
862
|
+
{%- endif %}
|
|
863
|
+
{%- if mas_ws_facilities_objectpublishagent_deploymentmode is defined and mas_ws_facilities_objectpublishagent_deploymentmode != "" %}
|
|
864
|
+
- name: mas_ws_facilities_objectpublishagent_deploymentmode
|
|
865
|
+
value: "{{ mas_ws_facilities_objectpublishagent_deploymentmode }}"
|
|
866
|
+
{%- endif %}
|
|
867
|
+
{%- if mas_ws_facilities_maintenanceagent_deploymentmode is defined and mas_ws_facilities_maintenanceagent_deploymentmode != "" %}
|
|
868
|
+
- name: mas_ws_facilities_maintenanceagent_deploymentmode
|
|
869
|
+
value: "{{ mas_ws_facilities_maintenanceagent_deploymentmode }}"
|
|
870
|
+
{%- endif %}
|
|
871
|
+
{%- if mas_ws_facilities_reportqueueagent_deploymentmode is defined and mas_ws_facilities_reportqueueagent_deploymentmode != "" %}
|
|
872
|
+
- name: mas_ws_facilities_reportqueueagent_deploymentmode
|
|
873
|
+
value: "{{ mas_ws_facilities_reportqueueagent_deploymentmode }}"
|
|
874
|
+
{%- endif %}
|
|
875
|
+
{%- if mas_ws_facilities_wfagent_deploymentmode is defined and mas_ws_facilities_wfagent_deploymentmode != "" %}
|
|
876
|
+
- name: mas_ws_facilities_wfagent_deploymentmode
|
|
877
|
+
value: "{{ mas_ws_facilities_wfagent_deploymentmode }}"
|
|
878
|
+
{%- endif %}
|
|
879
|
+
{%- if mas_ws_facilities_wffutureagent_deploymentmode is defined and mas_ws_facilities_wffutureagent_deploymentmode != "" %}
|
|
880
|
+
- name: mas_ws_facilities_wffutureagent_deploymentmode
|
|
881
|
+
value: "{{ mas_ws_facilities_wffutureagent_deploymentmode }}"
|
|
882
|
+
{%- endif %}
|
|
883
|
+
{%- if mas_ws_facilities_wfnotificationagent_deploymentmode is defined and mas_ws_facilities_wfnotificationagent_deploymentmode != "" %}
|
|
884
|
+
- name: mas_ws_facilities_wfnotificationagent_deploymentmode
|
|
885
|
+
value: "{{ mas_ws_facilities_wfnotificationagent_deploymentmode }}"
|
|
886
|
+
{%- endif %}
|
|
887
|
+
{%- if mas_ws_facilities_reservesmtpagent_deploymentmode is defined and mas_ws_facilities_reservesmtpagent_deploymentmode != "" %}
|
|
888
|
+
- name: mas_ws_facilities_reservesmtpagent_deploymentmode
|
|
889
|
+
value: "{{ mas_ws_facilities_reservesmtpagent_deploymentmode }}"
|
|
890
|
+
{%- endif %}
|
|
891
|
+
{%- if mas_ws_facilities_scheduleragent_deploymentmode is defined and mas_ws_facilities_scheduleragent_deploymentmode != "" %}
|
|
892
|
+
- name: mas_ws_facilities_scheduleragent_deploymentmode
|
|
893
|
+
value: "{{ mas_ws_facilities_scheduleragent_deploymentmode }}"
|
|
894
|
+
{%- endif %}
|
|
843
895
|
|
|
844
896
|
{%- endif %}
|
|
845
897
|
|
|
@@ -204,6 +204,10 @@ spec:
|
|
|
204
204
|
- name: restore_manage_db
|
|
205
205
|
value: "{{ restore_manage_db }}"
|
|
206
206
|
{% endif %}
|
|
207
|
+
{% if restore_manage_include_pvc is defined and restore_manage_include_pvc != "" %}
|
|
208
|
+
- name: restore_manage_include_pvc
|
|
209
|
+
value: "{{ restore_manage_include_pvc }}"
|
|
210
|
+
{% endif %}
|
|
207
211
|
# Manage App Storage class
|
|
208
212
|
{% if manage_app_override_storageclass is defined and manage_app_override_storageclass != "" %}
|
|
209
213
|
- name: manage_app_override_storageclass
|
|
@@ -246,6 +250,10 @@ spec:
|
|
|
246
250
|
- name: restore_facilities_db
|
|
247
251
|
value: "{{ restore_facilities_db }}"
|
|
248
252
|
{% endif %}
|
|
253
|
+
{% if restore_facilities_include_pvc is defined and restore_facilities_include_pvc != "" %}
|
|
254
|
+
- name: restore_facilities_include_pvc
|
|
255
|
+
value: "{{ restore_facilities_include_pvc }}"
|
|
256
|
+
{% endif %}
|
|
249
257
|
# Facilities App Storage class
|
|
250
258
|
{% if facilities_app_override_storageclass is defined and facilities_app_override_storageclass != "" %}
|
|
251
259
|
- name: facilities_app_override_storageclass
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Utility functions for version comparison and other common operations.
|
|
3
|
+
|
|
4
|
+
This module provides semantic version comparison utilities with custom handling
|
|
5
|
+
for pre-release versions and wildcard version strings.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import re
|
|
10
|
+
import semver
|
|
11
|
+
import requests
|
|
12
|
+
from requests.auth import HTTPBasicAuth
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def isVersionBefore(_compare_to_version, _current_version):
|
|
18
|
+
"""
|
|
19
|
+
Check if the current version is before (older than) the comparison version.
|
|
20
|
+
|
|
21
|
+
This function performs a modified semantic version comparison where pre-release
|
|
22
|
+
versions are treated as equal to their base release version. For example,
|
|
23
|
+
'8.6.0-pre.m1dev86' is normalized to '8.6.0' before comparison. Wildcard versions
|
|
24
|
+
like '8.6.x' are converted to '8.6.0'.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
_compare_to_version (str): The version to compare against (e.g., "8.6.0").
|
|
28
|
+
_current_version (str): The current version to check (e.g., "8.5.0" or "8.6.0-pre.m1dev86").
|
|
29
|
+
Can be None, in which case False is returned.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
bool: True if current_version < compare_to_version, False otherwise.
|
|
33
|
+
Returns False if _current_version is None.
|
|
34
|
+
|
|
35
|
+
Note:
|
|
36
|
+
This differs from strict semantic versioning where pre-release versions
|
|
37
|
+
are considered less than their base version.
|
|
38
|
+
"""
|
|
39
|
+
if _current_version is None:
|
|
40
|
+
print("Version is not informed. Returning False")
|
|
41
|
+
return False
|
|
42
|
+
|
|
43
|
+
strippedVersion = _current_version.split("-")[0]
|
|
44
|
+
if ".x" in strippedVersion:
|
|
45
|
+
strippedVersion = strippedVersion.replace(".x", ".0")
|
|
46
|
+
current_version = semver.VersionInfo.parse(strippedVersion)
|
|
47
|
+
compareToVersion = semver.VersionInfo.parse(_compare_to_version)
|
|
48
|
+
return current_version.compare(compareToVersion) < 0
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def isVersionEqualOrAfter(_compare_to_version, _current_version):
|
|
52
|
+
"""
|
|
53
|
+
Check if the current version is equal to or after (newer than) the comparison version.
|
|
54
|
+
|
|
55
|
+
This function performs a modified semantic version comparison where pre-release
|
|
56
|
+
versions are treated as equal to their base release version. For example,
|
|
57
|
+
'8.6.0-pre.m1dev86' is normalized to '8.6.0' before comparison. Wildcard versions
|
|
58
|
+
like '8.6.x' are converted to '8.6.0'.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
_compare_to_version (str): The version to compare against (e.g., "8.6.0").
|
|
62
|
+
_current_version (str): The current version to check (e.g., "8.7.0" or "8.6.0-pre.m1dev86").
|
|
63
|
+
Can be None, in which case False is returned.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
bool: True if current_version >= compare_to_version, False otherwise.
|
|
67
|
+
Returns False if _current_version is None.
|
|
68
|
+
|
|
69
|
+
Note:
|
|
70
|
+
This differs from strict semantic versioning where pre-release versions
|
|
71
|
+
are considered less than their base version.
|
|
72
|
+
"""
|
|
73
|
+
if _current_version is None:
|
|
74
|
+
print("Version is not informed. Returning False")
|
|
75
|
+
return False
|
|
76
|
+
|
|
77
|
+
strippedVersion = _current_version.split("-")[0]
|
|
78
|
+
if ".x" in strippedVersion:
|
|
79
|
+
strippedVersion = strippedVersion.replace(".x", ".0")
|
|
80
|
+
current_version = semver.VersionInfo.parse(strippedVersion)
|
|
81
|
+
compareToVersion = semver.VersionInfo.parse(_compare_to_version)
|
|
82
|
+
return current_version.compare(compareToVersion) >= 0
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def validateIBMEntitlementKey(entitlementKey: str, repository: str = "cp/mas/coreapi", timeout: int = 30) -> bool:
|
|
86
|
+
"""Validate IBM entitlement key against cp.icr.io registry.
|
|
87
|
+
|
|
88
|
+
This function validates an IBM entitlement key by attempting to obtain
|
|
89
|
+
an authentication token from the IBM Container Registry and verifying
|
|
90
|
+
access to the specified repository.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
entitlementKey (str): IBM entitlement key to validate.
|
|
94
|
+
repository (str, optional): Repository to test access against. Defaults to "cp/mas/coreapi".
|
|
95
|
+
timeout (int, optional): Request timeout in seconds. Defaults to 30.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
bool: True if key is valid and grants access to the repository, False otherwise.
|
|
99
|
+
|
|
100
|
+
Raises:
|
|
101
|
+
requests.exceptions.RequestException: If network request fails.
|
|
102
|
+
"""
|
|
103
|
+
try:
|
|
104
|
+
registry_url = f"https://cp.icr.io/v2/{repository}/tags/list"
|
|
105
|
+
logger.debug(f"Validating entitlement key against {repository}")
|
|
106
|
+
|
|
107
|
+
# First request without auth to get the auth challenge
|
|
108
|
+
response = requests.get(registry_url, timeout=timeout)
|
|
109
|
+
|
|
110
|
+
if response.status_code == 401:
|
|
111
|
+
# Parse WWW-Authenticate header to get token endpoint
|
|
112
|
+
auth_header = response.headers.get("WWW-Authenticate", "")
|
|
113
|
+
logger.debug(f"Auth challenge received: {auth_header[:100]}...")
|
|
114
|
+
|
|
115
|
+
# Extract realm and service from auth header
|
|
116
|
+
realm_match = re.search(r'realm="([^"]+)"', auth_header)
|
|
117
|
+
service_match = re.search(r'service="([^"]+)"', auth_header)
|
|
118
|
+
scope_match = re.search(r'scope="([^"]+)"', auth_header)
|
|
119
|
+
|
|
120
|
+
if not realm_match:
|
|
121
|
+
logger.error("Could not parse authentication realm")
|
|
122
|
+
return False
|
|
123
|
+
|
|
124
|
+
token_url = realm_match.group(1)
|
|
125
|
+
params = {}
|
|
126
|
+
|
|
127
|
+
if service_match:
|
|
128
|
+
params["service"] = service_match.group(1)
|
|
129
|
+
if scope_match:
|
|
130
|
+
params["scope"] = scope_match.group(1)
|
|
131
|
+
else:
|
|
132
|
+
params["scope"] = f"repository:{repository}:pull"
|
|
133
|
+
|
|
134
|
+
logger.debug(f"Token endpoint: {token_url}")
|
|
135
|
+
|
|
136
|
+
# Get authentication token
|
|
137
|
+
token_response = requests.get(token_url, params=params, auth=HTTPBasicAuth("cp", entitlementKey), timeout=timeout)
|
|
138
|
+
|
|
139
|
+
if token_response.status_code != 200:
|
|
140
|
+
logger.error(f"Failed to get token (HTTP {token_response.status_code})")
|
|
141
|
+
return False
|
|
142
|
+
|
|
143
|
+
token_data = token_response.json()
|
|
144
|
+
token = token_data.get("token") or token_data.get("access_token")
|
|
145
|
+
|
|
146
|
+
if not token:
|
|
147
|
+
logger.error("No token received - invalid entitlement key")
|
|
148
|
+
return False
|
|
149
|
+
|
|
150
|
+
# Validate token by accessing registry
|
|
151
|
+
logger.debug("Validating token against registry")
|
|
152
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
153
|
+
validate_response = requests.get(registry_url, headers=headers, timeout=timeout)
|
|
154
|
+
|
|
155
|
+
if validate_response.status_code == 200:
|
|
156
|
+
logger.info(f"Valid entitlement key with access to {repository}")
|
|
157
|
+
return True
|
|
158
|
+
else:
|
|
159
|
+
logger.error(f"Token validation failed (HTTP {validate_response.status_code})")
|
|
160
|
+
return False
|
|
161
|
+
|
|
162
|
+
elif response.status_code == 200:
|
|
163
|
+
logger.info("Registry accessible without authentication (public repository)")
|
|
164
|
+
return True
|
|
165
|
+
else:
|
|
166
|
+
logger.error(f"Unexpected response (HTTP {response.status_code})")
|
|
167
|
+
return False
|
|
168
|
+
|
|
169
|
+
except requests.exceptions.RequestException as e:
|
|
170
|
+
logger.error(f"Request failed: {e}")
|
|
171
|
+
raise
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Utility functions for version comparison and other common operations.
|
|
3
|
-
|
|
4
|
-
This module provides semantic version comparison utilities with custom handling
|
|
5
|
-
for pre-release versions and wildcard version strings.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import semver
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def isVersionBefore(_compare_to_version, _current_version):
|
|
12
|
-
"""
|
|
13
|
-
Check if the current version is before (older than) the comparison version.
|
|
14
|
-
|
|
15
|
-
This function performs a modified semantic version comparison where pre-release
|
|
16
|
-
versions are treated as equal to their base release version. For example,
|
|
17
|
-
'8.6.0-pre.m1dev86' is normalized to '8.6.0' before comparison. Wildcard versions
|
|
18
|
-
like '8.6.x' are converted to '8.6.0'.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
_compare_to_version (str): The version to compare against (e.g., "8.6.0").
|
|
22
|
-
_current_version (str): The current version to check (e.g., "8.5.0" or "8.6.0-pre.m1dev86").
|
|
23
|
-
Can be None, in which case False is returned.
|
|
24
|
-
|
|
25
|
-
Returns:
|
|
26
|
-
bool: True if current_version < compare_to_version, False otherwise.
|
|
27
|
-
Returns False if _current_version is None.
|
|
28
|
-
|
|
29
|
-
Note:
|
|
30
|
-
This differs from strict semantic versioning where pre-release versions
|
|
31
|
-
are considered less than their base version.
|
|
32
|
-
"""
|
|
33
|
-
if _current_version is None:
|
|
34
|
-
print("Version is not informed. Returning False")
|
|
35
|
-
return False
|
|
36
|
-
|
|
37
|
-
strippedVersion = _current_version.split("-")[0]
|
|
38
|
-
if ".x" in strippedVersion:
|
|
39
|
-
strippedVersion = strippedVersion.replace(".x", ".0")
|
|
40
|
-
current_version = semver.VersionInfo.parse(strippedVersion)
|
|
41
|
-
compareToVersion = semver.VersionInfo.parse(_compare_to_version)
|
|
42
|
-
return current_version.compare(compareToVersion) < 0
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def isVersionEqualOrAfter(_compare_to_version, _current_version):
|
|
46
|
-
"""
|
|
47
|
-
Check if the current version is equal to or after (newer than) the comparison version.
|
|
48
|
-
|
|
49
|
-
This function performs a modified semantic version comparison where pre-release
|
|
50
|
-
versions are treated as equal to their base release version. For example,
|
|
51
|
-
'8.6.0-pre.m1dev86' is normalized to '8.6.0' before comparison. Wildcard versions
|
|
52
|
-
like '8.6.x' are converted to '8.6.0'.
|
|
53
|
-
|
|
54
|
-
Args:
|
|
55
|
-
_compare_to_version (str): The version to compare against (e.g., "8.6.0").
|
|
56
|
-
_current_version (str): The current version to check (e.g., "8.7.0" or "8.6.0-pre.m1dev86").
|
|
57
|
-
Can be None, in which case False is returned.
|
|
58
|
-
|
|
59
|
-
Returns:
|
|
60
|
-
bool: True if current_version >= compare_to_version, False otherwise.
|
|
61
|
-
Returns False if _current_version is None.
|
|
62
|
-
|
|
63
|
-
Note:
|
|
64
|
-
This differs from strict semantic versioning where pre-release versions
|
|
65
|
-
are considered less than their base version.
|
|
66
|
-
"""
|
|
67
|
-
if _current_version is None:
|
|
68
|
-
print("Version is not informed. Returning False")
|
|
69
|
-
return False
|
|
70
|
-
|
|
71
|
-
strippedVersion = _current_version.split("-")[0]
|
|
72
|
-
if ".x" in strippedVersion:
|
|
73
|
-
strippedVersion = strippedVersion.replace(".x", ".0")
|
|
74
|
-
current_version = semver.VersionInfo.parse(strippedVersion)
|
|
75
|
-
compareToVersion = semver.VersionInfo.parse(_compare_to_version)
|
|
76
|
-
return current_version.compare(compareToVersion) >= 0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/aiservice-pipelines-pvc.yml.j2
RENAMED
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/aiservice-pipelines-rbac.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/ibm-entitlement-secret.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipeline-additional-configs.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelinerun-uninstall.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-backup-pvc.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{mas_devops-10.0.0 → mas_devops-10.1.2}/src/mas/devops/templates/pipelines-rbac-cluster.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|