From 4638912f8a129d2241885c804e09c74f941ab057 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 26 Jun 2026 11:09:35 +0530 Subject: [PATCH 01/25] [minor] Support July Catalog Update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e681937c30..3d96a87a1ef 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ Documentation Want to contribute to MAS Command Line Interface? -------------------------------------------------------------------------------- We welcome every Maximo Application Suite users, developers and enthusiasts to contribute to the MAS Command Line Interface while fixing code issues and implementing new automated functionalities. -You can contribute to this collection by raising [a new issue](https://github.com/ibm-mas/cli/issues) with suggestions on how to make our MAS automation engine even better, or if you want to become a new code contributor, please refer to the [Contributing Guidelines](CONTRIBUTING.md) and learn more about how to get started. \ No newline at end of file +You can contribute to this collection by raising [a new issue](https://github.com/ibm-mas/cli/issues) with suggestions on how to make our MAS automation engine even better, or if you want to become a new code contributor, please refer to the [Contributing Guidelines](CONTRIBUTING.md) and learn more about how to get started. From 4596e9095d4a3b9fed9e829e587191e9df069595 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 26 Jun 2026 12:06:04 +0530 Subject: [PATCH 02/25] [patch] Update catalog digests for July release (#2432) --- catalogs/v9-260730-amd64.yaml | 12 ++++++++++++ catalogs/v9-260730-ppc64le.yaml | 12 ++++++++++++ catalogs/v9-260730-s390x.yaml | 12 ++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 catalogs/v9-260730-amd64.yaml create mode 100644 catalogs/v9-260730-ppc64le.yaml create mode 100644 catalogs/v9-260730-s390x.yaml diff --git a/catalogs/v9-260730-amd64.yaml b/catalogs/v9-260730-amd64.yaml new file mode 100644 index 00000000000..aa1712eae84 --- /dev/null +++ b/catalogs/v9-260730-amd64.yaml @@ -0,0 +1,12 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: ibm-operator-catalog + namespace: openshift-marketplace +spec: + displayName: IBM Maximo Operators (v9-260730-amd64) + publisher: IBM + description: Static Catalog Source for IBM Maximo Application Suite + sourceType: grpc + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:3a9f89efcdefc8b0bba4deaf2efea2b17835880ba17215274637a93b30f126b0 + priority: 90 diff --git a/catalogs/v9-260730-ppc64le.yaml b/catalogs/v9-260730-ppc64le.yaml new file mode 100644 index 00000000000..81c50801db1 --- /dev/null +++ b/catalogs/v9-260730-ppc64le.yaml @@ -0,0 +1,12 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: ibm-operator-catalog + namespace: openshift-marketplace +spec: + displayName: IBM Maximo Operators (v9-260730-ppc64le) + publisher: IBM + description: Static Catalog Source for IBM Maximo Application Suite + sourceType: grpc + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d82533f5f713fe4f9ec265009ce7d32f6094671c936a31565f98a512916205f2 + priority: 90 diff --git a/catalogs/v9-260730-s390x.yaml b/catalogs/v9-260730-s390x.yaml new file mode 100644 index 00000000000..4311e8cab2e --- /dev/null +++ b/catalogs/v9-260730-s390x.yaml @@ -0,0 +1,12 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: ibm-operator-catalog + namespace: openshift-marketplace +spec: + displayName: IBM Maximo Operators (v9-260730-s390x) + publisher: IBM + description: Static Catalog Source for IBM Maximo Application Suite + sourceType: grpc + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d7c156afa72073c9b47773e1113a06a841d538c5c0e8878bc39bf8bd62dd5aa4 + priority: 90 From 8fae2789ed11f569dce5348fed4a2ad76003d4ce Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 26 Jun 2026 13:13:10 +0530 Subject: [PATCH 03/25] [patch] update july catalog tag --- mkdocs.yml | 2 +- python/src/mas/cli/install/catalogs.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 73f3f735c94..a370c4187a1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -38,10 +38,10 @@ nav: - "Image Validation": guides/image-validation.md - "Operator Catalogs": - "Overview": catalogs/index.md + - "Jul 30 2026": catalogs/v9-260730-amd64.md - "Jun 25 2026": catalogs/v9-260625-amd64.md - "May 27 2026": catalogs/v9-260527-amd64.md - "Apr 30 2026": catalogs/v9-260430-amd64.md - - "Mar 26 2026": catalogs/v9-260326-amd64.md - "Reference": - "Dependencies": reference/dependencies.md - "Topology": reference/topology.md diff --git a/python/src/mas/cli/install/catalogs.py b/python/src/mas/cli/install/catalogs.py index 6512e95bbd8..c9f49e24a12 100644 --- a/python/src/mas/cli/install/catalogs.py +++ b/python/src/mas/cli/install/catalogs.py @@ -9,21 +9,21 @@ # ***************************************************************************** supportedCatalogs = { "amd64": [ + "v9-260730-amd64", "v9-260625-amd64", "v9-260527-amd64", "v9-260430-amd64", - "v9-260326-amd64", ], "s390x": [ + "v9-260730-s390x", "v9-260625-s390x", "v9-260527-s390x", "v9-260430-s390x", - "v9-260326-s390x", ], "ppc64le": [ + "v9-260730-ppc64le", "v9-260625-ppc64le", "v9-260527-ppc64le", "v9-260430-ppc64le", - "v9-260326-ppc64le", ], } From 165f54376db14f0a911b8a141676663b74b2d117 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Fri, 26 Jun 2026 14:40:38 +0530 Subject: [PATCH 04/25] [patch] add catalog md file --- docs/catalogs/v9-260730-amd64.md | 734 +++++++++++++++++++++++++++++ docs/catalogs/v9-260730-ppc64le.md | 104 ++++ docs/catalogs/v9-260730-s390x.md | 104 ++++ 3 files changed, 942 insertions(+) create mode 100644 docs/catalogs/v9-260730-amd64.md create mode 100644 docs/catalogs/v9-260730-ppc64le.md create mode 100644 docs/catalogs/v9-260730-s390x.md diff --git a/docs/catalogs/v9-260730-amd64.md b/docs/catalogs/v9-260730-amd64.md new file mode 100644 index 00000000000..9ac1e427f2d --- /dev/null +++ b/docs/catalogs/v9-260730-amd64.md @@ -0,0 +1,734 @@ +IBM Maximo Operator Catalog v9 (260730) +=============================================================================== + +:::mas-catalog-details + + +:::mas-catalog-whats-new + +:::mas-catalog-known-issues + +!!! important + MAS 8.10 and 8.11 standard support and software updates end on 30th April 2026, to ensure you are able to continue to receive monthly security updates and bug fixes we advise all customers to begin making upgrade plans for MAS 9.0 if you have not already done so. + +:::mas-catalog-install + +:::mas-catalog-source + +Red Hat OpenShift Container Platform Support +------------------------------------------------------------------------------- +For more information about the OCP lifecycle refer to the [Red Hat OpenShift Container Platform Life Cycle Policy](https://access.redhat.com/support/policy/updates/openshift/). + +IBM Maximo Application Suite customers receive a standard Red Hat OpenShift Container Platform subscription as part of their purchase. This includes 18 months of maintenance support for each OpenShift minor release. A further 6 months support is available to purchase as an Extended Update Support (EUS) Add-on to x86-64 versions of Red Hat OpenShift Kubernetes Engine, Red Hat OpenShift Container Platform, and Red Hat OpenShift Platform Plus Standard subscriptions. + +:::mas-catalog-ocp-compatibility-matrix + +### Certified Operators +The following packages from the `registry.redhat.io/redhat/certified-operator-index` catalog are used in the Maximo Application Suite install: + +- **gpu-operator-certified** required by `ibm.mas_devops.nvidia_gpu` role +- **kubeturbo-certified** required by `ibm.mas_devops.kubeturbo` role + +### Community Operators +The following packages from the `registry.redhat.io/redhat/community-operator-index` catalog are used in the Maximo Application Suite install: + +- **grafana-operator** required by `ibm.mas_devops.grafana` role +- **opentelemetry-operator** required by `ibm.mas_devops.opentelemetry` role +- **strimzi-kafka-operator** required by `ibm.mas_devops.kafka` role (if using Strimzi as Kakfa provider) + +### Red Hat Operators +The following packages from the `registry.redhat.io/redhat/redhat-operator-index` catalog are used in the Maximo Application Suite install: + +- **amq-streams** required by `ibm.mas_devops.kafka` role (if using AMQ Streams as Kakfa provider) +- **openshift-pipelines-operator-rh** required by the MAS CLI +- **nfd** required by `ibm.mas_devops.nvidia_gpu` role +- **aws-efs-csi-driver-operator** required by `ibm.mas_devops.ocp_efs` role +- **local-storage-operator** required by `ibm.mas_devops.ocs` role +- **odf-operator** required by `ibm.mas_devops.ocs` role + +IBM Cloud Pak for Data Compatibility +------------------------------------------------------------------------------- +This catalog is certified compatible with **IBM Cloud Pak for Data v5.2.0**. + +For more information on Cloud Pak for Data's support policy review this [IBM Cloud Pak for Data Software Support Lifecycle Addendum](https://www.ibm.com/support/pages/node/6593147). + +MongoDB Compatibility +------------------------------------------------------------------------------- +This catalog is certified compatible with MongoDB **[v7.0](https://www.mongodb.com/docs/v7.0/)** and **[v8.0](https://www.mongodb.com/docs/v8.0/)**, this applies to both MongoDB Community Edition (CE) and MongoDB Enterprise Edition (EE). + +By default an in-cluster MongoDb (CE) instance will be created when you install MAS, using the [MongoDB Community Kubernetes Operator](https://github.com/mongodb/mongodb-kubernetes-operator); however MAS supports use with any type of MongoDb instance, including but not limited to the following hosted solutions: + +- [IBM Cloud Databases for MongoDB](https://www.ibm.com/products/databases-for-mongodb) +- [MongoDB Atlas](https://www.mongodb.com/products/platform/atlas-database) + +[Amazon DocumentDB](https://aws.amazon.com/documentdb/) provides [MongoDb compatability](https://docs.aws.amazon.com/documentdb/latest/developerguide/compatibility.html) and may be used as an alternative to MongoDb. This catalog is certified compatible with **DocumentDb Engine Version v5.0.0**. + +Software Product Compatibility Reports +------------------------------------------------------------------------------- +Please refer to the official compatibility reports by searching for “Maximo Application Suite” using [link](https://www.ibm.com/software/reports/compatibility/clarity/index.html). to review the complete list of compatibility requirements. Services that are not explicitly listed are not supported. + + +Package Manifest +------------------------------------------------------------------------------- + +### IBM Maximo Application Suite +| Package | Default Channel | Channel | Latest Version | +|--------------------------|-------------------|---------------|-------------------------------------------------------| +| ibm-aiservice | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-aiservice/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-aiservice/9.2.0.md) | +| | | 9.1.x | [9.1.16](packages/ibm-aiservice/9.1.16.md) | +| ibm-aiservice-tenant | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-aiservice-tenant/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-aiservice-tenant/9.2.0.md) | +| ibm-mas | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas/9.0.27.md) | +| | | 8.11.x | [8.11.34](packages/ibm-mas/8.11.34.md) | +| | | 8.10.x | [8.10.37](packages/ibm-mas/8.10.37.md) | +| ibm-mas-aibroker | 9.1.x | 9.1.x | [9.1.4](packages/ibm-mas-aibroker/9.1.4.md) | +| | | 9.0.x | [9.0.6](packages/ibm-mas-aibroker/9.0.6.md) | +| ibm-mas-arcgis | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-arcgis/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-arcgis/9.2.0.md) | +| | | 9.1.x | [9.1.10](packages/ibm-mas-arcgis/9.1.10.md) | +| | | 9.0.x | [9.0.11](packages/ibm-mas-arcgis/9.0.11.md) | +| ibm-mas-assist | 9.1.x | 9.1.x | [9.1.12](packages/ibm-mas-assist/9.1.12.md) | +| | | 9.0.x | [9.0.18](packages/ibm-mas-assist/9.0.18.md) | +| | | 8.8.x | [8.8.7](packages/ibm-mas-assist/8.8.7.md) | +| | | 8.7.x | [8.7.8](packages/ibm-mas-assist/8.7.8.md) | +| ibm-mas-facilities | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-facilities/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-facilities/9.2.0.md) | +| | | 9.1.x | [9.1.12](packages/ibm-mas-facilities/9.1.12.md) | +| ibm-mas-hputilities | 8.6.x | 8.6.x | [8.6.7](packages/ibm-mas-hputilities/8.6.7.md) | +| ibm-mas-iot | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-iot/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-iot/9.2.0.md) | +| | | 9.1.x | [9.1.12](packages/ibm-mas-iot/9.1.12.md) | +| | | 9.0.x | [9.0.21](packages/ibm-mas-iot/9.0.21.md) | +| | | 8.8.x | [8.8.30](packages/ibm-mas-iot/8.8.30.md) | +| | | 8.7.x | [8.7.33](packages/ibm-mas-iot/8.7.33.md) | +| ibm-mas-manage | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas-manage/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas-manage/9.0.27.md) | +| | | 8.7.x | [8.7.32](packages/ibm-mas-manage/8.7.32.md) | +| | | 8.6.x | [8.6.38](packages/ibm-mas-manage/8.6.38.md) | +| ibm-mas-monitor | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-monitor/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-monitor/9.2.0.md) | +| | | 9.1.x | [9.1.12](packages/ibm-mas-monitor/9.1.12.md) | +| | | 9.0.x | [9.0.22](packages/ibm-mas-monitor/9.0.22.md) | +| | | 8.11.x | [8.11.28](packages/ibm-mas-monitor/8.11.28.md) | +| | | 8.10.x | [8.10.30](packages/ibm-mas-monitor/8.10.30.md) | +| ibm-mas-optimizer | 9.2.x | 9.2.x-stable | [9.2.0](packages/ibm-mas-optimizer/9.2.0.md) | +| | | 9.2.x-feature | [9.2.0](packages/ibm-mas-optimizer/9.2.0.md) | +| | | 9.2.x-dev | [9.2.0](packages/ibm-mas-optimizer/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-optimizer/9.2.0.md) | +| | | 9.1.x | [9.1.13](packages/ibm-mas-optimizer/9.1.13.md) | +| | | 9.0.x | [9.0.24](packages/ibm-mas-optimizer/9.0.24.md) | +| | | 8.5.x | [8.5.28](packages/ibm-mas-optimizer/8.5.28.md) | +| | | 8.4.x | [8.4.28](packages/ibm-mas-optimizer/8.4.28.md) | +| ibm-mas-predict | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-predict/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-predict/9.2.0.md) | +| | | 9.1.x | [9.1.9](packages/ibm-mas-predict/9.1.9.md) | +| | | 9.0.x | [9.0.16](packages/ibm-mas-predict/9.0.16.md) | +| | | 8.9.x | [8.9.17](packages/ibm-mas-predict/8.9.17.md) | +| | | 8.8.x | [8.8.15](packages/ibm-mas-predict/8.8.15.md) | +| ibm-mas-visualinspection | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-visualinspection/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-visualinspection/9.2.0.md) | +| | | 9.1.x | [9.1.18](packages/ibm-mas-visualinspection/9.1.18.md) | +| | | 9.0.x | [9.0.21](packages/ibm-mas-visualinspection/9.0.21.md) | +| | | 8.9.x | [8.9.21](packages/ibm-mas-visualinspection/8.9.21.md) | +| | | 8.8.x | [8.8.4](packages/ibm-mas-visualinspection/8.8.4.md) | + +### IBM Utilities +| Package | Default Channel | Channel | Latest Version | +|---------------------|-------------------|-----------|--------------------------------------------------| +| ibm-data-dictionary | 1.1.x | 1.1.x | [1.1.23](packages/ibm-data-dictionary/1.1.23.md) | +| ibm-sls | 3.x | 3.x | [3.13.0](packages/ibm-sls/3.13.0.md) | +| ibm-truststore-mgr | 1.x | 1.x | [1.7.7](packages/ibm-truststore-mgr/1.7.7.md) | + +### IBM Cloud Pak Foundational Services +| Package | Default Channel | Channel | Latest Version | +|-------------------------------------|-------------------|--------------|--------------------------------------------------------------------| +| cloud-native-postgresql | stable-v1.25 | stable-v1.25 | [1.25.2](packages/cloud-native-postgresql/1.25.2.md) | +| | | stable-v1.22 | [1.22.9](packages/cloud-native-postgresql/1.22.9.md) | +| | | stable-v1.18 | [1.18.13](packages/cloud-native-postgresql/1.18.13.md) | +| | | stable-v1.17 | [1.17.3](packages/cloud-native-postgresql/1.17.3.md) | +| | | stable-v1.15 | [1.15.5](packages/cloud-native-postgresql/1.15.5.md) | +| | | stable | [1.22.7](packages/cloud-native-postgresql/1.22.7.md) | +| | | fast | [1.18.3](packages/cloud-native-postgresql/1.18.3.md) | +| ibm-cert-manager-operator | v3.23 | v4.2 | [4.2.21](packages/ibm-cert-manager-operator/4.2.21.md) | +| | | v4.1 | [4.1.0](packages/ibm-cert-manager-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-cert-manager-operator/4.0.0.md) | +| | | v3.23 | [3.25.13](packages/ibm-cert-manager-operator/3.25.13.md) | +| | | v3.22 | [3.24.0](packages/ibm-cert-manager-operator/3.24.0.md) | +| | | v3.21 | [3.23.0](packages/ibm-cert-manager-operator/3.23.0.md) | +| | | v3.20 | [3.22.0](packages/ibm-cert-manager-operator/3.22.0.md) | +| | | v3 | [3.25.13](packages/ibm-cert-manager-operator/3.25.13.md) | +| | | beta | [3.9.0](packages/ibm-cert-manager-operator/3.9.0.md) | +| ibm-common-service-operator | v4.13 | v4.9 | [4.9.0](packages/ibm-common-service-operator/4.9.0.md) | +| | | v4.8 | [4.8.0](packages/ibm-common-service-operator/4.8.0.md) | +| | | v4.7 | [4.7.0](packages/ibm-common-service-operator/4.7.0.md) | +| | | v4.6 | [4.6.17](packages/ibm-common-service-operator/4.6.17.md) | +| | | v4.5 | [4.5.0](packages/ibm-common-service-operator/4.5.0.md) | +| | | v4.4 | [4.4.0](packages/ibm-common-service-operator/4.4.0.md) | +| | | v4.3 | [4.3.1](packages/ibm-common-service-operator/4.3.1.md) | +| | | v4.2 | [4.2.0](packages/ibm-common-service-operator/4.2.0.md) | +| | | v4.14 | [4.14.0](packages/ibm-common-service-operator/4.14.0.md) | +| | | v4.13 | [4.13.0](packages/ibm-common-service-operator/4.13.0.md) | +| | | v4.12 | [4.12.0](packages/ibm-common-service-operator/4.12.0.md) | +| | | v4.11 | [4.11.0](packages/ibm-common-service-operator/4.11.0.md) | +| | | v4.10 | [4.10.0](packages/ibm-common-service-operator/4.10.0.md) | +| | | v4.1 | [4.1.0](packages/ibm-common-service-operator/4.1.0.md) | +| | | v4.0 | [4.0.1](packages/ibm-common-service-operator/4.0.1.md) | +| | | v3.23 | [3.23.14](packages/ibm-common-service-operator/3.23.14.md) | +| | | v3.22 | [3.22.0](packages/ibm-common-service-operator/3.22.0.md) | +| | | v3.21 | [3.21.0](packages/ibm-common-service-operator/3.21.0.md) | +| | | v3.20 | [3.20.1](packages/ibm-common-service-operator/3.20.1.md) | +| | | v3 | [3.19.22](packages/ibm-common-service-operator/3.19.22.md) | +| | | beta | [103.103.103](packages/ibm-common-service-operator/103.103.103.md) | +| ibm-commonui-operator-app | v3.23 | v4.9 | [4.9.0](packages/ibm-commonui-operator-app/4.9.0.md) | +| | | v4.8 | [4.8.0](packages/ibm-commonui-operator-app/4.8.0.md) | +| | | v4.7 | [4.7.0](packages/ibm-commonui-operator-app/4.7.0.md) | +| | | v4.6 | [4.6.0](packages/ibm-commonui-operator-app/4.6.0.md) | +| | | v4.5 | [4.5.2](packages/ibm-commonui-operator-app/4.5.2.md) | +| | | v4.4 | [4.4.18](packages/ibm-commonui-operator-app/4.4.18.md) | +| | | v4.3 | [4.3.1](packages/ibm-commonui-operator-app/4.3.1.md) | +| | | v4.2 | [4.2.0](packages/ibm-commonui-operator-app/4.2.0.md) | +| | | v4.14 | [4.14.0](packages/ibm-commonui-operator-app/4.14.0.md) | +| | | v4.13 | [4.13.0](packages/ibm-commonui-operator-app/4.13.0.md) | +| | | v4.12 | [4.12.0](packages/ibm-commonui-operator-app/4.12.0.md) | +| | | v4.11 | [4.11.0](packages/ibm-commonui-operator-app/4.11.0.md) | +| | | v4.10 | [4.10.0](packages/ibm-commonui-operator-app/4.10.0.md) | +| | | v4.1 | [4.1.0](packages/ibm-commonui-operator-app/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-commonui-operator-app/4.0.0.md) | +| | | v3.23 | [1.21.14](packages/ibm-commonui-operator-app/1.21.14.md) | +| | | v3.22 | [1.20.0](packages/ibm-commonui-operator-app/1.20.0.md) | +| | | v3.21 | [1.19.0](packages/ibm-commonui-operator-app/1.19.0.md) | +| | | v3.20 | [1.18.1](packages/ibm-commonui-operator-app/1.18.1.md) | +| | | v3 | [1.21.14](packages/ibm-commonui-operator-app/1.21.14.md) | +| | | beta | [1.5.1](packages/ibm-commonui-operator-app/1.5.1.md) | +| ibm-events-operator | v6.1 | v6.1 | [6.1.0](packages/ibm-events-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-events-operator/6.0.0.md) | +| | | v5.2 | [5.2.1](packages/ibm-events-operator/5.2.1.md) | +| | | v5.1 | [5.1.2](packages/ibm-events-operator/5.1.2.md) | +| | | v3 | [5.0.1](packages/ibm-events-operator/5.0.1.md) | +| | | beta | [3.7.1](packages/ibm-events-operator/3.7.1.md) | +| ibm-ingress-nginx-operator-app | v3.23 | v3.23 | [1.20.13](packages/ibm-ingress-nginx-operator-app/1.20.13.md) | +| | | v3.22 | [1.19.0](packages/ibm-ingress-nginx-operator-app/1.19.0.md) | +| | | v3.21 | [1.18.0](packages/ibm-ingress-nginx-operator-app/1.18.0.md) | +| | | v3.20 | [1.17.1](packages/ibm-ingress-nginx-operator-app/1.17.1.md) | +| | | v3 | [1.20.13](packages/ibm-ingress-nginx-operator-app/1.20.13.md) | +| | | beta | [1.5.0](packages/ibm-ingress-nginx-operator-app/1.5.0.md) | +| ibm-licensing-operator-app | v3.23 | v4.2 | [4.2.17](packages/ibm-licensing-operator-app/4.2.17.md) | +| | | v4.1 | [4.1.0](packages/ibm-licensing-operator-app/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-licensing-operator-app/4.0.0.md) | +| | | v3.23 | [1.20.13](packages/ibm-licensing-operator-app/1.20.13.md) | +| | | v3.22 | [1.19.0](packages/ibm-licensing-operator-app/1.19.0.md) | +| | | v3.21 | [1.18.0](packages/ibm-licensing-operator-app/1.18.0.md) | +| | | v3.20 | [1.17.0](packages/ibm-licensing-operator-app/1.17.0.md) | +| | | v3 | [1.20.13](packages/ibm-licensing-operator-app/1.20.13.md) | +| | | beta | [1.4.1](packages/ibm-licensing-operator-app/1.4.1.md) | +| ibm-management-ingress-operator-app | v3.23 | v3.23 | [1.20.13](packages/ibm-management-ingress-operator-app/1.20.13.md) | +| | | v3.22 | [1.19.0](packages/ibm-management-ingress-operator-app/1.19.0.md) | +| | | v3.21 | [1.18.0](packages/ibm-management-ingress-operator-app/1.18.0.md) | +| | | v3.20 | [1.17.0](packages/ibm-management-ingress-operator-app/1.17.0.md) | +| | | v3 | [1.20.13](packages/ibm-management-ingress-operator-app/1.20.13.md) | +| | | beta | [1.5.1](packages/ibm-management-ingress-operator-app/1.5.1.md) | +| ibm-mongodb-operator-app | v3.23 | v4.2 | [4.2.2](packages/ibm-mongodb-operator-app/4.2.2.md) | +| | | v4.1 | [4.1.0](packages/ibm-mongodb-operator-app/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-mongodb-operator-app/4.0.0.md) | +| | | v3.23 | [1.18.13](packages/ibm-mongodb-operator-app/1.18.13.md) | +| | | v3.22 | [1.17.0](packages/ibm-mongodb-operator-app/1.17.0.md) | +| | | v3.21 | [1.16.0](packages/ibm-mongodb-operator-app/1.16.0.md) | +| | | v3.20 | [1.15.0](packages/ibm-mongodb-operator-app/1.15.0.md) | +| | | v3 | [1.18.13](packages/ibm-mongodb-operator-app/1.18.13.md) | +| | | beta | [1.3.1](packages/ibm-mongodb-operator-app/1.3.1.md) | +| ibm-namespace-scope-operator | v3.23 | v4.3 | [4.3.1](packages/ibm-namespace-scope-operator/4.3.1.md) | +| | | v4.2 | [4.2.17](packages/ibm-namespace-scope-operator/4.2.17.md) | +| | | v4.1 | [4.1.0](packages/ibm-namespace-scope-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-namespace-scope-operator/4.0.0.md) | +| | | v3.23 | [1.17.13](packages/ibm-namespace-scope-operator/1.17.13.md) | +| | | v3.22 | [1.16.0](packages/ibm-namespace-scope-operator/1.16.0.md) | +| | | v3.21 | [1.15.0](packages/ibm-namespace-scope-operator/1.15.0.md) | +| | | v3.20 | [1.14.0](packages/ibm-namespace-scope-operator/1.14.0.md) | +| | | v3 | [1.17.13](packages/ibm-namespace-scope-operator/1.17.13.md) | +| | | beta | [1.1.1](packages/ibm-namespace-scope-operator/1.1.1.md) | +| ibm-odlm | v3.23 | v4.5 | [4.5.2](packages/ibm-odlm/4.5.2.md) | +| | | v4.4 | [4.4.0](packages/ibm-odlm/4.4.0.md) | +| | | v4.3 | [4.3.15](packages/ibm-odlm/4.3.15.md) | +| | | v4.2 | [4.2.3](packages/ibm-odlm/4.2.3.md) | +| | | v4.1 | [4.1.0](packages/ibm-odlm/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-odlm/4.0.0.md) | +| | | v3.23 | [1.21.13](packages/ibm-odlm/1.21.13.md) | +| | | v3.22 | [1.20.0](packages/ibm-odlm/1.20.0.md) | +| | | v3.21 | [1.19.0](packages/ibm-odlm/1.19.0.md) | +| | | v3.20 | [1.18.0](packages/ibm-odlm/1.18.0.md) | +| | | v3 | [1.21.13](packages/ibm-odlm/1.21.13.md) | +| | | beta | [1.5.0](packages/ibm-odlm/1.5.0.md) | +| ibm-platform-api-operator-app | v3.23 | v3.23 | [3.25.13](packages/ibm-platform-api-operator-app/3.25.13.md) | +| | | v3.22 | [3.24.0](packages/ibm-platform-api-operator-app/3.24.0.md) | +| | | v3.21 | [3.23.0](packages/ibm-platform-api-operator-app/3.23.0.md) | +| | | v3.20 | [3.22.0](packages/ibm-platform-api-operator-app/3.22.0.md) | +| | | v3 | [3.25.13](packages/ibm-platform-api-operator-app/3.25.13.md) | +| | | beta | [3.9.1](packages/ibm-platform-api-operator-app/3.9.1.md) | +| ibm-user-data-services-operator | alpha | alpha | [2.0.12](packages/ibm-user-data-services-operator/2.0.12.md) | +| ibm-zen-operator | v3.23 | v6.2 | [6.2.1](packages/ibm-zen-operator/6.2.1.md) | +| | | v6.1 | [6.1.3](packages/ibm-zen-operator/6.1.3.md) | +| | | v6.0 | [6.0.4](packages/ibm-zen-operator/6.0.4.md) | +| | | v4.4 | [5.1.16](packages/ibm-zen-operator/5.1.16.md) | +| | | v4.3 | [5.1.1](packages/ibm-zen-operator/5.1.1.md) | +| | | v4.2 | [5.0.2](packages/ibm-zen-operator/5.0.2.md) | +| | | v4.1 | [5.0.1](packages/ibm-zen-operator/5.0.1.md) | +| | | v4.0 | [5.0.0](packages/ibm-zen-operator/5.0.0.md) | +| | | v3.23 | [1.8.13](packages/ibm-zen-operator/1.8.13.md) | +| | | v3.22 | [1.8.0](packages/ibm-zen-operator/1.8.0.md) | +| | | v3.21 | [1.7.2](packages/ibm-zen-operator/1.7.2.md) | +| | | v3.20 | [1.7.1](packages/ibm-zen-operator/1.7.1.md) | +| | | v3 | [1.8.13](packages/ibm-zen-operator/1.8.13.md) | +| | | beta | [1.0.1](packages/ibm-zen-operator/1.0.1.md) | +| isf-operator | v2.0 | v2.0 | [2.12.2](packages/isf-operator/2.12.2.md) | + +### IBM Cloud Pak for Data +| Package | Default Channel | Channel | Latest Version | +|-------------------------------|-------------------|-----------|-------------------------------------------------------------| +| analyticsengine-operator | v8.1 | v8.1 | [8.1.0](packages/analyticsengine-operator/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/analyticsengine-operator/8.0.0.md) | +| | | v7.3 | [7.3.0](packages/analyticsengine-operator/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/analyticsengine-operator/7.2.0.md) | +| | | v6.0 | [6.0.0](packages/analyticsengine-operator/6.0.0.md) | +| | | v5.9 | [5.9.0](packages/analyticsengine-operator/5.9.0.md) | +| | | v5.5 | [5.5.0](packages/analyticsengine-operator/5.5.0.md) | +| | | v5.4 | [5.4.0](packages/analyticsengine-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/analyticsengine-operator/5.3.0.md) | +| | | v5.1 | [5.1.0](packages/analyticsengine-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/analyticsengine-operator/5.0.0.md) | +| | | v4.3 | [4.3.0](packages/analyticsengine-operator/4.3.0.md) | +| | | v4.2 | [4.2.0](packages/analyticsengine-operator/4.2.0.md) | +| | | v4.1 | [4.1.0](packages/analyticsengine-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/analyticsengine-operator/4.0.0.md) | +| | | v3.5 | [3.5.0](packages/analyticsengine-operator/3.5.0.md) | +| | | v3.4 | [3.4.0](packages/analyticsengine-operator/3.4.0.md) | +| | | v3.3 | [3.3.0](packages/analyticsengine-operator/3.3.0.md) | +| | | v3.1 | [3.1.0](packages/analyticsengine-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/analyticsengine-operator/3.0.0.md) | +| | | v2.3 | [2.3.0](packages/analyticsengine-operator/2.3.0.md) | +| | | v2.2 | [2.2.0](packages/analyticsengine-operator/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/analyticsengine-operator/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/analyticsengine-operator/2.0.0.md) | +| | | stable-v1 | [1.0.9](packages/analyticsengine-operator/1.0.9.md) | +| | | beta | [1.0.1](packages/analyticsengine-operator/1.0.1.md) | +| cpd-platform-operator | v6.2 | v6.2 | [6.2.1](packages/cpd-platform-operator/6.2.1.md) | +| | | v6.1 | [6.1.3](packages/cpd-platform-operator/6.1.3.md) | +| | | v6.0 | [6.0.3](packages/cpd-platform-operator/6.0.3.md) | +| | | v5.9 | [5.9.0](packages/cpd-platform-operator/5.9.0.md) | +| | | v5.8 | [5.8.0](packages/cpd-platform-operator/5.8.0.md) | +| | | v5.7 | [5.7.0](packages/cpd-platform-operator/5.7.0.md) | +| | | v5.6 | [5.6.0](packages/cpd-platform-operator/5.6.0.md) | +| | | v5.5 | [5.5.0](packages/cpd-platform-operator/5.5.0.md) | +| | | v5.4 | [5.4.0](packages/cpd-platform-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/cpd-platform-operator/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/cpd-platform-operator/5.2.0.md) | +| | | v5.1 | [5.1.0](packages/cpd-platform-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/cpd-platform-operator/5.0.0.md) | +| | | v4.4 | [4.4.0](packages/cpd-platform-operator/4.4.0.md) | +| | | v4.3 | [4.3.0](packages/cpd-platform-operator/4.3.0.md) | +| | | v4.2 | [4.2.0](packages/cpd-platform-operator/4.2.0.md) | +| | | v4.1 | [4.1.0](packages/cpd-platform-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/cpd-platform-operator/4.0.0.md) | +| | | v3.8 | [3.8.0](packages/cpd-platform-operator/3.8.0.md) | +| | | v3.7 | [3.7.0](packages/cpd-platform-operator/3.7.0.md) | +| | | v3.6 | [3.6.0](packages/cpd-platform-operator/3.6.0.md) | +| | | v3.5 | [3.5.0](packages/cpd-platform-operator/3.5.0.md) | +| | | v3.4 | [3.4.0](packages/cpd-platform-operator/3.4.0.md) | +| | | v3.3 | [3.3.0](packages/cpd-platform-operator/3.3.0.md) | +| | | v3.2 | [3.2.0](packages/cpd-platform-operator/3.2.0.md) | +| | | v3.1 | [3.1.0](packages/cpd-platform-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/cpd-platform-operator/3.0.0.md) | +| | | v2.0 | [2.0.8](packages/cpd-platform-operator/2.0.8.md) | +| | | stable-v1 | [2.0.0](packages/cpd-platform-operator/2.0.0.md) | +| | | beta | [2.0.0](packages/cpd-platform-operator/2.0.0.md) | +| ibm-ca-operator | v28.1 | v4.0 | [4.0.8](packages/ibm-ca-operator/4.0.8.md) | +| | | v28.1 | [28.1.0](packages/ibm-ca-operator/28.1.0.md) | +| | | v28.0 | [28.0.0](packages/ibm-ca-operator/28.0.0.md) | +| | | v27.3 | [27.3.0](packages/ibm-ca-operator/27.3.0.md) | +| | | v27.2 | [27.2.0](packages/ibm-ca-operator/27.2.0.md) | +| | | v27.1 | [27.1.0](packages/ibm-ca-operator/27.1.0.md) | +| | | v27.0 | [27.0.0](packages/ibm-ca-operator/27.0.0.md) | +| | | v26.3 | [26.3.1](packages/ibm-ca-operator/26.3.1.md) | +| | | v26.2 | [26.2.0](packages/ibm-ca-operator/26.2.0.md) | +| | | v26.1 | [26.1.0](packages/ibm-ca-operator/26.1.0.md) | +| | | v26.0 | [26.0.0](packages/ibm-ca-operator/26.0.0.md) | +| | | v25.9 | [25.9.0](packages/ibm-ca-operator/25.9.0.md) | +| | | v25.8 | [25.8.0](packages/ibm-ca-operator/25.8.0.md) | +| | | v25.4 | [25.4.0](packages/ibm-ca-operator/25.4.0.md) | +| | | v25.3 | [25.3.0](packages/ibm-ca-operator/25.3.0.md) | +| | | v25.2 | [25.2.0](packages/ibm-ca-operator/25.2.0.md) | +| | | v25.0 | [25.0.0](packages/ibm-ca-operator/25.0.0.md) | +| | | v24.3 | [24.3.0](packages/ibm-ca-operator/24.3.0.md) | +| | | v24.0 | [24.0.0](packages/ibm-ca-operator/24.0.0.md) | +| | | v23.5 | [23.5.0](packages/ibm-ca-operator/23.5.0.md) | +| | | v23.4 | [23.4.0](packages/ibm-ca-operator/23.4.0.md) | +| | | v23.3 | [23.3.0](packages/ibm-ca-operator/23.3.0.md) | +| | | v23.1 | [23.1.0](packages/ibm-ca-operator/23.1.0.md) | +| | | v23.0 | [23.0.0](packages/ibm-ca-operator/23.0.0.md) | +| | | v22.3 | [22.3.0](packages/ibm-ca-operator/22.3.0.md) | +| | | v22.2 | [22.2.0](packages/ibm-ca-operator/22.2.0.md) | +| | | v22.1 | [22.1.0](packages/ibm-ca-operator/22.1.0.md) | +| | | v22.0 | [22.0.0](packages/ibm-ca-operator/22.0.0.md) | +| ibm-cpd-canvasbase | v11.0 | v8.5 | [8.5.0](packages/ibm-cpd-canvasbase/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-canvasbase/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-canvasbase/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-canvasbase/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-canvasbase/8.0.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-cpd-canvasbase/11.0.0.md) | +| ibm-cpd-ccs | v11.1 | v9.3 | [9.3.0](packages/ibm-cpd-ccs/9.3.0.md) | +| | | v9.2 | [9.2.0](packages/ibm-cpd-ccs/9.2.0.md) | +| | | v9.1 | [9.1.0](packages/ibm-cpd-ccs/9.1.0.md) | +| | | v9.0 | [9.0.0](packages/ibm-cpd-ccs/9.0.0.md) | +| | | v8.9 | [8.9.0](packages/ibm-cpd-ccs/8.9.0.md) | +| | | v8.8 | [8.8.0](packages/ibm-cpd-ccs/8.8.0.md) | +| | | v8.7 | [8.7.0](packages/ibm-cpd-ccs/8.7.0.md) | +| | | v8.6 | [8.6.0](packages/ibm-cpd-ccs/8.6.0.md) | +| | | v8.5 | [8.5.0](packages/ibm-cpd-ccs/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-ccs/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-ccs/8.3.0.md) | +| | | v8.2 | [8.2.0](packages/ibm-cpd-ccs/8.2.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-ccs/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-ccs/8.0.0.md) | +| | | v7.3 | [7.3.0](packages/ibm-cpd-ccs/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/ibm-cpd-ccs/7.2.0.md) | +| | | v7.1 | [7.1.0](packages/ibm-cpd-ccs/7.1.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-ccs/7.0.0.md) | +| | | v6.5 | [6.5.0](packages/ibm-cpd-ccs/6.5.0.md) | +| | | v6.4 | [6.4.0](packages/ibm-cpd-ccs/6.4.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-ccs/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-ccs/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-ccs/6.0.0.md) | +| | | v2.3 | [2.3.0](packages/ibm-cpd-ccs/2.3.0.md) | +| | | v2.2 | [2.2.0](packages/ibm-cpd-ccs/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/ibm-cpd-ccs/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/ibm-cpd-ccs/2.0.0.md) | +| | | v11.1 | [11.1.0](packages/ibm-cpd-ccs/11.1.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-cpd-ccs/11.0.0.md) | +| | | v10.3 | [10.3.0](packages/ibm-cpd-ccs/10.3.0.md) | +| | | v10.2 | [10.2.0](packages/ibm-cpd-ccs/10.2.0.md) | +| | | v10.1 | [10.1.0](packages/ibm-cpd-ccs/10.1.0.md) | +| | | v10.0 | [10.0.0](packages/ibm-cpd-ccs/10.0.0.md) | +| | | v1.0 | [1.0.9](packages/ibm-cpd-ccs/1.0.9.md) | +| ibm-cpd-datarefinery | v11.1 | v9.3 | [9.3.0](packages/ibm-cpd-datarefinery/9.3.0.md) | +| | | v9.1 | [9.1.0](packages/ibm-cpd-datarefinery/9.1.0.md) | +| | | v9.0 | [9.0.0](packages/ibm-cpd-datarefinery/9.0.0.md) | +| | | v8.9 | [8.9.0](packages/ibm-cpd-datarefinery/8.9.0.md) | +| | | v8.7 | [8.7.0](packages/ibm-cpd-datarefinery/8.7.0.md) | +| | | v8.6 | [8.6.0](packages/ibm-cpd-datarefinery/8.6.0.md) | +| | | v8.5 | [8.5.0](packages/ibm-cpd-datarefinery/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-datarefinery/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-datarefinery/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-datarefinery/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-datarefinery/8.0.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-datarefinery/7.0.0.md) | +| | | v6.5 | [6.5.0](packages/ibm-cpd-datarefinery/6.5.0.md) | +| | | v6.4 | [6.4.0](packages/ibm-cpd-datarefinery/6.4.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-datarefinery/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-datarefinery/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-datarefinery/6.0.0.md) | +| | | v2.3 | [2.3.0](packages/ibm-cpd-datarefinery/2.3.0.md) | +| | | v2.2 | [2.2.0](packages/ibm-cpd-datarefinery/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/ibm-cpd-datarefinery/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/ibm-cpd-datarefinery/2.0.0.md) | +| | | v11.1 | [11.1.0](packages/ibm-cpd-datarefinery/11.1.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-cpd-datarefinery/11.0.0.md) | +| | | v10.2 | [10.2.0](packages/ibm-cpd-datarefinery/10.2.0.md) | +| | | v10.1 | [10.1.0](packages/ibm-cpd-datarefinery/10.1.0.md) | +| | | v10.0 | [10.0.0](packages/ibm-cpd-datarefinery/10.0.0.md) | +| | | v1.0 | [1.0.10](packages/ibm-cpd-datarefinery/1.0.10.md) | +| ibm-cpd-spss | v8.5 | v8.5 | [8.5.0](packages/ibm-cpd-spss/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-spss/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-spss/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-spss/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-spss/8.0.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-spss/7.0.0.md) | +| | | v6.5 | [6.5.0](packages/ibm-cpd-spss/6.5.0.md) | +| | | v6.4 | [6.4.0](packages/ibm-cpd-spss/6.4.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-spss/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-spss/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-spss/6.0.0.md) | +| | | v2.3 | [2.3.0](packages/ibm-cpd-spss/2.3.0.md) | +| | | v2.2 | [2.2.0](packages/ibm-cpd-spss/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/ibm-cpd-spss/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/ibm-cpd-spss/2.0.0.md) | +| | | v1.0 | [1.0.9](packages/ibm-cpd-spss/1.0.9.md) | +| ibm-cpd-wml-operator | v8.1 | v8.1 | [8.1.0](packages/ibm-cpd-wml-operator/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-wml-operator/8.0.0.md) | +| | | v7.2 | [7.2.0](packages/ibm-cpd-wml-operator/7.2.0.md) | +| | | v7.1 | [7.1.0](packages/ibm-cpd-wml-operator/7.1.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-wml-operator/7.0.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-wml-operator/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-wml-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-wml-operator/6.0.0.md) | +| | | v5.9 | [5.9.0](packages/ibm-cpd-wml-operator/5.9.0.md) | +| | | v5.7 | [5.7.0](packages/ibm-cpd-wml-operator/5.7.0.md) | +| | | v5.6 | [5.6.0](packages/ibm-cpd-wml-operator/5.6.0.md) | +| | | v5.5 | [5.5.0](packages/ibm-cpd-wml-operator/5.5.0.md) | +| | | v5.4 | [5.4.0](packages/ibm-cpd-wml-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/ibm-cpd-wml-operator/5.3.0.md) | +| | | v5.1 | [5.1.0](packages/ibm-cpd-wml-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/ibm-cpd-wml-operator/5.0.0.md) | +| | | v4.0 | [4.0.0](packages/ibm-cpd-wml-operator/4.0.0.md) | +| | | v3.5 | [3.5.0](packages/ibm-cpd-wml-operator/3.5.0.md) | +| | | v3.4 | [3.4.0](packages/ibm-cpd-wml-operator/3.4.0.md) | +| | | v3.3 | [3.3.0](packages/ibm-cpd-wml-operator/3.3.0.md) | +| | | v3.1 | [3.1.0](packages/ibm-cpd-wml-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/ibm-cpd-wml-operator/3.0.0.md) | +| | | v2.3 | [2.3.0](packages/ibm-cpd-wml-operator/2.3.0.md) | +| | | v2.2 | [2.2.0](packages/ibm-cpd-wml-operator/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/ibm-cpd-wml-operator/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/ibm-cpd-wml-operator/2.0.0.md) | +| | | v1.1 | [1.1.8](packages/ibm-cpd-wml-operator/1.1.8.md) | +| | | beta | [1.0.1486](packages/ibm-cpd-wml-operator/1.0.1486.md) | +| | | alpha | [1.1.0](packages/ibm-cpd-wml-operator/1.1.0.md) | +| ibm-cpd-wos | v8.0 | v8.0 | [8.0.0](packages/ibm-cpd-wos/8.0.0.md) | +| ibm-cpd-ws-runtimes | v11.1 | v9.3 | [9.3.0](packages/ibm-cpd-ws-runtimes/9.3.0.md) | +| | | v9.1 | [9.1.0](packages/ibm-cpd-ws-runtimes/9.1.0.md) | +| | | v9.0 | [9.0.0](packages/ibm-cpd-ws-runtimes/9.0.0.md) | +| | | v8.9 | [8.9.0](packages/ibm-cpd-ws-runtimes/8.9.0.md) | +| | | v8.7 | [8.7.0](packages/ibm-cpd-ws-runtimes/8.7.0.md) | +| | | v8.6 | [8.6.0](packages/ibm-cpd-ws-runtimes/8.6.0.md) | +| | | v8.5 | [8.5.0](packages/ibm-cpd-ws-runtimes/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-ws-runtimes/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-ws-runtimes/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-ws-runtimes/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-ws-runtimes/8.0.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-ws-runtimes/7.0.0.md) | +| | | v6.5 | [6.5.0](packages/ibm-cpd-ws-runtimes/6.5.0.md) | +| | | v6.4 | [6.4.0](packages/ibm-cpd-ws-runtimes/6.4.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-ws-runtimes/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-ws-runtimes/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-ws-runtimes/6.0.0.md) | +| | | v5.3 | [5.3.0](packages/ibm-cpd-ws-runtimes/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/ibm-cpd-ws-runtimes/5.2.0.md) | +| | | v5.1 | [5.1.0](packages/ibm-cpd-ws-runtimes/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/ibm-cpd-ws-runtimes/5.0.0.md) | +| | | v11.1 | [11.1.0](packages/ibm-cpd-ws-runtimes/11.1.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-cpd-ws-runtimes/11.0.0.md) | +| | | v10.3 | [10.3.0](packages/ibm-cpd-ws-runtimes/10.3.0.md) | +| | | v10.2 | [10.2.0](packages/ibm-cpd-ws-runtimes/10.2.0.md) | +| | | v10.1 | [10.1.0](packages/ibm-cpd-ws-runtimes/10.1.0.md) | +| | | v10.0 | [10.0.0](packages/ibm-cpd-ws-runtimes/10.0.0.md) | +| | | v1.0 | [1.0.9](packages/ibm-cpd-ws-runtimes/1.0.9.md) | +| ibm-cpd-wsl | v11.1 | v9.3 | [9.3.0](packages/ibm-cpd-wsl/9.3.0.md) | +| | | v9.1 | [9.1.0](packages/ibm-cpd-wsl/9.1.0.md) | +| | | v9.0 | [9.0.0](packages/ibm-cpd-wsl/9.0.0.md) | +| | | v8.9 | [8.9.0](packages/ibm-cpd-wsl/8.9.0.md) | +| | | v8.7 | [8.7.0](packages/ibm-cpd-wsl/8.7.0.md) | +| | | v8.6 | [8.6.0](packages/ibm-cpd-wsl/8.6.0.md) | +| | | v8.5 | [8.5.0](packages/ibm-cpd-wsl/8.5.0.md) | +| | | v8.4 | [8.4.0](packages/ibm-cpd-wsl/8.4.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-cpd-wsl/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-cpd-wsl/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-cpd-wsl/8.0.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-cpd-wsl/7.0.0.md) | +| | | v6.5 | [6.5.0](packages/ibm-cpd-wsl/6.5.0.md) | +| | | v6.4 | [6.4.0](packages/ibm-cpd-wsl/6.4.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-cpd-wsl/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-cpd-wsl/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-cpd-wsl/6.0.0.md) | +| | | v3.3 | [3.3.0](packages/ibm-cpd-wsl/3.3.0.md) | +| | | v3.2 | [3.2.0](packages/ibm-cpd-wsl/3.2.0.md) | +| | | v3.1 | [3.1.0](packages/ibm-cpd-wsl/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/ibm-cpd-wsl/3.0.0.md) | +| | | v2.0 | [2.0.9](packages/ibm-cpd-wsl/2.0.9.md) | +| | | v11.1 | [11.1.0](packages/ibm-cpd-wsl/11.1.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-cpd-wsl/11.0.0.md) | +| | | v10.2 | [10.2.0](packages/ibm-cpd-wsl/10.2.0.md) | +| | | v10.1 | [10.1.0](packages/ibm-cpd-wsl/10.1.0.md) | +| | | v10.0 | [10.0.0](packages/ibm-cpd-wsl/10.0.0.md) | +| ibm-elasticsearch-operator | v1.1 | v1.1 | [1.1.2667](packages/ibm-elasticsearch-operator/1.1.2667.md) | +| ibm-etcd-operator | v1.0 | v1.0 | [1.0.47](packages/ibm-etcd-operator/1.0.47.md) | +| ibm-iam-operator | v3.23 | v4.9 | [4.9.0](packages/ibm-iam-operator/4.9.0.md) | +| | | v4.8 | [4.8.0](packages/ibm-iam-operator/4.8.0.md) | +| | | v4.7 | [4.7.0](packages/ibm-iam-operator/4.7.0.md) | +| | | v4.6 | [4.6.0](packages/ibm-iam-operator/4.6.0.md) | +| | | v4.5 | [4.5.18](packages/ibm-iam-operator/4.5.18.md) | +| | | v4.4 | [4.4.0](packages/ibm-iam-operator/4.4.0.md) | +| | | v4.3 | [4.3.1](packages/ibm-iam-operator/4.3.1.md) | +| | | v4.2 | [4.2.0](packages/ibm-iam-operator/4.2.0.md) | +| | | v4.17 | [4.17.0](packages/ibm-iam-operator/4.17.0.md) | +| | | v4.16 | [4.16.0](packages/ibm-iam-operator/4.16.0.md) | +| | | v4.15 | [4.15.0](packages/ibm-iam-operator/4.15.0.md) | +| | | v4.14 | [4.14.0](packages/ibm-iam-operator/4.14.0.md) | +| | | v4.13 | [4.13.0](packages/ibm-iam-operator/4.13.0.md) | +| | | v4.12 | [4.12.0](packages/ibm-iam-operator/4.12.0.md) | +| | | v4.11 | [4.11.0](packages/ibm-iam-operator/4.11.0.md) | +| | | v4.10 | [4.10.0](packages/ibm-iam-operator/4.10.0.md) | +| | | v4.1 | [4.1.0](packages/ibm-iam-operator/4.1.0.md) | +| | | v4.0 | [4.0.1](packages/ibm-iam-operator/4.0.1.md) | +| | | v3.23 | [3.23.14](packages/ibm-iam-operator/3.23.14.md) | +| | | v3.22 | [3.22.0](packages/ibm-iam-operator/3.22.0.md) | +| | | v3.21 | [3.21.0](packages/ibm-iam-operator/3.21.0.md) | +| | | v3.20 | [3.20.1](packages/ibm-iam-operator/3.20.1.md) | +| | | v3 | [3.23.14](packages/ibm-iam-operator/3.23.14.md) | +| | | beta | [3.9.1](packages/ibm-iam-operator/3.9.1.md) | +| ibm-minio-operator | v1.0 | v1.0 | [1.0.18](packages/ibm-minio-operator/1.0.18.md) | +| ibm-model-train-operator | v2.0 | v2.0 | [2.0.0](packages/ibm-model-train-operator/2.0.0.md) | +| | | v1.1 | [1.1.15](packages/ibm-model-train-operator/1.1.15.md) | +| ibm-opensearch-operator | v1.1 | v1.1 | [1.1.2494](packages/ibm-opensearch-operator/1.1.2494.md) | +| ibm-rabbitmq-operator | v1.0 | v1.0 | [1.0.42](packages/ibm-rabbitmq-operator/1.0.42.md) | +| ibm-watson-discovery-operator | v11.2 | v9.2 | [9.2.0](packages/ibm-watson-discovery-operator/9.2.0.md) | +| | | v9.1 | [9.1.0](packages/ibm-watson-discovery-operator/9.1.0.md) | +| | | v9.0 | [9.0.0](packages/ibm-watson-discovery-operator/9.0.0.md) | +| | | v8.3 | [8.3.0](packages/ibm-watson-discovery-operator/8.3.0.md) | +| | | v8.1 | [8.1.0](packages/ibm-watson-discovery-operator/8.1.0.md) | +| | | v8.0 | [8.0.0](packages/ibm-watson-discovery-operator/8.0.0.md) | +| | | v7.9 | [7.9.0](packages/ibm-watson-discovery-operator/7.9.0.md) | +| | | v7.8 | [7.8.0](packages/ibm-watson-discovery-operator/7.8.0.md) | +| | | v7.7 | [7.7.0](packages/ibm-watson-discovery-operator/7.7.0.md) | +| | | v7.6 | [7.6.0](packages/ibm-watson-discovery-operator/7.6.0.md) | +| | | v7.5 | [7.5.0](packages/ibm-watson-discovery-operator/7.5.0.md) | +| | | v7.4 | [7.4.0](packages/ibm-watson-discovery-operator/7.4.0.md) | +| | | v7.3 | [7.3.0](packages/ibm-watson-discovery-operator/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/ibm-watson-discovery-operator/7.2.0.md) | +| | | v7.0 | [7.0.0](packages/ibm-watson-discovery-operator/7.0.0.md) | +| | | v6.3 | [6.3.0](packages/ibm-watson-discovery-operator/6.3.0.md) | +| | | v6.1 | [6.1.0](packages/ibm-watson-discovery-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/ibm-watson-discovery-operator/6.0.0.md) | +| | | v5.5 | [5.5.0](packages/ibm-watson-discovery-operator/5.5.0.md) | +| | | v5.3 | [5.3.0](packages/ibm-watson-discovery-operator/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/ibm-watson-discovery-operator/5.2.0.md) | +| | | v5.0 | [5.0.0](packages/ibm-watson-discovery-operator/5.0.0.md) | +| | | v4.7 | [4.7.0](packages/ibm-watson-discovery-operator/4.7.0.md) | +| | | v4.6 | [4.6.0](packages/ibm-watson-discovery-operator/4.6.0.md) | +| | | v4.5 | [4.5.0](packages/ibm-watson-discovery-operator/4.5.0.md) | +| | | v4.0 | [4.0.9](packages/ibm-watson-discovery-operator/4.0.9.md) | +| | | v11.2 | [11.2.0](packages/ibm-watson-discovery-operator/11.2.0.md) | +| | | v11.1 | [11.1.0](packages/ibm-watson-discovery-operator/11.1.0.md) | +| | | v11.0 | [11.0.0](packages/ibm-watson-discovery-operator/11.0.0.md) | +| | | v10.2 | [10.2.0](packages/ibm-watson-discovery-operator/10.2.0.md) | +| | | v10.1 | [10.1.0](packages/ibm-watson-discovery-operator/10.1.0.md) | +| | | v10.0 | [10.0.0](packages/ibm-watson-discovery-operator/10.0.0.md) | +| ibm-watson-gateway-operator | v1.0 | v1.0 | [2.2.2](packages/ibm-watson-gateway-operator/2.2.2.md) | + +### IBM Db2 Universal Operator +| Package | Default Channel | Channel | Latest Version | +|---------------|-------------------|-----------|----------------------------------------------------| +| db2u-operator | v120104.0 | v7.8 | [7.8.0](packages/db2u-operator/7.8.0.md) | +| | | v7.7 | [7.7.0](packages/db2u-operator/7.7.0.md) | +| | | v7.6 | [7.6.0](packages/db2u-operator/7.6.0.md) | +| | | v7.5 | [7.5.0](packages/db2u-operator/7.5.0.md) | +| | | v7.4 | [7.3.2](packages/db2u-operator/7.3.2.md) | +| | | v7.3 | [7.3.0](packages/db2u-operator/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/db2u-operator/7.2.0.md) | +| | | v7.1 | [7.1.0](packages/db2u-operator/7.1.0.md) | +| | | v6.1 | [6.1.0](packages/db2u-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/db2u-operator/6.0.0.md) | +| | | v5.4 | [5.4.0](packages/db2u-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/db2u-operator/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/db2u-operator/5.2.0.md) | +| | | v5.1 | [5.1.0](packages/db2u-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/db2u-operator/5.0.0.md) | +| | | v4.2 | [4.2.0](packages/db2u-operator/4.2.0.md) | +| | | v4.1 | [4.1.0](packages/db2u-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/db2u-operator/4.0.0.md) | +| | | v3.2 | [3.2.0](packages/db2u-operator/3.2.0.md) | +| | | v3.1 | [3.1.0](packages/db2u-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/db2u-operator/3.0.0.md) | +| | | v2.2 | [2.2.0](packages/db2u-operator/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/db2u-operator/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/db2u-operator/2.0.0.md) | +| | | v120104.0 | [120104.0.0](packages/db2u-operator/120104.0.0.md) | +| | | v120103.0 | [120103.0.1](packages/db2u-operator/120103.0.1.md) | +| | | v120102.0 | [120102.0.1](packages/db2u-operator/120102.0.1.md) | +| | | v120101.0 | [120101.0.1](packages/db2u-operator/120101.0.1.md) | +| | | v120100.0 | [120100.0.0](packages/db2u-operator/120100.0.0.md) | +| | | v110509.0 | [110509.0.6](packages/db2u-operator/110509.0.6.md) | +| | | v110508.0 | [110508.0.3](packages/db2u-operator/110508.0.3.md) | +| | | v1.1 | [1.1.13](packages/db2u-operator/1.1.13.md) | +| | | v1.0 | [1.0.11](packages/db2u-operator/1.0.11.md) | + +### IBM AppConnect +| Package | Default Channel | Channel | Latest Version | +|------------------|-------------------|-----------|-----------------------------------------------| +| couchdb-operator | v2.2 | v2.2 | [2.2.1](packages/couchdb-operator/2.2.1.md) | +| | | v2.1 | [2.0.1](packages/couchdb-operator/2.0.1.md) | +| | | v2.0 | [2.0.0](packages/couchdb-operator/2.0.0.md) | +| | | v1.4 | [1.4.4](packages/couchdb-operator/1.4.4.md) | +| | | v1.3 | [1.3.1](packages/couchdb-operator/1.3.1.md) | +| | | v1.2 | [1.2.1](packages/couchdb-operator/1.2.1.md) | +| | | v1.1 | [1.1.0](packages/couchdb-operator/1.1.0.md) | +| | | v1.0 | [1.0.14](packages/couchdb-operator/1.0.14.md) | +| | | stable | [2.2.1](packages/couchdb-operator/2.2.1.md) | +| | | beta | [1.4.2](packages/couchdb-operator/1.4.2.md) | +| ibm-appconnect | v13.1 | v9.2 | 9.2.1 | +| | | v9.1 | 9.1.0 | +| | | v9.0 | 9.0.0 | +| | | v8.2 | 8.2.1 | +| | | v8.1 | 8.1.0 | +| | | v8.0 | 8.0.0 | +| | | v7.2 | 7.2.0 | +| | | v7.1 | 7.1.0 | +| | | v7.0 | 7.0.0 | +| | | v6.2 | 6.2.0 | +| | | v6.1 | 6.1.1 | +| | | v6.0 | 6.0.0 | +| | | v5.2 | 5.2.0 | +| | | v5.1 | 5.1.0 | +| | | v5.0-lts | 5.0.22 | +| | | v4.2 | 4.2.0 | +| | | v4.1 | 4.1.0 | +| | | v4.0 | 4.0.0 | +| | | v3.1 | 3.1.0 | +| | | v3.0 | 3.0.0 | +| | | v2.1 | 2.1.0 | +| | | v2.0 | 2.0.0 | +| | | v13.1 | 13.1.0 | +| | | v13.0 | 13.0.0 | +| | | v12.9 | 12.9.0 | +| | | v12.8 | 12.8.2 | +| | | v12.7 | 12.7.0 | +| | | v12.6 | 12.6.0 | +| | | v12.5 | 12.5.1 | +| | | v12.4 | 12.4.0 | +| | | v12.3 | 12.3.0 | +| | | v12.21 | 12.21.0 | +| | | v12.20 | 12.20.1 | +| | | v12.2 | 12.2.1 | +| | | v12.19 | 12.19.0 | +| | | v12.18 | 12.18.0 | +| | | v12.17 | 12.17.0 | +| | | v12.16 | 12.16.0 | +| | | v12.15 | 12.15.0 | +| | | v12.14 | 12.14.0 | +| | | v12.13 | 12.13.1 | +| | | v12.12 | 12.12.0 | +| | | v12.11 | 12.11.1 | +| | | v12.10 | 12.10.1 | +| | | v12.1 | 12.1.2 | +| | | v12.0-sc2 | 12.0.23 | +| | | v11.6 | 11.6.0 | +| | | v11.5 | 11.5.1 | +| | | v11.4 | 11.4.0 | +| | | v11.3 | 11.3.0 | +| | | v11.2 | 11.2.1 | +| | | v11.1 | 11.1.0 | +| | | v11.0 | 11.0.1 | +| | | v10.1 | 10.1.1 | +| | | v10.0 | 10.0.1 | +| | | v1.5 | [1.5.2](packages/ibm-appconnect/1.5.2.md) | +| | | v1.4 | [1.4.0](packages/ibm-appconnect/1.4.0.md) | +| | | v1.3 | [1.3.2](packages/ibm-appconnect/1.3.2.md) | +| | | v1.2 | [1.2.0](packages/ibm-appconnect/1.2.0.md) | +| | | v1.1-eus | [1.1.10](packages/ibm-appconnect/1.1.10.md) | +| | | v1.0 | [1.0.5](packages/ibm-appconnect/1.0.5.md) | +| | | cd | 5.2.0 | + +### Eclipse Amlen +| Package | Default Channel | Channel | Latest Version | +|------------------------|-------------------|-----------|---------------------------------------------------| +| eclipse-amlen-operator | 1.x | 1.x | [1.1.5](packages/eclipse-amlen-operator/1.1.5.md) | + +### Open Data Hub +| Package | Default Channel | Channel | Latest Version | +|----------------------|-------------------|-----------|---------------------------------------------------| +| opendatahub-operator | fast | stable | [1.5.0](packages/opendatahub-operator/1.5.0.md) | +| | | rolling | [1.11.0](packages/opendatahub-operator/1.11.0.md) | +| | | odh-2.8.z | [2.8.1](packages/opendatahub-operator/2.8.1.md) | +| | | fast | [2.32.0](packages/opendatahub-operator/2.32.0.md) | \ No newline at end of file diff --git a/docs/catalogs/v9-260730-ppc64le.md b/docs/catalogs/v9-260730-ppc64le.md new file mode 100644 index 00000000000..7393b3adb68 --- /dev/null +++ b/docs/catalogs/v9-260730-ppc64le.md @@ -0,0 +1,104 @@ +IBM Maximo Operator Catalog v9 (260730) +=============================================================================== + +:::mas-catalog-details + + + +:::mas-catalog-whats-new + +:::mas-catalog-known-issues +:::mas-catalog-install + +:::mas-catalog-source + +Red Hat OpenShift Container Platform Support +------------------------------------------------------------------------------- +For more information about the OCP lifecycle refer to the [Red Hat OpenShift Container Platform Life Cycle Policy](https://access.redhat.com/support/policy/updates/openshift/). + +IBM Maximo Application Suite customers receive a standard Red Hat OpenShift Container Platform subscription as part of their purchase. This includes 18 months of maintenance support for each OpenShift minor release. A further 6 months support is available to purchase as an Extended Update Support (EUS) Add-on to x86-64 versions of Red Hat OpenShift Kubernetes Engine, Red Hat OpenShift Container Platform, and Red Hat OpenShift Platform Plus Standard subscriptions. + +:::mas-catalog-ocp-compatibility-matrix + +### Red Hat Operators +The following packages from the `registry.redhat.io/redhat/redhat-operator-index` catalog are used in the Maximo Application Suite install: + +- **openshift-pipelines-operator-rh** required by the MAS CLI + +Package Manifest +------------------------------------------------------------------------------- + +### IBM Maximo Application Suite +| Package | Default Channel | Channel | Latest Version | +|----------------|-------------------|---------------|---------------------------------------------| +| ibm-mas | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas/9.0.27.md) | +| ibm-mas-manage | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas-manage/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas-manage/9.0.27.md) | + +### IBM Utilities +| Package | Default Channel | Channel | Latest Version | +|--------------------|-------------------|-----------|-----------------------------------------------| +| ibm-sls | 3.x | 3.x | [3.13.0](packages/ibm-sls/3.13.0.md) | +| ibm-truststore-mgr | 1.x | 1.x | [1.7.7](packages/ibm-truststore-mgr/1.7.7.md) | + +### IBM Cloud Pak Foundational Services +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### IBM Cloud Pak for Data +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### IBM Db2 Universal Operator +| Package | Default Channel | Channel | Latest Version | +|---------------|-------------------|-----------|----------------------------------------------------| +| db2u-operator | v120104.0 | v7.8 | [7.8.0](packages/db2u-operator/7.8.0.md) | +| | | v7.7 | [7.7.0](packages/db2u-operator/7.7.0.md) | +| | | v7.6 | [7.6.0](packages/db2u-operator/7.6.0.md) | +| | | v7.5 | [7.5.0](packages/db2u-operator/7.5.0.md) | +| | | v7.4 | [7.3.2](packages/db2u-operator/7.3.2.md) | +| | | v7.3 | [7.3.0](packages/db2u-operator/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/db2u-operator/7.2.0.md) | +| | | v7.1 | [7.1.0](packages/db2u-operator/7.1.0.md) | +| | | v6.1 | [6.1.0](packages/db2u-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/db2u-operator/6.0.0.md) | +| | | v5.4 | [5.4.0](packages/db2u-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/db2u-operator/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/db2u-operator/5.2.0.md) | +| | | v5.1 | [5.1.0](packages/db2u-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/db2u-operator/5.0.0.md) | +| | | v4.2 | [4.2.0](packages/db2u-operator/4.2.0.md) | +| | | v4.1 | [4.1.0](packages/db2u-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/db2u-operator/4.0.0.md) | +| | | v3.2 | [3.2.0](packages/db2u-operator/3.2.0.md) | +| | | v3.1 | [3.1.0](packages/db2u-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/db2u-operator/3.0.0.md) | +| | | v2.2 | [2.2.0](packages/db2u-operator/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/db2u-operator/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/db2u-operator/2.0.0.md) | +| | | v120104.0 | [120104.0.0](packages/db2u-operator/120104.0.0.md) | +| | | v120103.0 | [120103.0.1](packages/db2u-operator/120103.0.1.md) | +| | | v120102.0 | [120102.0.1](packages/db2u-operator/120102.0.1.md) | +| | | v120101.0 | [120101.0.1](packages/db2u-operator/120101.0.1.md) | +| | | v120100.0 | [120100.0.0](packages/db2u-operator/120100.0.0.md) | +| | | v110509.0 | [110509.0.6](packages/db2u-operator/110509.0.6.md) | +| | | v110508.0 | [110508.0.3](packages/db2u-operator/110508.0.3.md) | +| | | v1.1 | [1.1.13](packages/db2u-operator/1.1.13.md) | +| | | v1.0 | [1.0.11](packages/db2u-operator/1.0.11.md) | + +### IBM AppConnect +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### Eclipse Amlen +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### Open Data Hub +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| \ No newline at end of file diff --git a/docs/catalogs/v9-260730-s390x.md b/docs/catalogs/v9-260730-s390x.md new file mode 100644 index 00000000000..7393b3adb68 --- /dev/null +++ b/docs/catalogs/v9-260730-s390x.md @@ -0,0 +1,104 @@ +IBM Maximo Operator Catalog v9 (260730) +=============================================================================== + +:::mas-catalog-details + + + +:::mas-catalog-whats-new + +:::mas-catalog-known-issues +:::mas-catalog-install + +:::mas-catalog-source + +Red Hat OpenShift Container Platform Support +------------------------------------------------------------------------------- +For more information about the OCP lifecycle refer to the [Red Hat OpenShift Container Platform Life Cycle Policy](https://access.redhat.com/support/policy/updates/openshift/). + +IBM Maximo Application Suite customers receive a standard Red Hat OpenShift Container Platform subscription as part of their purchase. This includes 18 months of maintenance support for each OpenShift minor release. A further 6 months support is available to purchase as an Extended Update Support (EUS) Add-on to x86-64 versions of Red Hat OpenShift Kubernetes Engine, Red Hat OpenShift Container Platform, and Red Hat OpenShift Platform Plus Standard subscriptions. + +:::mas-catalog-ocp-compatibility-matrix + +### Red Hat Operators +The following packages from the `registry.redhat.io/redhat/redhat-operator-index` catalog are used in the Maximo Application Suite install: + +- **openshift-pipelines-operator-rh** required by the MAS CLI + +Package Manifest +------------------------------------------------------------------------------- + +### IBM Maximo Application Suite +| Package | Default Channel | Channel | Latest Version | +|----------------|-------------------|---------------|---------------------------------------------| +| ibm-mas | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas/9.0.27.md) | +| ibm-mas-manage | 9.2.x | 9.2.x-feature | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.2.x | [9.2.0](packages/ibm-mas-manage/9.2.0.md) | +| | | 9.1.x | [9.1.19](packages/ibm-mas-manage/9.1.19.md) | +| | | 9.0.x | [9.0.27](packages/ibm-mas-manage/9.0.27.md) | + +### IBM Utilities +| Package | Default Channel | Channel | Latest Version | +|--------------------|-------------------|-----------|-----------------------------------------------| +| ibm-sls | 3.x | 3.x | [3.13.0](packages/ibm-sls/3.13.0.md) | +| ibm-truststore-mgr | 1.x | 1.x | [1.7.7](packages/ibm-truststore-mgr/1.7.7.md) | + +### IBM Cloud Pak Foundational Services +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### IBM Cloud Pak for Data +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### IBM Db2 Universal Operator +| Package | Default Channel | Channel | Latest Version | +|---------------|-------------------|-----------|----------------------------------------------------| +| db2u-operator | v120104.0 | v7.8 | [7.8.0](packages/db2u-operator/7.8.0.md) | +| | | v7.7 | [7.7.0](packages/db2u-operator/7.7.0.md) | +| | | v7.6 | [7.6.0](packages/db2u-operator/7.6.0.md) | +| | | v7.5 | [7.5.0](packages/db2u-operator/7.5.0.md) | +| | | v7.4 | [7.3.2](packages/db2u-operator/7.3.2.md) | +| | | v7.3 | [7.3.0](packages/db2u-operator/7.3.0.md) | +| | | v7.2 | [7.2.0](packages/db2u-operator/7.2.0.md) | +| | | v7.1 | [7.1.0](packages/db2u-operator/7.1.0.md) | +| | | v6.1 | [6.1.0](packages/db2u-operator/6.1.0.md) | +| | | v6.0 | [6.0.0](packages/db2u-operator/6.0.0.md) | +| | | v5.4 | [5.4.0](packages/db2u-operator/5.4.0.md) | +| | | v5.3 | [5.3.0](packages/db2u-operator/5.3.0.md) | +| | | v5.2 | [5.2.0](packages/db2u-operator/5.2.0.md) | +| | | v5.1 | [5.1.0](packages/db2u-operator/5.1.0.md) | +| | | v5.0 | [5.0.0](packages/db2u-operator/5.0.0.md) | +| | | v4.2 | [4.2.0](packages/db2u-operator/4.2.0.md) | +| | | v4.1 | [4.1.0](packages/db2u-operator/4.1.0.md) | +| | | v4.0 | [4.0.0](packages/db2u-operator/4.0.0.md) | +| | | v3.2 | [3.2.0](packages/db2u-operator/3.2.0.md) | +| | | v3.1 | [3.1.0](packages/db2u-operator/3.1.0.md) | +| | | v3.0 | [3.0.0](packages/db2u-operator/3.0.0.md) | +| | | v2.2 | [2.2.0](packages/db2u-operator/2.2.0.md) | +| | | v2.1 | [2.1.0](packages/db2u-operator/2.1.0.md) | +| | | v2.0 | [2.0.0](packages/db2u-operator/2.0.0.md) | +| | | v120104.0 | [120104.0.0](packages/db2u-operator/120104.0.0.md) | +| | | v120103.0 | [120103.0.1](packages/db2u-operator/120103.0.1.md) | +| | | v120102.0 | [120102.0.1](packages/db2u-operator/120102.0.1.md) | +| | | v120101.0 | [120101.0.1](packages/db2u-operator/120101.0.1.md) | +| | | v120100.0 | [120100.0.0](packages/db2u-operator/120100.0.0.md) | +| | | v110509.0 | [110509.0.6](packages/db2u-operator/110509.0.6.md) | +| | | v110508.0 | [110508.0.3](packages/db2u-operator/110508.0.3.md) | +| | | v1.1 | [1.1.13](packages/db2u-operator/1.1.13.md) | +| | | v1.0 | [1.0.11](packages/db2u-operator/1.0.11.md) | + +### IBM AppConnect +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### Eclipse Amlen +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| + +### Open Data Hub +| Package | Default Channel | Channel | Latest Version | +|-----------|-------------------|-----------|------------------| \ No newline at end of file From f8413f0494b8901ffda76f1a2d5cac73bc77bfa1 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Fri, 3 Jul 2026 16:41:11 +0530 Subject: [PATCH 05/25] Add Support for db2_kind rotation --- python/src/mas/cli/install/app.py | 1 + python/src/mas/cli/install/argParser.py | 11 ++++++-- .../mas/cli/install/settings/db2Settings.py | 27 ++++++++++++++++++- python/src/mas/cli/install/summarizer.py | 1 + 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index 0e222af3a59..a57d0e376bc 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -241,6 +241,7 @@ def processCatalogChoice(self) -> list: self.catalogDigest = self.chosenCatalog["catalog_digest"] self.catalogMongoDbVersion = self.chosenCatalog["mongo_extras_version_default"] self.catalogDb2Channel = self.chosenCatalog.get("db2_channel_default", "v110509.0") # Returns fallback "v110509.0" for old catalogs without this field + self.catalogDb2uKind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") # Returns fallback "db2ucluster" for old catalogs without this field if self.architecture != "s390x" and self.architecture != "ppc64le": self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"] diff --git a/python/src/mas/cli/install/argParser.py b/python/src/mas/cli/install/argParser.py index 489095d85b7..3ac680e11b5 100644 --- a/python/src/mas/cli/install/argParser.py +++ b/python/src/mas/cli/install/argParser.py @@ -1253,8 +1253,15 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str: "--db2u-kind", dest="db2u_kind", required=False, - help="Db2 resource kind in the cluster", -) + choices=["db2ucluster", "db2uinstance", "rotate"], # ADD "rotate" + help="Db2 resource kind in the cluster (db2ucluster, db2uinstance, or rotate). Defaults to catalog value. Only effective in dev mode." +) +# db2ArgGroup.add_argument( +# "--db2u-kind", +# dest="db2u_kind", +# required=False, +# help="Db2 resource kind in the cluster", +# ) # ECK Integration # ----------------------------------------------------------------------------- diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 98ea1079e15..2a30d97c1f4 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -79,6 +79,7 @@ def configDb2(self, silentMode=False) -> None: self.printH1("Configure Databases") self.setDB2DefaultChannel() # Set default channel for Db2 if not already set + self.setDB2uKindDefault() # Set default db2u_kind from catalog if not already set # If neither Monitor, Manage or Facilities is being installed, we have nothing to do # Note: For Monitor >= 9.2.0, Monitor requires Db2; for Monitor < 9.2.0, IoT requires Db2 @@ -328,7 +329,7 @@ def configDb2(self, silentMode=False) -> None: def setDB2DefaultChannel(self) -> None: # Set the default db2-Channel if hasattr(self, "catalogDb2Channel"): - # Best case: catalogDb2Channel was set by processCatalogChoice() + # CatalogDb2Channel was set by processCatalogChoice() default_db2_channel = self.catalogDb2Channel elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: # Fallback: Get directly from chosenCatalog if available @@ -346,6 +347,30 @@ def setDB2DefaultChannel(self) -> None: self.params["db2_channel"] = db2_channel + def setDB2uKindDefault(self) -> None: + # Set the default db2u_kind from catalog, with dev mode override support + # Get default from catalog (same logic as setDB2DefaultChannel) + if hasattr(self, "catalogDb2uKind"): + # CatalogDb2uKind was set by processCatalogChoice() + default_db2u_kind = self.catalogDb2uKind + elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: + # Fallback: Get directly from chosenCatalog if available + default_db2u_kind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") + else: + # Use hardcoded fallback + default_db2u_kind = "db2ucluster" + + # Apply dev mode override logic (exactly like db2_channel) + if not self.devMode: + # Non-dev mode: Always use catalog default + db2u_kind = default_db2u_kind + else: + # Dev mode: Allow user override if provided via CLI argument + user_kind = self.getParam("db2u_kind") + db2u_kind = user_kind if user_kind else default_db2u_kind + + self.params["db2u_kind"] = db2u_kind + def setDB2DefaultSettings(self) -> None: self.setParam("db2_cpu_requests", "4000m") diff --git a/python/src/mas/cli/install/summarizer.py b/python/src/mas/cli/install/summarizer.py index eacc841aac5..b8bd16b0ff7 100644 --- a/python/src/mas/cli/install/summarizer.py +++ b/python/src/mas/cli/install/summarizer.py @@ -426,6 +426,7 @@ def db2Summary(self) -> None: print() self.printParamSummary("Install Namespace", "db2_namespace") self.printParamSummary("Subscription Channel", "db2_channel") + self.printParamSummary("Db2 Resource Kind", "db2u_kind") print() self.printParamSummary("CPU Request", "db2_cpu_requests") self.printParamSummary("CPU Limit", "db2_cpu_limits") From bc19a1882407b91103c279eb53223e5a7a39c13b Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Fri, 3 Jul 2026 17:43:05 +0530 Subject: [PATCH 06/25] Fixed the pre-commit error --- python/src/mas/cli/install/argParser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/install/argParser.py b/python/src/mas/cli/install/argParser.py index 3ac680e11b5..c35a9a01993 100644 --- a/python/src/mas/cli/install/argParser.py +++ b/python/src/mas/cli/install/argParser.py @@ -1254,7 +1254,7 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str: dest="db2u_kind", required=False, choices=["db2ucluster", "db2uinstance", "rotate"], # ADD "rotate" - help="Db2 resource kind in the cluster (db2ucluster, db2uinstance, or rotate). Defaults to catalog value. Only effective in dev mode." + help="Db2 resource kind in the cluster (db2ucluster, db2uinstance, or rotate). Defaults to catalog value. Only effective in dev mode.", ) # db2ArgGroup.add_argument( # "--db2u-kind", From e778c6de8e84e0910457f3074a5690f44b62b3a6 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Mon, 6 Jul 2026 17:19:31 +0530 Subject: [PATCH 07/25] Updated to test depreciation fix --- python/src/mas/cli/install/settings/db2Settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 2a30d97c1f4..63959d4e89e 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -349,7 +349,7 @@ def setDB2DefaultChannel(self) -> None: def setDB2uKindDefault(self) -> None: # Set the default db2u_kind from catalog, with dev mode override support - # Get default from catalog (same logic as setDB2DefaultChannel) + # Get default from catalog if hasattr(self, "catalogDb2uKind"): # CatalogDb2uKind was set by processCatalogChoice() default_db2u_kind = self.catalogDb2uKind @@ -360,7 +360,7 @@ def setDB2uKindDefault(self) -> None: # Use hardcoded fallback default_db2u_kind = "db2ucluster" - # Apply dev mode override logic (exactly like db2_channel) + # Apply dev mode override logic if not self.devMode: # Non-dev mode: Always use catalog default db2u_kind = default_db2u_kind From 64b5e5550e96947382be37bd2a8b495b3018e139 Mon Sep 17 00:00:00 2001 From: Ian Boden <82514609+IanBoden@users.noreply.github.com> Date: Mon, 6 Jul 2026 15:06:16 +0100 Subject: [PATCH 08/25] [patch] Merge from master (#2452) Co-authored-by: Divyesh-Khokhar --- python/src/mas/cli/aiservice/install/app.py | 119 ++++++++++++++++-- .../mas/cli/aiservice/install/argBuilder.py | 20 ++- .../mas/cli/aiservice/install/argParser.py | 35 +++++- .../src/mas/cli/aiservice/install/params.py | 10 +- .../mas/cli/aiservice/install/summarizer.py | 35 +++++- python/src/mas/cli/install/app.py | 82 +++++++++++- python/src/mas/cli/install/argBuilder.py | 16 +++ python/src/mas/cli/install/argParser.py | 32 +++++ python/src/mas/cli/install/params.py | 6 + python/src/mas/cli/install/summarizer.py | 32 +++++ .../integration/aiservice_install/test_app.py | 56 ++++++++- .../aiservice_install/test_dev_mode.py | 12 +- tekton/src/params/install-aiservice.yml.j2 | 23 ++++ .../taskdefs/aiservice/aiservice.yml.j2 | 12 ++ tekton/src/tasks/aiservice/aiservice.yml.j2 | 34 +++++ 15 files changed, 488 insertions(+), 36 deletions(-) diff --git a/python/src/mas/cli/aiservice/install/app.py b/python/src/mas/cli/aiservice/install/app.py index 39e7adaa538..69000a71f3d 100644 --- a/python/src/mas/cli/aiservice/install/app.py +++ b/python/src/mas/cli/aiservice/install/app.py @@ -173,12 +173,7 @@ def interactiveMode(self, simplified: bool, advanced: bool) -> None: # Dependencies self.configMongoDb() - self.setDB2DefaultChannel() - self.setDB2DefaultSettings() - self.printDescription( - ["Db2 Universal Operator for v12 onwards requires to add a License activation key", "If you don't have a license press enter to continue."] - ) - self.db2LicenseFileLocal = self.promptForFile("Db2 License file", envVar="DB2_LICENSE_FILE", default="", mustExist=False) + self.configDatabase() @logMethodCall def nonInteractiveMode(self) -> None: @@ -199,9 +194,6 @@ def nonInteractiveMode(self) -> None: "approval_aiservice": {"id": "aiservice"}, } - self.setDB2DefaultChannel() - self.setDB2DefaultSettings() - for key, value in vars(self.args).items(): # These fields we just pass straight through to the parameters and fail if they are not set if key in requiredParams: @@ -286,6 +278,30 @@ def nonInteractiveMode(self) -> None: if value is not None and value != "": self.aiserviceTenantSchedulingConfigFileLocal = value + elif key == "db2_action_aiservice": + # Check if external DB parameters are provided + externalDbParams = ["aiservice_db_jdbc_url", "aiservice_db_username", "aiservice_db_password"] + hasExternalDb = any(vars(self.args)[dbParam] is not None for dbParam in externalDbParams) + + if hasExternalDb: + # Using external database - validate all required parameters and ensure --db2-aiservice wasn't set + if value == "install" and vars(self.args)["aiservice_db_jdbc_url"] is not None: + self.fatalError( + "Cannot use --db2-aiservice with external database parameters. Use either --db2-aiservice for in-cluster DB2 OR --aiservice-db-jdbc-url for external database (Oracle/SQL Server/DB2), not both." + ) + + self.setParam("install_db2", "false") + self.setParam("db2_action_aiservice", "byo") + for dbParam in externalDbParams: + if vars(self.args)[dbParam] is None: + self.fatalError(f"Parameter is required when using external database: --{dbParam.replace('_', '-')}") + elif value == "install": + # Install DB2 in-cluster + self.setParam("install_db2", "true") + self.setParam("db2_action_aiservice", "install") + self.setDB2DefaultChannel() + self.setDB2DefaultSettings() + elif key == "non_prod": if not value: self.operationalMode = 1 @@ -485,8 +501,8 @@ def install(self, argv): self.setParam("dro_action", "install") - # Install Db2 for AI Service - self.setParam("db2_action_aiservice", "install") + # DB2 action will be set by configDatabase() based on user choice + # Don't set db2_action_aiservice here - it should be determined by user selection # User must either provide the configuration via numerous command line arguments, or the interactive prompts if instanceId is None: @@ -494,6 +510,37 @@ def install(self, argv): else: self.nonInteractiveMode() + # Check if external database parameters were provided + if self.getParam("db2_action_aiservice") == "": + externalDbProvided = ( + vars(self.args).get("aiservice_db_jdbc_url") is not None + or vars(self.args).get("aiservice_db_username") is not None + or vars(self.args).get("aiservice_db_password") is not None + ) + + if externalDbProvided: + # External database configuration provided + self.setParam("install_db2", "false") + self.setParam("db2_action_aiservice", "byo") + + # Validate required external DB parameters + requiredDbParams = ["aiservice_db_jdbc_url", "aiservice_db_username", "aiservice_db_password"] + for dbParam in requiredDbParams: + if vars(self.args).get(dbParam) is None: + self.fatalError(f"Parameter is required when using external database: --{dbParam.replace('_', '-')}") + + # Set the external DB parameters + for dbParam in ["aiservice_db_jdbc_url", "aiservice_db_username", "aiservice_db_password", "aiservice_db_ca_cert"]: + value = vars(self.args).get(dbParam) + if value is not None: + self.setParam(dbParam, value) + else: + # No database configuration provided - default to installing DB2 + self.setParam("install_db2", "true") + self.setParam("db2_action_aiservice", "install") + self.setDB2DefaultChannel() + self.setDB2DefaultSettings() + # Set up the sls and db2 license file self.slsLicenseFile() self.db2LicenseFile() @@ -693,6 +740,56 @@ def _setMinioStorageDefaults(self) -> None: self.setParam("aiservice_s3_tenants_bucket", "km-tenants") self.setParam("aiservice_s3_templates_bucket", "km-templates") + @logMethodCall + def configDatabase(self) -> None: + """ + Configure database for AI Service. + """ + self.printH1("Database Configuration") + self.printDescription( + [ + "By default, DB2 will be installed in-cluster (suitable for development and testing).", + "Alternatively, you can connect to an external Oracle or DB2 database (supported in AI Service 9.1.x only).", + # "Alternatively, you can connect to an external database (Oracle, SQL Server, or DB2).", + "", + ] + ) + + if self.yesOrNo("Do you want to use an external database"): + # Use external database + self.setParam("install_db2", "false") + self.setParam("db2_action_aiservice", "byo") + + self.printH2("External Database Configuration") + self.printDescription( + [ + "Provide connection details for your external Oracle or DB2 database.", + "", + "JDBC URL Example:", + " Oracle: jdbc:oracle:thin:@//hostname:1521/servicename", + " DB2: jdbc:db2://hostname:50000/database", + # " SQL Server: jdbc:sqlserver://hostname:1433;databaseName=aiservice", + "", + ] + ) + + self.promptForString("Database JDBC URL", "aiservice_db_jdbc_url") + self.promptForString("Database Username", "aiservice_db_username") + self.promptForString("Database Password", "aiservice_db_password", isPassword=True) + + if self.yesOrNo("Does the database use SSL/TLS with a self-signed certificate"): + self.promptForString("Database CA Certificate (PEM format)", "aiservice_db_ca_cert") + else: + # Install DB2 in-cluster (default) + self.setParam("install_db2", "true") + self.setParam("db2_action_aiservice", "install") + self.setDB2DefaultChannel() + self.setDB2DefaultSettings() + self.printDescription( + ["Db2 Universal Operator for v12 onwards requires a License activation key", "If you don't have a license, press enter to continue."] + ) + self.db2LicenseFileLocal = self.promptForFile("Db2 License file", envVar="DB2_LICENSE_FILE", default="", mustExist=False) + def aiServiceIntegrations(self) -> None: self.printH1("WatsonX Integration") self.printDescription( diff --git a/python/src/mas/cli/aiservice/install/argBuilder.py b/python/src/mas/cli/aiservice/install/argBuilder.py index c87f4a8482c..da1df2df697 100644 --- a/python/src/mas/cli/aiservice/install/argBuilder.py +++ b/python/src/mas/cli/aiservice/install/argBuilder.py @@ -178,10 +178,22 @@ def buildCommand(self) -> str: if self.getParam("rsl_ca_crt") != "": command += f" --rsl-ca-crt \"{self.getParam('rsl_ca_crt')}\"{newline}" - if self.getParam("db2_channel") != "": - command += f" --db2-channel \"{self.getParam('db2_channel')}\"{newline}" - if self.db2LicenseFileLocal: - command += f' --db2-license-file "{self.db2LicenseFileLocal}"' + # Database Configuration + # ----------------------------------------------------------------------------- + if self.getParam("db2_action_aiservice") == "install": + # In-cluster DB2 installation + command += f" --db2-aiservice{newline}" + if self.getParam("db2_channel") != "": + command += f" --db2-channel \"{self.getParam('db2_channel')}\"{newline}" + if self.db2LicenseFileLocal: + command += f' --db2-license-file "{self.db2LicenseFileLocal}"{newline}' + elif self.getParam("aiservice_db_jdbc_url") != "": + # External database (Oracle/SQL Server/DB2) + command += f" --aiservice-db-jdbc-url \"{self.getParam('aiservice_db_jdbc_url')}\"{newline}" + command += f" --aiservice-db-username \"{self.getParam('aiservice_db_username')}\"{newline}" + command += f" --aiservice-db-password \"{self.getParam('aiservice_db_password')}\"{newline}" + if self.getParam("aiservice_db_ca_cert") != "": + command += f" --aiservice-db-ca-cert \"{self.getParam('aiservice_db_ca_cert')}\"{newline}" command += " --accept-license --no-confirm" return command diff --git a/python/src/mas/cli/aiservice/install/argParser.py b/python/src/mas/cli/aiservice/install/argParser.py index d53a6640ab0..65f9550d64a 100644 --- a/python/src/mas/cli/aiservice/install/argParser.py +++ b/python/src/mas/cli/aiservice/install/argParser.py @@ -224,13 +224,38 @@ def isValidFile(parser, arg) -> str: ) -# IBM Db2 Universal Operator +# Database Configuration # ----------------------------------------------------------------------------- -db2ArgGroup = aiServiceinstallArgParser.add_argument_group("IBM Db2 Universal Operator") +databaseArgGroup = aiServiceinstallArgParser.add_argument_group( + "Database Configuration", + "Configure database for AI Service. By default, DB2 is installed in-cluster. Use --db-* parameters to connect to an external database (Oracle/SQL Server/DB2) instead.", +) -db2ArgGroup.add_argument("--db2-namespace", required=False, help="Change namespace where Db2u instances will be created") -db2ArgGroup.add_argument("--db2-channel", required=False, help="Subscription channel for Db2u") -db2ArgGroup.add_argument("--db2-license-file", required=False, help="Db2 License File for Db2") +# Option 1: Install DB2 in-cluster (default) +databaseArgGroup.add_argument( + "--db2-aiservice", + dest="db2_action_aiservice", + required=False, + help="Install DB2 in-cluster for AI Service (default behavior, mutually exclusive with --db-*)", + action="store_const", + const="install", +) +databaseArgGroup.add_argument("--db2-namespace", required=False, help="Change namespace where Db2u instances will be created") +databaseArgGroup.add_argument("--db2-channel", required=False, help="Subscription channel for Db2u") +databaseArgGroup.add_argument("--db2-license-file", required=False, help="Db2 License File for Db2") + +# Option 2: Use external database (Oracle/SQL Server/DB2) +databaseArgGroup.add_argument( + "--aiservice-db-jdbc-url", + dest="aiservice_db_jdbc_url", + required=False, + help="JDBC URL for external database (e.g., jdbc:oracle:thin:@host:1521/service, jdbc:sqlserver://host:1433;databaseName=db, jdbc:db2://host:50000/db)", +) +databaseArgGroup.add_argument("--aiservice-db-username", dest="aiservice_db_username", required=False, help="Database username for AI Service") +databaseArgGroup.add_argument("--aiservice-db-password", dest="aiservice_db_password", required=False, help="Database password for AI Service") +databaseArgGroup.add_argument( + "--aiservice-db-ca-cert", dest="aiservice_db_ca_cert", required=False, help="Database CA certificate (PEM format, optional, only if using SSL/TLS)" +) # Development Mode # ----------------------------------------------------------------------------- diff --git a/python/src/mas/cli/aiservice/install/params.py b/python/src/mas/cli/aiservice/install/params.py index d9f8c31cdbc..bfbfb8292be 100644 --- a/python/src/mas/cli/aiservice/install/params.py +++ b/python/src/mas/cli/aiservice/install/params.py @@ -32,7 +32,15 @@ "sls_namespace", # DRO "dro_namespace", - # Db2 + # Database - External (Oracle/SQL Server/DB2) + "aiservice_db_jdbc_url", + "aiservice_db_username", + "aiservice_db_password", + "aiservice_db_ca_cert", + # Database - Installation choice + "install_db2", + "db2_action_aiservice", + # Db2 - In-cluster installation "db2_action_system", "db2_action_manage", "db2_action_facilities", diff --git a/python/src/mas/cli/aiservice/install/summarizer.py b/python/src/mas/cli/aiservice/install/summarizer.py index 5505653f70c..dc5c5018d49 100644 --- a/python/src/mas/cli/aiservice/install/summarizer.py +++ b/python/src/mas/cli/aiservice/install/summarizer.py @@ -78,10 +78,37 @@ def aiServiceSummary(self) -> None: self.printParamSummary("Project ID", "aiservice_watsonxai_project_id") def db2Summary(self) -> None: - self.printH2("IBM Db2 Univeral Operator Configuration") - self.printParamSummary("Action", "db2_action_aiservice") - self.printParamSummary("Install Namespace", "db2_namespace") - self.printParamSummary("Subscription Channel", "db2_channel") + self.printH2("Database Configuration") + + db2_action = self.getParam("db2_action_aiservice") + + if db2_action == "byo": + # External database + jdbc_url = self.getParam("aiservice_db_jdbc_url") + if jdbc_url: + # Determine database type from JDBC URL + if "oracle" in jdbc_url.lower(): + db_type = "External Database (Oracle)" + # elif "sqlserver" in jdbc_url.lower(): + # db_type = "External Database (SQL Server)" + # elif "db2" in jdbc_url.lower(): + # db_type = "External Database (DB2)" + else: + db_type = "External Database" + + self.printSummary("Database Type", db_type) + self.printParamSummary("JDBC URL", "aiservice_db_jdbc_url") + self.printParamSummary("Username", "aiservice_db_username") + # Don't print password for security + if self.getParam("aiservice_db_ca_cert"): + self.printSummary("CA Certificate", "Provided") + else: + # In-cluster DB2 deployment (default when db2_action="install" or not set) + self.printSummary("Database Type", "In-cluster DB2") + if self.getParam("db2_namespace") != "": + self.printParamSummary("Install Namespace", "db2_namespace") + if self.getParam("db2_channel") != "": + self.printParamSummary("Subscription Channel", "db2_channel") def droSummary(self) -> None: self.printH2("IBM Data Reporter Operator (DRO) Configuration") diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index 0e222af3a59..e540a474479 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -1723,9 +1723,6 @@ def configAIService(self): ] ) - # Install Db2 for AI Service - self.setParam("db2_action_aiservice", "install") - self.promptForString( "Instance ID", "aiservice_instance_id", @@ -1733,6 +1730,65 @@ def configAIService(self): ) self.params["aiservice_channel"] = prompt(HTML("Custom channel for AI Service ")) + @logMethodCall + def configAIServiceDatabase(self): + """Configure database for AI Service - either in-cluster DB2 or external database""" + self.printH2("Database Configuration for AI Service") + self.printDescription( + [ + "By default, DB2 will be installed in-cluster (suitable for development and testing).", + "Alternatively, you can connect to an external Oracle or DB2 database (supported in AI Service 9.1.x only).", + # "Alternatively, you can connect to an external database (Oracle, SQL Server, or DB2).", + ] + ) + + if self.yesOrNo("Do you want to use an external database"): + # Configure external database + self.setParam("install_db2", "false") + self.setParam("db2_action_aiservice", "byo") + + self.printDescription( + [ + "Provide connection details for your external Oracle or DB2 database.", + "", + "JDBC URL Example:", + " Oracle: jdbc:oracle:thin:@//hostname:1521/servicename", + " DB2: jdbc:db2://hostname:50000/database", + # " SQL Server: jdbc:sqlserver://hostname:1433;databaseName=aiservice", + ] + ) + + self.promptForString("Database JDBC URL", "aiservice_db_jdbc_url") + self.promptForString("Database Username", "aiservice_db_username") + self.promptForString("Database Password", "aiservice_db_password", isPassword=True) + + if self.yesOrNo("Does the database use SSL/TLS with a self-signed certificate"): + self.promptForString( + "Database CA certificate (PEM format)", + "aiservice_db_ca_cert", + ) + else: + # Install DB2 for AI Service + self.setParam("install_db2", "true") + self.setParam("db2_action_aiservice", "install") + + # Prompt for DB2 license file (same as standalone) + self.printDescription( + [ + "Db2 Universal Operator for v12 onwards requires a License activation key", + "If you don't have a license, press enter to continue.", + ] + ) + db2LicenseFile = self.promptForString("Db2 License file", "db2_license_file") + if db2LicenseFile and db2LicenseFile.strip() != "": + self.db2LicenseFileLocal = db2LicenseFile + + @logMethodCall + def configAIServiceDatabaseInDependencies(self) -> None: + """Wrapper method to configure AI Service database in the Dependencies section""" + if self.installAIService: + self.configAIServiceDatabase() + @logMethodCall def aiServiceSettings(self) -> None: if self.installAIService: @@ -2002,6 +2058,7 @@ def interactiveMode(self, simplified: bool, advanced: bool) -> None: self.arcgisSettings() # Will only prompt if Manage (with Spatial) or Facilities is selected self.configMongoDb() self.configDb2() + self.configAIServiceDatabaseInDependencies() # Configure AI Service database self.configKafka() # Will only do anything if IoT has been selected for install self.configAi() # Configure AI Service integration @@ -2190,9 +2247,24 @@ def nonInteractiveMode(self) -> None: elif key == "aiservice_channel": if value is not None and value != "": self.setParam("aiservice_channel", value) - # Install Db2 for AI Service - self.setParam("db2_action_aiservice", "install") self.installAIService = True + + # Check if external DB parameters are provided + externalDbParams = ["aiservice_db_jdbc_url", "aiservice_db_username", "aiservice_db_password"] + hasExternalDb = any(vars(self.args)[dbParam] is not None for dbParam in externalDbParams) + + if hasExternalDb: + # Using external database - validate all required parameters + self.setParam("install_db2", "false") + self.setParam("db2_action_aiservice", "byo") + for dbParam in externalDbParams: + if vars(self.args)[dbParam] is None: + self.fatalError(f"Parameter is required when using external database: --{dbParam.replace('_', '-')}") + else: + # Default: Install DB2 in-cluster + self.setParam("install_db2", "true") + self.setParam("db2_action_aiservice", "install") + # Set manage - bind - AI Service params same as provided AI Service's params self.setParam( "manage_bind_aiservice_instance_id", diff --git a/python/src/mas/cli/install/argBuilder.py b/python/src/mas/cli/install/argBuilder.py index b238dc24d57..7a934b16606 100644 --- a/python/src/mas/cli/install/argBuilder.py +++ b/python/src/mas/cli/install/argBuilder.py @@ -376,6 +376,22 @@ def buildCommand(self) -> str: if self.getParam("aiservice_certificate_issuer") != "": command += f" --aiservice-certificate-issuer \"{self.getParam('aiservice_certificate_issuer')}\"{newline}" + # Database configuration for AI Service - matches standalone pattern + if self.getParam("db2_action_aiservice") == "install": + # In-cluster DB2 installation + command += f" --db2-aiservice{newline}" + if self.getParam("db2_channel") != "": + command += f" --db2-channel \"{self.getParam('db2_channel')}\"{newline}" + if self.db2LicenseFileLocal: + command += f' --db2-license-file "{self.db2LicenseFileLocal}"{newline}' + elif self.getParam("aiservice_db_jdbc_url") != "": + # External database (Oracle/SQL Server/DB2) + command += f" --aiservice-db-jdbc-url \"{self.getParam('aiservice_db_jdbc_url')}\"{newline}" + command += f" --aiservice-db-username \"{self.getParam('aiservice_db_username')}\"{newline}" + command += f" --aiservice-db-password \"{self.getParam('aiservice_db_password')}\"{newline}" + if self.getParam("aiservice_db_ca_cert") != "": + command += f" --aiservice-db-ca-cert \"{self.getParam('aiservice_db_ca_cert')}\"{newline}" + if self.getParam("aiservice_s3_accesskey") != "" and self.getParam("minio_root_user") == "": command += f" --s3-accesskey \"{self.getParam('aiservice_s3_accesskey')}\"{newline}" if self.getParam("aiservice_s3_secretkey") != "" and self.getParam("minio_root_user") == "": diff --git a/python/src/mas/cli/install/argParser.py b/python/src/mas/cli/install/argParser.py index 489095d85b7..173d1257d1e 100644 --- a/python/src/mas/cli/install/argParser.py +++ b/python/src/mas/cli/install/argParser.py @@ -1186,6 +1186,38 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str: action="store_const", const="install", ) +db2ArgGroup.add_argument( + "--db2-aiservice", + dest="db2_action_aiservice", + required=False, + help="Install a dedicated Db2u instance for Maximo AI Service (supported by AI Service)", + action="store_const", + const="install", +) +db2ArgGroup.add_argument( + "--aiservice-db-jdbc-url", + dest="aiservice_db_jdbc_url", + required=False, + help="JDBC URL for external database (Oracle, SQL Server, or external DB2) for AI Service", +) +db2ArgGroup.add_argument( + "--aiservice-db-username", + dest="aiservice_db_username", + required=False, + help="Username for external database connection for AI Service", +) +db2ArgGroup.add_argument( + "--aiservice-db-password", + dest="aiservice_db_password", + required=False, + help="Password for external database connection for AI Service", +) +db2ArgGroup.add_argument( + "--aiservice-db-ca-cert", + dest="aiservice_db_ca_cert", + required=False, + help="CA certificate for external database connection (PEM format, optional) for AI Service", +) db2ArgGroup.add_argument( "--db2-type", required=False, diff --git a/python/src/mas/cli/install/params.py b/python/src/mas/cli/install/params.py index 338cb2410a4..ef292b2a0e9 100644 --- a/python/src/mas/cli/install/params.py +++ b/python/src/mas/cli/install/params.py @@ -224,6 +224,12 @@ "aiservice_instance_id", "aiservice_watsonxai_instance_id", "aiservice_watsonxai_verify", + "aiservice_db_jdbc_url", + "aiservice_db_username", + "aiservice_db_password", + "aiservice_db_ca_cert", + "install_db2", + "db2_action_aiservice", "minio_root_user", "minio_root_password", "tenant_entitlement_type", diff --git a/python/src/mas/cli/install/summarizer.py b/python/src/mas/cli/install/summarizer.py index eacc841aac5..7c52392a1a0 100644 --- a/python/src/mas/cli/install/summarizer.py +++ b/python/src/mas/cli/install/summarizer.py @@ -371,6 +371,38 @@ def aiServiceSummary(self) -> None: if "aiservice_certificate_issuer" in self.params: self.printParamSummary("Certificate Issuer", "aiservice_certificate_issuer") + # Database configuration - matches standalone aiservice-install pattern + self.printH2("AI Service Database Configuration") + db2_action = self.getParam("db2_action_aiservice") + + if db2_action == "byo": + # External database + jdbc_url = self.getParam("aiservice_db_jdbc_url") + if jdbc_url: + # Determine database type from JDBC URL + if "oracle" in jdbc_url.lower(): + db_type = "External Database (Oracle)" + # elif "sqlserver" in jdbc_url.lower(): + # db_type = "External Database (SQL Server)" + # elif "db2" in jdbc_url.lower(): + # db_type = "External Database (DB2)" + else: + db_type = "External Database" + + self.printSummary("Database Type", db_type) + self.printParamSummary("JDBC URL", "aiservice_db_jdbc_url") + self.printParamSummary("Username", "aiservice_db_username") + # Don't print password for security + if self.getParam("aiservice_db_ca_cert"): + self.printSummary("CA Certificate", "Provided") + else: + # In-cluster DB2 deployment (default when db2_action="install" or not set) + self.printSummary("Database Type", "In-cluster DB2") + if self.getParam("db2_namespace") != "": + self.printParamSummary("Install Namespace", "db2_namespace") + if self.getParam("db2_channel") != "": + self.printParamSummary("Subscription Channel", "db2_channel") + self.printH2("AI Service Tenant Configuration") self.printParamSummary("Entitlement Type", "tenant_entitlement_type") self.printParamSummary("Start Date", "tenant_entitlement_start_date") diff --git a/python/tests/integration/aiservice_install/test_app.py b/python/tests/integration/aiservice_install/test_app.py index 8b6da53218a..40972e519ed 100644 --- a/python/tests/integration/aiservice_install/test_app.py +++ b/python/tests/integration/aiservice_install/test_app.py @@ -238,12 +238,36 @@ def set_mixin_prompt_input(**kwargs): return f"{tmpdir}/authorized_entitlement.lic" if re.match(".*>Db2 License file<.*", message): return "" + if re.match(".*Contact e-mail address.*", message): + return "maximo@ibm.com" + if re.match(".*Contact first name.*", message): + return "Test" + if re.match(".*Contact last name.*", message): + return "Test" + if re.match(r".*IBM Data Reporter Operator \(DRO\) Namespace.*", message): + return "redhat-marketplace" + if re.match(".*IBM entitlement key.*", message): + return "testEntitlementKey" if re.match(".*Instance ID.*", message): return "apmdevops" + if re.match(".*Entitlement end date.*", message): + return "2027-02-16" if re.match(".*Configure Scheduling policies for AI Service tenant.*", message): return "y" - if re.match(".*Scheduling constraints YAML file.*", message): + if re.match(".*Scheduling configuration YAML file.*", message): return f"{tmpdir}/aiservice-tenant-affinity-config.yaml" + if re.match(".*Watsonxai api key.*", message): + return "testWxApiKey" + if re.match(".*Watsonxai machine learning url.*", message): + return "https://us-south.ml.cloud.ibm.com" + if re.match(".*Watsonxai project id.*", message): + return "testProjectId" + if re.match(".*Does the Watsonxai AI use a self-signed certificate.*", message): + return "n" + if re.match(".*Watsonxai Deployment ID.*", message): + return "" + if re.match(".*Watsonxai Space ID.*", message): + return "" if re.match(".*Operational Mode.*", message): return "1" if re.match(".*Install Minio.*", message): @@ -252,7 +276,7 @@ def set_mixin_prompt_input(**kwargs): return "username" if re.match(".*minio root password.*", message): return "password" - if re.match(".*Configure certificate issuer?.*", message): + if re.match(r".*Configure certificate issuer\?.*", message): return "y" if re.match(".*Certificate issuer name.*", message): return "cert-issuer" @@ -270,6 +294,8 @@ def set_mixin_prompt_input(**kwargs): return "n" if re.match(".*Does the Watsonxai AI use a self-signed certificate.*", message): return "n" + if re.match(".*Do you want to use an external database.*", message): + return "n" if re.match(".*Create MongoDb cluster.*", message): return "n" if re.match(".*Select Local configuration directory.*", message): @@ -380,6 +406,16 @@ def set_mixin_prompt_input(**kwargs): return f"{tmpdir}/authorized_entitlement.lic" if re.match(".*>Db2 License file<.*", message): return "" + if re.match(".*Contact e-mail address.*", message): + return "maximo@ibm.com" + if re.match(".*Contact first name.*", message): + return "Test" + if re.match(".*Contact last name.*", message): + return "Test" + if re.match(r".*IBM Data Reporter Operator \(DRO\) Namespace.*", message): + return "redhat-marketplace" + if re.match(".*IBM entitlement key.*", message): + return "testEntitlementKey" if re.match(".*Instance ID.*", message): return "apmdevops" if re.match(".*Operational Mode.*", message): @@ -390,6 +426,20 @@ def set_mixin_prompt_input(**kwargs): return "username" if re.match(".*minio root password.*", message): return "password" + if re.match(".*Entitlement end date.*", message): + return "2027-02-16" + if re.match(".*Watsonxai api key.*", message): + return "testWxApiKey" + if re.match(".*Watsonxai machine learning url.*", message): + return "https://us-south.ml.cloud.ibm.com" + if re.match(".*Watsonxai project id.*", message): + return "testProjectId" + if re.match(".*Does the Watsonxai AI use a self-signed certificate.*", message): + return "n" + if re.match(".*Watsonxai Deployment ID.*", message): + return "" + if re.match(".*Watsonxai Space ID.*", message): + return "" if re.match(".*RSL url.*", message): return "https://rls.maximo.test.ibm.com" if re.match(".*ORG Id of RSL.*", message): @@ -402,6 +452,8 @@ def set_mixin_prompt_input(**kwargs): return "n" if re.match(".*Does the Watsonxai AI use a self-signed certificate.*", message): return "n" + if re.match(".*Do you want to use an external database.*", message): + return "n" if re.match(".*Create MongoDb cluster.*", message): return "n" if re.match(".*Select Local configuration directory.*", message): diff --git a/python/tests/integration/aiservice_install/test_dev_mode.py b/python/tests/integration/aiservice_install/test_dev_mode.py index 753dd489b13..2f09b26122e 100644 --- a/python/tests/integration/aiservice_install/test_dev_mode.py +++ b/python/tests/integration/aiservice_install/test_dev_mode.py @@ -95,9 +95,11 @@ def test_aiservice_install_master_dev_mode(tmpdir): ".*Watsonxai Space ID.*": lambda msg: "", # 13. RSL Integration ".*Does the RSL API use a self-signed certificate.*": lambda msg: "n", - # 14. MongoDB configuration + # 14. Database configuration + ".*Do you want to use an external database.*": lambda msg: "n", + # 15. MongoDB configuration ".*Create MongoDb cluster.*": lambda msg: "y", - # 15. Final confirmation + # 16. Final confirmation ".*Proceed with these settings.*": lambda msg: "y", } @@ -164,9 +166,11 @@ def test_aiservice_install_master_dev_mode_existing_catalog(tmpdir): ".*Watsonxai Space ID.*": lambda msg: "", # 13. RSL Integration ".*Does the RSL API use a self-signed certificate.*": lambda msg: "n", - # 14. MongoDB configuration + # 14. Database configuration + ".*Do you want to use an external database.*": lambda msg: "n", + # 15. MongoDB configuration ".*Create MongoDb cluster.*": lambda msg: "y", - # 15. Final confirmation + # 16. Final confirmation ".*Proceed with these settings.*": lambda msg: "y", } diff --git a/tekton/src/params/install-aiservice.yml.j2 b/tekton/src/params/install-aiservice.yml.j2 index d3d254450a3..f99aaa077bb 100644 --- a/tekton/src/params/install-aiservice.yml.j2 +++ b/tekton/src/params/install-aiservice.yml.j2 @@ -169,4 +169,27 @@ - name: aiservice_certificate_issuer type: string description: Name of the Issuer to configure AI Service to issue certificates + default: "" + +# MAS Application Configuration - IBM Maximo AI Service - Database +# ----------------------------------------------------------------------------- +- name: install_db2 + type: string + description: Install DB2 in-cluster for AI Service (true/false) + default: "" +- name: aiservice_db_jdbc_url + type: string + description: JDBC URL for external database (Oracle/SQL Server/DB2) + default: "" +- name: aiservice_db_username + type: string + description: Database username for AI Service + default: "" +- name: aiservice_db_password + type: string + description: Database password for AI Service + default: "" +- name: aiservice_db_ca_cert + type: string + description: Database CA certificate (PEM format, optional for SSL/TLS) default: "" \ No newline at end of file diff --git a/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 b/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 index 78181afefb7..1792cac2ece 100644 --- a/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 +++ b/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 @@ -95,6 +95,18 @@ - name: tenant_scheduling_cfg_file value: $(params.tenant_scheduling_cfg_file) + # Database Configuration + - name: install_db2 + value: $(params.install_db2) + - name: aiservice_db_jdbc_url + value: $(params.aiservice_db_jdbc_url) + - name: aiservice_db_username + value: $(params.aiservice_db_username) + - name: aiservice_db_password + value: $(params.aiservice_db_password) + - name: aiservice_db_ca_cert + value: $(params.aiservice_db_ca_cert) + taskRef: name: mas-devops-aiservice kind: Task diff --git a/tekton/src/tasks/aiservice/aiservice.yml.j2 b/tekton/src/tasks/aiservice/aiservice.yml.j2 index 1b18d2ba9b3..3f7ca841d14 100644 --- a/tekton/src/tasks/aiservice/aiservice.yml.j2 +++ b/tekton/src/tasks/aiservice/aiservice.yml.j2 @@ -154,6 +154,28 @@ spec: description: Optional boolean parameter that when set to True, configures services in SingleStack IPv6 networking default: "False" + # Database Configuration + - name: install_db2 + type: string + description: Install DB2 in-cluster for AI Service (true/false) + default: "" + - name: aiservice_db_jdbc_url + type: string + description: JDBC URL for external database (Oracle/SQL Server/DB2) + default: "" + - name: aiservice_db_username + type: string + description: Database username for AI Service + default: "" + - name: aiservice_db_password + type: string + description: Database password for AI Service + default: "" + - name: aiservice_db_ca_cert + type: string + description: Database CA certificate (PEM format, optional for SSL/TLS) + default: "" + stepTemplate: env: {{ lookup('template', task_src_dir ~ '/common/cli-env.yml.j2') | indent(6) }} @@ -257,6 +279,18 @@ spec: - name: OCP_ENABLE_IPV6 value: $(params.enable_ipv6) + # Database Configuration + - name: INSTALL_DB2 + value: $(params.install_db2) + - name: AISERVICE_DB_JDBC_URL + value: $(params.aiservice_db_jdbc_url) + - name: AISERVICE_DB_USERNAME + value: $(params.aiservice_db_username) + - name: AISERVICE_DB_PASSWORD + value: $(params.aiservice_db_password) + - name: AISERVICE_DB_CA_CERT + value: $(params.aiservice_db_ca_cert) + steps: - name: aiservice command: From cb2efd65c9322212fa16d5d0c66b647b333e1b8a Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Mon, 6 Jul 2026 20:24:23 +0530 Subject: [PATCH 09/25] Updated to test depreciation fix #1 --- python/src/mas/cli/install/settings/db2Settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 63959d4e89e..92734ebba9a 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -349,7 +349,7 @@ def setDB2DefaultChannel(self) -> None: def setDB2uKindDefault(self) -> None: # Set the default db2u_kind from catalog, with dev mode override support - # Get default from catalog + # Get default from Catalog if hasattr(self, "catalogDb2uKind"): # CatalogDb2uKind was set by processCatalogChoice() default_db2u_kind = self.catalogDb2uKind From 88836092d18b8bc1f5c2333729ab5ca6890b8255 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Tue, 7 Jul 2026 18:14:36 +0530 Subject: [PATCH 10/25] [patch] Update catalog digests for July release (#2455) --- catalogs/v9-260730-amd64.yaml | 2 +- catalogs/v9-260730-ppc64le.yaml | 2 +- catalogs/v9-260730-s390x.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/catalogs/v9-260730-amd64.yaml b/catalogs/v9-260730-amd64.yaml index aa1712eae84..f1b1fc51ef9 100644 --- a/catalogs/v9-260730-amd64.yaml +++ b/catalogs/v9-260730-amd64.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:3a9f89efcdefc8b0bba4deaf2efea2b17835880ba17215274637a93b30f126b0 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d9ba3d2fd94d4b0b8fb1fa8eb5740a3122b137264b7da5c49818f7d9df966508 priority: 90 diff --git a/catalogs/v9-260730-ppc64le.yaml b/catalogs/v9-260730-ppc64le.yaml index 81c50801db1..109db08ac47 100644 --- a/catalogs/v9-260730-ppc64le.yaml +++ b/catalogs/v9-260730-ppc64le.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d82533f5f713fe4f9ec265009ce7d32f6094671c936a31565f98a512916205f2 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:40d3ec2da2fcb7a4444b4e481ad54a8a0ef2f902bb520dbf22c231a6944da265 priority: 90 diff --git a/catalogs/v9-260730-s390x.yaml b/catalogs/v9-260730-s390x.yaml index 4311e8cab2e..adea8718e8b 100644 --- a/catalogs/v9-260730-s390x.yaml +++ b/catalogs/v9-260730-s390x.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d7c156afa72073c9b47773e1113a06a841d538c5c0e8878bc39bf8bd62dd5aa4 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:7d57ef678d387fd43344cee3d17e88207569f26071318fd74fac6e1bcff957a0 priority: 90 From dad1842a6101865bf35a4e126537bcebc3cfe031 Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Sat, 11 Jul 2026 19:41:53 +0530 Subject: [PATCH 11/25] [patch] Update catalog digests for July release (#2465) --- catalogs/v9-260730-amd64.yaml | 2 +- catalogs/v9-260730-ppc64le.yaml | 2 +- catalogs/v9-260730-s390x.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/catalogs/v9-260730-amd64.yaml b/catalogs/v9-260730-amd64.yaml index f1b1fc51ef9..4e6ac9291ef 100644 --- a/catalogs/v9-260730-amd64.yaml +++ b/catalogs/v9-260730-amd64.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:d9ba3d2fd94d4b0b8fb1fa8eb5740a3122b137264b7da5c49818f7d9df966508 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:3055d67dcab3c6a59f7b0b6dd67fa718718f82daa0016719af821e10ffa22f2f priority: 90 diff --git a/catalogs/v9-260730-ppc64le.yaml b/catalogs/v9-260730-ppc64le.yaml index 109db08ac47..39dd0645fba 100644 --- a/catalogs/v9-260730-ppc64le.yaml +++ b/catalogs/v9-260730-ppc64le.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:40d3ec2da2fcb7a4444b4e481ad54a8a0ef2f902bb520dbf22c231a6944da265 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:588922096642abb34873b6bec9a9cebaed0cb42623c15b56dd54c2dc621ed6bd priority: 90 diff --git a/catalogs/v9-260730-s390x.yaml b/catalogs/v9-260730-s390x.yaml index adea8718e8b..f6e68c6b35c 100644 --- a/catalogs/v9-260730-s390x.yaml +++ b/catalogs/v9-260730-s390x.yaml @@ -8,5 +8,5 @@ spec: publisher: IBM description: Static Catalog Source for IBM Maximo Application Suite sourceType: grpc - image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:7d57ef678d387fd43344cee3d17e88207569f26071318fd74fac6e1bcff957a0 + image: icr.io/cpopen/ibm-maximo-operator-catalog@sha256:b20802a384c8a4aae47949a51b7dffbae5ed585e261f06b59c6ad7ef1a88f231 priority: 90 From 362bee2425658b31f79388dc5dca12ac3684efba Mon Sep 17 00:00:00 2001 From: Parveen Kumar Date: Mon, 13 Jul 2026 21:01:33 +0530 Subject: [PATCH 12/25] [patch] rebuild cli --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 69a523e4e2b..89d62407dee 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,4 @@ Want to contribute to MAS Command Line Interface? We welcome every Maximo Application Suite users, developers and enthusiasts to contribute to the MAS Command Line Interface while fixing code issues and implementing new automated functionalities. You can contribute to this collection by raising [a new issue](https://github.com/ibm-mas/cli/issues) with suggestions on how to make our MAS automation engine even better, or if you want to become a new code contributor, please refer to the [Contributing Guidelines](CONTRIBUTING.md) and learn more about how to get started. + From f908e50409322cdae55b5f40c0c072122636d77c Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Wed, 15 Jul 2026 11:02:20 +0530 Subject: [PATCH 13/25] Updated the argparser to keep rotate as silent feature alone --- python/src/mas/cli/install/argParser.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/python/src/mas/cli/install/argParser.py b/python/src/mas/cli/install/argParser.py index 0e65e79cfdb..258a6adbd61 100644 --- a/python/src/mas/cli/install/argParser.py +++ b/python/src/mas/cli/install/argParser.py @@ -1285,15 +1285,8 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str: "--db2u-kind", dest="db2u_kind", required=False, - choices=["db2ucluster", "db2uinstance", "rotate"], # ADD "rotate" - help="Db2 resource kind in the cluster (db2ucluster, db2uinstance, or rotate). Defaults to catalog value. Only effective in dev mode.", -) -# db2ArgGroup.add_argument( -# "--db2u-kind", -# dest="db2u_kind", -# required=False, -# help="Db2 resource kind in the cluster", -# ) + help="Db2 resource kind in the cluster(db2ucluster, db2uinstance)", +) # ECK Integration # ----------------------------------------------------------------------------- From 72a77c8e78c7ea03f9b4ba5d719a20f94d9b204f Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Wed, 15 Jul 2026 17:58:14 +0530 Subject: [PATCH 14/25] [patch] Default db2ukind to be handled at ansible-devops --- python/src/mas/cli/install/app.py | 2 +- python/src/mas/cli/install/settings/db2Settings.py | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index 1d702aa4248..8a090888cd6 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -241,7 +241,7 @@ def processCatalogChoice(self) -> list: self.catalogDigest = self.chosenCatalog["catalog_digest"] self.catalogMongoDbVersion = self.chosenCatalog["mongo_extras_version_default"] self.catalogDb2Channel = self.chosenCatalog.get("db2_channel_default", "v110509.0") # Returns fallback "v110509.0" for old catalogs without this field - self.catalogDb2uKind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") # Returns fallback "db2ucluster" for old catalogs without this field + self.catalogDb2uKind = self.chosenCatalog.get("db2u_kind_default") # Returns None if not found if self.architecture != "s390x" and self.architecture != "ppc64le": self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"] diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 92734ebba9a..04f1cce2335 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -350,15 +350,15 @@ def setDB2DefaultChannel(self) -> None: def setDB2uKindDefault(self) -> None: # Set the default db2u_kind from catalog, with dev mode override support # Get default from Catalog - if hasattr(self, "catalogDb2uKind"): + if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: # CatalogDb2uKind was set by processCatalogChoice() default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: # Fallback: Get directly from chosenCatalog if available - default_db2u_kind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") + default_db2u_kind = self.chosenCatalog.get("db2u_kind_default") else: # Use hardcoded fallback - default_db2u_kind = "db2ucluster" + default_db2u_kind = None # Apply dev mode override logic if not self.devMode: @@ -369,7 +369,9 @@ def setDB2uKindDefault(self) -> None: user_kind = self.getParam("db2u_kind") db2u_kind = user_kind if user_kind else default_db2u_kind - self.params["db2u_kind"] = db2u_kind + # Only set parameter if we have a value + if db2u_kind: + self.params["db2u_kind"] = db2u_kind def setDB2DefaultSettings(self) -> None: From 6d41e498176b59623e7002ebda88a8a2a649d3c9 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 08:01:34 +0530 Subject: [PATCH 15/25] [patch] Removed forced fallback to db2ucluater in cli --- python/src/mas/cli/install/app.py | 1 - python/src/mas/cli/install/settings/db2Settings.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index 8a090888cd6..f993f85a741 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -2494,7 +2494,6 @@ def nonInteractiveMode(self) -> None: if not self.devMode: self.validateCatalogSource() self.licensePrompt() - self.setParam("db2u_kind", "db2ucluster") if self.getParam("mas_issuer_kind") != "" and not isVersionEqualOrAfter("9.2.0", self.getParam("mas_channel")): self.fatalError(f"--mas-issuer-kind is only supported for MAS 9.2+ (selected channel: {self.getParam('mas_channel')})") diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 04f1cce2335..6336fca0d26 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -321,8 +321,6 @@ def configDb2(self, silentMode=False) -> None: if self.yesOrNo("Select Db2 Custom Resource(CR)"): self.printDescription(["Db2 Custom Resource", " 1. Db2uCluster", " 2. Db2uInstance"]) self.promptForListSelect("Select the CR Resource", ["db2ucluster", "db2uinstance"], "db2u_kind") - else: - self.setParam("db2u_kind", "db2ucluster") else: self.setParam("db2_namespace", "db2u") From dabf2fc5bf5cc782d1a8b9a54652695ac7b6ad20 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 10:37:59 +0530 Subject: [PATCH 16/25] Updated to remove db2u_kind in non-dev mode if set --- python/src/mas/cli/install/settings/db2Settings.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 6336fca0d26..2170137b4a8 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -362,6 +362,9 @@ def setDB2uKindDefault(self) -> None: if not self.devMode: # Non-dev mode: Always use catalog default db2u_kind = default_db2u_kind + # Explicitly remove any user-provided CLI argument + if "db2u_kind" in self.params: + del self.params["db2u_kind"] else: # Dev mode: Allow user override if provided via CLI argument user_kind = self.getParam("db2u_kind") From 35e9d8e78ab8bb3ea20ebd98a426bb7333862ac0 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 12:04:38 +0530 Subject: [PATCH 17/25] [patch] Debug enabled --- .../mas/cli/install/settings/db2Settings.py | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 2170137b4a8..1fb95729f63 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -346,33 +346,72 @@ def setDB2DefaultChannel(self) -> None: self.params["db2_channel"] = db2_channel def setDB2uKindDefault(self) -> None: + # # Set the default db2u_kind from catalog, with dev mode override support + # # Get default from Catalog + # if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: + # # CatalogDb2uKind was set by processCatalogChoice() + # default_db2u_kind = self.catalogDb2uKind + # elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: + # # Fallback: Get directly from chosenCatalog if available + # default_db2u_kind = self.chosenCatalog.get("db2u_kind_default") + # else: + # # Use hardcoded fallback + # default_db2u_kind = None + + # # Apply dev mode override logic + # if not self.devMode: + # # Non-dev mode: Always use catalog default + # db2u_kind = default_db2u_kind + # # Explicitly remove any user-provided CLI argument + # if "db2u_kind" in self.params: + # del self.params["db2u_kind"] + # else: + # # Dev mode: Allow user override if provided via CLI argument + # user_kind = self.getParam("db2u_kind") + # db2u_kind = user_kind if user_kind else default_db2u_kind + + # # Only set parameter if we have a value + # if db2u_kind: + # self.params["db2u_kind"] = db2u_kind # Set the default db2u_kind from catalog, with dev mode override support + + # DEBUG: Print initial state + print(f"DEBUG: devMode = {self.devMode}") + print(f"DEBUG: Initial self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") + # Get default from Catalog if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: - # CatalogDb2uKind was set by processCatalogChoice() default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: - # Fallback: Get directly from chosenCatalog if available default_db2u_kind = self.chosenCatalog.get("db2u_kind_default") else: - # Use hardcoded fallback default_db2u_kind = None + print(f"DEBUG: default_db2u_kind from catalog = {default_db2u_kind}") + # Apply dev mode override logic if not self.devMode: # Non-dev mode: Always use catalog default db2u_kind = default_db2u_kind + print(f"DEBUG: Non-dev mode, db2u_kind set to = {db2u_kind}") # Explicitly remove any user-provided CLI argument if "db2u_kind" in self.params: + print(f"DEBUG: Deleting user's db2u_kind = {self.params['db2u_kind']}") del self.params["db2u_kind"] else: # Dev mode: Allow user override if provided via CLI argument user_kind = self.getParam("db2u_kind") db2u_kind = user_kind if user_kind else default_db2u_kind + print(f"DEBUG: Dev mode, user_kind = {user_kind}, db2u_kind = {db2u_kind}") # Only set parameter if we have a value if db2u_kind: + print(f"DEBUG: Setting self.params['db2u_kind'] = {db2u_kind}") self.params["db2u_kind"] = db2u_kind + else: + print(f"DEBUG: NOT setting db2u_kind (value is None)") + + print(f"DEBUG: Final self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") def setDB2DefaultSettings(self) -> None: From 7d2665d761acf28cee731aff0466ea68bd41c91d Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 12:13:22 +0530 Subject: [PATCH 18/25] [patch] Debug enabled --- python/src/mas/cli/install/settings/db2Settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 1fb95729f63..0ff54b030bc 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -409,7 +409,7 @@ def setDB2uKindDefault(self) -> None: print(f"DEBUG: Setting self.params['db2u_kind'] = {db2u_kind}") self.params["db2u_kind"] = db2u_kind else: - print(f"DEBUG: NOT setting db2u_kind (value is None)") + print("DEBUG: NOT setting db2u_kind (value is None)") print(f"DEBUG: Final self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") From 7426694a0b817c183e2dc40409b43b81deb62dca Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 13:19:04 +0530 Subject: [PATCH 19/25] [patch] reverting last changes --- .../mas/cli/install/settings/db2Settings.py | 57 ++----------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 0ff54b030bc..9543534d9fe 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -346,72 +346,23 @@ def setDB2DefaultChannel(self) -> None: self.params["db2_channel"] = db2_channel def setDB2uKindDefault(self) -> None: - # # Set the default db2u_kind from catalog, with dev mode override support - # # Get default from Catalog - # if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: - # # CatalogDb2uKind was set by processCatalogChoice() - # default_db2u_kind = self.catalogDb2uKind - # elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: - # # Fallback: Get directly from chosenCatalog if available - # default_db2u_kind = self.chosenCatalog.get("db2u_kind_default") - # else: - # # Use hardcoded fallback - # default_db2u_kind = None - - # # Apply dev mode override logic - # if not self.devMode: - # # Non-dev mode: Always use catalog default - # db2u_kind = default_db2u_kind - # # Explicitly remove any user-provided CLI argument - # if "db2u_kind" in self.params: - # del self.params["db2u_kind"] - # else: - # # Dev mode: Allow user override if provided via CLI argument - # user_kind = self.getParam("db2u_kind") - # db2u_kind = user_kind if user_kind else default_db2u_kind - - # # Only set parameter if we have a value - # if db2u_kind: - # self.params["db2u_kind"] = db2u_kind # Set the default db2u_kind from catalog, with dev mode override support - - # DEBUG: Print initial state - print(f"DEBUG: devMode = {self.devMode}") - print(f"DEBUG: Initial self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") - # Get default from Catalog if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: - default_db2u_kind = self.chosenCatalog.get("db2u_kind_default") + default_db2u_kind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") else: - default_db2u_kind = None - - print(f"DEBUG: default_db2u_kind from catalog = {default_db2u_kind}") + default_db2u_kind = "db2ucluster" - # Apply dev mode override logic if not self.devMode: - # Non-dev mode: Always use catalog default db2u_kind = default_db2u_kind - print(f"DEBUG: Non-dev mode, db2u_kind set to = {db2u_kind}") - # Explicitly remove any user-provided CLI argument - if "db2u_kind" in self.params: - print(f"DEBUG: Deleting user's db2u_kind = {self.params['db2u_kind']}") - del self.params["db2u_kind"] else: - # Dev mode: Allow user override if provided via CLI argument + # In dev mode, allow user override if provided user_kind = self.getParam("db2u_kind") db2u_kind = user_kind if user_kind else default_db2u_kind - print(f"DEBUG: Dev mode, user_kind = {user_kind}, db2u_kind = {db2u_kind}") - - # Only set parameter if we have a value - if db2u_kind: - print(f"DEBUG: Setting self.params['db2u_kind'] = {db2u_kind}") - self.params["db2u_kind"] = db2u_kind - else: - print("DEBUG: NOT setting db2u_kind (value is None)") - print(f"DEBUG: Final self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") + self.params["db2u_kind"] = db2u_kind def setDB2DefaultSettings(self) -> None: From d9aaf35021d28e13919a497c7154f61f1ca6b539 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 17:13:36 +0530 Subject: [PATCH 20/25] Debug --- python/src/mas/cli/install/settings/db2Settings.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 9543534d9fe..a4ad87ef01e 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -348,6 +348,15 @@ def setDB2DefaultChannel(self) -> None: def setDB2uKindDefault(self) -> None: # Set the default db2u_kind from catalog, with dev mode override support # Get default from Catalog + print("=" * 80) + print("DEBUG: setDB2uKindDefault() called") + print(f"DEBUG: hasattr catalogDb2uKind = {hasattr(self, 'catalogDb2uKind')}") + if hasattr(self, "catalogDb2uKind"): + print(f"DEBUG: self.catalogDb2uKind = {self.catalogDb2uKind}") + print(f"DEBUG: devMode = {self.devMode}") + print(f"DEBUG: Initial self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") + print("=" * 80) + if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: @@ -355,6 +364,8 @@ def setDB2uKindDefault(self) -> None: else: default_db2u_kind = "db2ucluster" + print(f"DEBUG: default_db2u_kind = {default_db2u_kind}") + if not self.devMode: db2u_kind = default_db2u_kind else: @@ -362,7 +373,10 @@ def setDB2uKindDefault(self) -> None: user_kind = self.getParam("db2u_kind") db2u_kind = user_kind if user_kind else default_db2u_kind + print(f"DEBUG: Final db2u_kind to set = {db2u_kind}") self.params["db2u_kind"] = db2u_kind + print(f"JAINY_DEBUG: setDB2uKindDefault set db2u_kind to: {db2u_kind}") + print(f"JAINY_DEBUG: self.params['db2u_kind'] is now: {self.params.get('db2u_kind')}") def setDB2DefaultSettings(self) -> None: From 8278a24ebfb7c28b50b63d0c6304415432baec81 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 17:40:08 +0530 Subject: [PATCH 21/25] [patch] Fix applied --- python/src/mas/cli/install/app.py | 3 ++- python/src/mas/cli/install/settings/db2Settings.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index f993f85a741..ab321f5eefd 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -241,7 +241,7 @@ def processCatalogChoice(self) -> list: self.catalogDigest = self.chosenCatalog["catalog_digest"] self.catalogMongoDbVersion = self.chosenCatalog["mongo_extras_version_default"] self.catalogDb2Channel = self.chosenCatalog.get("db2_channel_default", "v110509.0") # Returns fallback "v110509.0" for old catalogs without this field - self.catalogDb2uKind = self.chosenCatalog.get("db2u_kind_default") # Returns None if not found + self.catalogDb2uKind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") # Returns Fallback if not found if self.architecture != "s390x" and self.architecture != "ppc64le": self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"] @@ -2563,6 +2563,7 @@ def nonInteractiveMode(self) -> None: operation="installation", ) self.setDB2DefaultChannel() + self.setDB2uKindDefault() # Version before 9.1 cannot have empty components if ( diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index a4ad87ef01e..1aaf46d3938 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -357,7 +357,7 @@ def setDB2uKindDefault(self) -> None: print(f"DEBUG: Initial self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") print("=" * 80) - if hasattr(self, "catalogDb2uKind") and self.catalogDb2uKind is not None: + if hasattr(self, "catalogDb2uKind"): default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: default_db2u_kind = self.chosenCatalog.get("db2u_kind_default", "db2ucluster") From 40536921127867cbd5de533016aed6294a3feff6 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 19:44:11 +0530 Subject: [PATCH 22/25] [patch] Fix applied, removed unwanted debug statements --- python/src/mas/cli/install/settings/db2Settings.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 1aaf46d3938..27021d1b109 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -348,15 +348,6 @@ def setDB2DefaultChannel(self) -> None: def setDB2uKindDefault(self) -> None: # Set the default db2u_kind from catalog, with dev mode override support # Get default from Catalog - print("=" * 80) - print("DEBUG: setDB2uKindDefault() called") - print(f"DEBUG: hasattr catalogDb2uKind = {hasattr(self, 'catalogDb2uKind')}") - if hasattr(self, "catalogDb2uKind"): - print(f"DEBUG: self.catalogDb2uKind = {self.catalogDb2uKind}") - print(f"DEBUG: devMode = {self.devMode}") - print(f"DEBUG: Initial self.params.get('db2u_kind') = {self.params.get('db2u_kind')}") - print("=" * 80) - if hasattr(self, "catalogDb2uKind"): default_db2u_kind = self.catalogDb2uKind elif hasattr(self, "chosenCatalog") and self.chosenCatalog is not None: @@ -364,8 +355,6 @@ def setDB2uKindDefault(self) -> None: else: default_db2u_kind = "db2ucluster" - print(f"DEBUG: default_db2u_kind = {default_db2u_kind}") - if not self.devMode: db2u_kind = default_db2u_kind else: @@ -373,10 +362,7 @@ def setDB2uKindDefault(self) -> None: user_kind = self.getParam("db2u_kind") db2u_kind = user_kind if user_kind else default_db2u_kind - print(f"DEBUG: Final db2u_kind to set = {db2u_kind}") self.params["db2u_kind"] = db2u_kind - print(f"JAINY_DEBUG: setDB2uKindDefault set db2u_kind to: {db2u_kind}") - print(f"JAINY_DEBUG: self.params['db2u_kind'] is now: {self.params.get('db2u_kind')}") def setDB2DefaultSettings(self) -> None: From e49e3a903327f76410e7b7315b0adb17fe4e0845 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Thu, 16 Jul 2026 20:15:45 +0530 Subject: [PATCH 23/25] Re-runing build --- python/src/mas/cli/install/settings/db2Settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index 27021d1b109..1e6f5ccc0f5 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -346,7 +346,7 @@ def setDB2DefaultChannel(self) -> None: self.params["db2_channel"] = db2_channel def setDB2uKindDefault(self) -> None: - # Set the default db2u_kind from catalog, with dev mode override support + # Set the default db2u_kind from catalog, with dev mode Override support # Get default from Catalog if hasattr(self, "catalogDb2uKind"): default_db2u_kind = self.catalogDb2uKind From e8f7faab5a889f280763662f38534b60f15630d4 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Fri, 7 Aug 2026 18:00:54 +0530 Subject: [PATCH 24/25] [patch] conflicts resolved --- python/src/mas/cli/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/cli.py b/python/src/mas/cli/cli.py index aea9f48bda8..48e7530e8a4 100644 --- a/python/src/mas/cli/cli.py +++ b/python/src/mas/cli/cli.py @@ -1,4 +1,4 @@ -# ***************************************************************************** +# ****************************************************************************** # Copyright (c) 2024, 2026 IBM Corporation and other Contributors. # # All rights reserved. This program and the accompanying materials From fe3b23e4a8eceea0a300b5dace14904b43a9cc12 Mon Sep 17 00:00:00 2001 From: jainyjoseph Date: Fri, 7 Aug 2026 18:22:55 +0530 Subject: [PATCH 25/25] [patch] conflicts resolved --- python/src/mas/cli/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/cli.py b/python/src/mas/cli/cli.py index 48e7530e8a4..aea9f48bda8 100644 --- a/python/src/mas/cli/cli.py +++ b/python/src/mas/cli/cli.py @@ -1,4 +1,4 @@ -# ****************************************************************************** +# ***************************************************************************** # Copyright (c) 2024, 2026 IBM Corporation and other Contributors. # # All rights reserved. This program and the accompanying materials