From 66c121dd5c3721e6e66ba173961861c22781d6fc Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 28 Nov 2025 14:52:57 +0530 Subject: [PATCH 01/12] [patch] December catalog prep --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2141319bd1..4f6b191137 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,4 @@ ansible-galaxy collection install ibm.mas_devops ## Want to contribute to MAS Ansible Devops collection? -We welcome all Maximo Application Suite users, developers and enthusiasts to contribute to this Ansible collection. You can contribute to this collection by raising [a new issue](https://github.com/ibm-mas/ansible-devops/issues) with suggestions on how to make the MAS automation engine even better, or if you want to become a new code contributor please review the [Contributing document](CONTRIBUTING.md) to learn more about how to get started. \ No newline at end of file +We welcome all Maximo Application Suite users, developers and enthusiasts to contribute to this Ansible collection. You can contribute to this collection by raising [a new issue](https://github.com/ibm-mas/ansible-devops/issues) with suggestions on how to make the MAS automation engine even better, or if you want to become a new code contributor please review the [Contributing document](CONTRIBUTING.md) to learn more about how to get started. From addcac1b208013613794b7ede22184ae1b542f61 Mon Sep 17 00:00:00 2001 From: Joe Harte Date: Tue, 9 Dec 2025 15:39:43 +0000 Subject: [PATCH 02/12] [patch] fix check for upgrade compatibility (#2021) Co-authored-by: Josef Harte Co-authored-by: Josef Harte --- .gitignore | 13 ++++ .../common_vars/compatibility_matrix.yml | 11 ++- ibm/mas_devops/plugins/filter/filters.py | 47 ++++++++++++- ibm/mas_devops/plugins/filter/test_filters.py | 70 +++++++++++++++++++ .../roles/aiservice_upgrade/tasks/main.yml | 17 +++-- 5 files changed, 152 insertions(+), 6 deletions(-) create mode 100644 ibm/mas_devops/plugins/filter/test_filters.py diff --git a/.gitignore b/.gitignore index 151070fe77..5ab7a9c78b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,16 @@ cpd-cli-workspace/* /node_modules package-lock.json package.json + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +dist +*.egg-info +pandoc-*-amd64.deb +pandoc-*-windows-x86_64.msi +pandoc-*-x86_64-macOS.pkg +README.rst diff --git a/ibm/mas_devops/common_vars/compatibility_matrix.yml b/ibm/mas_devops/common_vars/compatibility_matrix.yml index 62656a2ef1..bb3c74990e 100644 --- a/ibm/mas_devops/common_vars/compatibility_matrix.yml +++ b/ibm/mas_devops/common_vars/compatibility_matrix.yml @@ -115,5 +115,14 @@ upgrade_path: 8.10.x: 8.11.x 8.9.x: 8.10.x +# The key is the current installed channel of AI Service +# and the value is the allowed upgrade versions. +# Value can be a single version or list of versions: +# Example: +# 9.1.x: [9.2.x, 9.2.x-feature] +# 9.2.x: 9.3.x +# WARNING: if using a list the first value in +# the list is taken as the default if the user +# does not supply a target upgrade version. aiservice_upgrade_path: - 9.1.x: 9.2.x-feature + 9.1.x: [9.2.x-feature] diff --git a/ibm/mas_devops/plugins/filter/filters.py b/ibm/mas_devops/plugins/filter/filters.py index 1f3654739d..117579d743 100644 --- a/ibm/mas_devops/plugins/filter/filters.py +++ b/ibm/mas_devops/plugins/filter/filters.py @@ -437,6 +437,49 @@ def get_ecr_repositories(image_mirror_output): repositories.append(repo_to_add) return repositories +def is_channel_upgrade_path_valid(current: str, target: str, valid_paths: dict) -> bool: + """ + Checks if a given current channel version can be upgraded to a target channel version. + :current: The current channel version. + :target: The target channel version to upgrade to. + :valid_paths: A dictionary of supported upgrade paths. See ibm/mas_devops/common_vars/compatibility_matrix.yml. + :return: True if the upgrade path is supported, False otherwise. + """ + valid = True + if current not in valid_paths.keys(): + print(f'Current channel {current} is not supported for upgrade') + valid = False + elif target: + allowed_targets = valid_paths[current] + if isinstance(allowed_targets, str): + if target != allowed_targets: + print(f'Upgrading from channel {current} to {target} is not supported') + valid = False + elif isinstance(allowed_targets, list): + if target not in allowed_targets: + print(f'Upgrading from channel {current} to {target} is not supported') + valid = False + else: + print(f'Error: channel upgrade compatibility matrix is incorrectly defined') + valid = False + return valid + +def get_default_upgrade_channel(current: str, valid_paths: dict) -> str: + """ + Gets the default target upgrade channel if the user has not supplied one. + :current: The current channel version. + :valid_paths: A dictionary of supported upgrade paths. See ibm/mas_devops/common_vars/compatibility_matrix.yml. + :return: The default target upgrade channel. + """ + default = None + allowed_targets = valid_paths[current] + if isinstance(allowed_targets, str): + default = allowed_targets + elif isinstance(allowed_targets, list): + default = allowed_targets[0] + else: + print(f'Error: channel upgrade compatibility matrix is incorrectly defined') + return default class FilterModule(object): def filters(self): @@ -459,5 +502,7 @@ def filters(self): 'format_pre_version_without_buildid': format_pre_version_without_buildid, 'format_pre_version_with_buildid': format_pre_version_with_buildid, 'get_db2_instance_name': get_db2_instance_name, - 'get_ecr_repositories': get_ecr_repositories + 'get_ecr_repositories': get_ecr_repositories, + 'is_channel_upgrade_path_valid': is_channel_upgrade_path_valid, + 'get_default_upgrade_channel': get_default_upgrade_channel } diff --git a/ibm/mas_devops/plugins/filter/test_filters.py b/ibm/mas_devops/plugins/filter/test_filters.py new file mode 100644 index 0000000000..b1642270da --- /dev/null +++ b/ibm/mas_devops/plugins/filter/test_filters.py @@ -0,0 +1,70 @@ +# ----------------------------------------------------------- +# Licensed Materials - Property of IBM +# 5737-M66, 5900-AAA +# (C) Copyright IBM Corp. 2025 All Rights Reserved. +# US Government Users Restricted Rights - Use, duplication, or disclosure +# restricted by GSA ADP Schedule Contract with IBM Corp. +# ----------------------------------------------------------- + +from filters import * +import pytest + + +########################################################################## + + +def test_is_channel_upgrade_path_valid_for_blank_target_channel(): + paths = {'a': ['b', 'c']} + assert is_channel_upgrade_path_valid('a', '', paths) + + +def test_is_channel_upgrade_path_valid_for_invalid_target_channel(): + paths = {'a': ['b', 'c']} + assert not is_channel_upgrade_path_valid('a', 'd', paths) + + +def test_is_channel_upgrade_path_valid_for_valid_target_channel(): + paths = {'a': ['b', 'c']} + assert is_channel_upgrade_path_valid('a', 'c', paths) + + +def test_is_channel_upgrade_path_valid_for_invalid_current_channel(): + paths = {'a': ['b', 'c']} + assert not is_channel_upgrade_path_valid('d', 'c', paths) + + +def test_is_channel_upgrade_path_valid_for_string_target_channel(): + paths = {'a': 'b'} + assert is_channel_upgrade_path_valid('a', 'b', paths) + + +def test_is_channel_upgrade_path_valid_for_invalid_paths(): + paths = {'a': 1} + assert not is_channel_upgrade_path_valid('a', 'b', paths) + + +########################################################################## + + +def test_get_default_upgrade_channel_for_valid_current_channel(): + paths = {'a': ['b', 'c']} + assert 'b' == get_default_upgrade_channel('a', paths) + + +def test_get_default_upgrade_channel_for_string_target_channel(): + paths = {'a': 'b'} + assert 'b' == get_default_upgrade_channel('a', paths) + + +def test_get_default_upgrade_channel_for_invalid_current_channel(): + paths = {'a': ['b', 'c']} + with pytest.raises(KeyError): + get_default_upgrade_channel('b', paths) + + +def test_get_default_upgrade_channel_for_invalid_paths(): + paths = {'a': 1} + assert None == get_default_upgrade_channel('a', paths) + + +########################################################################## diff --git a/ibm/mas_devops/roles/aiservice_upgrade/tasks/main.yml b/ibm/mas_devops/roles/aiservice_upgrade/tasks/main.yml index dc9db0f4c3..ab4e150212 100644 --- a/ibm/mas_devops/roles/aiservice_upgrade/tasks/main.yml +++ b/ibm/mas_devops/roles/aiservice_upgrade/tasks/main.yml @@ -27,19 +27,28 @@ - "operators.coreos.com/ibm-aiservice.{{ aiservice_namespace }}" register: aiservice_sub_info +- name: "Set current subscription channel" + set_fact: + current_aiservice_channel: "{{ aiservice_sub_info.resources[0].spec.channel }}" + +- name: Show current subscription info + ansible.builtin.debug: + msg: + - "Currently installed AI Service channel ............. {{ current_aiservice_channel }}" + - name: "Set default upgrade target based on installed version of AI Service" when: - aiservice_channel is not defined or aiservice_channel == "" - - aiservice_sub_info.resources[0].spec.channel in aiservice_upgrade_path + - current_aiservice_channel | ibm.mas_devops.is_channel_upgrade_path_valid('', aiservice_upgrade_path) set_fact: - target_aiservice_channel: "{{ aiservice_upgrade_path[aiservice_sub_info.resources[0].spec.channel] }}" + target_aiservice_channel: "{{ current_aiservice_channel | get_default_upgrade_channel(aiservice_upgrade_path) }}" - name: "Set upgrade target explicitly" when: - aiservice_channel is defined and aiservice_channel != "" - - aiservice_channel in aiservice_upgrade_path + - current_aiservice_channel | ibm.mas_devops.is_channel_upgrade_path_valid(aiservice_channel, aiservice_upgrade_path) set_fact: - target_aiservice_channel: "{{ aiservice_upgrade_path[aiservice_channel] }}" + target_aiservice_channel: "{{ aiservice_channel }}" - name: "Assert upgrade target is defined" assert: From 757e2859e3a2e481a2edbfa9e77cbe51b178284b Mon Sep 17 00:00:00 2001 From: Anil Prajapati Date: Wed, 10 Dec 2025 19:45:35 +0530 Subject: [PATCH 03/12] [patch] add casectl_resolve_charts false in oc ibm-pak get cmd --- ibm/mas_devops/playbooks/mirror_dependencies.yml | 2 ++ ibm/mas_devops/roles/mirror_case_prepare/defaults/main.yml | 3 ++- ibm/mas_devops/roles/mirror_case_prepare/tasks/main.yml | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ibm/mas_devops/playbooks/mirror_dependencies.yml b/ibm/mas_devops/playbooks/mirror_dependencies.yml index b496e22325..ca8db715d8 100644 --- a/ibm/mas_devops/playbooks/mirror_dependencies.yml +++ b/ibm/mas_devops/playbooks/mirror_dependencies.yml @@ -373,6 +373,7 @@ case_version: "{{ mas_catalog_metadata.wsl_version }}" exclude_images: [] ibmpak_skip_dependencies: false + casectl_resolve_charts: false - role: ibm.mas_devops.mirror_images when: mirror_wsl or mirror_wml @@ -554,6 +555,7 @@ case_version: "{{ mas_catalog_metadata.cognos_version }}" exclude_images: [] ibmpak_skip_dependencies: false + casectl_resolve_charts: false - role: ibm.mas_devops.mirror_images when: mirror_cognos diff --git a/ibm/mas_devops/roles/mirror_case_prepare/defaults/main.yml b/ibm/mas_devops/roles/mirror_case_prepare/defaults/main.yml index 4aafdd1a09..5b144b6683 100644 --- a/ibm/mas_devops/roles/mirror_case_prepare/defaults/main.yml +++ b/ibm/mas_devops/roles/mirror_case_prepare/defaults/main.yml @@ -27,8 +27,9 @@ mirror_working_dir: "{{ lookup('env', 'MIRROR_WORKING_DIR') }}" # --skip-dependencies # --skip-verify # --insecure +# CASECTL_RESOLVE_CHARTS=false ibmpak_skip_dependencies: "{{ lookup('env', 'IBMPAK_SKIP_DEPENDENCIES') | default('False', True) | bool }}" ibmpak_skip_verify: "{{ lookup('env', 'IBMPAK_SKIP_VERIFY') | default('False', True) | bool }}" ibmpak_insecure: "{{ lookup('env', 'IBMPAK_INSECURE') | default('False', True) | bool }}" - image_group_filter: "{{ lookup('env', 'IMAGE_GROUP_FILTER') }}" +casectl_resolve_charts: "{{ lookup('env', 'CASECTL_RESOLVE_CHARTS') | default('True', True) | bool }}" diff --git a/ibm/mas_devops/roles/mirror_case_prepare/tasks/main.yml b/ibm/mas_devops/roles/mirror_case_prepare/tasks/main.yml index f090e063a5..5a4e8f05bf 100644 --- a/ibm/mas_devops/roles/mirror_case_prepare/tasks/main.yml +++ b/ibm/mas_devops/roles/mirror_case_prepare/tasks/main.yml @@ -31,6 +31,10 @@ ibmpak_flag_skip_verify: "{{ ibmpak_skip_verify | ternary('--skip-verify', '') }}" ibmpak_flag_skip_dependencies: "{{ ibmpak_skip_dependencies | ternary('--skip-dependencies', '') }}" +- name: "{{ case_name }} : Determine if CASECTL_RESOLVE_CHARTS should be disabled" + set_fact: + casectl_resolve_charts_disabled: "{{ casectl_resolve_charts | ternary('', 'CASECTL_RESOLVE_CHARTS=false') }}" + - name: "{{ case_name }} : Airgap setup configuration" debug: msg: @@ -43,11 +47,12 @@ - "Skip Verify ............................ {{ ibmpak_skip_verify }}" - "Skip Dependencies ...................... {{ ibmpak_skip_dependencies }}" - "IBM Pak Flags .......................... {{ ibmpak_flag_insecure }} {{ ibmpak_flag_skip_verify }} {{ ibmpak_flag_skip_dependencies }}" + - "CASECTL_RESOLVE_CHARTS ................. {{ casectl_resolve_charts_disabled }}" # 4. Get the CASE bundle # ----------------------------------------------------------------------------- - name: "{{ case_name }} : Get the CASE bundle" - shell: oc ibm-pak get {{ case_name }} --version {{ case_version }} {{ ibmpak_flag_insecure }} {{ ibmpak_flag_skip_verify }} {{ ibmpak_flag_skip_dependencies }} + shell: "{{ casectl_resolve_charts_disabled }} oc ibm-pak get {{ case_name }} --version {{ case_version }} {{ ibmpak_flag_insecure }} {{ ibmpak_flag_skip_verify }} {{ ibmpak_flag_skip_dependencies }}" register: ibmpak_get_result - name: "{{ case_name }} : Get Build from output" From 35ff0d8748a3df00880c525400514e83978c1e76 Mon Sep 17 00:00:00 2001 From: Anil Prajapati Date: Fri, 12 Dec 2025 00:29:12 +0530 Subject: [PATCH 04/12] [patch] fix update-pull-secret json parse error --- ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml index d40a158399..fff47ffc10 100644 --- a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml +++ b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml @@ -38,7 +38,7 @@ # 1.3 Append our new credentials to the secret - name: "update-pull-secret : Combine new secret content" set_fact: - new_secret_string: '{{ secret_string | combine( new_secret, recursive=True) }}' + new_secret_string: '{{ secret_string | combine(new_secret | from_json, recursive=True) }}' no_log: true # 1.4. Overwrite the secret From 33bb3bc81b19ce3e339967bc65b3fee7a32df55e Mon Sep 17 00:00:00 2001 From: Anil Prajapati Date: Fri, 12 Dec 2025 16:03:10 +0530 Subject: [PATCH 05/12] [patch] fix new new_secret_string ocp_idms role issue --- .../roles/ocp_idms/tasks/update-pull-secret.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml index fff47ffc10..a3576a66a6 100644 --- a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml +++ b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml @@ -6,12 +6,14 @@ - name: "update-pull-secret : Set new secret content" vars: registryAuthB64: "{{ registry_auth | b64encode }}" - content: - - "{\"auths\":{\"{{ registry_private_url }}\":{\"username\":\"{{ registry_username }}\",\"password\":\"{{ registry_password }}\",\"email\":\"{{ registry_username }}\",\"auth\":\"{{ registryAuthB64 }}\"}" - - "}" - - "}" set_fact: - new_secret: "{{ content | join('') }}" + new_secret: + auths: + "{{ registry_private_url }}": + username: "{{ registry_username }}" + password: "{{ registry_password }}" + email: "{{ registry_username }}" + auth: "{{ registryAuthB64 }}" no_log: true # 1.2 Find the existing secret, and we are going to modify it rather than replace @@ -38,7 +40,7 @@ # 1.3 Append our new credentials to the secret - name: "update-pull-secret : Combine new secret content" set_fact: - new_secret_string: '{{ secret_string | combine(new_secret | from_json, recursive=True) }}' + new_secret_string: '{{ secret_string | combine(new_secret, recursive=True) }}' no_log: true # 1.4. Overwrite the secret From 194985d2ef07ad0e7027fefdab16b079e5b94e2d Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 12 Dec 2025 19:45:12 +0530 Subject: [PATCH 06/12] [patch] fix Ansible 2.20.1 Compatibility Issue --- ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml index a3576a66a6..8adc138f65 100644 --- a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml +++ b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml @@ -34,13 +34,16 @@ - name: "update-pull-secret : Get the dockerconfigjson info" set_fact: - secret_string: '{{ original_secret[".dockerconfigjson"] | b64decode | from_json }}' + secret_string: "{{ original_secret['.dockerconfigjson'] | b64decode | from_json }}" no_log: true # 1.3 Append our new credentials to the secret - name: "update-pull-secret : Combine new secret content" + vars: + secret_dict: "{{ secret_string }}" + new_secret_dict: "{{ new_secret }}" set_fact: - new_secret_string: '{{ secret_string | combine(new_secret, recursive=True) }}' + new_secret_string: "{{ secret_dict | combine(new_secret_dict, recursive=True) }}" no_log: true # 1.4. Overwrite the secret From 752469e1ec73ab966590fa41557c88923ee8ea03 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 12 Dec 2025 20:15:43 +0530 Subject: [PATCH 07/12] [patch] Fix Ansible 2.20.1 compatibility issue in ocp_idms role --- .../roles/ocp_idms/tasks/update-pull-secret.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml index 8adc138f65..02434b4cc2 100644 --- a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml +++ b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml @@ -38,12 +38,15 @@ no_log: true # 1.3 Append our new credentials to the secret +# Force evaluation of secret_string to a proper dict +- name: "update-pull-secret : Ensure secret_string is a dict" + set_fact: + secret_dict: "{{ secret_string | dict2items | items2dict }}" + no_log: true + - name: "update-pull-secret : Combine new secret content" - vars: - secret_dict: "{{ secret_string }}" - new_secret_dict: "{{ new_secret }}" set_fact: - new_secret_string: "{{ secret_dict | combine(new_secret_dict, recursive=True) }}" + new_secret_string: "{{ secret_dict | combine(new_secret, recursive=True) }}" no_log: true # 1.4. Overwrite the secret From 0b55f7493c16488368993101ca29db5391d252f9 Mon Sep 17 00:00:00 2001 From: nehasangwai-ibm Date: Sat, 13 Dec 2025 16:38:44 +0530 Subject: [PATCH 08/12] [patch] CP4D 5.2.0 Upgrade scenario (#2029) --- .../roles/cp4d/tasks/prereqs/install-cpfs.yml | 27 ++++++++++++++++++- .../cp4d_service/tasks/wait/wait-wml-etcd.yml | 14 +++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/ibm/mas_devops/roles/cp4d/tasks/prereqs/install-cpfs.yml b/ibm/mas_devops/roles/cp4d/tasks/prereqs/install-cpfs.yml index e7c6435896..a1e170d295 100644 --- a/ibm/mas_devops/roles/cp4d/tasks/prereqs/install-cpfs.yml +++ b/ibm/mas_devops/roles/cp4d/tasks/prereqs/install-cpfs.yml @@ -85,7 +85,32 @@ apply: yes template: "templates/cpfs/subscription.yml.j2" -# 2. Patch ZenService lite-cr to set the zen version and increase resource limits +# During upgrades, patch existing zen-operator subscription to use new channel from updated catalog +# This forces OLM to upgrade the operator to the new version automatically +# The zen channel is derived from zen_cr_version variable (e.g., 6.2.0 -> v6.2) +# ---------------------------------------------------------------------------------------------- +- name: "Patch zen-operator subscription to new channel during upgrade" + when: is_cpd_upgrade | default(false) + kubernetes.core.k8s: + api_version: operators.coreos.com/v1alpha1 + kind: Subscription + name: ibm-zen-operator + namespace: "{{ cpd_operators_namespace }}" + definition: + spec: + channel: "v{{ zen_cr_version.split('.')[0] }}.{{ zen_cr_version.split('.')[1] }}" + source: ibm-zen-operator-catalog + sourceNamespace: "{{ cpd_operators_namespace }}" + apply: yes + ignore_errors: yes + +# Wait for OLM to process the channel update and upgrade the operator +- name: "Wait for OLM to upgrade zen-operator to new version" + when: is_cpd_upgrade | default(false) + pause: + seconds: 60 + +# 2. Wait for operators to be ready # ---------------------------------------------------------------------------------------------- - name: "Wait for ibm-common-service-operator to be ready (60s delay)" kubernetes.core.k8s_info: diff --git a/ibm/mas_devops/roles/cp4d_service/tasks/wait/wait-wml-etcd.yml b/ibm/mas_devops/roles/cp4d_service/tasks/wait/wait-wml-etcd.yml index 958b726411..8f0fa96b51 100644 --- a/ibm/mas_devops/roles/cp4d_service/tasks/wait/wait-wml-etcd.yml +++ b/ibm/mas_devops/roles/cp4d_service/tasks/wait/wait-wml-etcd.yml @@ -47,13 +47,13 @@ force_conflicts: true # Delete wml-cpd-etcd statefulset so next time it recreates with proper upgrade specs - - name: "wait/wml : Delete wml-cpd-etcd statefulset so next time it recreates with proper upgrade specs" - kubernetes.core.k8s: - state: absent - api_version: apps/v1 - kind: StatefulSet - name: wml-cpd-etcd - namespace: "{{ cpd_instance_namespace }}" + # - name: "wait/wml : Delete wml-cpd-etcd statefulset so next time it recreates with proper upgrade specs" + # kubernetes.core.k8s: + # state: absent + # api_version: apps/v1 + # kind: StatefulSet + # name: wml-cpd-etcd + # namespace: "{{ cpd_instance_namespace }}" # Scale up ibm-cpd-wml-operator again to force reconcile - name: "wait/wml : Scale up ibm-cpd-wml-operator to force reconcile" From 68de80c88c107c02b3863a718587dc72d94bde80 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Tue, 16 Dec 2025 10:08:30 +0530 Subject: [PATCH 09/12] [patch] revert fix Ansible 2.20.1 Compatibility Issue --- .../roles/ocp_idms/tasks/update-pull-secret.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml index 02434b4cc2..564626db36 100644 --- a/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml +++ b/ibm/mas_devops/roles/ocp_idms/tasks/update-pull-secret.yml @@ -38,15 +38,9 @@ no_log: true # 1.3 Append our new credentials to the secret -# Force evaluation of secret_string to a proper dict -- name: "update-pull-secret : Ensure secret_string is a dict" - set_fact: - secret_dict: "{{ secret_string | dict2items | items2dict }}" - no_log: true - - name: "update-pull-secret : Combine new secret content" set_fact: - new_secret_string: "{{ secret_dict | combine(new_secret, recursive=True) }}" + new_secret_string: "{{ secret_string | combine(new_secret, recursive=True) }}" no_log: true # 1.4. Overwrite the secret From 185ab8c97a9a1ac0ada184e11f06140abd45313c Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Tue, 16 Dec 2025 10:39:12 +0530 Subject: [PATCH 10/12] [patch] update MAS_LATEST_CATALOG --- build/bin/build-collection.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/bin/build-collection.sh b/build/bin/build-collection.sh index 3f764d7fd4..037635fb8a 100644 --- a/build/bin/build-collection.sh +++ b/build/bin/build-collection.sh @@ -13,8 +13,8 @@ cat $GITHUB_WORKSPACE/ibm/mas_devops/galaxy.yml # Update this when we have new catalog -MAS_PREVIOUS_CATALOG='v9-251030-amd64' -MAS_LATEST_CATALOG='v9-251127-amd64' +MAS_PREVIOUS_CATALOG='v9-251127-amd64' +MAS_LATEST_CATALOG='v9-251224-amd64' # Update all the placeholders in the playbooks From edd123d3b378690d747ba3e8b6c092c39af7d404 Mon Sep 17 00:00:00 2001 From: Anil Prajapati Date: Thu, 18 Dec 2025 13:50:33 +0530 Subject: [PATCH 11/12] [patch] remove strimzi-0.45.x --- .../roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 | 1 - 1 file changed, 1 deletion(-) diff --git a/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 b/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 index 00b8a69902..25d903fa8d 100644 --- a/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 +++ b/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 @@ -50,7 +50,6 @@ mirror: - name: strimzi-kafka-operator # Required by ibm.mas_devops.kafka role channels: - name: stable - - name: strimzi-0.45.x - name: opendatahub-operator channels: - name: fast From b0b839ae1419192bc9f66eb26cb9b627c0421ac2 Mon Sep 17 00:00:00 2001 From: Anil Prajapati Date: Thu, 18 Dec 2025 15:09:50 +0530 Subject: [PATCH 12/12] Revert "[patch] remove strimzi-0.45.x" This reverts commit edd123d3b378690d747ba3e8b6c092c39af7d404. --- .../roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 b/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 index 25d903fa8d..00b8a69902 100644 --- a/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 +++ b/ibm/mas_devops/roles/mirror_ocp/templates/imagesetconfiguration.yml.j2 @@ -50,6 +50,7 @@ mirror: - name: strimzi-kafka-operator # Required by ibm.mas_devops.kafka role channels: - name: stable + - name: strimzi-0.45.x - name: opendatahub-operator channels: - name: fast