From 19f60af874fc746c3d2c0d5fb543246e070cc6e8 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 21 Jul 2026 11:22:29 +0530 Subject: [PATCH 01/68] Added CPD 5.3.1 gitops support --- .../templates/00-ibm-cp4d-olm-531.yaml | 678 ++++++++++++++++++ .../templates/01-ibm-cp4d-CatalogSources.yaml | 72 ++ .../templates/00-ibm-cp4d-olm-531.yaml | 677 +++++++++++++++++ .../04-db2u-Volatile-Runstats_Cron.yaml | 1 + 4 files changed, 1428 insertions(+) create mode 100644 instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml create mode 100644 instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml diff --git a/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml b/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml new file mode 100644 index 000000000..fb9b366fd --- /dev/null +++ b/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml @@ -0,0 +1,678 @@ +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: olm-utils-cm + namespace: mas-{{ .Values.instance_id }}-syncres + annotations: + argocd.argoproj.io/sync-wave: "00" + labels: + app.kubernetes.io/name: olm-utils +{{- if .Values.custom_labels }} +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +data: + licenses_urls: |- + SWHP: + url: "https://ibm.biz/BdbGRu" + description: "IBM Software Hub Premium Cartridge" + SWHAI: + url: "https://ibm.biz/BdbGRL" + description: "IBM Softare Hub AI Assistant Cartridge" + EE: + url: https://ibm.biz/Bdbq3x + description: "IBM Cloud Pak for Data Enterprise Edition" + SE: + url: https://ibm.biz/Bdbq3H + description: "IBM Cloud Pak for Data Standard Edition" + WXAI: + url: https://ibm.biz/BdbKbw + description: "IBM watsonx.ai" + DB2CE: + url: https://ibm.biz/BdnPB7 + description: "IBM Db2 Community Edition" + DB2SE: + url: https://ibm.biz/BdnPdB + description: "IBM Db2 Standard Edition Cartridge for IBM Cloud Pak for Data" + DB2AE: + url: https://ibm.biz/BdnPBW + description: "IBM Db2 Advanced Edition Cartridge for IBM Cloud Pak for Data" + DG: + url: "https://ibm.biz/dg4zos_v320" + description: "IBM Data Gate for z/OS with Cloud Pak for Data" + DGWXD: + url: "https://ibm.biz/dgx_v13" + description: "IBM Data Gate for watsonx" + DGWXDB: + url: "https://ibm.biz/wxd-dgx" + description: "IBM watsonx.data with Data Gate for IBM Z" + DGWXDPB: + url: "https://ibm.biz/wxdprem-dgx111" + description: "IBM watsonx.data Premium with Data Gate for IBM Z" + DGFS: + url: "https://ibm.biz/dg4fs_v13" + description: "IBM Data Gate for Financial Services" + IKCS: + url: https://ibm.biz/Bdmm4V + description: "IBM Knowledge Catalog Standard" + IKCP: + url: https://ibm.biz/Bdmm4J + description: "IBM Knowledge Catalog Premium" + IDRC: + url: https://ibm.biz/BdpHpg + description: "IBM Data Replication Cartridge" + IIDRC: + url: https://ibm.biz/BdpHph + description: "IBM InfoSphere Data Replication Cartridge" + IDRM: + url: https://ibm.biz/BdpHpJ + description: "IBM Data Replication Modernization" + IIDRM: + url: https://ibm.biz/BdpHpA + description: "IBM InfoSphere Data Replication Modernization" + IDRZOS: + url: https://ibm.biz/BdpHp9 + description: "IBM Data Replication for Db2 z/OS Cartridge" + IIDRWXTO: + url: https://ibm.biz/BdpHpu + description: "IBM InfoSphere Data Replication for watsonx.data Cartridge" + IIDRWXAO: + url: https://ibm.biz/BdpHpL + description: "IBM InfoSphere Data Replication Cartridge Add-on for IBM watsonx.data" + WXD: + url: https://ibm.biz/BdpdBF + description: "IBM watsonx.data" + WXDP: + url: https://ibm.biz/BdpzEx + description: "IBM watsonx.data Premium Edition" + WCA: + url: https://ibm.biz/Bdbv9x + description: "IBM watsonx Code Assistant" + WCAA: + url: https://ibm.biz/Bdbv9D + description: "IBM watsonx Code Assistant for Red Hat Ansible Lightspeed" + DPH: + url: https://ibm.biz/BdbQMv + description: "IBM Data Product Hub" + + release_components_meta: |- + scheduler: + case_version: 1.61.0 + sub_channel: "v1.61" + csv_version: 1.61.0 + cr_version: 1.61.0 + + cpfs: + csv_version: 4.17.0 + case_version: 4.17.0 + sub_channel: "v4.17" + + ibm-common-service-operator: + cr_version: 4.17.0 + + ibm-iam-operator: + cr_version: 4.16.0 + + ibm-namespace-scope-operator: + cr_version: 4.3.4 + + ibm-cert-manager: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_events_operator: + case_version: 6.0.0 + sub_channel: "v6.0" + csv_version: 6.0.0 + cr_version: 4.1.1 + + streamsets: + case_version: 9.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-streamsets-sdi: + case_version: 2.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-licensing: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_usage_metering: + case_version: 1.0.4 + csv_version: 1.0.4 + sub_channel: "v1.0" + cr_version: 1.0.4 + + cpd_platform: + case_version: 5.4.0 + csv_version: 6.4.0 + sub_channel: "v6.4" + cr_version: 5.4.0 + + platform-config: + cr_version: 5.4.0 + + ibm_swhcc: + case_version: 5.4.0 + csv_version: 5.4.0 + sub_channel: "v5.4" + cr_version: 5.4.0 + + zen: + case_version: 6.4.0 + sub_channel: "v6.4" + csv_version: 6.4.0 + cr_version: 6.4.0 + + analyticsengine: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + cognos_analytics: + case_version: 29.1.0 + sub_channel: "v29.1" + cr_version: 29.1.0 + csv_version: 29.1.0 + + ccs: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + dashboard: + case_version: 4.0.0 + sub_channel: "v4.0" + csv_version: 4.0.0 + cr_version: 5.3.0 + + datarefinery: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: "v12.1" + cr_version: 12.1.0 + + canvasbase: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + spss: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + syntheticdata: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + datastage_ent: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + datastage_ent_plus: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + informix: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + informix_cp4d: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + openscale: + case_version: 10.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + ws: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + ws_runtimes: + case_version: 12.1.0 + cr_version: 12.1.0 + + db2aaservice: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2oltp: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2wh: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2u: + case_version: 7.5.2 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + datagate: + case_version: 11.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 9.1.0 + + dods: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + hee: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + dv: + case_version: 8.1.0 + sub_channel: "v8.1" + csv_version: 8.1.0 + cr_version: 3.3.1 + + bigsql: + case_version: 14.1.0 + sub_channel: "v14.1" + csv_version: 14.1.0 + cr_version: 8.3.1 + + planning_analytics: + case_version: 5.3.1 + sub_channel: "v11.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + rstudio: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + watson_assistant: + case_version: 5.11.0 + sub_channel: "v5.11" + csv_version: 5.11.0 + cr_version: "5.3.1" + + watson_discovery: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + watson_speech: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + wkc: + case_version: 5.3.1 + sub_channel: "v9.1" + csv_version: 2.3.1 + cr_version: 5.3.1 + + ikc_standard: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + ikc_premium: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + datalineage: + case_version: 5.3.1 + sub_channel: "v7.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + udp: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster: + case_version: 9.1.0 + csv_version: 9.1.0 + sub_channel: "v9.1" + cr_version: 9.1.0 + + dataproduct: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + semantic_automation: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster_instance: + cr_version: 9.1.0 + + dp: + case_version: 11.1.0 + csv_version: 11.1.0 + sub_channel: "v11.1" + cr_version: 5.3.1 + + wml: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + dmc: + case_version: 8.11.0 + csv_version: 5.11.0 + cr_version: 5.3.1 + sub_channel: "v5.11" + + openpages: + case_version: 10.1.0 + csv_version: 10.1.0 + cr_version: 9.7.0 + sub_channel: "v10.1" + + openpages_instance: + cr_version: 9.7.0 + + mantaflow: + case_version: 2.4.0 + csv_version: 2.4.0 + sub_channel: "v2.4" + cr_version: 42.15.0 + + match360: + case_version: 4.11.0 + csv_version: 4.11.0 + cr_version: 4.11.50 + sub_channel: "v4.11" + + model_gateway: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + opencontent_opensearch: + case_version: 1.2.0 + csv_version: 1.2.0 + cr_version: 1.2.0 + sub_channel: "v1.1" + + opencontent_redis: + case_version: 1.6.11 + csv_version: 1.6.11 + sub_channel: "v1.6" + + ibm_redis_cp: + case_version: 1.3.1 + csv_version: 1.3.1 + sub_channel: "v1.3" + cr_version: 1.3.1 + + opencontent_rabbitmq: + case_version: 1.3.0 + csv_version: 1.3.0 + sub_channel: "v1.0" + cr_version: 1.3.0 + + opencontent_fdb: + case_version: 5.3.1 + csv_version: 5.3.1 + cr_version: 5.3.1 + sub_channel: "v5.3" + + fdb_k8s: + csv_version: 5.3.1 + sub_channel: "v5.3" + + opencontent_minio: + case_version: 1.0.23 + csv_version: 1.0.18 + + opencontent_etcd: + case_version: 2.0.57 + csv_version: 1.0.47 + + opencontent_auditwebhook: + case_version: 1.0.24 + csv_version: 0.3.1 + + watson_gateway: + case_version: 2.2.0 + csv_version: 2.2.0 + cr_version: 2.2.0 + + data_governor: + case_version: 8.1.0 + csv_version: 8.1.0 + sub_channel: v8.1 + cr_version: 3.29.4 + + ws_pipelines: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 5.3.1 + + postgresql: + case_version: 5.31.0 + sub_channel: "stable-v1.25" + csv_version: 1.25.5 + cr_version: 1.25.5 + + edb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + mongodb: + case_version: 5.31.0 + sub_channel: "stable" + csv_version: 1.33.0 + cr_version: 5.31.0 + + mongodb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + dpra: + deprecated: true + case_version: 1.20.0 + sub_channel: "v1.20" + csv_version: 1.20.0 + cr_version: 1.20.0 + + factsheet: + case_version: 7.1.0 + csv_version: 7.1.0 + sub_channel: "v7.1" + cr_version: 5.3.1 + + replication: + case_version: 5.3.1 + csv_version: 7.1.0 + cr_version: 5.3.1 + sub_channel: "v7.1" + + voice_gateway: + case_version: 1.13.0 + csv_version: 1.13.0 + sub_channel: v1.13 + cr_version: 1.13.0 + + watsonx_data: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + watsonx_data_premium: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + wxd_query_optimizer: + component_dependencies: + - db2u + + watsonx_ai: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + osai_min_version: 2.19.0 + + watsonx_ai_ifm: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + + watsonx_bi_assistant: + case_version: 3.4.0 + csv_version: 3.4.0 + sub_channel: v3.4 + cr_version: 3.4.0 + + wca_ansible: + case_version: 4.1.0 + cr_version: 5.3.1 + + wca: + case_version: 3.1.0 + cr_version: 5.3.1 + + wca_z: + case_version: 4.1.0 + csv_version: 4.1.0 + sub_channel: v4.0 + cr_version: 5.3.1 + + wca_z_agentic: + case_version: 2.0.1 + csv_version: 2.0.1 + sub_channel: v2.1 + cr_version: 2.7.1 + + wca_z_ce: + case_version: 5.3.1 + sub_channel: v2.8 + csv_version: 2.8.10 + cr_version: 2.8.10 + + wca_z_cg: + case_version: 5.3.1 + sub_channel: v1.1 + csv_version: 1.1.1 + cr_version: 2.8.10 + + wca_base: + case_version: 4.1.0 + cr_version: 5.3.1 + + ibm_neo4j: + case_version: 1.3.1 + sub_channel: "v4.1" + csv_version: 1.3.1 + cr_version: 1.3.1 + + watsonx_governance: + case_version: 5.1.0 + sub_channel: "v5.1" + csv_version: 5.1.0 + cr_version: 2.3.1 + + watsonx_orchestrate: + case_version: 7.1.0 + sub_channel: "v7.1" + csv_version: 7.1.0 + cr_version: "7.1.0" + + watsonx_dataintegration: + case_version: 2.4.0 + sub_channel: "v2.4" + csv_version: 5.3.1 + cr_version: 2.3.1 + + watsonx_dataintelligence: + case_version: 2.3.1 + sub_channel: "v2.31" + csv_version: 2.3.1 + cr_version: 2.3.1 + + wca_z_understand: + case_version: 1.1.0 + csv_version: 1.1.0 + sub_channel: v1.1 + cr_version: 2.8.10 + + ibm-databand: + case_version: 1.0.0 + csv_version: 1.0.0 + cr_version: 1.0.0 + sub_channel: "v1.0.0" + + datastax_mc: + case_version: 1.16.1 + cr_version: 1.16.1 + + ibm_wxd_opensearch: + case_version: 3.3.2 + cr_version: 3.3.2 + release_version: 5.3.1 +{{- end }} + + + diff --git a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml index 461104031..499b3ad64 100644 --- a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml +++ b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml @@ -293,4 +293,76 @@ spec: registryPoll: interval: 30m0s {{- end }} +{{- end }} + + +# cpd 5.3.1 catalog sources +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: cpd-platform + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + displayName: ibm-cp-datacore-6.4.0-50 + image: icr.io/cpopen/ibm-cpd-platform-operator-catalog@sha256:0a63f6bf9c312efc3daca05a657c70f300eaef7f5a36055753b11fcf014688ca + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s + +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: opencloud-operators + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} {{- end }} +spec: + displayName: ibm-cp-common-services-4.17.0 + image: icr.io/cpopen/ibm-common-service-catalog@sha256:de97dd2a35b4c58da9b7ad5d89976d7a4184541e2e0a78a1c71e441a0105ce6e + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s + +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: ibm-zen-operator-catalog + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + displayName: ibm-zen-6.4.0-92 + image: icr.io/cpopen/ibm-zen-operator-catalog@sha256:9a02519e5ab679f0807fc5b7cfc5fc96242961bee0e1d3144012d33e925e6a99 + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s +{{- end }} +{{- end }} + + + + diff --git a/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml b/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml new file mode 100644 index 000000000..ae436acc7 --- /dev/null +++ b/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml @@ -0,0 +1,677 @@ +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: olm-utils-cm + namespace: {{ .Values.cpd_instance_namespace }} + annotations: + argocd.argoproj.io/sync-wave: "00" + labels: + app.kubernetes.io/name: olm-utils +{{- if .Values.custom_labels }} +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +data: + licenses_urls: |- + SWHP: + url: "https://ibm.biz/BdbGRu" + description: "IBM Software Hub Premium Cartridge" + SWHAI: + url: "https://ibm.biz/BdbGRL" + description: "IBM Softare Hub AI Assistant Cartridge" + EE: + url: https://ibm.biz/Bdbq3x + description: "IBM Cloud Pak for Data Enterprise Edition" + SE: + url: https://ibm.biz/Bdbq3H + description: "IBM Cloud Pak for Data Standard Edition" + WXAI: + url: https://ibm.biz/BdbKbw + description: "IBM watsonx.ai" + DB2CE: + url: https://ibm.biz/BdnPB7 + description: "IBM Db2 Community Edition" + DB2SE: + url: https://ibm.biz/BdnPdB + description: "IBM Db2 Standard Edition Cartridge for IBM Cloud Pak for Data" + DB2AE: + url: https://ibm.biz/BdnPBW + description: "IBM Db2 Advanced Edition Cartridge for IBM Cloud Pak for Data" + DG: + url: "https://ibm.biz/dg4zos_v320" + description: "IBM Data Gate for z/OS with Cloud Pak for Data" + DGWXD: + url: "https://ibm.biz/dgx_v13" + description: "IBM Data Gate for watsonx" + DGWXDB: + url: "https://ibm.biz/wxd-dgx" + description: "IBM watsonx.data with Data Gate for IBM Z" + DGWXDPB: + url: "https://ibm.biz/wxdprem-dgx111" + description: "IBM watsonx.data Premium with Data Gate for IBM Z" + DGFS: + url: "https://ibm.biz/dg4fs_v13" + description: "IBM Data Gate for Financial Services" + IKCS: + url: https://ibm.biz/Bdmm4V + description: "IBM Knowledge Catalog Standard" + IKCP: + url: https://ibm.biz/Bdmm4J + description: "IBM Knowledge Catalog Premium" + IDRC: + url: https://ibm.biz/BdpHpg + description: "IBM Data Replication Cartridge" + IIDRC: + url: https://ibm.biz/BdpHph + description: "IBM InfoSphere Data Replication Cartridge" + IDRM: + url: https://ibm.biz/BdpHpJ + description: "IBM Data Replication Modernization" + IIDRM: + url: https://ibm.biz/BdpHpA + description: "IBM InfoSphere Data Replication Modernization" + IDRZOS: + url: https://ibm.biz/BdpHp9 + description: "IBM Data Replication for Db2 z/OS Cartridge" + IIDRWXTO: + url: https://ibm.biz/BdpHpu + description: "IBM InfoSphere Data Replication for watsonx.data Cartridge" + IIDRWXAO: + url: https://ibm.biz/BdpHpL + description: "IBM InfoSphere Data Replication Cartridge Add-on for IBM watsonx.data" + WXD: + url: https://ibm.biz/BdpdBF + description: "IBM watsonx.data" + WXDP: + url: https://ibm.biz/BdpzEx + description: "IBM watsonx.data Premium Edition" + WCA: + url: https://ibm.biz/Bdbv9x + description: "IBM watsonx Code Assistant" + WCAA: + url: https://ibm.biz/Bdbv9D + description: "IBM watsonx Code Assistant for Red Hat Ansible Lightspeed" + DPH: + url: https://ibm.biz/BdbQMv + description: "IBM Data Product Hub" + + release_components_meta: |- + scheduler: + case_version: 1.61.0 + sub_channel: "v1.61" + csv_version: 1.61.0 + cr_version: 1.61.0 + + cpfs: + csv_version: 4.17.0 + case_version: 4.17.0 + sub_channel: "v4.17" + + ibm-common-service-operator: + cr_version: 4.17.0 + + ibm-iam-operator: + cr_version: 4.16.0 + + ibm-namespace-scope-operator: + cr_version: 4.3.4 + + ibm-cert-manager: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_events_operator: + case_version: 6.0.0 + sub_channel: "v6.0" + csv_version: 6.0.0 + cr_version: 4.1.1 + + streamsets: + case_version: 9.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-streamsets-sdi: + case_version: 2.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-licensing: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_usage_metering: + case_version: 1.0.4 + csv_version: 1.0.4 + sub_channel: "v1.0" + cr_version: 1.0.4 + + cpd_platform: + case_version: 5.4.0 + csv_version: 6.4.0 + sub_channel: "v6.4" + cr_version: 5.4.0 + + platform-config: + cr_version: 5.4.0 + + ibm_swhcc: + case_version: 5.4.0 + csv_version: 5.4.0 + sub_channel: "v5.4" + cr_version: 5.4.0 + + zen: + case_version: 6.4.0 + sub_channel: "v6.4" + csv_version: 6.4.0 + cr_version: 6.4.0 + + analyticsengine: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + cognos_analytics: + case_version: 29.1.0 + sub_channel: "v29.1" + cr_version: 29.1.0 + csv_version: 29.1.0 + + ccs: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + dashboard: + case_version: 4.0.0 + sub_channel: "v4.0" + csv_version: 4.0.0 + cr_version: 5.3.0 + + datarefinery: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: "v12.1" + cr_version: 12.1.0 + + canvasbase: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + spss: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + syntheticdata: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + datastage_ent: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + datastage_ent_plus: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + informix: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + informix_cp4d: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + openscale: + case_version: 10.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + ws: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + ws_runtimes: + case_version: 12.1.0 + cr_version: 12.1.0 + + db2aaservice: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2oltp: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2wh: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2u: + case_version: 7.5.2 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + datagate: + case_version: 11.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 9.1.0 + + dods: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + hee: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + dv: + case_version: 8.1.0 + sub_channel: "v8.1" + csv_version: 8.1.0 + cr_version: 3.3.1 + + bigsql: + case_version: 14.1.0 + sub_channel: "v14.1" + csv_version: 14.1.0 + cr_version: 8.3.1 + + planning_analytics: + case_version: 5.3.1 + sub_channel: "v11.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + rstudio: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + watson_assistant: + case_version: 5.11.0 + sub_channel: "v5.11" + csv_version: 5.11.0 + cr_version: "5.3.1" + + watson_discovery: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + watson_speech: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + wkc: + case_version: 5.3.1 + sub_channel: "v9.1" + csv_version: 2.3.1 + cr_version: 5.3.1 + + ikc_standard: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + ikc_premium: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + datalineage: + case_version: 5.3.1 + sub_channel: "v7.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + udp: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster: + case_version: 9.1.0 + csv_version: 9.1.0 + sub_channel: "v9.1" + cr_version: 9.1.0 + + dataproduct: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + semantic_automation: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster_instance: + cr_version: 9.1.0 + + dp: + case_version: 11.1.0 + csv_version: 11.1.0 + sub_channel: "v11.1" + cr_version: 5.3.1 + + wml: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + dmc: + case_version: 8.11.0 + csv_version: 5.11.0 + cr_version: 5.3.1 + sub_channel: "v5.11" + + openpages: + case_version: 10.1.0 + csv_version: 10.1.0 + cr_version: 9.7.0 + sub_channel: "v10.1" + + openpages_instance: + cr_version: 9.7.0 + + mantaflow: + case_version: 2.4.0 + csv_version: 2.4.0 + sub_channel: "v2.4" + cr_version: 42.15.0 + + match360: + case_version: 4.11.0 + csv_version: 4.11.0 + cr_version: 4.11.50 + sub_channel: "v4.11" + + model_gateway: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + opencontent_opensearch: + case_version: 1.2.0 + csv_version: 1.2.0 + cr_version: 1.2.0 + sub_channel: "v1.1" + + opencontent_redis: + case_version: 1.6.11 + csv_version: 1.6.11 + sub_channel: "v1.6" + + ibm_redis_cp: + case_version: 1.3.1 + csv_version: 1.3.1 + sub_channel: "v1.3" + cr_version: 1.3.1 + + opencontent_rabbitmq: + case_version: 1.3.0 + csv_version: 1.3.0 + sub_channel: "v1.0" + cr_version: 1.3.0 + + opencontent_fdb: + case_version: 5.3.1 + csv_version: 5.3.1 + cr_version: 5.3.1 + sub_channel: "v5.3" + + fdb_k8s: + csv_version: 5.3.1 + sub_channel: "v5.3" + + opencontent_minio: + case_version: 1.0.23 + csv_version: 1.0.18 + + opencontent_etcd: + case_version: 2.0.57 + csv_version: 1.0.47 + + opencontent_auditwebhook: + case_version: 1.0.24 + csv_version: 0.3.1 + + watson_gateway: + case_version: 2.2.0 + csv_version: 2.2.0 + cr_version: 2.2.0 + + data_governor: + case_version: 8.1.0 + csv_version: 8.1.0 + sub_channel: v8.1 + cr_version: 3.29.4 + + ws_pipelines: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 5.3.1 + + postgresql: + case_version: 5.31.0 + sub_channel: "stable-v1.25" + csv_version: 1.25.5 + cr_version: 1.25.5 + + edb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + mongodb: + case_version: 5.31.0 + sub_channel: "stable" + csv_version: 1.33.0 + cr_version: 5.31.0 + + mongodb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + dpra: + deprecated: true + case_version: 1.20.0 + sub_channel: "v1.20" + csv_version: 1.20.0 + cr_version: 1.20.0 + + factsheet: + case_version: 7.1.0 + csv_version: 7.1.0 + sub_channel: "v7.1" + cr_version: 5.3.1 + + replication: + case_version: 5.3.1 + csv_version: 7.1.0 + cr_version: 5.3.1 + sub_channel: "v7.1" + + voice_gateway: + case_version: 1.13.0 + csv_version: 1.13.0 + sub_channel: v1.13 + cr_version: 1.13.0 + + watsonx_data: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + watsonx_data_premium: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + wxd_query_optimizer: + component_dependencies: + - db2u + + watsonx_ai: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + osai_min_version: 2.19.0 + + watsonx_ai_ifm: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + + watsonx_bi_assistant: + case_version: 3.4.0 + csv_version: 3.4.0 + sub_channel: v3.4 + cr_version: 3.4.0 + + wca_ansible: + case_version: 4.1.0 + cr_version: 5.3.1 + + wca: + case_version: 3.1.0 + cr_version: 5.3.1 + + wca_z: + case_version: 4.1.0 + csv_version: 4.1.0 + sub_channel: v4.0 + cr_version: 5.3.1 + + wca_z_agentic: + case_version: 2.0.1 + csv_version: 2.0.1 + sub_channel: v2.1 + cr_version: 2.7.1 + + wca_z_ce: + case_version: 5.3.1 + sub_channel: v2.8 + csv_version: 2.8.10 + cr_version: 2.8.10 + + wca_z_cg: + case_version: 5.3.1 + sub_channel: v1.1 + csv_version: 1.1.1 + cr_version: 2.8.10 + + wca_base: + case_version: 4.1.0 + cr_version: 5.3.1 + + ibm_neo4j: + case_version: 1.3.1 + sub_channel: "v4.1" + csv_version: 1.3.1 + cr_version: 1.3.1 + + watsonx_governance: + case_version: 5.1.0 + sub_channel: "v5.1" + csv_version: 5.1.0 + cr_version: 2.3.1 + + watsonx_orchestrate: + case_version: 7.1.0 + sub_channel: "v7.1" + csv_version: 7.1.0 + cr_version: "7.1.0" + + watsonx_dataintegration: + case_version: 2.4.0 + sub_channel: "v2.4" + csv_version: 5.3.1 + cr_version: 2.3.1 + + watsonx_dataintelligence: + case_version: 2.3.1 + sub_channel: "v2.31" + csv_version: 2.3.1 + cr_version: 2.3.1 + + wca_z_understand: + case_version: 1.1.0 + csv_version: 1.1.0 + sub_channel: v1.1 + cr_version: 2.8.10 + + ibm-databand: + case_version: 1.0.0 + csv_version: 1.0.0 + cr_version: 1.0.0 + sub_channel: "v1.0.0" + + datastax_mc: + case_version: 1.16.1 + cr_version: 1.16.1 + + ibm_wxd_opensearch: + case_version: 3.3.2 + cr_version: 3.3.2 + release_version: 5.3.1 +{{- end }} + + diff --git a/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml b/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml index 980b17c49..b76edaa92 100644 --- a/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml +++ b/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml @@ -4,6 +4,7 @@ {{- /* Use the build/bin/set-cli-image-digest.sh script to update this value across all charts. */}} + {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} # From b7eb0941a2af1814aac1be368e318b2d23739556 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Wed, 22 Jul 2026 14:51:08 +0530 Subject: [PATCH 02/68] [minor] Fix CatalogSources template - add CPD 5.3.1 block (MASCORE-15507) --- .../templates/01-ibm-cp4d-CatalogSources.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml index 499b3ad64..8c0985a57 100644 --- a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml +++ b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml @@ -293,7 +293,7 @@ spec: registryPoll: interval: 30m0s {{- end }} -{{- end }} + # cpd 5.3.1 catalog sources From 8c99760df4aad462d42acad2200820fd2722d8b4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 28 Jul 2026 12:15:53 +0530 Subject: [PATCH 03/68] For CPD 5.3.1 services are installed via Helm --- .../templates/00-ibm-spark_Subscription.yaml | 3 +- .../templates/01-ibm-spark-cr.yaml | 7 ++ .../120-ibm-spark/values.yaml | 1 + .../templates/00-ibm-spss_Subscription.yaml | 2 + .../templates/01-ibm-spss-cr.yaml | 10 ++- .../120-ibm-spss/values.yaml | 1 + .../templates/01-ibm-wml_Subscription.yaml | 2 + .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 7 ++ instance-applications/120-ibm-wml/values.yaml | 1 + .../templates/00-ibm-wsl_Subscription.yaml | 22 ++++++ .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 71 +++++++++++++++++++ 11 files changed, 124 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml index 598d60619..99918936a 100644 --- a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml +++ b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,4 +17,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.spark_install_plan | default "Automatic" | quote }} - +{{- end }} diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 87a8a32c9..45a3588ed 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: ae.cpd.ibm.com/v1 kind: AnalyticsEngine @@ -22,3 +23,9 @@ spec: scaleConfig: "{{ .Values.cpd_service_scale_config }}" version: "{{ .Values.spark_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +# Spark (Analytics Engine) is installed via ansible-devops cp4d_service role using Helm +# No OLM Subscription or CR is created here for CPD >= 5.3.1 +{{- end }} diff --git a/instance-applications/120-ibm-spark/values.yaml b/instance-applications/120-ibm-spark/values.yaml index d6a766919..25e5c803b 100644 --- a/instance-applications/120-ibm-spark/values.yaml +++ b/instance-applications/120-ibm-spark/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" spark_channel: "" spark_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml index dcb608e85..c37c39d91 100644 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -35,3 +36,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.canvasbase_install_plan | default "Automatic" | quote }} +{{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 2869c08f6..f182ecf68 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -1,4 +1,4 @@ - +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: spssmodeler.cpd.ibm.com/v1 kind: Spss @@ -24,4 +24,10 @@ spec: version: "{{ .Values.spss_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" datarefinery_operand_version: "{{ .Values.datarefinery_version }}" - wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" \ No newline at end of file + wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +# SPSS Modeler is installed via ansible-devops cp4d_service role using Helm +# No OLM Subscription or CR is created here for CPD >= 5.3.1 +{{- end }} diff --git a/instance-applications/120-ibm-spss/values.yaml b/instance-applications/120-ibm-spss/values.yaml index 51ca216c9..b7c0618d7 100644 --- a/instance-applications/120-ibm-spss/values.yaml +++ b/instance-applications/120-ibm-spss/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" spss_channel: "" spss_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml index 327653732..8b80ea231 100644 --- a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml +++ b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,3 +17,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.wml_install_plan | default "Automatic" | quote }} +{{- end }} diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index e1e789973..f6e485cb5 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: wml.cpd.ibm.com/v1beta1 kind: WmlBase @@ -22,3 +23,9 @@ spec: scaleConfig: "{{ .Values.cpd_service_scale_config }}" version: "{{ .Values.wml_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +# WML is installed via ansible-devops cp4d_service role using Helm +# No OLM Subscription or CR is created here for CPD >= 5.3.1 +{{- end }} diff --git a/instance-applications/120-ibm-wml/values.yaml b/instance-applications/120-ibm-wml/values.yaml index b5ec6e992..56dedaab2 100644 --- a/instance-applications/120-ibm-wml/values.yaml +++ b/instance-applications/120-ibm-wml/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" wml_channel: "" wml_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml index b2556409c..d205eb28b 100644 --- a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml +++ b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml @@ -1,3 +1,24 @@ +# --- +# apiVersion: operators.coreos.com/v1alpha1 +# kind: Subscription +# metadata: +# name: ibm-cpd-ws-operator +# namespace: "{{ .Values.cpd_operators_namespace }}" +# annotations: +# argocd.argoproj.io/sync-wave: "090" +# {{- if .Values.custom_labels }} +# labels: +# {{ .Values.custom_labels | toYaml | indent 4 }} +# {{- end }} +# spec: +# name: ibm-cpd-wsl +# channel: "{{ .Values.wsl_channel }}" +# source: ibm-operator-catalog +# sourceNamespace: openshift-marketplace +# installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} + + +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,3 +37,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} +{{- end }} \ No newline at end of file diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 11c9d89a3..a37ce5f29 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -1,3 +1,33 @@ +# --- +# apiVersion: ws.cpd.ibm.com/v1beta1 +# kind: WS +# metadata: +# name: "ws-cr" +# namespace: "{{ .Values.cpd_instance_namespace }}" +# annotations: +# argocd.argoproj.io/sync-wave: "091" +# argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +# {{- if .Values.custom_labels }} +# labels: +# {{ .Values.custom_labels | toYaml | indent 4 }} +# {{- end }} +# spec: +# imagePullSecret: ibm-entitlement-key +# ignoreForMaintenance: false +# license: +# accept: true +# license: Standard +# scaleConfig: "{{ .Values.cpd_service_scale_config }}" +# fileStorageClass: "{{ .Values.cpd_service_storage_class }}" +# blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" +# version: "{{ .Values.wsl_version }}" +# ccs_operand_version: "{{ .Values.ccs_version }}" +# datarefinery_operand_version: "{{ .Values.datarefinery_version }}" +# wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" + + + +{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} --- apiVersion: ws.cpd.ibm.com/v1beta1 kind: WS @@ -24,3 +54,44 @@ spec: ccs_operand_version: "{{ .Values.ccs_version }}" datarefinery_operand_version: "{{ .Values.datarefinery_version }}" wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +apiVersion: batch/v1 +kind: Job +metadata: + name: install-wsl-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: quay.io/ibmmas/cli:latest + command: + - /bin/sh + - -c + - | + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + helm upgrade --install wsl ibm-charts/wsl \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set ws.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 30m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 +{{- end }} \ No newline at end of file From 31562eb6cf21d71e14f6267bea9d0513c214ca01 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 28 Jul 2026 16:19:48 +0530 Subject: [PATCH 04/68] MASCORE-15507: Fix WSL Helm Job - install deps in sequence; add Helm Jobs for WML, Spark, SPSS --- .../templates/01-ibm-spark-cr.yaml | 39 ++++- .../templates/01-ibm-spss-cr.yaml | 39 ++++- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 39 ++++- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 136 +++++++++++++++--- 4 files changed, 231 insertions(+), 22 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 45a3588ed..eecc35568 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -26,6 +26,41 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ -# Spark (Analytics Engine) is installed via ansible-devops cp4d_service role using Helm -# No OLM Subscription or CR is created here for CPD >= 5.3.1 +apiVersion: batch/v1 +kind: Job +metadata: + name: install-spark-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: quay.io/ibmmas/cli:latest + command: + - /bin/sh + - -c + - | + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + helm upgrade --install analyticsengine ibm-charts/analyticsengine \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set analyticsengine.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 30m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 {{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index f182ecf68..ba9b5ec61 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -28,6 +28,41 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ -# SPSS Modeler is installed via ansible-devops cp4d_service role using Helm -# No OLM Subscription or CR is created here for CPD >= 5.3.1 +apiVersion: batch/v1 +kind: Job +metadata: + name: install-spss-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: quay.io/ibmmas/cli:latest + command: + - /bin/sh + - -c + - | + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + helm upgrade --install spss-modeler ibm-charts/spss-modeler \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 30m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 {{- end }} diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index f6e485cb5..dc4849977 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -26,6 +26,41 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ -# WML is installed via ansible-devops cp4d_service role using Helm -# No OLM Subscription or CR is created here for CPD >= 5.3.1 +apiVersion: batch/v1 +kind: Job +metadata: + name: install-wml-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: quay.io/ibmmas/cli:latest + command: + - /bin/sh + - -c + - | + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + helm upgrade --install wml ibm-charts/wml \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set wml.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 30m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 {{- end }} diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index a37ce5f29..2d4ceb0a7 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -57,6 +57,9 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ +# Installs WSL and all its dependencies (opensearch, ccs, datarefinery, ws-runtimes) +# using IBM Helm charts. Each component requires a cluster-scoped chart (CRDs/ClusterRoles) +# followed by a namespace-scoped chart (Operator + CR). apiVersion: batch/v1 kind: Job metadata: @@ -76,22 +79,123 @@ spec: - /bin/sh - -c - | - helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + set -e + + HELM_REPO=ibm-charts + HELM_REPO_URL=https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + OPERATORS_NS={{ .Values.cpd_operators_namespace }} + INSTANCE_NS={{ .Values.cpd_instance_namespace }} + FILE_SC={{ .Values.cpd_service_storage_class }} + BLOCK_SC={{ .Values.cpd_service_block_storage_class }} + SCALE={{ .Values.cpd_service_scale_config }} + CPD_VERSION={{ .Values.cpd_product_version }} + PULL_SECRET=ibm-entitlement-key + + echo "================================================================" + echo "Adding IBM Helm repository" + echo "================================================================" + helm repo add ${HELM_REPO} ${HELM_REPO_URL} || true helm repo update - helm upgrade --install wsl ibm-charts/wsl \ - --version 12.1.0 \ - --namespace {{ .Values.cpd_instance_namespace }} \ - --create-namespace \ - --set global.licenseAccept=true \ - --set global.releaseVersion={{ .Values.cpd_product_version }} \ - --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ - --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ - --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ - --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ - --set global.imagePullSecret=ibm-entitlement-key \ - --set ws.scaleConfig={{ .Values.cpd_service_scale_config }} \ - --wait --timeout 30m + + # Shared values file used by all components + cat > /tmp/cpd-global-values.yaml << EOF + global: + licenseAccept: true + releaseVersion: ${CPD_VERSION} + operatorNamespace: ${OPERATORS_NS} + instanceNamespace: ${INSTANCE_NS} + fileStorageClass: ${FILE_SC} + blockStorageClass: ${BLOCK_SC} + imagePullSecret: ${PULL_SECRET} + imagePullPrefix: cp.icr.io + EOF + + install_component() { + local NAME=$1 + local CHART=$2 + local CLUSTER_CHART=$3 + local VERSION=$4 + local EXTRA_VALUES=$5 + + echo "================================================================" + echo "Installing ${NAME} (version ${VERSION})" + echo "================================================================" + + # 1. Cluster-scoped chart (CRDs, ClusterRoles) + echo " [${NAME}] Installing cluster-scoped chart..." + helm template ${NAME}-cluster ${HELM_REPO}/${CLUSTER_CHART} \ + --version ${VERSION} \ + -f /tmp/cpd-global-values.yaml \ + --namespace ${OPERATORS_NS} | oc apply -f - + + # 2. Namespace-scoped chart (Operator + CR) + echo " [${NAME}] Installing namespace-scoped chart..." + helm upgrade --install ${NAME} ${HELM_REPO}/${CHART} \ + --version ${VERSION} \ + -f /tmp/cpd-global-values.yaml \ + ${EXTRA_VALUES} \ + --namespace ${INSTANCE_NS} \ + --create-namespace \ + --wait --timeout 60m + } + + # ---------------------------------------------------------------- + # Step 1: OpenSearch (dependency) + # ---------------------------------------------------------------- + install_component \ + "opencontent-opensearch" \ + "opencontent-opensearch" \ + "opencontent-opensearch-cluster-scoped" \ + "1.2.0" + + # ---------------------------------------------------------------- + # Step 2: CCS - Common Core Services (dependency) + # ---------------------------------------------------------------- + install_component \ + "ccs" \ + "ccs" \ + "ccs-cluster-scoped" \ + "12.1.0" \ + "--set ccs.scaleConfig=${SCALE}" + + # Wait for CCS CR to be ready + echo "Waiting for CCS CR to be ready..." + oc wait ccs/ccs-cr -n ${INSTANCE_NS} \ + --for=jsonpath='{.status.controlPlaneStatus}'=Completed \ + --timeout=60m + + # ---------------------------------------------------------------- + # Step 3: DataRefinery (dependency) + # ---------------------------------------------------------------- + install_component \ + "datarefinery" \ + "datarefinery" \ + "datarefinery-cluster-scoped" \ + "12.1.0" + + # ---------------------------------------------------------------- + # Step 4: WS Runtimes (dependency) + # ---------------------------------------------------------------- + install_component \ + "ws-runtimes" \ + "ws-runtimes" \ + "ws-runtimes-cluster-scoped" \ + "12.1.0" + + # ---------------------------------------------------------------- + # Step 5: Watson Studio (main component) + # ---------------------------------------------------------------- + install_component \ + "wsl" \ + "ws" \ + "ws-cluster-scoped" \ + "12.1.0" \ + "--set ws.scaleConfig=${SCALE}" + + echo "================================================================" + echo "WSL installation complete" + echo "================================================================" restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 2 -{{- end }} \ No newline at end of file + backoffLimit: 1 +{{- end }} From 2b6f7b44c8c575b627e62b2e6222a83af6373796 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 28 Jul 2026 19:06:59 +0530 Subject: [PATCH 05/68] MASCORE-15507: Pass cpd_product_version to WSL, Spark, SPSS ArgoCD Applications --- .../ibm-mas-instance-root/templates/120-ibm-spark-app.yaml | 1 + .../ibm-mas-instance-root/templates/120-ibm-spss-app.yaml | 1 + .../ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml index d3edd8787..cfee55a4c 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml @@ -48,6 +48,7 @@ spec: application_admin_role: {{ .Values.application_admin_role }} ccs_version: "{{ .Values.ibm_spark.ccs_version }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_service_block_storage_class: "{{ .Values.ibm_spark.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_spark.cpd_service_scale_config }}" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml index 5f16e9abe..c312d6053 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml @@ -47,6 +47,7 @@ spec: sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_service_storage_class: "{{ .Values.ibm_spss.cpd_service_storage_class }}" cpd_service_block_storage_class: "{{ .Values.ibm_spss.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_spss.cpd_service_scale_config }}" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml index d770e7365..73e710050 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml @@ -48,6 +48,7 @@ spec: sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_service_storage_class: "{{ .Values.ibm_wsl.cpd_service_storage_class }}" cpd_service_block_storage_class: "{{ .Values.ibm_wsl.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_wsl.cpd_service_scale_config }}" From 326fe687908f220f2bc43a6641e704c9a7f8e0a4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 28 Jul 2026 20:41:30 +0530 Subject: [PATCH 06/68] MASCORE-15507: Fix heredoc in WSL Helm Job - use printf to avoid YAML/shell conflict --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 2d4ceb0a7..d2e4e63f9 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -98,17 +98,9 @@ spec: helm repo update # Shared values file used by all components - cat > /tmp/cpd-global-values.yaml << EOF - global: - licenseAccept: true - releaseVersion: ${CPD_VERSION} - operatorNamespace: ${OPERATORS_NS} - instanceNamespace: ${INSTANCE_NS} - fileStorageClass: ${FILE_SC} - blockStorageClass: ${BLOCK_SC} - imagePullSecret: ${PULL_SECRET} - imagePullPrefix: cp.icr.io - EOF + printf 'global:\n licenseAccept: true\n releaseVersion: %s\n operatorNamespace: %s\n instanceNamespace: %s\n fileStorageClass: %s\n blockStorageClass: %s\n imagePullSecret: %s\n imagePullPrefix: cp.icr.io\n' \ + "${CPD_VERSION}" "${OPERATORS_NS}" "${INSTANCE_NS}" "${FILE_SC}" "${BLOCK_SC}" "${PULL_SECRET}" \ + > /tmp/cpd-global-values.yaml install_component() { local NAME=$1 From e8f2c0f052fdaa85d14d6a910313b18db08c2449 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 30 Jul 2026 16:35:26 +0530 Subject: [PATCH 07/68] Fix semver comparison - use toString to handle unquoted cpd_product_version value --- .../120-ibm-spark/templates/00-ibm-spark_Subscription.yaml | 2 +- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spss/templates/00-ibm-spss_Subscription.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- .../120-ibm-wml/templates/01-ibm-wml_Subscription.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- .../120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml index 99918936a..f76f473ca 100644 --- a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml +++ b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index eecc35568..e12e2b3a3 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: ae.cpd.ibm.com/v1 kind: AnalyticsEngine diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml index c37c39d91..87ad8ae35 100644 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index ba9b5ec61..a88dc3343 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: spssmodeler.cpd.ibm.com/v1 kind: Spss diff --git a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml index 8b80ea231..fd899c668 100644 --- a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml +++ b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index dc4849977..64ea9fa2a 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: wml.cpd.ibm.com/v1beta1 kind: WmlBase diff --git a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml index d205eb28b..b667f0b8e 100644 --- a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml +++ b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml @@ -18,7 +18,7 @@ # installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index d2e4e63f9..91f9b59df 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -27,7 +27,7 @@ -{{- if lt (semver .Values.cpd_product_version) (semver "5.3.1") }} +{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} --- apiVersion: ws.cpd.ibm.com/v1beta1 kind: WS From 892f5f0ec2a3676964e056b2640fe50318182cc4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 11:24:51 +0530 Subject: [PATCH 08/68] MASCORE-15507: skip OLM CCS/OpenSearch post-sync patching for CPD 5.3.1+ --- .../templates/01-cpd-service-post-ops.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml index 8aebe3f14..810599109 100644 --- a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml +++ b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml @@ -247,6 +247,15 @@ spec: echo $(( $V1 - $V2 )) } + # For CPD 5.3.1+, CCS and OpenSearch are installed via Helm (not OLM). + # The CCS CR and OpenSearch CR managed by this post-sync job do not exist + # in that deployment model, so skip all OLM-specific post-sync patching. + COMP_531=$(compare_versions ${CPD_PRODUCT_VERSION} 5.3.1) + if [[ ${COMP_531} -ge 0 ]]; then + echo "CPD ${CPD_PRODUCT_VERSION} detected (>= 5.3.1) - CCS/OpenSearch installed via Helm, skipping OLM post-sync patching" + exit 0 + fi + echo echo "================================================================================" echo "Wait for CCS Cr to be ready and patch if needed" From 7a99311d2d0d5b8732ebf914d0dd109077c56f68 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 12:08:24 +0530 Subject: [PATCH 09/68] MASCORE-15507: bump job version to v2 to force new job name after script change --- .../templates/01-cpd-service-post-ops.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml index 810599109..556806533 100644 --- a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml +++ b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml @@ -25,7 +25,7 @@ Increment this value whenever you make a change to an immutable field of the Job E.g. passing in a new environment variable. Included in $_job_hash (see below). */}} -{{- $_job_version := "v1" }} +{{- $_job_version := "v2" }} {{- /* 10 char hash appended to the job name taking into account $_job_config_values, $_job_version and $_cli_image_digest From 675a87c4b76045e9305cf435b08e5d778fa9e5d5 Mon Sep 17 00:00:00 2001 From: Nikita Kumble Date: Fri, 31 Jul 2026 14:28:16 +0530 Subject: [PATCH 10/68] minor update --- .../120-ibm-db2u-database/files/PostBackFlow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh index 90d87d308..18a94ef57 100755 --- a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh +++ b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh @@ -5,7 +5,7 @@ INSTOWNER=`/usr/local/bin/db2greg -dump | grep -ae "I," | grep -v "/das," | awk # Find the home directory INSTHOME=` cat /etc/passwd | grep ${INSTOWNER} | cut -d: -f6` -DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep MANA | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` +DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep -E "MANA|FACI" | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` SCRIPT=/mnt/backup/bin/PostBF_Scripts.sh echo "db2 connect to bludb" > ${SCRIPT} From 647900b8d0367d43b2fc4d0f82fdeb8e1587df26 Mon Sep 17 00:00:00 2001 From: Nikita Kumble Date: Fri, 31 Jul 2026 14:47:10 +0530 Subject: [PATCH 11/68] changes undo --- .../120-ibm-db2u-database/files/PostBackFlow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh index 18a94ef57..90d87d308 100755 --- a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh +++ b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh @@ -5,7 +5,7 @@ INSTOWNER=`/usr/local/bin/db2greg -dump | grep -ae "I," | grep -v "/das," | awk # Find the home directory INSTHOME=` cat /etc/passwd | grep ${INSTOWNER} | cut -d: -f6` -DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep -E "MANA|FACI" | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` +DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep MANA | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` SCRIPT=/mnt/backup/bin/PostBF_Scripts.sh echo "db2 connect to bludb" > ${SCRIPT} From 413dd4e80e5627813b8d59be0ddebf8e6e908658 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 17:19:48 +0530 Subject: [PATCH 12/68] MASCORE-15507: gate CCS/datarefinery/ws-runtimes OLM subscriptions behind < 5.3.1 --- .../110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml index 4a90cf334..cb0ec381b 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml @@ -146,6 +146,7 @@ spec: backoffLimit: 4 +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} {{- if or .Values.wml_channel .Values.wsl_channel .Values.spss_channel }} --- apiVersion: operators.coreos.com/v1alpha1 @@ -246,3 +247,4 @@ spec: {{- end }} {{- end }} +{{- end }} From 0da19330a84e3953b1f37f376ba59c235cf475a2 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 19:37:37 +0530 Subject: [PATCH 13/68] MASCORE-15507: fix semver comparison syntax - use .Compare pattern instead of lt(semver,semver) --- .../120-ibm-spark/templates/00-ibm-spark_Subscription.yaml | 2 +- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spss/templates/00-ibm-spss_Subscription.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- .../120-ibm-wml/templates/01-ibm-wml_Subscription.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- .../120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml index f76f473ca..392b67cf3 100644 --- a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml +++ b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index e12e2b3a3..77884e561 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: ae.cpd.ibm.com/v1 kind: AnalyticsEngine diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml index 87ad8ae35..d54dac607 100644 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index a88dc3343..df3319f9b 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: spssmodeler.cpd.ibm.com/v1 kind: Spss diff --git a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml index fd899c668..01f75abbd 100644 --- a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml +++ b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 64ea9fa2a..4bad95c3c 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: wml.cpd.ibm.com/v1beta1 kind: WmlBase diff --git a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml index b667f0b8e..2f30520a5 100644 --- a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml +++ b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml @@ -18,7 +18,7 @@ # installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 91f9b59df..08f0935b6 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -27,7 +27,7 @@ -{{- if lt (semver (.Values.cpd_product_version | toString)) (semver "5.3.1") }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: ws.cpd.ibm.com/v1beta1 kind: WS From 6ed6801afb9c3b95b69efe2d4173caa16a768fed Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 20:55:45 +0530 Subject: [PATCH 14/68] MASCORE-15507: install cluster-scoped chart first to register CRDs before namespace-scoped helm install --- .../templates/01-ibm-spark-cr.yaml | 29 +++++++++++++++++++ .../templates/01-ibm-spss-cr.yaml | 29 +++++++++++++++++++ .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 29 +++++++++++++++++++ 3 files changed, 87 insertions(+) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 77884e561..694550523 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -45,8 +45,37 @@ spec: - /bin/sh - -c - | + set -e helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update + + echo "Installing analyticsengine cluster-scoped chart (CRDs + ClusterRoles)..." + helm template analyticsengine-cluster ibm-charts/analyticsengine-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for analyticsengines.ae.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd analyticsengines.ae.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing analyticsengine namespace-scoped chart (operator + CR)..." helm upgrade --install analyticsengine ibm-charts/analyticsengine \ --version 12.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index df3319f9b..465f04217 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -47,8 +47,37 @@ spec: - /bin/sh - -c - | + set -e helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update + + echo "Installing spss-modeler cluster-scoped chart (CRDs + ClusterRoles)..." + helm template spss-modeler-cluster ibm-charts/spss-modeler-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for spssmodelers.spssmodeler.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd spssmodelers.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing spss-modeler namespace-scoped chart (operator + CR)..." helm upgrade --install spss-modeler ibm-charts/spss-modeler \ --version 12.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 4bad95c3c..8c2be0a27 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -45,8 +45,37 @@ spec: - /bin/sh - -c - | + set -e helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update + + echo "Installing wml cluster-scoped chart (CRDs + ClusterRoles)..." + helm template wml-cluster ibm-charts/wml-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for wmlbases.wml.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd wmlbases.wml.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing wml namespace-scoped chart (operator + CR)..." helm upgrade --install wml ibm-charts/wml \ --version 12.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ From b7e2f54bc5a3e13aa044fa5759235d3eb85e5103 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 21:16:55 +0530 Subject: [PATCH 15/68] MASCORE-15507: grant cpd-sa cluster-level CRD/ClusterRole permissions for Helm 5.3.1+ installs --- .../templates/02-ibm-cp4d_rbac.yaml | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml index 7797ff419..20f5db2fe 100644 --- a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml +++ b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml @@ -1526,3 +1526,88 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin + +{{- if not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} +--- +# For CPD 5.3.1+, cpd-sa needs cluster-level permissions to apply CRDs and +# ClusterRoles from the Helm cluster-scoped charts during service installation. +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: "cpd-sa-helm-cluster-role-{{ .Values.instance_id }}" + annotations: + argocd.argoproj.io/sync-wave: "084" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +rules: + - verbs: + - get + - list + - create + - update + - patch + - delete + apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + - verbs: + - get + - list + - create + - update + - patch + - delete + apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - clusterrolebindings + - verbs: + - get + - list + apiGroups: + - "" + resources: + - namespaces + - nodes + - verbs: + - get + - list + apiGroups: + - config.openshift.io + resources: + - clusterversions + - infrastructures + - verbs: + - use + apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + resourceNames: + - anyuid + - restricted + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: "cpd-sa-helm-cluster-rb-{{ .Values.instance_id }}" + annotations: + argocd.argoproj.io/sync-wave: "085" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +subjects: + - kind: ServiceAccount + name: cpd-sa + namespace: "{{ .Values.cpd_operators_namespace }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: "cpd-sa-helm-cluster-role-{{ .Values.instance_id }}" +{{- end }} From 846e49e0554f4c12d1a03c79fee7c943b7af2b75 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 22:32:54 +0530 Subject: [PATCH 16/68] MASCORE-15507: expand cpd-sa ClusterRole with escalate, roles, CPD API groups for Helm install --- .../templates/02-ibm-cp4d_rbac.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml index 20f5db2fe..2c8d3d747 100644 --- a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml +++ b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml @@ -1542,6 +1542,7 @@ metadata: {{ .Values.custom_labels | toYaml | indent 4 }} {{- end }} rules: + # CRD management (needed to apply cluster-scoped Helm charts) - verbs: - get - list @@ -1553,6 +1554,7 @@ rules: - apiextensions.k8s.io resources: - customresourcedefinitions + # ClusterRole/Binding management with escalate (allows granting permissions not yet held) - verbs: - get - list @@ -1560,11 +1562,28 @@ rules: - update - patch - delete + - bind + - escalate apiGroups: - rbac.authorization.k8s.io resources: - clusterroles - clusterrolebindings + # Namespaced roles/rolebindings (needed by Helm namespace-scoped charts) + - verbs: + - get + - list + - create + - update + - patch + - delete + - watch + apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + # Namespace/node read - verbs: - get - list @@ -1573,6 +1592,7 @@ rules: resources: - namespaces - nodes + # OpenShift infra - verbs: - get - list @@ -1581,6 +1601,7 @@ rules: resources: - clusterversions - infrastructures + # SCCs - verbs: - use apiGroups: @@ -1590,6 +1611,41 @@ rules: resourceNames: - anyuid - restricted + - nonroot + - privileged + # CPD service API groups (needed to grant these permissions in cluster-scoped ClusterRoles) + - verbs: + - get + - list + - create + - update + - patch + - delete + - watch + apiGroups: + - ae.cpd.ibm.com + - wml.cpd.ibm.com + - spssmodeler.cpd.ibm.com + - ws.cpd.ibm.com + - ccs.cpd.ibm.com + - opensearch.cloudpackopen.ibm.com + - datarefinery.cpd.ibm.com + - wsruntimes.cpd.ibm.com + resources: + - "*" + # Webhook configs (needed by some Helm charts) + - verbs: + - get + - list + - create + - update + - patch + - delete + apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + - validatingwebhookconfigurations --- kind: ClusterRoleBinding From 9c91cf793257e2343d5a10723b81ca2b2d1d47dd Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 31 Jul 2026 23:48:54 +0530 Subject: [PATCH 17/68] MASCORE-15507: pin cli image to digest instead of :latest in Helm install jobs --- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 694550523..8dda22647 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -40,7 +40,7 @@ spec: spec: containers: - name: helm-install - image: quay.io/ibmmas/cli:latest + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 command: - /bin/sh - -c diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 465f04217..47612cb8b 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -42,7 +42,7 @@ spec: spec: containers: - name: helm-install - image: quay.io/ibmmas/cli:latest + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 command: - /bin/sh - -c diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 8c2be0a27..b8f7e5236 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -40,7 +40,7 @@ spec: spec: containers: - name: helm-install - image: quay.io/ibmmas/cli:latest + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 command: - /bin/sh - -c diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 08f0935b6..e44e2fea2 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -74,7 +74,7 @@ spec: spec: containers: - name: helm-install - image: quay.io/ibmmas/cli:latest + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 command: - /bin/sh - -c From e410251c2bbfae71166cecf3761b310c882fbcf1 Mon Sep 17 00:00:00 2001 From: Nikita Kumble Date: Mon, 3 Aug 2026 13:12:14 +0530 Subject: [PATCH 18/68] adding temp changes for facilities --- .../120-ibm-db2u-database/files/PostBackFlow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh index 90d87d308..18a94ef57 100755 --- a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh +++ b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh @@ -5,7 +5,7 @@ INSTOWNER=`/usr/local/bin/db2greg -dump | grep -ae "I," | grep -v "/das," | awk # Find the home directory INSTHOME=` cat /etc/passwd | grep ${INSTOWNER} | cut -d: -f6` -DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep MANA | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` +DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep -E "MANA|FACI" | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` SCRIPT=/mnt/backup/bin/PostBF_Scripts.sh echo "db2 connect to bludb" > ${SCRIPT} From a561f1e92ccb1d073f6c808367ed11d3d2e73382 Mon Sep 17 00:00:00 2001 From: Nikita Kumble Date: Tue, 4 Aug 2026 13:28:52 +0530 Subject: [PATCH 19/68] undone postbackflow.sh script --- .../120-ibm-db2u-database/files/PostBackFlow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh index 18a94ef57..90d87d308 100755 --- a/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh +++ b/instance-applications/120-ibm-db2u-database/files/PostBackFlow.sh @@ -5,7 +5,7 @@ INSTOWNER=`/usr/local/bin/db2greg -dump | grep -ae "I," | grep -v "/das," | awk # Find the home directory INSTHOME=` cat /etc/passwd | grep ${INSTOWNER} | cut -d: -f6` -DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep -E "MANA|FACI" | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` +DEST_USER=`db2 list applications show detail | cut -d" " -f1 | grep -v DB2INST1 | grep -v CTGINST1 | grep -v CONNECT |grep MANA | grep -v "\-\-" |grep -v MONITOR | sort -n | uniq | tail -1` SCRIPT=/mnt/backup/bin/PostBF_Scripts.sh echo "db2 connect to bludb" > ${SCRIPT} From 4aa87d7d22dfd534393fc83c09438177e952ca75 Mon Sep 17 00:00:00 2001 From: Adit Yarra Date: Wed, 5 Aug 2026 15:14:25 +0530 Subject: [PATCH 20/68] initial commit --- instance-applications/100-ibm-sls/README.md | 4 ++++ .../100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml | 4 ++++ .../ibm-mas-instance-root/templates/100-ibm-sls-app.yaml | 3 +++ .../ibm-mas-sls-root/templates/100-ibm-sls-app.yaml | 3 +++ .../100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml | 4 ++++ 5 files changed, 18 insertions(+) diff --git a/instance-applications/100-ibm-sls/README.md b/instance-applications/100-ibm-sls/README.md index 78ae3fbec..f0845de86 100644 --- a/instance-applications/100-ibm-sls/README.md +++ b/instance-applications/100-ibm-sls/README.md @@ -69,6 +69,10 @@ ibm_sls: - alias: string crt: string (multiline) + # Pod Templates (optional) + sls_pod_templates: + key: value + # Certificate Authority (optional) internal_certificate_authority: string ``` diff --git a/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml b/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml index b5b8b3aa8..2277794be 100644 --- a/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml +++ b/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml @@ -17,6 +17,10 @@ spec: {{ .Values.mongo_spec | toYaml | indent 4 }} license: accept: true +{{- if not (empty .Values.sls_pod_templates) }} + podTemplates: +{{ .Values.sls_pod_templates | toYaml | indent 4 }} +{{- end }} settings: auth: enforce: true diff --git a/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml b/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml index e1d364f59..e3ce37274 100644 --- a/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml @@ -80,6 +80,9 @@ spec: devops_build_number: "{{ .Values.devops.build_number }}" gitops_version: "{{ .Values.source.revision }}" cli_image_repo: {{ .Values.cli_image_repo }} + {{- if .Values.ibm_sls.sls_pod_templates }} + sls_pod_templates: {{ .Values.ibm_sls.sls_pod_templates | toYaml | nindent 14 }} + {{- end }} {{- if .Values.ibm_sls.internal_certificate_authority }} internal_certificate_authority: "{{ .Values.ibm_sls.internal_certificate_authority }}" {{- end }} diff --git a/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml b/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml index 71c353c2b..d852e67c4 100644 --- a/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml +++ b/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml @@ -78,6 +78,9 @@ spec: devops_mongo_uri: "{{ .Values.devops.mongo_uri }}" devops_build_number: "{{ .Values.devops.build_number }}" gitops_version: "{{ .Values.source.revision }}" + {{- if .Values.ibm_sls_standalone.sls_pod_templates }} + sls_pod_templates: {{ .Values.ibm_sls_standalone.sls_pod_templates | toYaml | nindent 14 }} + {{- end }} {{- if .Values.ibm_sls_standalone.internal_certificate_authority }} internal_certificate_authority: "{{ .Values.ibm_sls_standalone.internal_certificate_authority }}" {{- end }} diff --git a/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml b/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml index 276cbc3f1..3914dc7d8 100644 --- a/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml +++ b/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml @@ -18,6 +18,10 @@ spec: {{ .Values.mongo_spec | toYaml | indent 4 }} license: accept: true +{{- if not (empty .Values.sls_pod_templates) }} + podTemplates: +{{ .Values.sls_pod_templates | toYaml | indent 4 }} +{{- end }} settings: auth: enforce: true From 5bf472cbbc1e2f962d8791b35553834675f86184 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 11:13:45 +0530 Subject: [PATCH 21/68] MASCORE-15507: fix CPD 5.3.1 Helm service install correctness - Gate OperandRegistry/OperandConfig to < 5.3.1 to prevent OLM resource drift when services are installed via Helm - Gate spark-hb-control-plane patch job to < 5.3.1; OLM-managed deployment does not exist in Helm install model - Add CRD establishment wait inside WSL install_component() between cluster-scoped apply and namespace-scoped helm upgrade to prevent race condition - Extend Helm Job --wait timeout from 30m to 60m for WML, SPSS and Spark to match WSL and avoid premature timeout on loaded clusters --- .../09-ibm-cp4d_services_dependencies.yaml | 2 +- .../templates/01-ibm-spark-cr.yaml | 2 +- .../templates/02-ibm-spark-control-plane.yaml | 3 +- .../templates/01-ibm-spss-cr.yaml | 2 +- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 54 +++++++++++++++++++ 6 files changed, 60 insertions(+), 5 deletions(-) diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml index aecaafdef..6a270dcee 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml @@ -1,4 +1,4 @@ -{{- if or .Values.wsl_channel .Values.spss_channel }} +{{- if and (or .Values.wsl_channel .Values.spss_channel) (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} # Custom Operand Registries # ----------------------------------------------------------------------------- --- diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 8dda22647..be1a252fa 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -88,7 +88,7 @@ spec: --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ --set global.imagePullSecret=ibm-entitlement-key \ --set analyticsengine.scaleConfig={{ .Values.cpd_service_scale_config }} \ - --wait --timeout 30m + --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 2 diff --git a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml index 65d3bf87d..e2c7b5f8a 100644 --- a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml +++ b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml @@ -55,6 +55,7 @@ are required here. */}} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- kind: ServiceAccount apiVersion: v1 @@ -165,5 +166,5 @@ spec: restartPolicy: Never serviceAccountName: spark-cp-sa backoffLimit: 4 - +{{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 47612cb8b..6f7c7368a 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -90,7 +90,7 @@ spec: --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ --set global.imagePullSecret=ibm-entitlement-key \ --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ - --wait --timeout 30m + --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 2 diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index b8f7e5236..311232e18 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -88,7 +88,7 @@ spec: --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ --set global.imagePullSecret=ibm-entitlement-key \ --set wml.scaleConfig={{ .Values.cpd_service_scale_config }} \ - --wait --timeout 30m + --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 2 diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index e44e2fea2..477584a6f 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -120,6 +120,12 @@ spec: -f /tmp/cpd-global-values.yaml \ --namespace ${OPERATORS_NS} | oc apply -f - + # Wait for all CRDs from the cluster-scoped chart to be established + # before running the namespace-scoped chart that depends on them. + echo " [${NAME}] Waiting for CRDs to be established..." + sleep 5 + oc wait crd --all --for=condition=Established --timeout=120s 2>/dev/null || true + # 2. Namespace-scoped chart (Operator + CR) echo " [${NAME}] Installing namespace-scoped chart..." helm upgrade --install ${NAME} ${HELM_REPO}/${CHART} \ @@ -140,6 +146,22 @@ spec: "opencontent-opensearch-cluster-scoped" \ "1.2.0" + echo "Waiting for opensearchclusters.opensearch.cloudpackopen.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd opensearchclusters.opensearch.cloudpackopen.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + # ---------------------------------------------------------------- # Step 2: CCS - Common Core Services (dependency) # ---------------------------------------------------------------- @@ -165,6 +187,22 @@ spec: "datarefinery-cluster-scoped" \ "12.1.0" + echo "Waiting for datarefineries.datarefinery.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd datarefineries.datarefinery.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + # ---------------------------------------------------------------- # Step 4: WS Runtimes (dependency) # ---------------------------------------------------------------- @@ -174,6 +212,22 @@ spec: "ws-runtimes-cluster-scoped" \ "12.1.0" + echo "Waiting for wsruntimes.wsruntimes.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd wsruntimes.wsruntimes.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + # ---------------------------------------------------------------- # Step 5: Watson Studio (main component) # ---------------------------------------------------------------- From cdaa41aa92017136b3cebabf74200722585da5ba Mon Sep 17 00:00:00 2001 From: Adit Date: Thu, 6 Aug 2026 11:45:26 +0530 Subject: [PATCH 22/68] Merge 15507 and 15757 (#520) * Added CPD 5.3.1 gitops support * [minor] Fix CatalogSources template - add CPD 5.3.1 block (MASCORE-15507) * For CPD 5.3.1 services are installed via Helm * MASCORE-15507: Fix WSL Helm Job - install deps in sequence; add Helm Jobs for WML, Spark, SPSS * MASCORE-15507: Pass cpd_product_version to WSL, Spark, SPSS ArgoCD Applications * MASCORE-15507: Fix heredoc in WSL Helm Job - use printf to avoid YAML/shell conflict * Fix semver comparison - use toString to handle unquoted cpd_product_version value * MASCORE-15507: skip OLM CCS/OpenSearch post-sync patching for CPD 5.3.1+ * MASCORE-15507: bump job version to v2 to force new job name after script change * minor update * changes undo * MASCORE-15507: gate CCS/datarefinery/ws-runtimes OLM subscriptions behind < 5.3.1 * MASCORE-15507: fix semver comparison syntax - use .Compare pattern instead of lt(semver,semver) * MASCORE-15507: install cluster-scoped chart first to register CRDs before namespace-scoped helm install * MASCORE-15507: grant cpd-sa cluster-level CRD/ClusterRole permissions for Helm 5.3.1+ installs * MASCORE-15507: expand cpd-sa ClusterRole with escalate, roles, CPD API groups for Helm install * MASCORE-15507: pin cli image to digest instead of :latest in Helm install jobs * adding temp changes for facilities * undone postbackflow.sh script * MASCORE-15507: fix CPD 5.3.1 Helm service install correctness - Gate OperandRegistry/OperandConfig to < 5.3.1 to prevent OLM resource drift when services are installed via Helm - Gate spark-hb-control-plane patch job to < 5.3.1; OLM-managed deployment does not exist in Helm install model - Add CRD establishment wait inside WSL install_component() between cluster-scoped apply and namespace-scoped helm upgrade to prevent race condition - Extend Helm Job --wait timeout from 30m to 60m for WML, SPSS and Spark to match WSL and avoid premature timeout on loaded clusters --------- Co-authored-by: Sakshi Singhroha Co-authored-by: Nikita Kumble --- .../templates/00-ibm-cp4d-olm-531.yaml | 678 ++++++++++++++++++ .../templates/01-ibm-cp4d-CatalogSources.yaml | 72 ++ .../templates/00-ibm-cp4d-olm-531.yaml | 677 +++++++++++++++++ .../templates/02-ibm-cp4d_rbac.yaml | 141 ++++ .../templates/09-ibm-cp4d_services_base.yaml | 2 + .../09-ibm-cp4d_services_dependencies.yaml | 2 +- .../04-db2u-Volatile-Runstats_Cron.yaml | 1 + .../templates/00-ibm-spark_Subscription.yaml | 3 +- .../templates/01-ibm-spark-cr.yaml | 71 ++ .../templates/02-ibm-spark-control-plane.yaml | 3 +- .../120-ibm-spark/values.yaml | 1 + .../templates/00-ibm-spss_Subscription.yaml | 2 + .../templates/01-ibm-spss-cr.yaml | 74 +- .../120-ibm-spss/values.yaml | 1 + .../templates/01-ibm-wml_Subscription.yaml | 2 + .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 71 ++ instance-applications/120-ibm-wml/values.yaml | 1 + .../templates/00-ibm-wsl_Subscription.yaml | 22 + .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 221 ++++++ .../templates/01-cpd-service-post-ops.yaml | 11 +- .../templates/120-ibm-spark-app.yaml | 1 + .../templates/120-ibm-spss-app.yaml | 1 + .../templates/120-ibm-wsl-app.yaml | 1 + 23 files changed, 2053 insertions(+), 6 deletions(-) create mode 100644 instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml create mode 100644 instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml diff --git a/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml b/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml new file mode 100644 index 000000000..fb9b366fd --- /dev/null +++ b/instance-applications/101-ibm-sync-jobs-cp4d/templates/00-ibm-cp4d-olm-531.yaml @@ -0,0 +1,678 @@ +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: olm-utils-cm + namespace: mas-{{ .Values.instance_id }}-syncres + annotations: + argocd.argoproj.io/sync-wave: "00" + labels: + app.kubernetes.io/name: olm-utils +{{- if .Values.custom_labels }} +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +data: + licenses_urls: |- + SWHP: + url: "https://ibm.biz/BdbGRu" + description: "IBM Software Hub Premium Cartridge" + SWHAI: + url: "https://ibm.biz/BdbGRL" + description: "IBM Softare Hub AI Assistant Cartridge" + EE: + url: https://ibm.biz/Bdbq3x + description: "IBM Cloud Pak for Data Enterprise Edition" + SE: + url: https://ibm.biz/Bdbq3H + description: "IBM Cloud Pak for Data Standard Edition" + WXAI: + url: https://ibm.biz/BdbKbw + description: "IBM watsonx.ai" + DB2CE: + url: https://ibm.biz/BdnPB7 + description: "IBM Db2 Community Edition" + DB2SE: + url: https://ibm.biz/BdnPdB + description: "IBM Db2 Standard Edition Cartridge for IBM Cloud Pak for Data" + DB2AE: + url: https://ibm.biz/BdnPBW + description: "IBM Db2 Advanced Edition Cartridge for IBM Cloud Pak for Data" + DG: + url: "https://ibm.biz/dg4zos_v320" + description: "IBM Data Gate for z/OS with Cloud Pak for Data" + DGWXD: + url: "https://ibm.biz/dgx_v13" + description: "IBM Data Gate for watsonx" + DGWXDB: + url: "https://ibm.biz/wxd-dgx" + description: "IBM watsonx.data with Data Gate for IBM Z" + DGWXDPB: + url: "https://ibm.biz/wxdprem-dgx111" + description: "IBM watsonx.data Premium with Data Gate for IBM Z" + DGFS: + url: "https://ibm.biz/dg4fs_v13" + description: "IBM Data Gate for Financial Services" + IKCS: + url: https://ibm.biz/Bdmm4V + description: "IBM Knowledge Catalog Standard" + IKCP: + url: https://ibm.biz/Bdmm4J + description: "IBM Knowledge Catalog Premium" + IDRC: + url: https://ibm.biz/BdpHpg + description: "IBM Data Replication Cartridge" + IIDRC: + url: https://ibm.biz/BdpHph + description: "IBM InfoSphere Data Replication Cartridge" + IDRM: + url: https://ibm.biz/BdpHpJ + description: "IBM Data Replication Modernization" + IIDRM: + url: https://ibm.biz/BdpHpA + description: "IBM InfoSphere Data Replication Modernization" + IDRZOS: + url: https://ibm.biz/BdpHp9 + description: "IBM Data Replication for Db2 z/OS Cartridge" + IIDRWXTO: + url: https://ibm.biz/BdpHpu + description: "IBM InfoSphere Data Replication for watsonx.data Cartridge" + IIDRWXAO: + url: https://ibm.biz/BdpHpL + description: "IBM InfoSphere Data Replication Cartridge Add-on for IBM watsonx.data" + WXD: + url: https://ibm.biz/BdpdBF + description: "IBM watsonx.data" + WXDP: + url: https://ibm.biz/BdpzEx + description: "IBM watsonx.data Premium Edition" + WCA: + url: https://ibm.biz/Bdbv9x + description: "IBM watsonx Code Assistant" + WCAA: + url: https://ibm.biz/Bdbv9D + description: "IBM watsonx Code Assistant for Red Hat Ansible Lightspeed" + DPH: + url: https://ibm.biz/BdbQMv + description: "IBM Data Product Hub" + + release_components_meta: |- + scheduler: + case_version: 1.61.0 + sub_channel: "v1.61" + csv_version: 1.61.0 + cr_version: 1.61.0 + + cpfs: + csv_version: 4.17.0 + case_version: 4.17.0 + sub_channel: "v4.17" + + ibm-common-service-operator: + cr_version: 4.17.0 + + ibm-iam-operator: + cr_version: 4.16.0 + + ibm-namespace-scope-operator: + cr_version: 4.3.4 + + ibm-cert-manager: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_events_operator: + case_version: 6.0.0 + sub_channel: "v6.0" + csv_version: 6.0.0 + cr_version: 4.1.1 + + streamsets: + case_version: 9.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-streamsets-sdi: + case_version: 2.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-licensing: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_usage_metering: + case_version: 1.0.4 + csv_version: 1.0.4 + sub_channel: "v1.0" + cr_version: 1.0.4 + + cpd_platform: + case_version: 5.4.0 + csv_version: 6.4.0 + sub_channel: "v6.4" + cr_version: 5.4.0 + + platform-config: + cr_version: 5.4.0 + + ibm_swhcc: + case_version: 5.4.0 + csv_version: 5.4.0 + sub_channel: "v5.4" + cr_version: 5.4.0 + + zen: + case_version: 6.4.0 + sub_channel: "v6.4" + csv_version: 6.4.0 + cr_version: 6.4.0 + + analyticsengine: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + cognos_analytics: + case_version: 29.1.0 + sub_channel: "v29.1" + cr_version: 29.1.0 + csv_version: 29.1.0 + + ccs: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + dashboard: + case_version: 4.0.0 + sub_channel: "v4.0" + csv_version: 4.0.0 + cr_version: 5.3.0 + + datarefinery: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: "v12.1" + cr_version: 12.1.0 + + canvasbase: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + spss: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + syntheticdata: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + datastage_ent: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + datastage_ent_plus: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + informix: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + informix_cp4d: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + openscale: + case_version: 10.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + ws: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + ws_runtimes: + case_version: 12.1.0 + cr_version: 12.1.0 + + db2aaservice: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2oltp: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2wh: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2u: + case_version: 7.5.2 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + datagate: + case_version: 11.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 9.1.0 + + dods: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + hee: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + dv: + case_version: 8.1.0 + sub_channel: "v8.1" + csv_version: 8.1.0 + cr_version: 3.3.1 + + bigsql: + case_version: 14.1.0 + sub_channel: "v14.1" + csv_version: 14.1.0 + cr_version: 8.3.1 + + planning_analytics: + case_version: 5.3.1 + sub_channel: "v11.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + rstudio: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + watson_assistant: + case_version: 5.11.0 + sub_channel: "v5.11" + csv_version: 5.11.0 + cr_version: "5.3.1" + + watson_discovery: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + watson_speech: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + wkc: + case_version: 5.3.1 + sub_channel: "v9.1" + csv_version: 2.3.1 + cr_version: 5.3.1 + + ikc_standard: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + ikc_premium: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + datalineage: + case_version: 5.3.1 + sub_channel: "v7.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + udp: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster: + case_version: 9.1.0 + csv_version: 9.1.0 + sub_channel: "v9.1" + cr_version: 9.1.0 + + dataproduct: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + semantic_automation: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster_instance: + cr_version: 9.1.0 + + dp: + case_version: 11.1.0 + csv_version: 11.1.0 + sub_channel: "v11.1" + cr_version: 5.3.1 + + wml: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + dmc: + case_version: 8.11.0 + csv_version: 5.11.0 + cr_version: 5.3.1 + sub_channel: "v5.11" + + openpages: + case_version: 10.1.0 + csv_version: 10.1.0 + cr_version: 9.7.0 + sub_channel: "v10.1" + + openpages_instance: + cr_version: 9.7.0 + + mantaflow: + case_version: 2.4.0 + csv_version: 2.4.0 + sub_channel: "v2.4" + cr_version: 42.15.0 + + match360: + case_version: 4.11.0 + csv_version: 4.11.0 + cr_version: 4.11.50 + sub_channel: "v4.11" + + model_gateway: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + opencontent_opensearch: + case_version: 1.2.0 + csv_version: 1.2.0 + cr_version: 1.2.0 + sub_channel: "v1.1" + + opencontent_redis: + case_version: 1.6.11 + csv_version: 1.6.11 + sub_channel: "v1.6" + + ibm_redis_cp: + case_version: 1.3.1 + csv_version: 1.3.1 + sub_channel: "v1.3" + cr_version: 1.3.1 + + opencontent_rabbitmq: + case_version: 1.3.0 + csv_version: 1.3.0 + sub_channel: "v1.0" + cr_version: 1.3.0 + + opencontent_fdb: + case_version: 5.3.1 + csv_version: 5.3.1 + cr_version: 5.3.1 + sub_channel: "v5.3" + + fdb_k8s: + csv_version: 5.3.1 + sub_channel: "v5.3" + + opencontent_minio: + case_version: 1.0.23 + csv_version: 1.0.18 + + opencontent_etcd: + case_version: 2.0.57 + csv_version: 1.0.47 + + opencontent_auditwebhook: + case_version: 1.0.24 + csv_version: 0.3.1 + + watson_gateway: + case_version: 2.2.0 + csv_version: 2.2.0 + cr_version: 2.2.0 + + data_governor: + case_version: 8.1.0 + csv_version: 8.1.0 + sub_channel: v8.1 + cr_version: 3.29.4 + + ws_pipelines: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 5.3.1 + + postgresql: + case_version: 5.31.0 + sub_channel: "stable-v1.25" + csv_version: 1.25.5 + cr_version: 1.25.5 + + edb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + mongodb: + case_version: 5.31.0 + sub_channel: "stable" + csv_version: 1.33.0 + cr_version: 5.31.0 + + mongodb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + dpra: + deprecated: true + case_version: 1.20.0 + sub_channel: "v1.20" + csv_version: 1.20.0 + cr_version: 1.20.0 + + factsheet: + case_version: 7.1.0 + csv_version: 7.1.0 + sub_channel: "v7.1" + cr_version: 5.3.1 + + replication: + case_version: 5.3.1 + csv_version: 7.1.0 + cr_version: 5.3.1 + sub_channel: "v7.1" + + voice_gateway: + case_version: 1.13.0 + csv_version: 1.13.0 + sub_channel: v1.13 + cr_version: 1.13.0 + + watsonx_data: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + watsonx_data_premium: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + wxd_query_optimizer: + component_dependencies: + - db2u + + watsonx_ai: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + osai_min_version: 2.19.0 + + watsonx_ai_ifm: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + + watsonx_bi_assistant: + case_version: 3.4.0 + csv_version: 3.4.0 + sub_channel: v3.4 + cr_version: 3.4.0 + + wca_ansible: + case_version: 4.1.0 + cr_version: 5.3.1 + + wca: + case_version: 3.1.0 + cr_version: 5.3.1 + + wca_z: + case_version: 4.1.0 + csv_version: 4.1.0 + sub_channel: v4.0 + cr_version: 5.3.1 + + wca_z_agentic: + case_version: 2.0.1 + csv_version: 2.0.1 + sub_channel: v2.1 + cr_version: 2.7.1 + + wca_z_ce: + case_version: 5.3.1 + sub_channel: v2.8 + csv_version: 2.8.10 + cr_version: 2.8.10 + + wca_z_cg: + case_version: 5.3.1 + sub_channel: v1.1 + csv_version: 1.1.1 + cr_version: 2.8.10 + + wca_base: + case_version: 4.1.0 + cr_version: 5.3.1 + + ibm_neo4j: + case_version: 1.3.1 + sub_channel: "v4.1" + csv_version: 1.3.1 + cr_version: 1.3.1 + + watsonx_governance: + case_version: 5.1.0 + sub_channel: "v5.1" + csv_version: 5.1.0 + cr_version: 2.3.1 + + watsonx_orchestrate: + case_version: 7.1.0 + sub_channel: "v7.1" + csv_version: 7.1.0 + cr_version: "7.1.0" + + watsonx_dataintegration: + case_version: 2.4.0 + sub_channel: "v2.4" + csv_version: 5.3.1 + cr_version: 2.3.1 + + watsonx_dataintelligence: + case_version: 2.3.1 + sub_channel: "v2.31" + csv_version: 2.3.1 + cr_version: 2.3.1 + + wca_z_understand: + case_version: 1.1.0 + csv_version: 1.1.0 + sub_channel: v1.1 + cr_version: 2.8.10 + + ibm-databand: + case_version: 1.0.0 + csv_version: 1.0.0 + cr_version: 1.0.0 + sub_channel: "v1.0.0" + + datastax_mc: + case_version: 1.16.1 + cr_version: 1.16.1 + + ibm_wxd_opensearch: + case_version: 3.3.2 + cr_version: 3.3.2 + release_version: 5.3.1 +{{- end }} + + + diff --git a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml index 461104031..8c0985a57 100644 --- a/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml +++ b/instance-applications/101-ibm-sync-jobs-cp4d/templates/01-ibm-cp4d-CatalogSources.yaml @@ -293,4 +293,76 @@ spec: registryPoll: interval: 30m0s {{- end }} + + + +# cpd 5.3.1 catalog sources +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: cpd-platform + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + displayName: ibm-cp-datacore-6.4.0-50 + image: icr.io/cpopen/ibm-cpd-platform-operator-catalog@sha256:0a63f6bf9c312efc3daca05a657c70f300eaef7f5a36055753b11fcf014688ca + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s + +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: opencloud-operators + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + displayName: ibm-cp-common-services-4.17.0 + image: icr.io/cpopen/ibm-common-service-catalog@sha256:de97dd2a35b4c58da9b7ad5d89976d7a4184541e2e0a78a1c71e441a0105ce6e + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s + +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: ibm-zen-operator-catalog + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "001" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + displayName: ibm-zen-6.4.0-92 + image: icr.io/cpopen/ibm-zen-operator-catalog@sha256:9a02519e5ab679f0807fc5b7cfc5fc96242961bee0e1d3144012d33e925e6a99 + publisher: IBM + sourceType: grpc + updateStrategy: + registryPoll: + interval: 30m0s +{{- end }} {{- end }} + + + + diff --git a/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml b/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml new file mode 100644 index 000000000..ae436acc7 --- /dev/null +++ b/instance-applications/110-ibm-cp4d/templates/00-ibm-cp4d-olm-531.yaml @@ -0,0 +1,677 @@ +{{- if eq .Values.cpd_product_version "5.3.1" }} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: olm-utils-cm + namespace: {{ .Values.cpd_instance_namespace }} + annotations: + argocd.argoproj.io/sync-wave: "00" + labels: + app.kubernetes.io/name: olm-utils +{{- if .Values.custom_labels }} +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +data: + licenses_urls: |- + SWHP: + url: "https://ibm.biz/BdbGRu" + description: "IBM Software Hub Premium Cartridge" + SWHAI: + url: "https://ibm.biz/BdbGRL" + description: "IBM Softare Hub AI Assistant Cartridge" + EE: + url: https://ibm.biz/Bdbq3x + description: "IBM Cloud Pak for Data Enterprise Edition" + SE: + url: https://ibm.biz/Bdbq3H + description: "IBM Cloud Pak for Data Standard Edition" + WXAI: + url: https://ibm.biz/BdbKbw + description: "IBM watsonx.ai" + DB2CE: + url: https://ibm.biz/BdnPB7 + description: "IBM Db2 Community Edition" + DB2SE: + url: https://ibm.biz/BdnPdB + description: "IBM Db2 Standard Edition Cartridge for IBM Cloud Pak for Data" + DB2AE: + url: https://ibm.biz/BdnPBW + description: "IBM Db2 Advanced Edition Cartridge for IBM Cloud Pak for Data" + DG: + url: "https://ibm.biz/dg4zos_v320" + description: "IBM Data Gate for z/OS with Cloud Pak for Data" + DGWXD: + url: "https://ibm.biz/dgx_v13" + description: "IBM Data Gate for watsonx" + DGWXDB: + url: "https://ibm.biz/wxd-dgx" + description: "IBM watsonx.data with Data Gate for IBM Z" + DGWXDPB: + url: "https://ibm.biz/wxdprem-dgx111" + description: "IBM watsonx.data Premium with Data Gate for IBM Z" + DGFS: + url: "https://ibm.biz/dg4fs_v13" + description: "IBM Data Gate for Financial Services" + IKCS: + url: https://ibm.biz/Bdmm4V + description: "IBM Knowledge Catalog Standard" + IKCP: + url: https://ibm.biz/Bdmm4J + description: "IBM Knowledge Catalog Premium" + IDRC: + url: https://ibm.biz/BdpHpg + description: "IBM Data Replication Cartridge" + IIDRC: + url: https://ibm.biz/BdpHph + description: "IBM InfoSphere Data Replication Cartridge" + IDRM: + url: https://ibm.biz/BdpHpJ + description: "IBM Data Replication Modernization" + IIDRM: + url: https://ibm.biz/BdpHpA + description: "IBM InfoSphere Data Replication Modernization" + IDRZOS: + url: https://ibm.biz/BdpHp9 + description: "IBM Data Replication for Db2 z/OS Cartridge" + IIDRWXTO: + url: https://ibm.biz/BdpHpu + description: "IBM InfoSphere Data Replication for watsonx.data Cartridge" + IIDRWXAO: + url: https://ibm.biz/BdpHpL + description: "IBM InfoSphere Data Replication Cartridge Add-on for IBM watsonx.data" + WXD: + url: https://ibm.biz/BdpdBF + description: "IBM watsonx.data" + WXDP: + url: https://ibm.biz/BdpzEx + description: "IBM watsonx.data Premium Edition" + WCA: + url: https://ibm.biz/Bdbv9x + description: "IBM watsonx Code Assistant" + WCAA: + url: https://ibm.biz/Bdbv9D + description: "IBM watsonx Code Assistant for Red Hat Ansible Lightspeed" + DPH: + url: https://ibm.biz/BdbQMv + description: "IBM Data Product Hub" + + release_components_meta: |- + scheduler: + case_version: 1.61.0 + sub_channel: "v1.61" + csv_version: 1.61.0 + cr_version: 1.61.0 + + cpfs: + csv_version: 4.17.0 + case_version: 4.17.0 + sub_channel: "v4.17" + + ibm-common-service-operator: + cr_version: 4.17.0 + + ibm-iam-operator: + cr_version: 4.16.0 + + ibm-namespace-scope-operator: + cr_version: 4.3.4 + + ibm-cert-manager: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_events_operator: + case_version: 6.0.0 + sub_channel: "v6.0" + csv_version: 6.0.0 + cr_version: 4.1.1 + + streamsets: + case_version: 9.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-streamsets-sdi: + case_version: 2.0.0 + csv_version: 6.3.1 + cr_version: 6.3.1 + sub_channel: "v6.3.1" + + ibm-licensing: + csv_version: 4.2.20 + case_version: 4.2.20 + sub_channel: "v4.2" + + ibm_usage_metering: + case_version: 1.0.4 + csv_version: 1.0.4 + sub_channel: "v1.0" + cr_version: 1.0.4 + + cpd_platform: + case_version: 5.4.0 + csv_version: 6.4.0 + sub_channel: "v6.4" + cr_version: 5.4.0 + + platform-config: + cr_version: 5.4.0 + + ibm_swhcc: + case_version: 5.4.0 + csv_version: 5.4.0 + sub_channel: "v5.4" + cr_version: 5.4.0 + + zen: + case_version: 6.4.0 + sub_channel: "v6.4" + csv_version: 6.4.0 + cr_version: 6.4.0 + + analyticsengine: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + cognos_analytics: + case_version: 29.1.0 + sub_channel: "v29.1" + cr_version: 29.1.0 + csv_version: 29.1.0 + + ccs: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + dashboard: + case_version: 4.0.0 + sub_channel: "v4.0" + csv_version: 4.0.0 + cr_version: 5.3.0 + + datarefinery: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: "v12.1" + cr_version: 12.1.0 + + canvasbase: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + spss: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + syntheticdata: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + datastage_ent: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + datastage_ent_plus: + case_version: 11.1.0 + csv_version: 9.1.0 + cr_version: 5.3.1 + sub_channel: "v9.1" + + informix: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + informix_cp4d: + case_version: 10.1.0 + sub_channel: "v10.1" + csv_version: 10.1.0 + cr_version: 10.1.0 + + openscale: + case_version: 10.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + ws: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + ws_runtimes: + case_version: 12.1.0 + cr_version: 12.1.0 + + db2aaservice: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2oltp: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2wh: + case_version: 5.3.1 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + db2u: + case_version: 7.5.2 + sub_channel: "v7.7" + csv_version: 7.7.0 + cr_version: 5.3.1 + + datagate: + case_version: 11.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 9.1.0 + + dods: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + hee: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + dv: + case_version: 8.1.0 + sub_channel: "v8.1" + csv_version: 8.1.0 + cr_version: 3.3.1 + + bigsql: + case_version: 14.1.0 + sub_channel: "v14.1" + csv_version: 14.1.0 + cr_version: 8.3.1 + + planning_analytics: + case_version: 5.3.1 + sub_channel: "v11.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + rstudio: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + watson_assistant: + case_version: 5.11.0 + sub_channel: "v5.11" + csv_version: 5.11.0 + cr_version: "5.3.1" + + watson_discovery: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + watson_speech: + case_version: 11.1.0 + sub_channel: "v11.1" + csv_version: 11.1.0 + cr_version: 5.3.1 + + wkc: + case_version: 5.3.1 + sub_channel: "v9.1" + csv_version: 2.3.1 + cr_version: 5.3.1 + + ikc_standard: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + ikc_premium: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + datalineage: + case_version: 5.3.1 + sub_channel: "v7.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + udp: + case_version: 5.3.1 + sub_channel: "v5.31" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster: + case_version: 9.1.0 + csv_version: 9.1.0 + sub_channel: "v9.1" + cr_version: 9.1.0 + + dataproduct: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + semantic_automation: + case_version: 5.3.1 + sub_channel: "v8.1" + csv_version: 5.3.1 + cr_version: 5.3.1 + + productmaster_instance: + cr_version: 9.1.0 + + dp: + case_version: 11.1.0 + csv_version: 11.1.0 + sub_channel: "v11.1" + cr_version: 5.3.1 + + wml: + case_version: 12.1.0 + sub_channel: "v9.1" + csv_version: 9.1.0 + cr_version: 5.3.1 + + dmc: + case_version: 8.11.0 + csv_version: 5.11.0 + cr_version: 5.3.1 + sub_channel: "v5.11" + + openpages: + case_version: 10.1.0 + csv_version: 10.1.0 + cr_version: 9.7.0 + sub_channel: "v10.1" + + openpages_instance: + cr_version: 9.7.0 + + mantaflow: + case_version: 2.4.0 + csv_version: 2.4.0 + sub_channel: "v2.4" + cr_version: 42.15.0 + + match360: + case_version: 4.11.0 + csv_version: 4.11.0 + cr_version: 4.11.50 + sub_channel: "v4.11" + + model_gateway: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 12.1.0 + + opencontent_opensearch: + case_version: 1.2.0 + csv_version: 1.2.0 + cr_version: 1.2.0 + sub_channel: "v1.1" + + opencontent_redis: + case_version: 1.6.11 + csv_version: 1.6.11 + sub_channel: "v1.6" + + ibm_redis_cp: + case_version: 1.3.1 + csv_version: 1.3.1 + sub_channel: "v1.3" + cr_version: 1.3.1 + + opencontent_rabbitmq: + case_version: 1.3.0 + csv_version: 1.3.0 + sub_channel: "v1.0" + cr_version: 1.3.0 + + opencontent_fdb: + case_version: 5.3.1 + csv_version: 5.3.1 + cr_version: 5.3.1 + sub_channel: "v5.3" + + fdb_k8s: + csv_version: 5.3.1 + sub_channel: "v5.3" + + opencontent_minio: + case_version: 1.0.23 + csv_version: 1.0.18 + + opencontent_etcd: + case_version: 2.0.57 + csv_version: 1.0.47 + + opencontent_auditwebhook: + case_version: 1.0.24 + csv_version: 0.3.1 + + watson_gateway: + case_version: 2.2.0 + csv_version: 2.2.0 + cr_version: 2.2.0 + + data_governor: + case_version: 8.1.0 + csv_version: 8.1.0 + sub_channel: v8.1 + cr_version: 3.29.4 + + ws_pipelines: + case_version: 12.1.0 + sub_channel: "v12.1" + csv_version: 12.1.0 + cr_version: 5.3.1 + + postgresql: + case_version: 5.31.0 + sub_channel: "stable-v1.25" + csv_version: 1.25.5 + cr_version: 1.25.5 + + edb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + mongodb: + case_version: 5.31.0 + sub_channel: "stable" + csv_version: 1.33.0 + cr_version: 5.31.0 + + mongodb_cp4d: + case_version: 5.31.0 + sub_channel: "v5.31" + csv_version: 5.31.0 + cr_version: 5.31.0 + + dpra: + deprecated: true + case_version: 1.20.0 + sub_channel: "v1.20" + csv_version: 1.20.0 + cr_version: 1.20.0 + + factsheet: + case_version: 7.1.0 + csv_version: 7.1.0 + sub_channel: "v7.1" + cr_version: 5.3.1 + + replication: + case_version: 5.3.1 + csv_version: 7.1.0 + cr_version: 5.3.1 + sub_channel: "v7.1" + + voice_gateway: + case_version: 1.13.0 + csv_version: 1.13.0 + sub_channel: v1.13 + cr_version: 1.13.0 + + watsonx_data: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + watsonx_data_premium: + case_version: 6.1.0 + sub_channel: "v6.1" + csv_version: 6.1.0 + cr_version: 2.3.1 + + wxd_query_optimizer: + component_dependencies: + - db2u + + watsonx_ai: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + osai_min_version: 2.19.0 + + watsonx_ai_ifm: + case_version: 12.1.0 + csv_version: 12.1.0 + sub_channel: v12.1 + cr_version: 12.1.0 + + watsonx_bi_assistant: + case_version: 3.4.0 + csv_version: 3.4.0 + sub_channel: v3.4 + cr_version: 3.4.0 + + wca_ansible: + case_version: 4.1.0 + cr_version: 5.3.1 + + wca: + case_version: 3.1.0 + cr_version: 5.3.1 + + wca_z: + case_version: 4.1.0 + csv_version: 4.1.0 + sub_channel: v4.0 + cr_version: 5.3.1 + + wca_z_agentic: + case_version: 2.0.1 + csv_version: 2.0.1 + sub_channel: v2.1 + cr_version: 2.7.1 + + wca_z_ce: + case_version: 5.3.1 + sub_channel: v2.8 + csv_version: 2.8.10 + cr_version: 2.8.10 + + wca_z_cg: + case_version: 5.3.1 + sub_channel: v1.1 + csv_version: 1.1.1 + cr_version: 2.8.10 + + wca_base: + case_version: 4.1.0 + cr_version: 5.3.1 + + ibm_neo4j: + case_version: 1.3.1 + sub_channel: "v4.1" + csv_version: 1.3.1 + cr_version: 1.3.1 + + watsonx_governance: + case_version: 5.1.0 + sub_channel: "v5.1" + csv_version: 5.1.0 + cr_version: 2.3.1 + + watsonx_orchestrate: + case_version: 7.1.0 + sub_channel: "v7.1" + csv_version: 7.1.0 + cr_version: "7.1.0" + + watsonx_dataintegration: + case_version: 2.4.0 + sub_channel: "v2.4" + csv_version: 5.3.1 + cr_version: 2.3.1 + + watsonx_dataintelligence: + case_version: 2.3.1 + sub_channel: "v2.31" + csv_version: 2.3.1 + cr_version: 2.3.1 + + wca_z_understand: + case_version: 1.1.0 + csv_version: 1.1.0 + sub_channel: v1.1 + cr_version: 2.8.10 + + ibm-databand: + case_version: 1.0.0 + csv_version: 1.0.0 + cr_version: 1.0.0 + sub_channel: "v1.0.0" + + datastax_mc: + case_version: 1.16.1 + cr_version: 1.16.1 + + ibm_wxd_opensearch: + case_version: 3.3.2 + cr_version: 3.3.2 + release_version: 5.3.1 +{{- end }} + + diff --git a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml index 7797ff419..2c8d3d747 100644 --- a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml +++ b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml @@ -1526,3 +1526,144 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin + +{{- if not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} +--- +# For CPD 5.3.1+, cpd-sa needs cluster-level permissions to apply CRDs and +# ClusterRoles from the Helm cluster-scoped charts during service installation. +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: "cpd-sa-helm-cluster-role-{{ .Values.instance_id }}" + annotations: + argocd.argoproj.io/sync-wave: "084" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +rules: + # CRD management (needed to apply cluster-scoped Helm charts) + - verbs: + - get + - list + - create + - update + - patch + - delete + apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + # ClusterRole/Binding management with escalate (allows granting permissions not yet held) + - verbs: + - get + - list + - create + - update + - patch + - delete + - bind + - escalate + apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - clusterrolebindings + # Namespaced roles/rolebindings (needed by Helm namespace-scoped charts) + - verbs: + - get + - list + - create + - update + - patch + - delete + - watch + apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + # Namespace/node read + - verbs: + - get + - list + apiGroups: + - "" + resources: + - namespaces + - nodes + # OpenShift infra + - verbs: + - get + - list + apiGroups: + - config.openshift.io + resources: + - clusterversions + - infrastructures + # SCCs + - verbs: + - use + apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + resourceNames: + - anyuid + - restricted + - nonroot + - privileged + # CPD service API groups (needed to grant these permissions in cluster-scoped ClusterRoles) + - verbs: + - get + - list + - create + - update + - patch + - delete + - watch + apiGroups: + - ae.cpd.ibm.com + - wml.cpd.ibm.com + - spssmodeler.cpd.ibm.com + - ws.cpd.ibm.com + - ccs.cpd.ibm.com + - opensearch.cloudpackopen.ibm.com + - datarefinery.cpd.ibm.com + - wsruntimes.cpd.ibm.com + resources: + - "*" + # Webhook configs (needed by some Helm charts) + - verbs: + - get + - list + - create + - update + - patch + - delete + apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + - validatingwebhookconfigurations + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: "cpd-sa-helm-cluster-rb-{{ .Values.instance_id }}" + annotations: + argocd.argoproj.io/sync-wave: "085" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +subjects: + - kind: ServiceAccount + name: cpd-sa + namespace: "{{ .Values.cpd_operators_namespace }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: "cpd-sa-helm-cluster-role-{{ .Values.instance_id }}" +{{- end }} diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml index 4a90cf334..cb0ec381b 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml @@ -146,6 +146,7 @@ spec: backoffLimit: 4 +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} {{- if or .Values.wml_channel .Values.wsl_channel .Values.spss_channel }} --- apiVersion: operators.coreos.com/v1alpha1 @@ -246,3 +247,4 @@ spec: {{- end }} {{- end }} +{{- end }} diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml index aecaafdef..6a270dcee 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml @@ -1,4 +1,4 @@ -{{- if or .Values.wsl_channel .Values.spss_channel }} +{{- if and (or .Values.wsl_channel .Values.spss_channel) (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} # Custom Operand Registries # ----------------------------------------------------------------------------- --- diff --git a/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml b/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml index 980b17c49..b76edaa92 100644 --- a/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml +++ b/instance-applications/120-ibm-db2u-database/templates/04-db2u-Volatile-Runstats_Cron.yaml @@ -4,6 +4,7 @@ {{- /* Use the build/bin/set-cli-image-digest.sh script to update this value across all charts. */}} + {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} # diff --git a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml index 598d60619..392b67cf3 100644 --- a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml +++ b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,4 +17,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.spark_install_plan | default "Automatic" | quote }} - +{{- end }} diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 87a8a32c9..be1a252fa 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: ae.cpd.ibm.com/v1 kind: AnalyticsEngine @@ -22,3 +23,73 @@ spec: scaleConfig: "{{ .Values.cpd_service_scale_config }}" version: "{{ .Values.spark_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +apiVersion: batch/v1 +kind: Job +metadata: + name: install-spark-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + command: + - /bin/sh + - -c + - | + set -e + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + + echo "Installing analyticsengine cluster-scoped chart (CRDs + ClusterRoles)..." + helm template analyticsengine-cluster ibm-charts/analyticsengine-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for analyticsengines.ae.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd analyticsengines.ae.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing analyticsengine namespace-scoped chart (operator + CR)..." + helm upgrade --install analyticsengine ibm-charts/analyticsengine \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set analyticsengine.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 60m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 +{{- end }} diff --git a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml index 65d3bf87d..e2c7b5f8a 100644 --- a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml +++ b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml @@ -55,6 +55,7 @@ are required here. */}} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- kind: ServiceAccount apiVersion: v1 @@ -165,5 +166,5 @@ spec: restartPolicy: Never serviceAccountName: spark-cp-sa backoffLimit: 4 - +{{- end }} diff --git a/instance-applications/120-ibm-spark/values.yaml b/instance-applications/120-ibm-spark/values.yaml index d6a766919..25e5c803b 100644 --- a/instance-applications/120-ibm-spark/values.yaml +++ b/instance-applications/120-ibm-spark/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" spark_channel: "" spark_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml index dcb608e85..d54dac607 100644 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -35,3 +36,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.canvasbase_install_plan | default "Automatic" | quote }} +{{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 2869c08f6..6f7c7368a 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -1,4 +1,4 @@ - +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: spssmodeler.cpd.ibm.com/v1 kind: Spss @@ -24,4 +24,74 @@ spec: version: "{{ .Values.spss_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" datarefinery_operand_version: "{{ .Values.datarefinery_version }}" - wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" \ No newline at end of file + wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +apiVersion: batch/v1 +kind: Job +metadata: + name: install-spss-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + command: + - /bin/sh + - -c + - | + set -e + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + + echo "Installing spss-modeler cluster-scoped chart (CRDs + ClusterRoles)..." + helm template spss-modeler-cluster ibm-charts/spss-modeler-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for spssmodelers.spssmodeler.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd spssmodelers.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing spss-modeler namespace-scoped chart (operator + CR)..." + helm upgrade --install spss-modeler ibm-charts/spss-modeler \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 60m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 +{{- end }} diff --git a/instance-applications/120-ibm-spss/values.yaml b/instance-applications/120-ibm-spss/values.yaml index 51ca216c9..b7c0618d7 100644 --- a/instance-applications/120-ibm-spss/values.yaml +++ b/instance-applications/120-ibm-spss/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" spss_channel: "" spss_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml index 327653732..01f75abbd 100644 --- a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml +++ b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,3 +17,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.wml_install_plan | default "Automatic" | quote }} +{{- end }} diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index e1e789973..311232e18 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -1,3 +1,4 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: wml.cpd.ibm.com/v1beta1 kind: WmlBase @@ -22,3 +23,73 @@ spec: scaleConfig: "{{ .Values.cpd_service_scale_config }}" version: "{{ .Values.wml_version }}" ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +apiVersion: batch/v1 +kind: Job +metadata: + name: install-wml-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + command: + - /bin/sh + - -c + - | + set -e + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + + echo "Installing wml cluster-scoped chart (CRDs + ClusterRoles)..." + helm template wml-cluster ibm-charts/wml-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for wmlbases.wml.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd wmlbases.wml.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing wml namespace-scoped chart (operator + CR)..." + helm upgrade --install wml ibm-charts/wml \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set wml.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 60m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 2 +{{- end }} diff --git a/instance-applications/120-ibm-wml/values.yaml b/instance-applications/120-ibm-wml/values.yaml index b5ec6e992..56dedaab2 100644 --- a/instance-applications/120-ibm-wml/values.yaml +++ b/instance-applications/120-ibm-wml/values.yaml @@ -5,3 +5,4 @@ cpd_service_scale_config: "" cpd_service_storage_class: "" wml_channel: "" wml_version: "" +cpd_product_version: "" diff --git a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml index b2556409c..2f30520a5 100644 --- a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml +++ b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml @@ -1,3 +1,24 @@ +# --- +# apiVersion: operators.coreos.com/v1alpha1 +# kind: Subscription +# metadata: +# name: ibm-cpd-ws-operator +# namespace: "{{ .Values.cpd_operators_namespace }}" +# annotations: +# argocd.argoproj.io/sync-wave: "090" +# {{- if .Values.custom_labels }} +# labels: +# {{ .Values.custom_labels | toYaml | indent 4 }} +# {{- end }} +# spec: +# name: ibm-cpd-wsl +# channel: "{{ .Values.wsl_channel }}" +# source: ibm-operator-catalog +# sourceNamespace: openshift-marketplace +# installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} + + +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription @@ -16,3 +37,4 @@ spec: source: ibm-operator-catalog sourceNamespace: openshift-marketplace installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} +{{- end }} \ No newline at end of file diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 11c9d89a3..477584a6f 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -1,3 +1,33 @@ +# --- +# apiVersion: ws.cpd.ibm.com/v1beta1 +# kind: WS +# metadata: +# name: "ws-cr" +# namespace: "{{ .Values.cpd_instance_namespace }}" +# annotations: +# argocd.argoproj.io/sync-wave: "091" +# argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +# {{- if .Values.custom_labels }} +# labels: +# {{ .Values.custom_labels | toYaml | indent 4 }} +# {{- end }} +# spec: +# imagePullSecret: ibm-entitlement-key +# ignoreForMaintenance: false +# license: +# accept: true +# license: Standard +# scaleConfig: "{{ .Values.cpd_service_scale_config }}" +# fileStorageClass: "{{ .Values.cpd_service_storage_class }}" +# blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" +# version: "{{ .Values.wsl_version }}" +# ccs_operand_version: "{{ .Values.ccs_version }}" +# datarefinery_operand_version: "{{ .Values.datarefinery_version }}" +# wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" + + + +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} --- apiVersion: ws.cpd.ibm.com/v1beta1 kind: WS @@ -24,3 +54,194 @@ spec: ccs_operand_version: "{{ .Values.ccs_version }}" datarefinery_operand_version: "{{ .Values.datarefinery_version }}" wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +# Installs WSL and all its dependencies (opensearch, ccs, datarefinery, ws-runtimes) +# using IBM Helm charts. Each component requires a cluster-scoped chart (CRDs/ClusterRoles) +# followed by a namespace-scoped chart (Operator + CR). +apiVersion: batch/v1 +kind: Job +metadata: + name: install-wsl-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + command: + - /bin/sh + - -c + - | + set -e + + HELM_REPO=ibm-charts + HELM_REPO_URL=https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + OPERATORS_NS={{ .Values.cpd_operators_namespace }} + INSTANCE_NS={{ .Values.cpd_instance_namespace }} + FILE_SC={{ .Values.cpd_service_storage_class }} + BLOCK_SC={{ .Values.cpd_service_block_storage_class }} + SCALE={{ .Values.cpd_service_scale_config }} + CPD_VERSION={{ .Values.cpd_product_version }} + PULL_SECRET=ibm-entitlement-key + + echo "================================================================" + echo "Adding IBM Helm repository" + echo "================================================================" + helm repo add ${HELM_REPO} ${HELM_REPO_URL} || true + helm repo update + + # Shared values file used by all components + printf 'global:\n licenseAccept: true\n releaseVersion: %s\n operatorNamespace: %s\n instanceNamespace: %s\n fileStorageClass: %s\n blockStorageClass: %s\n imagePullSecret: %s\n imagePullPrefix: cp.icr.io\n' \ + "${CPD_VERSION}" "${OPERATORS_NS}" "${INSTANCE_NS}" "${FILE_SC}" "${BLOCK_SC}" "${PULL_SECRET}" \ + > /tmp/cpd-global-values.yaml + + install_component() { + local NAME=$1 + local CHART=$2 + local CLUSTER_CHART=$3 + local VERSION=$4 + local EXTRA_VALUES=$5 + + echo "================================================================" + echo "Installing ${NAME} (version ${VERSION})" + echo "================================================================" + + # 1. Cluster-scoped chart (CRDs, ClusterRoles) + echo " [${NAME}] Installing cluster-scoped chart..." + helm template ${NAME}-cluster ${HELM_REPO}/${CLUSTER_CHART} \ + --version ${VERSION} \ + -f /tmp/cpd-global-values.yaml \ + --namespace ${OPERATORS_NS} | oc apply -f - + + # Wait for all CRDs from the cluster-scoped chart to be established + # before running the namespace-scoped chart that depends on them. + echo " [${NAME}] Waiting for CRDs to be established..." + sleep 5 + oc wait crd --all --for=condition=Established --timeout=120s 2>/dev/null || true + + # 2. Namespace-scoped chart (Operator + CR) + echo " [${NAME}] Installing namespace-scoped chart..." + helm upgrade --install ${NAME} ${HELM_REPO}/${CHART} \ + --version ${VERSION} \ + -f /tmp/cpd-global-values.yaml \ + ${EXTRA_VALUES} \ + --namespace ${INSTANCE_NS} \ + --create-namespace \ + --wait --timeout 60m + } + + # ---------------------------------------------------------------- + # Step 1: OpenSearch (dependency) + # ---------------------------------------------------------------- + install_component \ + "opencontent-opensearch" \ + "opencontent-opensearch" \ + "opencontent-opensearch-cluster-scoped" \ + "1.2.0" + + echo "Waiting for opensearchclusters.opensearch.cloudpackopen.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd opensearchclusters.opensearch.cloudpackopen.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + # ---------------------------------------------------------------- + # Step 2: CCS - Common Core Services (dependency) + # ---------------------------------------------------------------- + install_component \ + "ccs" \ + "ccs" \ + "ccs-cluster-scoped" \ + "12.1.0" \ + "--set ccs.scaleConfig=${SCALE}" + + # Wait for CCS CR to be ready + echo "Waiting for CCS CR to be ready..." + oc wait ccs/ccs-cr -n ${INSTANCE_NS} \ + --for=jsonpath='{.status.controlPlaneStatus}'=Completed \ + --timeout=60m + + # ---------------------------------------------------------------- + # Step 3: DataRefinery (dependency) + # ---------------------------------------------------------------- + install_component \ + "datarefinery" \ + "datarefinery" \ + "datarefinery-cluster-scoped" \ + "12.1.0" + + echo "Waiting for datarefineries.datarefinery.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd datarefineries.datarefinery.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + # ---------------------------------------------------------------- + # Step 4: WS Runtimes (dependency) + # ---------------------------------------------------------------- + install_component \ + "ws-runtimes" \ + "ws-runtimes" \ + "ws-runtimes-cluster-scoped" \ + "12.1.0" + + echo "Waiting for wsruntimes.wsruntimes.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd wsruntimes.wsruntimes.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + # ---------------------------------------------------------------- + # Step 5: Watson Studio (main component) + # ---------------------------------------------------------------- + install_component \ + "wsl" \ + "ws" \ + "ws-cluster-scoped" \ + "12.1.0" \ + "--set ws.scaleConfig=${SCALE}" + + echo "================================================================" + echo "WSL installation complete" + echo "================================================================" + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 1 +{{- end }} diff --git a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml index 8aebe3f14..556806533 100644 --- a/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml +++ b/instance-applications/121-ibm-post-sync-job-cp4d-services/templates/01-cpd-service-post-ops.yaml @@ -25,7 +25,7 @@ Increment this value whenever you make a change to an immutable field of the Job E.g. passing in a new environment variable. Included in $_job_hash (see below). */}} -{{- $_job_version := "v1" }} +{{- $_job_version := "v2" }} {{- /* 10 char hash appended to the job name taking into account $_job_config_values, $_job_version and $_cli_image_digest @@ -247,6 +247,15 @@ spec: echo $(( $V1 - $V2 )) } + # For CPD 5.3.1+, CCS and OpenSearch are installed via Helm (not OLM). + # The CCS CR and OpenSearch CR managed by this post-sync job do not exist + # in that deployment model, so skip all OLM-specific post-sync patching. + COMP_531=$(compare_versions ${CPD_PRODUCT_VERSION} 5.3.1) + if [[ ${COMP_531} -ge 0 ]]; then + echo "CPD ${CPD_PRODUCT_VERSION} detected (>= 5.3.1) - CCS/OpenSearch installed via Helm, skipping OLM post-sync patching" + exit 0 + fi + echo echo "================================================================================" echo "Wait for CCS Cr to be ready and patch if needed" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml index 6834f1a38..af0446795 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-spark-app.yaml @@ -48,6 +48,7 @@ spec: application_admin_role: {{ .Values.application_admin_role }} ccs_version: "{{ .Values.ibm_spark.ccs_version }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_service_block_storage_class: "{{ .Values.ibm_spark.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_spark.cpd_service_scale_config }}" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml index 7609a1110..03b5be98a 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml @@ -47,6 +47,7 @@ spec: sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_service_storage_class: "{{ .Values.ibm_spss.cpd_service_storage_class }}" cpd_service_block_storage_class: "{{ .Values.ibm_spss.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_spss.cpd_service_scale_config }}" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml index 21c3074b9..43098f834 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-wsl-app.yaml @@ -48,6 +48,7 @@ spec: sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" cpd_service_storage_class: "{{ .Values.ibm_wsl.cpd_service_storage_class }}" cpd_service_block_storage_class: "{{ .Values.ibm_wsl.cpd_service_block_storage_class }}" cpd_service_scale_config: "{{ .Values.ibm_wsl.cpd_service_scale_config }}" From 7f9302d47788e3fc909380b45aecc924b8d32544 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 12:18:55 +0530 Subject: [PATCH 23/68] MASCORE-15507: add HookFailed delete policy to CPD 5.3.1 Helm install Jobs Static-named ArgoCD sync hook Jobs (install-wsl-helm, install-wml-helm, install-spss-helm, install-spark-helm) were failing with: 'spec.template: Invalid value ... field is immutable' This happens when an old Job with the same name exists from a prior sync and ArgoCD tries to patch it. Since Job spec.template is immutable, the patch is rejected. Fix: add HookFailed to hook-delete-policy on all four Jobs so ArgoCD deletes the Job on both success AND failure, ensuring no stale Job exists when the next sync runs. --- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index be1a252fa..b7bd144bd 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -34,7 +34,7 @@ metadata: annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed spec: template: spec: diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 6f7c7368a..2600203b8 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -36,7 +36,7 @@ metadata: annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed spec: template: spec: diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 311232e18..cfc1e0477 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -34,7 +34,7 @@ metadata: annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed spec: template: spec: diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 477584a6f..de0ff0875 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -68,7 +68,7 @@ metadata: annotations: argocd.argoproj.io/sync-wave: "091" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed spec: template: spec: From ca746ce3c9e0d3e51e5dc6b57805a04c20e30bf2 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 13:45:22 +0530 Subject: [PATCH 24/68] MASCORE-15507: fix wrong OpenSearch CRD name in WSL Helm Job wait loop The wait loop was polling for: opensearchclusters.opensearch.cloudpackopen.ibm.com (does not exist) The actual CRD name registered by the IBM OpenSearch Helm chart is: clusters.opensearch.cloudpackopen.ibm.com This caused the WSL Helm Job to always timeout after 5 minutes at the OpenSearch step, blocking CCS, DataRefinery, WS-Runtimes and WSL from ever installing. --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 3b3920893..81925a30e 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -148,7 +148,7 @@ spec: "opencontent-opensearch-cluster-scoped" \ "1.2.0" - echo "Waiting for opensearchclusters.opensearch.cloudpackopen.ibm.com CRD to be established..." + echo "Waiting for clusters.opensearch.cloudpackopen.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -156,7 +156,7 @@ spec: echo "CRD not established after 5 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd opensearchclusters.opensearch.cloudpackopen.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd clusters.opensearch.cloudpackopen.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "CRD established." break From 861314a69c0bdcec3de46a2c60a32bcc8978f76f Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 13:59:58 +0530 Subject: [PATCH 25/68] MASCORE-15507: fix CCS CR wait - poll with ignore-not-found instead of oc wait oc wait exits immediately with error if the resource does not exist. The CCS CR (ccs-cr) is created by the CCS operator after Helm installs it, so it is not immediately present. Replace oc wait with a polling loop using --ignore-not-found, same pattern used for all other CRD waits in this script. Polls every 30s up to 60 minutes. --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 81925a30e..205a23107 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -174,11 +174,25 @@ spec: "12.1.0" \ "--set ccs.scaleConfig=${SCALE}" - # Wait for CCS CR to be ready - echo "Waiting for CCS CR to be ready..." - oc wait ccs/ccs-cr -n ${INSTANCE_NS} \ - --for=jsonpath='{.status.controlPlaneStatus}'=Completed \ - --timeout=60m + # Wait for CCS CR to be created then reach Completed status + echo "Waiting for CCS CR to be created and ready..." + wait_period=0 + while true; do + wait_period=$((wait_period+30)) + if [ $wait_period -gt 3600 ]; then + echo "CCS CR not ready after 60 minutes. Exiting." + exit 1 + fi + CCS_STATUS=$(oc get ccs ccs-cr -n ${INSTANCE_NS} \ + -o jsonpath='{.status.controlPlaneStatus}' \ + --ignore-not-found 2>/dev/null) + if [ "${CCS_STATUS}" = "Completed" ]; then + echo "CCS CR is ready." + break + fi + echo " CCS status: '${CCS_STATUS:-not found}' - waiting 30s..." + sleep 30 + done # ---------------------------------------------------------------- # Step 3: DataRefinery (dependency) From 54ced4a345e1ce13bd93418ea0384a5f5233e319 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 14:33:01 +0530 Subject: [PATCH 26/68] fix WSL Helm Job: explicitly create ccs-cr with non_olm_deploy=true after CCS Helm install --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 205a23107..189ca59f1 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -174,8 +174,17 @@ spec: "12.1.0" \ "--set ccs.scaleConfig=${SCALE}" - # Wait for CCS CR to be created then reach Completed status - echo "Waiting for CCS CR to be created and ready..." + # In CPD 5.3.1 Helm mode the namespace-scoped chart only deploys the + # operator; the CCS CR must be created explicitly with non_olm_deploy=true + # so the operator reconciles the actual CCS instance. + echo "Creating ccs-cr (non_olm_deploy=true) if not already present..." + printf 'apiVersion: ccs.cpd.ibm.com/v1beta1\nkind: Ccs\nmetadata:\n name: ccs-cr\n namespace: %s\nspec:\n license:\n accept: true\n license: Standard\n imagePullSecret: %s\n fileStorageClass: %s\n blockStorageClass: %s\n scaleConfig: %s\n non_olm_deploy: true\n' \ + "${INSTANCE_NS}" "${PULL_SECRET}" "${FILE_SC}" "${BLOCK_SC}" "${SCALE}" \ + > /tmp/ccs-cr.yaml + oc apply -f /tmp/ccs-cr.yaml + + # Wait for CCS CR to reach Completed status + echo "Waiting for CCS CR to be ready..." wait_period=0 while true; do wait_period=$((wait_period+30)) From b0793fdc97a4a50cad9f9e6f851b25870499546b Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 15:17:32 +0530 Subject: [PATCH 27/68] fix WSL Helm Job: correct CCS CR kind from 'Ccs' to 'CCS' --- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 189ca59f1..a03b32549 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -178,7 +178,7 @@ spec: # operator; the CCS CR must be created explicitly with non_olm_deploy=true # so the operator reconciles the actual CCS instance. echo "Creating ccs-cr (non_olm_deploy=true) if not already present..." - printf 'apiVersion: ccs.cpd.ibm.com/v1beta1\nkind: Ccs\nmetadata:\n name: ccs-cr\n namespace: %s\nspec:\n license:\n accept: true\n license: Standard\n imagePullSecret: %s\n fileStorageClass: %s\n blockStorageClass: %s\n scaleConfig: %s\n non_olm_deploy: true\n' \ + printf 'apiVersion: ccs.cpd.ibm.com/v1beta1\nkind: CCS\nmetadata:\n name: ccs-cr\n namespace: %s\nspec:\n license:\n accept: true\n license: Standard\n imagePullSecret: %s\n fileStorageClass: %s\n blockStorageClass: %s\n scaleConfig: %s\n non_olm_deploy: true\n' \ "${INSTANCE_NS}" "${PULL_SECRET}" "${FILE_SC}" "${BLOCK_SC}" "${SCALE}" \ > /tmp/ccs-cr.yaml oc apply -f /tmp/ccs-cr.yaml From 417bd713d9add1fa1b2550b95644c27548b1ffb4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 15:25:09 +0530 Subject: [PATCH 28/68] fix WSL Helm Job: poll .status.ccsStatus not .status.controlPlaneStatus for CCS CR readiness --- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index a03b32549..d8c72c400 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -193,7 +193,7 @@ spec: exit 1 fi CCS_STATUS=$(oc get ccs ccs-cr -n ${INSTANCE_NS} \ - -o jsonpath='{.status.controlPlaneStatus}' \ + -o jsonpath='{.status.ccsStatus}' \ --ignore-not-found 2>/dev/null) if [ "${CCS_STATUS}" = "Completed" ]; then echo "CCS CR is ready." From 796c2c94a6781ec5e4dfef1b6df93c1b9f1581aa Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 23:29:37 +0530 Subject: [PATCH 29/68] increase backoffLimit to 4 for all CPD 5.3.1 Helm service Jobs --- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index 246ad32be..a27460904 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -93,5 +93,5 @@ spec: --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 2 + backoffLimit: 4 {{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 592d18fa4..f68ad41aa 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -95,5 +95,5 @@ spec: --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 2 + backoffLimit: 4 {{- end }} diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 204d8406f..969c75f1b 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -93,5 +93,5 @@ spec: --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 2 + backoffLimit: 4 {{- end }} diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index d8c72c400..ee07620e4 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -268,5 +268,5 @@ spec: echo "================================================================" restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 1 + backoffLimit: 4 {{- end }} From 25b432113e16a14a129eb71c7a918675cc12d6db Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Thu, 6 Aug 2026 23:47:35 +0530 Subject: [PATCH 30/68] fix WSL YAML indentation: backoffLimit must align with spec fields --- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index ee07620e4..124d2deed 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -268,5 +268,5 @@ spec: echo "================================================================" restartPolicy: Never serviceAccountName: cpd-sa - backoffLimit: 4 + backoffLimit: 4 {{- end }} From b251a9a860df4447adb0ef0229bbeb988dfaefb2 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 7 Aug 2026 10:58:11 +0530 Subject: [PATCH 31/68] increase CRD wait timeout from 5min to 20min for DataRefinery and WS-Runtimes --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 124d2deed..4138a49a8 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -216,8 +216,8 @@ spec: wait_period=0 while true; do wait_period=$((wait_period+10)) - if [ $wait_period -gt 300 ]; then - echo "CRD not established after 5 minutes. Exiting." + if [ $wait_period -gt 1200 ]; then + echo "CRD not established after 20 minutes. Exiting." exit 1 fi STATUS=$(oc get crd datarefineries.datarefinery.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) @@ -241,8 +241,8 @@ spec: wait_period=0 while true; do wait_period=$((wait_period+10)) - if [ $wait_period -gt 300 ]; then - echo "CRD not established after 5 minutes. Exiting." + if [ $wait_period -gt 1200 ]; then + echo "CRD not established after 20 minutes. Exiting." exit 1 fi STATUS=$(oc get crd wsruntimes.wsruntimes.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) From cd78e7335250fdba146a7b3bac10f78e22432a5a Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 7 Aug 2026 11:28:29 +0530 Subject: [PATCH 32/68] fix WSL Job: correct CRD names - datarefinery (singular) and runtimeassemblies --- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 4138a49a8..53331456c 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -212,7 +212,7 @@ spec: "datarefinery-cluster-scoped" \ "12.1.0" - echo "Waiting for datarefineries.datarefinery.cpd.ibm.com CRD to be established..." + echo "Waiting for datarefinery.datarefinery.cpd.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -220,7 +220,7 @@ spec: echo "CRD not established after 20 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd datarefineries.datarefinery.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd datarefinery.datarefinery.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "CRD established." break @@ -237,7 +237,7 @@ spec: "ws-runtimes-cluster-scoped" \ "12.1.0" - echo "Waiting for wsruntimes.wsruntimes.cpd.ibm.com CRD to be established..." + echo "Waiting for runtimeassemblies.runtimes.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -245,7 +245,7 @@ spec: echo "CRD not established after 20 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd wsruntimes.wsruntimes.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd runtimeassemblies.runtimes.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "CRD established." break From da4c3deb9fc42e72b435a2ee3d09303c32344a62 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 7 Aug 2026 14:39:23 +0530 Subject: [PATCH 33/68] fix SPSS Helm Job: increase CRD wait timeout from 5min to 20min --- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index f68ad41aa..0fe2ad430 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -67,8 +67,8 @@ spec: wait_period=0 while true; do wait_period=$((wait_period+10)) - if [ $wait_period -gt 300 ]; then - echo "CRD not established after 5 minutes. Exiting." + if [ $wait_period -gt 1200 ]; then + echo "CRD not established after 20 minutes. Exiting." exit 1 fi STATUS=$(oc get crd spssmodelers.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) From 3df4a31a4759f6240384b3d6785b4bd0d8839ca1 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 7 Aug 2026 15:46:19 +0530 Subject: [PATCH 34/68] added 4th cpd service (CA) --- .../00-ibm-cognos-analytics_Subscription.yaml | 19 ++++ .../templates/01-ibm-cognos-analytics-cr.yaml | 98 +++++++++++++++++++ .../120-ibm-cognos-analytics/values.yaml | 8 ++ 3 files changed, 125 insertions(+) create mode 100644 instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml create mode 100644 instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml create mode 100644 instance-applications/120-ibm-cognos-analytics/values.yaml diff --git a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml new file mode 100644 index 000000000..169108421 --- /dev/null +++ b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml @@ -0,0 +1,19 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: cognos-analytics-subscription + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + channel: "{{ .Values.cognos_analytics_channel }}" + name: cognos-analytics-operator + source: ibm-operator-catalog + sourceNamespace: openshift-marketplace +{{- end }} diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml new file mode 100644 index 000000000..c54fb2565 --- /dev/null +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -0,0 +1,98 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +--- +apiVersion: cognosanalytics.cpd.ibm.com/v1 +kind: CognosAnalytics +metadata: + name: "cognos-analytics-sample" + namespace: "{{ .Values.cpd_instance_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + imagePullSecret: ibm-entitlement-key + ignoreForMaintenance: false + license: + accept: true + license: Standard + fileStorageClass: "{{ .Values.cpd_service_storage_class }}" + blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" + scaleConfig: "{{ .Values.cpd_service_scale_config }}" + version: "{{ .Values.cognos_analytics_version }}" + ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +# Cognos Analytics is an optional analytics and reporting service +apiVersion: batch/v1 +kind: Job +metadata: + name: install-cognos-analytics-helm + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed + +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + command: + - /bin/sh + - -c + - | + set -e + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + + echo "Installing cognos-analytics cluster-scoped chart (CRDs + ClusterRoles)..." + helm template cognos-analytics-cluster ibm-charts/cognos-analytics-cluster-scoped \ + --version 29.1.8 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for cognosanalytics.cognosanalytics.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd cognosanalytics.cognosanalytics.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing cognos-analytics namespace-scoped chart (operator + CR)..." + helm upgrade --install cognos-analytics ibm-charts/cognos-analytics \ + --version 29.1.8 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set cognosanalytics.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 60m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 4 +{{- end }} diff --git a/instance-applications/120-ibm-cognos-analytics/values.yaml b/instance-applications/120-ibm-cognos-analytics/values.yaml new file mode 100644 index 000000000..19981f481 --- /dev/null +++ b/instance-applications/120-ibm-cognos-analytics/values.yaml @@ -0,0 +1,8 @@ +--- +ccs_version: "" +cpd_service_block_storage_class: "" +cpd_service_scale_config: "" +cpd_service_storage_class: "" +cognos_analytics_channel: "" +cognos_analytics_version: "" +cpd_product_version: "" From 6d28a85b0ed2861b26dc813667c2ebe33eaec049 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 10:11:17 +0530 Subject: [PATCH 35/68] Remove SPSS CPD service - focus on Cognos Analytics only --- instance-applications/120-ibm-spss/Chart.yaml | 11 --- instance-applications/120-ibm-spss/README.md | 62 ------------ .../templates/00-ibm-spss_Subscription.yaml | 39 -------- .../templates/01-ibm-spss-cr.yaml | 99 ------------------- .../120-ibm-spss/values.yaml | 8 -- 5 files changed, 219 deletions(-) delete mode 100644 instance-applications/120-ibm-spss/Chart.yaml delete mode 100644 instance-applications/120-ibm-spss/README.md delete mode 100644 instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml delete mode 100644 instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml delete mode 100644 instance-applications/120-ibm-spss/values.yaml diff --git a/instance-applications/120-ibm-spss/Chart.yaml b/instance-applications/120-ibm-spss/Chart.yaml deleted file mode 100644 index 9c9f81ec4..000000000 --- a/instance-applications/120-ibm-spss/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v2 -name: ibm-spss -description: SPSS Modeler -type: application -version: 1.0.0 - -dependencies: -- name: junitreporter - version: 1.0.0 - repository: "file://../../sub-charts/junitreporter/" - condition: junitreporter.devops_mongo_uri != "" \ No newline at end of file diff --git a/instance-applications/120-ibm-spss/README.md b/instance-applications/120-ibm-spss/README.md deleted file mode 100644 index 094e3e453..000000000 --- a/instance-applications/120-ibm-spss/README.md +++ /dev/null @@ -1,62 +0,0 @@ -SPSS Modeler -=============================================================================== -Deploys and configures the CP4D Service, SPSS Modeler. - - - - -[SPSS Modeler](https://www.ibm.com/docs/en/cloud-paks/cp-data/4.8.x?topic=modeler-installing) optional dependency for [Predict](https://www.ibm.com/docs/en/mas-cd/mhmpmh-and-p-u/continuous-delivery) - -## Resources Created - -| Resource Type | Resource Name | Namespace | Condition | Installed By | -|--------------|---------------|-----------|-----------|--------------| -| `Subscription` | SPSS operator subscriptions | CP4D instance namespace | Always | `application_admin_role` | -| `Spss` | SPSS service CR | CP4D instance namespace | Always | `application_admin_role` | - -## Configuration - -This chart accepts the following configuration values in the ArgoCD Application values: - -```yaml -ibm_spss: - ccs_version: string (secret reference) - cpd_service_block_storage_class: string - cpd_service_scale_config: string - cpd_service_storage_class: string - spss_channel: string (secret reference) - spss_version: string (secret reference) - spss_install_plan: string - canvasbase_channel: string (secret reference) - canvasbase_install_plan: string -``` - -**Note**: Values marked with "(secret reference)" should use the format `` to reference secrets stored in the Secrets Vault. - -## Base Instance Values - -This chart inherits common instance configuration values. The most frequently used base values are: - -```yaml -account: - id: string # Account identifier - name: string # Account name - -region: - id: string # Region identifier - name: string # Region name - -cluster: - id: string # Cluster identifier - name: string # Cluster name - -instance: - id: string # MAS instance identifier - -sm: # Secrets Manager configuration - aws_secret_region: string - aws_access_key_id: string (secret reference) - aws_secret_access_key: string (secret reference) -``` - -For complete documentation of all base instance values including optional fields like `custom_labels`, `argocluster_instance`, `application_admin_service_account`, `mas_wipe_mongo_data`, `allow_list`, `additional_vpn`, `application_configuration`, `use_postdelete_hooks`, `additional_resources`, `extensions`, `enhanced_dr`, and `cli_image_repo`, see the [Instance Base Values Reference](../../docs/reference/instance-base-values.md). diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml deleted file mode 100644 index d54dac607..000000000 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: "cpd-spss-operator" - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "091" -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - name: "ibm-cpd-spss" - channel: "{{ .Values.spss_channel }}" - source: ibm-operator-catalog - sourceNamespace: openshift-marketplace - installPlanApproval: {{ .Values.spss_install_plan | default "Automatic" | quote }} - ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: "ibm-cpd-canvasbase-operator-catalog-subscription" # needed only by spss - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "091" -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - name: "ibm-cpd-canvasbase" - channel: "{{ .Values.canvasbase_channel }}" - source: ibm-operator-catalog - sourceNamespace: openshift-marketplace - installPlanApproval: {{ .Values.canvasbase_install_plan | default "Automatic" | quote }} -{{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml deleted file mode 100644 index 0fe2ad430..000000000 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ /dev/null @@ -1,99 +0,0 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} ---- -apiVersion: spssmodeler.cpd.ibm.com/v1 -kind: Spss -metadata: - name: "spss-sample" - namespace: "{{ .Values.cpd_instance_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - imagePullSecret: ibm-entitlement-key - ignoreForMaintenance: false - license: - accept: true - license: Standard - scaleConfig: "{{ .Values.cpd_service_scale_config }}" - fileStorageClass: "{{ .Values.cpd_service_storage_class }}" - blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" - version: "{{ .Values.spss_version }}" - ccs_operand_version: "{{ .Values.ccs_version }}" - datarefinery_operand_version: "{{ .Values.datarefinery_version }}" - wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" -{{- else }} ---- -# Helm-based installation for CPD 5.3.1+ -apiVersion: batch/v1 -kind: Job -metadata: - name: install-spss-helm - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" - argocd.argoproj.io/hook: Sync - - argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed - -spec: - template: - spec: - containers: - - name: helm-install - image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 - command: - - /bin/sh - - -c - - | - set -e - helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm - helm repo update - - echo "Installing spss-modeler cluster-scoped chart (CRDs + ClusterRoles)..." - helm template spss-modeler-cluster ibm-charts/spss-modeler-cluster-scoped \ - --version 12.1.0 \ - --namespace {{ .Values.cpd_operators_namespace }} \ - --set global.licenseAccept=true \ - --set global.releaseVersion={{ .Values.cpd_product_version }} \ - --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ - --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ - --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - - - echo "Waiting for spssmodelers.spssmodeler.cpd.ibm.com CRD to be established..." - wait_period=0 - while true; do - wait_period=$((wait_period+10)) - if [ $wait_period -gt 1200 ]; then - echo "CRD not established after 20 minutes. Exiting." - exit 1 - fi - STATUS=$(oc get crd spssmodelers.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) - if [ "$STATUS" = "True" ]; then - echo "CRD established." - break - fi - sleep 10 - done - - echo "Installing spss-modeler namespace-scoped chart (operator + CR)..." - helm upgrade --install spss-modeler ibm-charts/spss-modeler \ - --version 12.1.0 \ - --namespace {{ .Values.cpd_instance_namespace }} \ - --create-namespace \ - --set global.licenseAccept=true \ - --set global.releaseVersion={{ .Values.cpd_product_version }} \ - --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ - --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ - --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ - --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ - --set global.imagePullSecret=ibm-entitlement-key \ - --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ - --wait --timeout 60m - restartPolicy: Never - serviceAccountName: cpd-sa - backoffLimit: 4 -{{- end }} diff --git a/instance-applications/120-ibm-spss/values.yaml b/instance-applications/120-ibm-spss/values.yaml deleted file mode 100644 index b7c0618d7..000000000 --- a/instance-applications/120-ibm-spss/values.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -ccs_version: "" -cpd_service_block_storage_class: "" -cpd_service_scale_config: "" -cpd_service_storage_class: "" -spss_channel: "" -spss_version: "" -cpd_product_version: "" From 7621047450d5fb66b5a291c01355d94e63f4703c Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 12:04:48 +0530 Subject: [PATCH 36/68] Add Cognos Analytics ArgoCD Application definition to instance root --- .../120-ibm-cognos-analytics-app.yaml | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml new file mode 100644 index 000000000..9c29b0c07 --- /dev/null +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml @@ -0,0 +1,83 @@ +{{- if and (not (empty .Values.ibm_cognos_analytics)) (not (empty .Values.ibm_cp4d)) (.Values.cluster_admin_role) }} +{{ $cpd_operators_ns := .Values.ibm_cp4d.cpd_operators_namespace }} +--- +# IBM Cognos Analytics Application +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: cognos.{{ .Values.cluster.id }}.{{ .Values.instance.id }} + namespace: {{ .Values.argo.namespace }} + labels: + environment: '{{ .Values.account.id }}' + region: '{{ .Values.region.id }}' + cluster: '{{ .Values.cluster.id }}' + {{- if .Values.argo.instance }} + argocd.argoproj.io/instance: '{{ .Values.argo.instance }}' + {{- end }} + instance: '{{ .Values.instance.id }}' + annotations: + argocd.argoproj.io/sync-wave: "120" + {{- if and .Values.notifications .Values.notifications.slack_channel_id }} + notifications.argoproj.io/subscribe.on-sync-failed.workspace1: {{ .Values.notifications.slack_channel_id }} + notifications.argoproj.io/subscribe.on-sync-succeeded.workspace1: {{ .Values.notifications.slack_channel_id }} + {{- end }} + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: "{{ .Values.argo.projects.apps }}" + destination: + server: {{ .Values.cluster.url }} + namespace: {{ $cpd_operators_ns }} + source: + repoURL: "{{ .Values.source.repo_url }}" + path: instance-applications/120-ibm-cognos-analytics + targetRevision: "{{ .Values.source.revision }}" + plugin: + name: {{ .Values.avp.name }} + env: + - name: {{ .Values.avp.values_varname }} + value: | + account_id: "{{ .Values.account.id }}" + region_id: "{{ .Values.region.id }}" + cluster_id: "{{ .Values.cluster.id }}" + instance_id: "{{ .Values.instance.id }}" + cli_image_repo: {{ .Values.cli_image_repo }} + cluster_admin_role: {{ .Values.cluster_admin_role }} + application_admin_role: {{ .Values.application_admin_role }} + sm_aws_access_key_id: "{{ .Values.sm.aws_access_key_id }}" + sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" + cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" + cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" + cpd_service_storage_class: "{{ .Values.ibm_cognos_analytics.cpd_service_storage_class }}" + cpd_service_block_storage_class: "{{ .Values.ibm_cognos_analytics.cpd_service_block_storage_class }}" + cpd_service_scale_config: "{{ .Values.ibm_cognos_analytics.cpd_service_scale_config }}" + ccs_version: "{{ .Values.ibm_cognos_analytics.ccs_version }}" + {{- if .Values.custom_labels }} + custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} + {{- end }} + junitreporter: + reporter_name: "ibm-cognos-analytics-{{ .Values.instance.id }}" + cluster_id: "{{ .Values.cluster.id }}" + instance_id: "{{ .Values.instance.id }}" + devops_mongo_uri: "{{ .Values.devops.mongo_uri }}" + devops_build_number: "{{ .Values.devops.build_number }}" + gitops_version: "{{ .Values.source.revision }}" + cli_image_repo: {{ .Values.cli_image_repo }} + - name: ARGOCD_APP_NAME + value: cpdcognosapp + {{- if not (empty .Values.avp.secret) }} + - name: AVP_SECRET + value: {{ .Values.avp.secret }} + {{- end }} + syncPolicy: + automated: + {{- if .Values.auto_delete }} + prune: true + {{- end }} + selfHeal: true + retry: + limit: 20 + syncOptions: + - CreateNamespace=false +{{- end }} From 5d69bf498419e660b21a83feee225d2035e6de7a Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 12:16:24 +0530 Subject: [PATCH 37/68] Remove SPSS application definition - SPSS service deleted --- .../templates/120-ibm-spss-app.yaml | 87 ------------------- 1 file changed, 87 deletions(-) delete mode 100644 root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml deleted file mode 100644 index 03b5be98a..000000000 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml +++ /dev/null @@ -1,87 +0,0 @@ -{{- if and (not (empty .Values.ibm_spss)) (not (empty .Values.ibm_cp4d)) (.Values.cluster_admin_role) }} -{{ $cpd_operators_ns := .Values.ibm_cp4d.cpd_operators_namespace }} ---- -# IBM Maximo Operator Catalog -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: spss.{{ .Values.cluster.id }}.{{ .Values.instance.id }} - namespace: {{ .Values.argo.namespace }} - labels: - environment: '{{ .Values.account.id }}' - region: '{{ .Values.region.id }}' - cluster: '{{ .Values.cluster.id }}' - {{- if .Values.argo.instance }} - argocd.argoproj.io/instance: '{{ .Values.argo.instance }}' - {{- end }} - instance: '{{ .Values.instance.id }}' - annotations: - argocd.argoproj.io/sync-wave: "120" - {{- if and .Values.notifications .Values.notifications.slack_channel_id }} - notifications.argoproj.io/subscribe.on-sync-failed.workspace1: {{ .Values.notifications.slack_channel_id }} - notifications.argoproj.io/subscribe.on-sync-succeeded.workspace1: {{ .Values.notifications.slack_channel_id }} - {{- end }} - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: "{{ .Values.argo.projects.apps }}" - destination: - server: {{ .Values.cluster.url }} - namespace: {{ $cpd_operators_ns }} - source: - repoURL: "{{ .Values.source.repo_url }}" - path: instance-applications/120-ibm-spss - targetRevision: "{{ .Values.source.revision }}" - plugin: - name: {{ .Values.avp.name }} - env: - - name: {{ .Values.avp.values_varname }} - value: | - account_id: "{{ .Values.account.id }}" - region_id: "{{ .Values.region.id }}" - cluster_id: "{{ .Values.cluster.id }}" - instance_id: "{{ .Values.instance.id }}" - cluster_admin_role: {{ .Values.cluster_admin_role }} - application_admin_role: {{ .Values.application_admin_role }} - sm_aws_access_key_id: "{{ .Values.sm.aws_access_key_id }}" - sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" - cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" - cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" - cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" - cpd_service_storage_class: "{{ .Values.ibm_spss.cpd_service_storage_class }}" - cpd_service_block_storage_class: "{{ .Values.ibm_spss.cpd_service_block_storage_class }}" - cpd_service_scale_config: "{{ .Values.ibm_spss.cpd_service_scale_config }}" - spss_version: "{{ .Values.ibm_spss.spss_version }}" - spss_channel: "{{ .Values.ibm_spss.spss_channel }}" - spss_install_plan: "{{ .Values.ibm_spss.spss_install_plan }}" - ccs_version: "{{ .Values.ibm_spss.ccs_version }}" - canvasbase_channel: "{{ .Values.ibm_spss.canvasbase_channel }}" - canvasbase_install_plan: "{{ .Values.ibm_spss.canvasbase_install_plan }}" - {{- if .Values.custom_labels }} - custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} - {{- end }} - junitreporter: - reporter_name: "ibm-spss-{{ .Values.instance.id }}" - cluster_id: "{{ .Values.cluster.id }}" - instance_id: "{{ .Values.instance.id }}" - devops_mongo_uri: "{{ .Values.devops.mongo_uri }}" - devops_build_number: "{{ .Values.devops.build_number }}" - gitops_version: "{{ .Values.source.revision }}" - cli_image_repo: {{ .Values.cli_image_repo }} - - name: ARGOCD_APP_NAME - value: cpdspssapp - {{- if not (empty .Values.avp.secret) }} - - name: AVP_SECRET - value: {{ .Values.avp.secret }} - {{- end }} - syncPolicy: - automated: - {{- if .Values.auto_delete }} - prune: true - {{- end }} - selfHeal: true - retry: - limit: 20 - syncOptions: - - CreateNamespace=false -{{- end }} \ No newline at end of file From a59cb950884f24cbcc4e747fcb2b4c3d8e5740fb Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 12:23:00 +0530 Subject: [PATCH 38/68] Fix Cognos Analytics Application - use default values, remove ibm_cognos_analytics dependency --- .../templates/120-ibm-cognos-analytics-app.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml index 9c29b0c07..a025e0711 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml @@ -1,4 +1,4 @@ -{{- if and (not (empty .Values.ibm_cognos_analytics)) (not (empty .Values.ibm_cp4d)) (.Values.cluster_admin_role) }} +{{- if and (not (empty .Values.ibm_cp4d)) (.Values.cluster_admin_role) }} {{ $cpd_operators_ns := .Values.ibm_cp4d.cpd_operators_namespace }} --- # IBM Cognos Analytics Application @@ -49,10 +49,10 @@ spec: cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" - cpd_service_storage_class: "{{ .Values.ibm_cognos_analytics.cpd_service_storage_class }}" - cpd_service_block_storage_class: "{{ .Values.ibm_cognos_analytics.cpd_service_block_storage_class }}" - cpd_service_scale_config: "{{ .Values.ibm_cognos_analytics.cpd_service_scale_config }}" - ccs_version: "{{ .Values.ibm_cognos_analytics.ccs_version }}" + cpd_service_storage_class: "{{ .Values.ibm_cp4d.cpd_service_storage_class | default \"nfs-client\" }}" + cpd_service_block_storage_class: "{{ .Values.ibm_cp4d.cpd_service_block_storage_class | default \"nfs-client\" }}" + cpd_service_scale_config: "{{ .Values.ibm_cp4d.cpd_service_scale_config | default \"small\" }}" + ccs_version: "{{ .Values.ibm_cp4d.ccs_version | default \"12.1.0\" }}" {{- if .Values.custom_labels }} custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} {{- end }} From 309fbaceeb5d7205c20f5392b9d886d2a524d665 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 12:42:34 +0530 Subject: [PATCH 39/68] MASCORE-15507: Fix parse error caused by escaped quotes in default values --- .../templates/120-ibm-cognos-analytics-app.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml index a025e0711..2143a7188 100644 --- a/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-cognos-analytics-app.yaml @@ -49,10 +49,10 @@ spec: cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" - cpd_service_storage_class: "{{ .Values.ibm_cp4d.cpd_service_storage_class | default \"nfs-client\" }}" - cpd_service_block_storage_class: "{{ .Values.ibm_cp4d.cpd_service_block_storage_class | default \"nfs-client\" }}" - cpd_service_scale_config: "{{ .Values.ibm_cp4d.cpd_service_scale_config | default \"small\" }}" - ccs_version: "{{ .Values.ibm_cp4d.ccs_version | default \"12.1.0\" }}" + cpd_service_storage_class: "{{ .Values.ibm_cp4d.cpd_service_storage_class | default "nfs-client" }}" + cpd_service_block_storage_class: "{{ .Values.ibm_cp4d.cpd_service_block_storage_class | default "nfs-client" }}" + cpd_service_scale_config: "{{ .Values.ibm_cp4d.cpd_service_scale_config | default "small" }}" + ccs_version: "{{ .Values.ibm_cp4d.ccs_version | default "12.1.0" }}" {{- if .Values.custom_labels }} custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} {{- end }} From 28fe970885e9d97800c016609a15b9bd08cefda6 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 13:00:54 +0530 Subject: [PATCH 40/68] MASCORE-15507: Add missing Chart.yaml for ibm-cognos-analytics chart --- .../120-ibm-cognos-analytics/Chart.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 instance-applications/120-ibm-cognos-analytics/Chart.yaml diff --git a/instance-applications/120-ibm-cognos-analytics/Chart.yaml b/instance-applications/120-ibm-cognos-analytics/Chart.yaml new file mode 100644 index 000000000..44c18d098 --- /dev/null +++ b/instance-applications/120-ibm-cognos-analytics/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: ibm-cognos-analytics +description: IBM Cognos Analytics +type: application +version: 1.0.0 + +dependencies: +- name: junitreporter + version: 1.0.0 + repository: "file://../../sub-charts/junitreporter/" + condition: junitreporter.devops_mongo_uri != "" From f1acbf52cef76037cfe3033bffe546c4ae6a559f Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 13:42:57 +0530 Subject: [PATCH 41/68] MASCORE-15507: Add ibm-redis-cp operator Subscription for CPD 5.3.1+ WML The WmlBase CR was failing with: 'Failed to find exact match for redis.ibm.com/v1.Rediscp' The WML operator Ansible playbook requires the IBM Redis CP operator (ibm-redis-cp) to be installed. For CPD < 5.3.1 this was handled via OLM, but the Helm-based path for CPD >= 5.3.1 had no Subscription for ibm-redis-cp, leaving the Rediscp CRD uninstalled. Changes: - Add ibm-redis-cp Subscription to 09-ibm-cp4d_services_base.yaml, gated on wml_channel being set and CPD version >= 5.3.1 - Add ibm_redis_cp_channel and ibm_redis_cp_install_plan to 110-ibm-cp4d/values.yaml - Pass ibm_redis_cp_channel and ibm_redis_cp_install_plan through 110-ibm-cp4d-app.yaml from ibm_cp4d_services_base config block - Regenerate RBAC rules --- .../templates/09-ibm-cp4d_services_base.yaml | 23 +++++++++++++++++++ .../110-ibm-cp4d/values.yaml | 2 ++ .../templates/per-namespace-rbac.yaml | 1 + .../base/application-admin-role.yaml | 1 + .../templates/110-ibm-cp4d-app.yaml | 2 ++ 5 files changed, 29 insertions(+) diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml index cb0ec381b..38b3cfc95 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml @@ -146,6 +146,29 @@ spec: backoffLimit: 4 + +{{- if and .Values.wml_channel (not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0)) }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: ibm-redis-cp-operator + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "090" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + channel: "{{ .Values.ibm_redis_cp_channel }}" + installPlanApproval: {{ .Values.ibm_redis_cp_install_plan | default "Automatic" | quote }} + name: ibm-redis-cp + source: ibm-operator-catalog + sourceNamespace: openshift-marketplace +{{- end }} + + {{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} {{- if or .Values.wml_channel .Values.wsl_channel .Values.spss_channel }} --- diff --git a/instance-applications/110-ibm-cp4d/values.yaml b/instance-applications/110-ibm-cp4d/values.yaml index 631fbe216..8ac4c34d3 100644 --- a/instance-applications/110-ibm-cp4d/values.yaml +++ b/instance-applications/110-ibm-cp4d/values.yaml @@ -10,3 +10,5 @@ cpd_product_version: "" cpd_iam_integration: false cpd_primary_storage_class: "" cpd_metadata_storage_class: "" +ibm_redis_cp_channel: "" +ibm_redis_cp_install_plan: "" diff --git a/instance-applications/600-application-admin-rbac/templates/per-namespace-rbac.yaml b/instance-applications/600-application-admin-rbac/templates/per-namespace-rbac.yaml index 73e72ce7f..c2f8f96c4 100644 --- a/instance-applications/600-application-admin-rbac/templates/per-namespace-rbac.yaml +++ b/instance-applications/600-application-admin-rbac/templates/per-namespace-rbac.yaml @@ -122,6 +122,7 @@ rules: - apiGroups: - config.mas.ibm.com resources: + - aicfgs - appcfgs - bascfgs - idpcfgs diff --git a/rbac/kustomize/base/application-admin-role.yaml b/rbac/kustomize/base/application-admin-role.yaml index 4ca7260b7..110749def 100644 --- a/rbac/kustomize/base/application-admin-role.yaml +++ b/rbac/kustomize/base/application-admin-role.yaml @@ -95,6 +95,7 @@ rules: - apiGroups: - config.mas.ibm.com resources: + - aicfgs - appcfgs - bascfgs - idpcfgs diff --git a/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml b/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml index 490ccef2b..a7af31521 100644 --- a/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml @@ -94,6 +94,8 @@ spec: opencontent_opensearch_channel: "{{ .Values.ibm_cp4d_services_base.opencontent_opensearch_channel }}" elasticsearch_install_plan: "{{ .Values.ibm_cp4d_services_base.elasticsearch_install_plan }}" opensearch_install_plan: "{{ .Values.ibm_cp4d_services_base.opensearch_install_plan }}" + ibm_redis_cp_channel: "{{ .Values.ibm_cp4d_services_base.ibm_redis_cp_channel }}" + ibm_redis_cp_install_plan: "{{ .Values.ibm_cp4d_services_base.ibm_redis_cp_install_plan }}" {{- end }} {{- if .Values.custom_labels }} custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} From 7e1636b708b7fd585547919b9c9844f7a52b392d Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 15:50:56 +0530 Subject: [PATCH 42/68] MASCORE-15507: Fix ibm-redis-cp install - use Helm not OLM Subscription The IBM Maximo catalog does not contain an ibm-redis-cp OLM package. The previous fix (OLM Subscription) was wrong for this environment. ibm-redis-cp for CPD 5.3.1 must be installed via Helm, the same way WML itself is installed. Changes: - Remove the ibm-redis-cp OLM Subscription added in previous commit (no such package exists in ibm-operator-catalog on this cluster) - Revert ibm_redis_cp_channel/install_plan values and root app changes - Add ibm-redis-cp Helm install steps to the existing install-wml-helm job in 02-ibm-wml-cr.yaml, running before WML itself so the Rediscp CRD is established before the WmlBase CR reconcile begins - Regenerate RBAC rules --- .../templates/09-ibm-cp4d_services_base.yaml | 22 ------------ .../110-ibm-cp4d/values.yaml | 2 -- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 34 +++++++++++++++++++ .../templates/110-ibm-cp4d-app.yaml | 2 -- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml index 38b3cfc95..ed8eb2cff 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml @@ -147,28 +147,6 @@ spec: -{{- if and .Values.wml_channel (not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0)) }} ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: ibm-redis-cp-operator - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "090" -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - channel: "{{ .Values.ibm_redis_cp_channel }}" - installPlanApproval: {{ .Values.ibm_redis_cp_install_plan | default "Automatic" | quote }} - name: ibm-redis-cp - source: ibm-operator-catalog - sourceNamespace: openshift-marketplace -{{- end }} - - {{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} {{- if or .Values.wml_channel .Values.wsl_channel .Values.spss_channel }} --- diff --git a/instance-applications/110-ibm-cp4d/values.yaml b/instance-applications/110-ibm-cp4d/values.yaml index 8ac4c34d3..631fbe216 100644 --- a/instance-applications/110-ibm-cp4d/values.yaml +++ b/instance-applications/110-ibm-cp4d/values.yaml @@ -10,5 +10,3 @@ cpd_product_version: "" cpd_iam_integration: false cpd_primary_storage_class: "" cpd_metadata_storage_class: "" -ibm_redis_cp_channel: "" -ibm_redis_cp_install_plan: "" diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 969c75f1b..e7fb9a3f9 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -51,6 +51,40 @@ spec: helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update + echo "Installing ibm-redis-cp cluster-scoped chart (CRDs + ClusterRoles)..." + helm template ibm-redis-cp-cluster ibm-charts/ibm-redis-cp-cluster-scoped \ + --version 1.6.11 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Installing ibm-redis-cp namespace-scoped chart (operator)..." + helm upgrade --install ibm-redis-cp ibm-charts/ibm-redis-cp \ + --version 1.6.11 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key + + echo "Waiting for redicps.redis.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "Rediscp CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd redicps.redis.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "Rediscp CRD established." + break + fi + sleep 10 + done + echo "Installing wml cluster-scoped chart (CRDs + ClusterRoles)..." helm template wml-cluster ibm-charts/wml-cluster-scoped \ --version 12.1.0 \ diff --git a/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml b/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml index a7af31521..490ccef2b 100644 --- a/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/110-ibm-cp4d-app.yaml @@ -94,8 +94,6 @@ spec: opencontent_opensearch_channel: "{{ .Values.ibm_cp4d_services_base.opencontent_opensearch_channel }}" elasticsearch_install_plan: "{{ .Values.ibm_cp4d_services_base.elasticsearch_install_plan }}" opensearch_install_plan: "{{ .Values.ibm_cp4d_services_base.opensearch_install_plan }}" - ibm_redis_cp_channel: "{{ .Values.ibm_cp4d_services_base.ibm_redis_cp_channel }}" - ibm_redis_cp_install_plan: "{{ .Values.ibm_cp4d_services_base.ibm_redis_cp_install_plan }}" {{- end }} {{- if .Values.custom_labels }} custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} From 89f7365b248c7cd66f1f57d4b5ff733e521d955e Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 16:25:32 +0530 Subject: [PATCH 43/68] MASCORE-15507: Keep failed install-wml-helm pod for log inspection Temporarily remove HookFailed from delete policy so failed pods stay alive long enough to read their logs and diagnose the ibm-redis-cp Helm chart name issue. --- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index e7fb9a3f9..8581eedee 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -34,8 +34,7 @@ metadata: annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - - argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed + argocd.argoproj.io/hook-delete-policy: HookSucceeded spec: template: From cafe354e84cfd3b8a13f0764810703300523a599 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 17:03:02 +0530 Subject: [PATCH 44/68] MASCORE-15507: Fix ibm-redis-cp Helm chart version to 1.3.1 Version 1.6.11 does not exist in ibm-charts repo. Available versions are 1.3.1 and 1.4.0. Using 1.3.1 to match the sub_channel v1.3 defined in olm-utils-cm for CPD 5.3.1. --- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 8581eedee..1455b79b5 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -52,7 +52,7 @@ spec: echo "Installing ibm-redis-cp cluster-scoped chart (CRDs + ClusterRoles)..." helm template ibm-redis-cp-cluster ibm-charts/ibm-redis-cp-cluster-scoped \ - --version 1.6.11 \ + --version 1.3.1 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ @@ -61,7 +61,7 @@ spec: echo "Installing ibm-redis-cp namespace-scoped chart (operator)..." helm upgrade --install ibm-redis-cp ibm-charts/ibm-redis-cp \ - --version 1.6.11 \ + --version 1.3.1 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ From f45914d113966a02273ab275d20a3c63d99e8b8c Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 17:30:14 +0530 Subject: [PATCH 45/68] MASCORE-15507: Fix install-wml-helm Job - hash-based name and cleanup on failure --- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 1455b79b5..18ca565bc 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -26,22 +26,28 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ +{{- $_job_name_prefix := "install-wml-helm" }} +{{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} +{{- $_job_config_values := omit .Values "junitreporter" }} +{{- $_job_version := "v1" }} +{{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} +{{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} apiVersion: batch/v1 kind: Job metadata: - name: install-wml-helm + name: {{ $_job_name }} namespace: "{{ .Values.cpd_operators_namespace }}" annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed spec: template: spec: containers: - name: helm-install - image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@{{ $_cli_image_digest }} command: - /bin/sh - -c From 9f7b76c07ebb35feff751abc56808b43141b8ec7 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 17:45:53 +0530 Subject: [PATCH 46/68] MASCORE-15507: Fix typo redicps -> rediscps in CRD poll, bump job version to v2 --- .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 18ca565bc..49cb50c0f 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-wml-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v1" }} +{{- $_job_version := "v2" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} apiVersion: batch/v1 @@ -74,7 +74,7 @@ spec: --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ --set global.imagePullSecret=ibm-entitlement-key - echo "Waiting for redicps.redis.ibm.com CRD to be established..." + echo "Waiting for rediscps.redis.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -82,7 +82,7 @@ spec: echo "Rediscp CRD not established after 5 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd redicps.redis.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd rediscps.redis.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "Rediscp CRD established." break From 4a3203e80bf29b6ed19401198f144675e9f9bc17 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 19:01:13 +0530 Subject: [PATCH 47/68] MASCORE-15507: Add hashed job name and cleanup-group label to cognos-analytics helm install job --- .../templates/01-ibm-cognos-analytics-cr.yaml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index c54fb2565..df19bf161 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -27,23 +27,30 @@ spec: --- # Helm-based installation for CPD 5.3.1+ # Cognos Analytics is an optional analytics and reporting service +{{- $_job_name_prefix := "install-cognos-helm" }} +{{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} +{{- $_job_config_values := omit .Values "junitreporter" }} +{{- $_job_version := "v1" }} +{{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} +{{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} +{{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} apiVersion: batch/v1 kind: Job metadata: - name: install-cognos-analytics-helm + name: {{ $_job_name }} namespace: "{{ .Values.cpd_operators_namespace }}" + labels: + mas.ibm.com/job-cleanup-group: {{ $_job_cleanup_group }} annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed - spec: template: spec: containers: - name: helm-install - image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@{{ $_cli_image_digest }} command: - /bin/sh - -c From 4ec13b45da30a399df5ba2510d2b44f7b9b79956 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 19:40:05 +0530 Subject: [PATCH 48/68] MASCORE-15507: Fix CRD poll name for cognos-analytics, bump job version to v2 --- .../templates/01-ibm-cognos-analytics-cr.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index df19bf161..de5025325 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -30,7 +30,7 @@ spec: {{- $_job_name_prefix := "install-cognos-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v1" }} +{{- $_job_version := "v2" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -69,7 +69,7 @@ spec: --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - - echo "Waiting for cognosanalytics.cognosanalytics.cpd.ibm.com CRD to be established..." + echo "Waiting for caservices.ca.cpd.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -77,7 +77,7 @@ spec: echo "CRD not established after 5 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd cognosanalytics.cognosanalytics.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd caservices.ca.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "CRD established." break From 7991777eb74bb3bf9830e180a27bb5b526ff9de2 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 21:26:06 +0530 Subject: [PATCH 49/68] MASCORE-15507: Revert unrelated SLS pod templates changes --- instance-applications/100-ibm-sls/README.md | 4 ---- .../100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml | 4 ---- 2 files changed, 8 deletions(-) diff --git a/instance-applications/100-ibm-sls/README.md b/instance-applications/100-ibm-sls/README.md index f0845de86..78ae3fbec 100644 --- a/instance-applications/100-ibm-sls/README.md +++ b/instance-applications/100-ibm-sls/README.md @@ -69,10 +69,6 @@ ibm_sls: - alias: string crt: string (multiline) - # Pod Templates (optional) - sls_pod_templates: - key: value - # Certificate Authority (optional) internal_certificate_authority: string ``` diff --git a/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml b/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml index 2277794be..b5b8b3aa8 100644 --- a/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml +++ b/instance-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml @@ -17,10 +17,6 @@ spec: {{ .Values.mongo_spec | toYaml | indent 4 }} license: accept: true -{{- if not (empty .Values.sls_pod_templates) }} - podTemplates: -{{ .Values.sls_pod_templates | toYaml | indent 4 }} -{{- end }} settings: auth: enforce: true From 3b8775300e30836232fc6486ea68d59f9ce387af Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 21:43:57 +0530 Subject: [PATCH 50/68] MASCORE-15507: Revert unrelated SLS pod templates changes; add SPSS Modeler chart with CPD 5.3.1 Helm support --- instance-applications/120-ibm-spss/Chart.yaml | 11 ++ .../templates/00-ibm-spss_Subscription.yaml | 19 ++++ .../templates/01-ibm-spss-cr.yaml | 104 ++++++++++++++++++ .../120-ibm-spss/values.yaml | 8 ++ .../templates/120-ibm-spss-app.yaml | 85 ++++++++++++++ .../templates/100-ibm-sls-app.yaml | 3 - .../templates/06-ibm-sls_LicenseService.yaml | 4 - 7 files changed, 227 insertions(+), 7 deletions(-) create mode 100644 instance-applications/120-ibm-spss/Chart.yaml create mode 100644 instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml create mode 100644 instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml create mode 100644 instance-applications/120-ibm-spss/values.yaml create mode 100644 root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml diff --git a/instance-applications/120-ibm-spss/Chart.yaml b/instance-applications/120-ibm-spss/Chart.yaml new file mode 100644 index 000000000..9f703e5fb --- /dev/null +++ b/instance-applications/120-ibm-spss/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: ibm-spss +description: SPSS Modeler +type: application +version: 1.0.0 + +dependencies: +- name: junitreporter + version: 1.0.0 + repository: "file://../../sub-charts/junitreporter/" + condition: junitreporter.devops_mongo_uri != "" diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml new file mode 100644 index 000000000..5d5fd60f8 --- /dev/null +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -0,0 +1,19 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: spss-modeler-subscription + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + channel: "{{ .Values.spss_channel }}" + name: spss-modeler + source: ibm-operator-catalog + sourceNamespace: openshift-marketplace +{{- end }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml new file mode 100644 index 000000000..f27800f64 --- /dev/null +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -0,0 +1,104 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +--- +apiVersion: spssmodeler.cpd.ibm.com/v1 +kind: SPSSModeler +metadata: + name: "spssmodeler-cr" + namespace: "{{ .Values.cpd_instance_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + imagePullSecret: ibm-entitlement-key + ignoreForMaintenance: false + license: + accept: true + license: Standard + fileStorageClass: "{{ .Values.cpd_service_storage_class }}" + blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" + scaleConfig: "{{ .Values.cpd_service_scale_config }}" + version: "{{ .Values.spss_version }}" + ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} +--- +# Helm-based installation for CPD 5.3.1+ +{{- $_job_name_prefix := "install-spss-helm" }} +{{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} +{{- $_job_config_values := omit .Values "junitreporter" }} +{{- $_job_version := "v1" }} +{{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} +{{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} +{{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ $_job_name }} + namespace: "{{ .Values.cpd_operators_namespace }}" + labels: + mas.ibm.com/job-cleanup-group: {{ $_job_cleanup_group }} + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed +spec: + template: + spec: + containers: + - name: helm-install + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@{{ $_cli_image_digest }} + command: + - /bin/sh + - -c + - | + set -e + helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm + helm repo update + + echo "Installing spss-modeler cluster-scoped chart (CRDs + ClusterRoles)..." + helm template spss-modeler-cluster ibm-charts/spss-modeler-cluster-scoped \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for spssmodelerbases.spssmodeler.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd spssmodelerbases.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "CRD established." + break + fi + sleep 10 + done + + echo "Installing spss-modeler namespace-scoped chart (operator + CR)..." + helm upgrade --install spss-modeler ibm-charts/spss-modeler \ + --version 12.1.0 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --wait --timeout 60m + restartPolicy: Never + serviceAccountName: cpd-sa + backoffLimit: 4 +{{- end }} diff --git a/instance-applications/120-ibm-spss/values.yaml b/instance-applications/120-ibm-spss/values.yaml new file mode 100644 index 000000000..b7c0618d7 --- /dev/null +++ b/instance-applications/120-ibm-spss/values.yaml @@ -0,0 +1,8 @@ +--- +ccs_version: "" +cpd_service_block_storage_class: "" +cpd_service_scale_config: "" +cpd_service_storage_class: "" +spss_channel: "" +spss_version: "" +cpd_product_version: "" diff --git a/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml new file mode 100644 index 000000000..ed753aca9 --- /dev/null +++ b/root-applications/ibm-mas-instance-root/templates/120-ibm-spss-app.yaml @@ -0,0 +1,85 @@ +{{- if and (not (empty .Values.ibm_spss)) (not (empty .Values.ibm_cp4d)) (.Values.cluster_admin_role) }} +{{ $cpd_operators_ns := .Values.ibm_cp4d.cpd_operators_namespace }} +--- +# IBM SPSS Modeler Application +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: spss.{{ .Values.cluster.id }}.{{ .Values.instance.id }} + namespace: {{ .Values.argo.namespace }} + labels: + environment: '{{ .Values.account.id }}' + region: '{{ .Values.region.id }}' + cluster: '{{ .Values.cluster.id }}' + {{- if .Values.argo.instance }} + argocd.argoproj.io/instance: '{{ .Values.argo.instance }}' + {{- end }} + instance: '{{ .Values.instance.id }}' + annotations: + argocd.argoproj.io/sync-wave: "120" + {{- if and .Values.notifications .Values.notifications.slack_channel_id }} + notifications.argoproj.io/subscribe.on-sync-failed.workspace1: {{ .Values.notifications.slack_channel_id }} + notifications.argoproj.io/subscribe.on-sync-succeeded.workspace1: {{ .Values.notifications.slack_channel_id }} + {{- end }} + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: "{{ .Values.argo.projects.apps }}" + destination: + server: {{ .Values.cluster.url }} + namespace: {{ $cpd_operators_ns }} + source: + repoURL: "{{ .Values.source.repo_url }}" + path: instance-applications/120-ibm-spss + targetRevision: "{{ .Values.source.revision }}" + plugin: + name: {{ .Values.avp.name }} + env: + - name: {{ .Values.avp.values_varname }} + value: | + account_id: "{{ .Values.account.id }}" + region_id: "{{ .Values.region.id }}" + cluster_id: "{{ .Values.cluster.id }}" + instance_id: "{{ .Values.instance.id }}" + cli_image_repo: {{ .Values.cli_image_repo }} + cluster_admin_role: {{ .Values.cluster_admin_role }} + application_admin_role: {{ .Values.application_admin_role }} + sm_aws_access_key_id: "{{ .Values.sm.aws_access_key_id }}" + sm_aws_secret_access_key: "{{ .Values.sm.aws_secret_access_key }}" + cpd_operators_namespace: "{{ .Values.ibm_cp4d.cpd_operators_namespace }}" + cpd_instance_namespace: "{{ .Values.ibm_cp4d.cpd_instance_namespace }}" + cpd_product_version: "{{ .Values.ibm_cp4d.cpd_product_version }}" + cpd_service_storage_class: "{{ .Values.ibm_spss.cpd_service_storage_class }}" + cpd_service_block_storage_class: "{{ .Values.ibm_spss.cpd_service_block_storage_class }}" + cpd_service_scale_config: "{{ .Values.ibm_spss.cpd_service_scale_config }}" + spss_version: "{{ .Values.ibm_spss.spss_version }}" + spss_channel: "{{ .Values.ibm_spss.spss_channel }}" + ccs_version: "{{ .Values.ibm_spss.ccs_version }}" + {{- if .Values.custom_labels }} + custom_labels: {{ .Values.custom_labels | toYaml | nindent 14 }} + {{- end }} + junitreporter: + reporter_name: "ibm-spss-{{ .Values.instance.id }}" + cluster_id: "{{ .Values.cluster.id }}" + instance_id: "{{ .Values.instance.id }}" + devops_mongo_uri: "{{ .Values.devops.mongo_uri }}" + devops_build_number: "{{ .Values.devops.build_number }}" + gitops_version: "{{ .Values.source.revision }}" + cli_image_repo: {{ .Values.cli_image_repo }} + - name: ARGOCD_APP_NAME + value: cpdspssapp + {{- if not (empty .Values.avp.secret) }} + - name: AVP_SECRET + value: {{ .Values.avp.secret }} + {{- end }} + syncPolicy: + automated: + {{- if .Values.auto_delete }} + prune: true + {{- end }} + selfHeal: true + retry: + limit: 20 + syncOptions: + - CreateNamespace=false +{{- end }} diff --git a/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml b/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml index d852e67c4..71c353c2b 100644 --- a/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml +++ b/root-applications/ibm-mas-sls-root/templates/100-ibm-sls-app.yaml @@ -78,9 +78,6 @@ spec: devops_mongo_uri: "{{ .Values.devops.mongo_uri }}" devops_build_number: "{{ .Values.devops.build_number }}" gitops_version: "{{ .Values.source.revision }}" - {{- if .Values.ibm_sls_standalone.sls_pod_templates }} - sls_pod_templates: {{ .Values.ibm_sls_standalone.sls_pod_templates | toYaml | nindent 14 }} - {{- end }} {{- if .Values.ibm_sls_standalone.internal_certificate_authority }} internal_certificate_authority: "{{ .Values.ibm_sls_standalone.internal_certificate_authority }}" {{- end }} diff --git a/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml b/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml index 3914dc7d8..276cbc3f1 100644 --- a/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml +++ b/sls-applications/100-ibm-sls/templates/06-ibm-sls_LicenseService.yaml @@ -18,10 +18,6 @@ spec: {{ .Values.mongo_spec | toYaml | indent 4 }} license: accept: true -{{- if not (empty .Values.sls_pod_templates) }} - podTemplates: -{{ .Values.sls_pod_templates | toYaml | indent 4 }} -{{- end }} settings: auth: enforce: true From 14709be5fffca71e113af5c1cbd935b09b596466 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 21:50:24 +0530 Subject: [PATCH 51/68] MASCORE-15507: Revert unrelated SLS pod templates change from instance-root --- .../ibm-mas-instance-root/templates/100-ibm-sls-app.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml b/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml index e3ce37274..e1d364f59 100644 --- a/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml +++ b/root-applications/ibm-mas-instance-root/templates/100-ibm-sls-app.yaml @@ -80,9 +80,6 @@ spec: devops_build_number: "{{ .Values.devops.build_number }}" gitops_version: "{{ .Values.source.revision }}" cli_image_repo: {{ .Values.cli_image_repo }} - {{- if .Values.ibm_sls.sls_pod_templates }} - sls_pod_templates: {{ .Values.ibm_sls.sls_pod_templates | toYaml | nindent 14 }} - {{- end }} {{- if .Values.ibm_sls.internal_certificate_authority }} internal_certificate_authority: "{{ .Values.ibm_sls.internal_certificate_authority }}" {{- end }} From 362022cd9cec5d073bd6332dd2563fc4f34e33e4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 22:01:46 +0530 Subject: [PATCH 52/68] MASCORE-15507: Fix SPSS Helm chart names (spss-cluster-scoped/spss v13.0.4), bump job to v2 --- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index f27800f64..5a4415ff9 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v1" }} +{{- $_job_version := "v2" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -58,9 +58,9 @@ spec: helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update - echo "Installing spss-modeler cluster-scoped chart (CRDs + ClusterRoles)..." - helm template spss-modeler-cluster ibm-charts/spss-modeler-cluster-scoped \ - --version 12.1.0 \ + echo "Installing spss cluster-scoped chart (CRDs + ClusterRoles)..." + helm template spss-cluster ibm-charts/spss-cluster-scoped \ + --version 13.0.4 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.releaseVersion={{ .Values.cpd_product_version }} \ @@ -84,9 +84,9 @@ spec: sleep 10 done - echo "Installing spss-modeler namespace-scoped chart (operator + CR)..." - helm upgrade --install spss-modeler ibm-charts/spss-modeler \ - --version 12.1.0 \ + echo "Installing spss namespace-scoped chart (operator + CR)..." + helm upgrade --install spss ibm-charts/spss \ + --version 13.0.4 \ --namespace {{ .Values.cpd_instance_namespace }} \ --create-namespace \ --set global.licenseAccept=true \ @@ -96,7 +96,7 @@ spec: --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ --set global.imagePullSecret=ibm-entitlement-key \ - --set spssmodeler.scaleConfig={{ .Values.cpd_service_scale_config }} \ + --set spss.scaleConfig={{ .Values.cpd_service_scale_config }} \ --wait --timeout 60m restartPolicy: Never serviceAccountName: cpd-sa From 46223fe061fd55701e17fab4310c5d575403a671 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 22:07:26 +0530 Subject: [PATCH 53/68] MASCORE-15507: Fix SPSS CRD poll name spss.spssmodeler.cpd.ibm.com, bump job to v3 --- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 5a4415ff9..982d54c4c 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v2" }} +{{- $_job_version := "v3" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -68,7 +68,7 @@ spec: --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - - echo "Waiting for spssmodelerbases.spssmodeler.cpd.ibm.com CRD to be established..." + echo "Waiting for spss.spssmodeler.cpd.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -76,7 +76,7 @@ spec: echo "CRD not established after 5 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd spssmodelerbases.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd spss.spssmodeler.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "CRD established." break From f8735f43075f9ba90cce1f11aafb347a8126baed Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 22:41:14 +0530 Subject: [PATCH 54/68] MASCORE-15507: Add canvasbase dependency before SPSS install, bump job to v4 --- .../templates/01-ibm-spss-cr.yaml | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 982d54c4c..8521b9334 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v3" }} +{{- $_job_version := "v4" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -58,6 +58,46 @@ spec: helm repo add ibm-charts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm helm repo update + echo "Installing canvasbase cluster-scoped chart (CRDs + ClusterRoles)..." + helm template canvasbase-cluster ibm-charts/canvasbase-cluster-scoped \ + --version 13.0.4 \ + --namespace {{ .Values.cpd_operators_namespace }} \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - + + echo "Waiting for canvasbases.cpd.ibm.com CRD to be established..." + wait_period=0 + while true; do + wait_period=$((wait_period+10)) + if [ $wait_period -gt 300 ]; then + echo "Canvasbase CRD not established after 5 minutes. Exiting." + exit 1 + fi + STATUS=$(oc get crd canvasbases.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + if [ "$STATUS" = "True" ]; then + echo "Canvasbase CRD established." + break + fi + sleep 10 + done + + echo "Installing canvasbase namespace-scoped chart (operator + CR)..." + helm upgrade --install canvasbase ibm-charts/canvasbase \ + --version 13.0.4 \ + --namespace {{ .Values.cpd_instance_namespace }} \ + --create-namespace \ + --set global.licenseAccept=true \ + --set global.releaseVersion={{ .Values.cpd_product_version }} \ + --set global.operatorNamespace={{ .Values.cpd_operators_namespace }} \ + --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ + --set global.fileStorageClass={{ .Values.cpd_service_storage_class }} \ + --set global.blockStorageClass={{ .Values.cpd_service_block_storage_class }} \ + --set global.imagePullSecret=ibm-entitlement-key \ + --wait --timeout 60m + echo "Installing spss cluster-scoped chart (CRDs + ClusterRoles)..." helm template spss-cluster ibm-charts/spss-cluster-scoped \ --version 13.0.4 \ From 313f4c689af0ff3640050ae182ef4a66d787d9a4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Mon, 10 Aug 2026 22:49:00 +0530 Subject: [PATCH 55/68] MASCORE-15507: Fix canvasbase CRD poll name, bump job to v5 --- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 8521b9334..48dd4ba25 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v4" }} +{{- $_job_version := "v5" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -68,7 +68,7 @@ spec: --set global.instanceNamespace={{ .Values.cpd_instance_namespace }} \ --set global.imagePullSecret=ibm-entitlement-key | oc apply -f - - echo "Waiting for canvasbases.cpd.ibm.com CRD to be established..." + echo "Waiting for canvasbase.canvasbase.cpd.ibm.com CRD to be established..." wait_period=0 while true; do wait_period=$((wait_period+10)) @@ -76,7 +76,7 @@ spec: echo "Canvasbase CRD not established after 5 minutes. Exiting." exit 1 fi - STATUS=$(oc get crd canvasbases.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) + STATUS=$(oc get crd canvasbase.canvasbase.cpd.ibm.com -o jsonpath='{.status.conditions[?(@.type=="Established")].status}' --ignore-not-found 2>/dev/null) if [ "$STATUS" = "True" ]; then echo "Canvasbase CRD established." break From 44d18ac1f863ad1339b2fe3d677251e7c26cbff7 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 11 Aug 2026 11:33:55 +0530 Subject: [PATCH 56/68] MASCORE-15507: Fix Helm chart versions to match CPD 5.3.1 release metadata (spss/canvasbase 12.1.0, cognos 29.1.0) --- .../templates/01-ibm-cognos-analytics-cr.yaml | 6 +++--- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index de5025325..7752e28db 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -30,7 +30,7 @@ spec: {{- $_job_name_prefix := "install-cognos-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v2" }} +{{- $_job_version := "v3" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -61,7 +61,7 @@ spec: echo "Installing cognos-analytics cluster-scoped chart (CRDs + ClusterRoles)..." helm template cognos-analytics-cluster ibm-charts/cognos-analytics-cluster-scoped \ - --version 29.1.8 \ + --version 29.1.0 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.releaseVersion={{ .Values.cpd_product_version }} \ @@ -87,7 +87,7 @@ spec: echo "Installing cognos-analytics namespace-scoped chart (operator + CR)..." helm upgrade --install cognos-analytics ibm-charts/cognos-analytics \ - --version 29.1.8 \ + --version 29.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ --create-namespace \ --set global.licenseAccept=true \ diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 48dd4ba25..aaa464068 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -29,7 +29,7 @@ spec: {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} {{- $_job_config_values := omit .Values "junitreporter" }} -{{- $_job_version := "v5" }} +{{- $_job_version := "v6" }} {{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} {{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} @@ -60,7 +60,7 @@ spec: echo "Installing canvasbase cluster-scoped chart (CRDs + ClusterRoles)..." helm template canvasbase-cluster ibm-charts/canvasbase-cluster-scoped \ - --version 13.0.4 \ + --version 12.1.0 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.releaseVersion={{ .Values.cpd_product_version }} \ @@ -86,7 +86,7 @@ spec: echo "Installing canvasbase namespace-scoped chart (operator + CR)..." helm upgrade --install canvasbase ibm-charts/canvasbase \ - --version 13.0.4 \ + --version 12.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ --create-namespace \ --set global.licenseAccept=true \ @@ -100,7 +100,7 @@ spec: echo "Installing spss cluster-scoped chart (CRDs + ClusterRoles)..." helm template spss-cluster ibm-charts/spss-cluster-scoped \ - --version 13.0.4 \ + --version 12.1.0 \ --namespace {{ .Values.cpd_operators_namespace }} \ --set global.licenseAccept=true \ --set global.releaseVersion={{ .Values.cpd_product_version }} \ @@ -126,7 +126,7 @@ spec: echo "Installing spss namespace-scoped chart (operator + CR)..." helm upgrade --install spss ibm-charts/spss \ - --version 13.0.4 \ + --version 12.1.0 \ --namespace {{ .Values.cpd_instance_namespace }} \ --create-namespace \ --set global.licenseAccept=true \ From 7123d28ab56ef819f5966682506a918233c04c84 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 11 Aug 2026 12:29:02 +0530 Subject: [PATCH 57/68] MASCORE-15507: Fix helm lint - add default 0.0.0 for cpd_product_version semver check in SPSS --- .../120-ibm-spss/templates/00-ibm-spss_Subscription.yaml | 2 +- .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml index 5d5fd60f8..2602216e4 100644 --- a/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml +++ b/instance-applications/120-ibm-spss/templates/00-ibm-spss_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index aaa464068..9aaa9eba0 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: spssmodeler.cpd.ibm.com/v1 kind: SPSSModeler From 745622846b3f367ca38df9e4a0e5a8948315e7d2 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 11 Aug 2026 12:31:37 +0530 Subject: [PATCH 58/68] MASCORE-15507: Fix helm lint - add default 0.0.0 for all cpd_product_version semver checks --- .../110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml | 2 +- .../110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml | 2 +- .../templates/09-ibm-cp4d_services_dependencies.yaml | 2 +- .../templates/00-ibm-cognos-analytics_Subscription.yaml | 2 +- .../templates/01-ibm-cognos-analytics-cr.yaml | 2 +- .../120-ibm-spark/templates/00-ibm-spark_Subscription.yaml | 2 +- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 2 +- .../120-ibm-spark/templates/02-ibm-spark-control-plane.yaml | 2 +- .../120-ibm-wml/templates/01-ibm-wml_Subscription.yaml | 2 +- instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml | 2 +- .../120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml | 2 +- instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml index 2c8d3d747..4c9e7cff5 100644 --- a/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml +++ b/instance-applications/110-ibm-cp4d/templates/02-ibm-cp4d_rbac.yaml @@ -1527,7 +1527,7 @@ roleRef: kind: ClusterRole name: admin -{{- if not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} +{{- if not (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0) }} --- # For CPD 5.3.1+, cpd-sa needs cluster-level permissions to apply CRDs and # ClusterRoles from the Helm cluster-scoped charts during service installation. diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml index ed8eb2cff..bc0a3dc0a 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_base.yaml @@ -147,7 +147,7 @@ spec: -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} {{- if or .Values.wml_channel .Values.wsl_channel .Values.spss_channel }} --- apiVersion: operators.coreos.com/v1alpha1 diff --git a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml index 6a270dcee..5fb58cfe3 100644 --- a/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml +++ b/instance-applications/110-ibm-cp4d/templates/09-ibm-cp4d_services_dependencies.yaml @@ -1,4 +1,4 @@ -{{- if and (or .Values.wsl_channel .Values.spss_channel) (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0) }} +{{- if and (or .Values.wsl_channel .Values.spss_channel) (lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0) }} # Custom Operand Registries # ----------------------------------------------------------------------------- --- diff --git a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml index 169108421..7c909d3ba 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index 7752e28db..64014240c 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: cognosanalytics.cpd.ibm.com/v1 kind: CognosAnalytics diff --git a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml index 392b67cf3..717d69362 100644 --- a/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml +++ b/instance-applications/120-ibm-spark/templates/00-ibm-spark_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index a27460904..c7d6cb80a 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: ae.cpd.ibm.com/v1 kind: AnalyticsEngine diff --git a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml index e2c7b5f8a..49c5f0d33 100644 --- a/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml +++ b/instance-applications/120-ibm-spark/templates/02-ibm-spark-control-plane.yaml @@ -55,7 +55,7 @@ are required here. */}} {{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- kind: ServiceAccount apiVersion: v1 diff --git a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml index 01f75abbd..0bc0af93c 100644 --- a/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml +++ b/instance-applications/120-ibm-wml/templates/01-ibm-wml_Subscription.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 49cb50c0f..8fe2dea76 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -1,4 +1,4 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: wml.cpd.ibm.com/v1beta1 kind: WmlBase diff --git a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml index 2f30520a5..f207bbaae 100644 --- a/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml +++ b/instance-applications/120-ibm-wsl/templates/00-ibm-wsl_Subscription.yaml @@ -18,7 +18,7 @@ # installPlanApproval: {{ .Values.wsl_install_plan | default "Automatic" | quote }} -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 53331456c..8e8855f17 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -27,7 +27,7 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | toString)).Compare) 0 }} +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} --- apiVersion: ws.cpd.ibm.com/v1beta1 kind: WS From 229d27b5c5fb18d7219e67648b7ffb87911db70c Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 11 Aug 2026 12:34:48 +0530 Subject: [PATCH 59/68] MASCORE-15507: Fix README validation - add cognos-analytics-app to instance-root README, add Job to WML README --- instance-applications/120-ibm-wml/README.md | 5 +++-- root-applications/ibm-mas-instance-root/README.md | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/instance-applications/120-ibm-wml/README.md b/instance-applications/120-ibm-wml/README.md index ae239a251..cd572f96e 100644 --- a/instance-applications/120-ibm-wml/README.md +++ b/instance-applications/120-ibm-wml/README.md @@ -10,8 +10,9 @@ Deploys and configures the CP4D Service, Watson Machine Learning (WML) needed fo | Resource Type | Resource Name | Namespace | Condition | Installed By | |--------------|---------------|-----------|-----------|--------------| -| `Subscription` | WML operator subscription | CP4D instance namespace | Always | `application_admin_role` | -| `WmlBase` | Watson Machine Learning service CR | CP4D instance namespace | Always | `application_admin_role` | +| `Subscription` | WML operator subscription | CP4D operators namespace | CPD < 5.3.1 | `application_admin_role` | +| `WmlBase` | Watson Machine Learning service CR | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `Job` | Helm install job (ibm-redis-cp + wml) | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | ## Configuration diff --git a/root-applications/ibm-mas-instance-root/README.md b/root-applications/ibm-mas-instance-root/README.md index b65e28ac1..74e2893d6 100644 --- a/root-applications/ibm-mas-instance-root/README.md +++ b/root-applications/ibm-mas-instance-root/README.md @@ -205,6 +205,7 @@ The following table lists all ArgoCD applications defined in the templates folde | [`110-ibm-db2u-app.yaml`](templates/110-ibm-db2u-app.yaml) | db2u | ✓ | | | 110 | | [`120-db2-databases-app.yaml`](templates/120-db2-databases-app.yaml) | db2-db | | ✓ | | 120 | | [`120-dbs-rds-databases-app.yaml`](templates/120-dbs-rds-databases-app.yaml) | dbs-rds-db | | | ✓ | 120 | +| [`120-ibm-cognos-analytics-app.yaml`](templates/120-ibm-cognos-analytics-app.yaml) | cognos | ✓ | | | 120 | | [`120-ibm-spark-app.yaml`](templates/120-ibm-spark-app.yaml) | spark | ✓ | | | 120 | | [`120-ibm-spss-app.yaml`](templates/120-ibm-spss-app.yaml) | spss | ✓ | | | 120 | | [`120-ibm-wml-app.yaml`](templates/120-ibm-wml-app.yaml) | wml | ✓ | | | 120 | From b4bd4cdbf60a0bf3a26d3461f7710773ec0565f4 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Tue, 11 Aug 2026 12:37:02 +0530 Subject: [PATCH 60/68] MASCORE-15507: Fix verify-job-definitions - add hashed job name pattern and $_cli_image_digest to WSL and Spark Helm install jobs --- .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 15 +++++++++++---- .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index c7d6cb80a..ca46aec4f 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -26,23 +26,30 @@ spec: {{- else }} --- # Helm-based installation for CPD 5.3.1+ +{{- $_job_name_prefix := "install-spark-helm" }} +{{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} +{{- $_job_config_values := omit .Values "junitreporter" }} +{{- $_job_version := "v1" }} +{{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} +{{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} +{{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} apiVersion: batch/v1 kind: Job metadata: - name: install-spark-helm + name: {{ $_job_name }} namespace: "{{ .Values.cpd_operators_namespace }}" + labels: + mas.ibm.com/job-cleanup-group: {{ $_job_cleanup_group }} annotations: argocd.argoproj.io/sync-wave: "092" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed - spec: template: spec: containers: - name: helm-install - image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@{{ $_cli_image_digest }} command: - /bin/sh - -c diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index 8e8855f17..a887d12b2 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -60,23 +60,30 @@ spec: # Installs WSL and all its dependencies (opensearch, ccs, datarefinery, ws-runtimes) # using IBM Helm charts. Each component requires a cluster-scoped chart (CRDs/ClusterRoles) # followed by a namespace-scoped chart (Operator + CR). +{{- $_job_name_prefix := "install-wsl-helm" }} +{{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} +{{- $_job_config_values := omit .Values "junitreporter" }} +{{- $_job_version := "v1" }} +{{- $_job_hash := print ($_job_config_values | toYaml) $_cli_image_digest $_job_version | adler32sum }} +{{- $_job_name := join "-" (list $_job_name_prefix $_job_hash) }} +{{- $_job_cleanup_group := cat $_job_name_prefix | sha1sum }} apiVersion: batch/v1 kind: Job metadata: - name: install-wsl-helm + name: {{ $_job_name }} namespace: "{{ .Values.cpd_operators_namespace }}" + labels: + mas.ibm.com/job-cleanup-group: {{ $_job_cleanup_group }} annotations: argocd.argoproj.io/sync-wave: "091" argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: HookSucceeded,HookFailed - spec: template: spec: containers: - name: helm-install - image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9 + image: {{ .Values.cli_image_repo | default "quay.io/ibmmas/cli" }}@{{ $_cli_image_digest }} command: - /bin/sh - -c From c702932d0d6840a585a457ec34634a5715558ab0 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 15:37:34 +0530 Subject: [PATCH 61/68] MASCORE-15507: Remove Cognos Analytics OLM Subscription Cognos Analytics is only available on CPD >= 5.3.1 and is installed via Helm only. There is no OLM path for Cognos - it was never available on CPD < 5.3.1. The Subscription file was incorrect. --- .../00-ibm-cognos-analytics_Subscription.yaml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml diff --git a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml deleted file mode 100644 index 7c909d3ba..000000000 --- a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: cognos-analytics-subscription - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - channel: "{{ .Values.cognos_analytics_channel }}" - name: cognos-analytics-operator - source: ibm-operator-catalog - sourceNamespace: openshift-marketplace -{{- end }} From 759bdd94a2d9d8633782ce8e239a8aaa181b963c Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 15:41:48 +0530 Subject: [PATCH 62/68] MASCORE-15507: Remove OLM version gate from Cognos Analytics CR Cognos Analytics is only available on CPD >= 5.3.1 via Helm. There is no OLM/CR path for older versions. Removed the incorrect version gate and the CognosAnalytics CR block that was gating on CPD < 5.3.1. --- .../templates/01-ibm-cognos-analytics-cr.yaml | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index 64014240c..04fa2ce8d 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -1,29 +1,3 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} ---- -apiVersion: cognosanalytics.cpd.ibm.com/v1 -kind: CognosAnalytics -metadata: - name: "cognos-analytics-sample" - namespace: "{{ .Values.cpd_instance_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - imagePullSecret: ibm-entitlement-key - ignoreForMaintenance: false - license: - accept: true - license: Standard - fileStorageClass: "{{ .Values.cpd_service_storage_class }}" - blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" - scaleConfig: "{{ .Values.cpd_service_scale_config }}" - version: "{{ .Values.cognos_analytics_version }}" - ccs_operand_version: "{{ .Values.ccs_version }}" -{{- else }} --- # Helm-based installation for CPD 5.3.1+ # Cognos Analytics is an optional analytics and reporting service @@ -102,4 +76,3 @@ spec: restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 4 -{{- end }} From 8a162bc0b2623696b5a135c36d05d69859a2720e Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 15:46:35 +0530 Subject: [PATCH 63/68] Revert "MASCORE-15507: Remove OLM version gate from Cognos Analytics CR" This reverts commit 759bdd94a2d9d8633782ce8e239a8aaa181b963c. --- .../templates/01-ibm-cognos-analytics-cr.yaml | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index 04fa2ce8d..64014240c 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -1,3 +1,29 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} +--- +apiVersion: cognosanalytics.cpd.ibm.com/v1 +kind: CognosAnalytics +metadata: + name: "cognos-analytics-sample" + namespace: "{{ .Values.cpd_instance_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + imagePullSecret: ibm-entitlement-key + ignoreForMaintenance: false + license: + accept: true + license: Standard + fileStorageClass: "{{ .Values.cpd_service_storage_class }}" + blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" + scaleConfig: "{{ .Values.cpd_service_scale_config }}" + version: "{{ .Values.cognos_analytics_version }}" + ccs_operand_version: "{{ .Values.ccs_version }}" +{{- else }} --- # Helm-based installation for CPD 5.3.1+ # Cognos Analytics is an optional analytics and reporting service @@ -76,3 +102,4 @@ spec: restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 4 +{{- end }} From e9d0039efd5bf607400ac5f9784e9d96936822eb Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 15:46:35 +0530 Subject: [PATCH 64/68] Revert "MASCORE-15507: Remove Cognos Analytics OLM Subscription" This reverts commit c702932d0d6840a585a457ec34634a5715558ab0. --- .../00-ibm-cognos-analytics_Subscription.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml diff --git a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml new file mode 100644 index 000000000..7c909d3ba --- /dev/null +++ b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml @@ -0,0 +1,19 @@ +{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: cognos-analytics-subscription + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "092" +{{- if .Values.custom_labels }} + labels: +{{ .Values.custom_labels | toYaml | indent 4 }} +{{- end }} +spec: + channel: "{{ .Values.cognos_analytics_channel }}" + name: cognos-analytics-operator + source: ibm-operator-catalog + sourceNamespace: openshift-marketplace +{{- end }} From 138ad046f1ca88b562f0f318128a54701186fe61 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 16:01:21 +0530 Subject: [PATCH 65/68] MASCORE-15507: Cognos Analytics - remove OLM path, 5.3.1+ Helm only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cognos Analytics was never deployed via this GitOps repo before this story. It was newly added as part of MASCORE-15507 for CPD 5.3.1+ only via Helm. No OLM path is needed. - Remove 00-ibm-cognos-analytics_Subscription.yaml entirely - Remove version gate and CognosAnalytics CR block from 01-ibm-cognos-analytics-cr.yaml — Helm install job always applies --- .../00-ibm-cognos-analytics_Subscription.yaml | 19 ------------- .../templates/01-ibm-cognos-analytics-cr.yaml | 27 ------------------- 2 files changed, 46 deletions(-) delete mode 100644 instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml diff --git a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml b/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml deleted file mode 100644 index 7c909d3ba..000000000 --- a/instance-applications/120-ibm-cognos-analytics/templates/00-ibm-cognos-analytics_Subscription.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} ---- -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: cognos-analytics-subscription - namespace: "{{ .Values.cpd_operators_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - channel: "{{ .Values.cognos_analytics_channel }}" - name: cognos-analytics-operator - source: ibm-operator-catalog - sourceNamespace: openshift-marketplace -{{- end }} diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index 64014240c..04fa2ce8d 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -1,29 +1,3 @@ -{{- if lt (semver "5.3.1" | (semver (.Values.cpd_product_version | default "0.0.0" | toString)).Compare) 0 }} ---- -apiVersion: cognosanalytics.cpd.ibm.com/v1 -kind: CognosAnalytics -metadata: - name: "cognos-analytics-sample" - namespace: "{{ .Values.cpd_instance_namespace }}" - annotations: - argocd.argoproj.io/sync-wave: "092" - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true -{{- if .Values.custom_labels }} - labels: -{{ .Values.custom_labels | toYaml | indent 4 }} -{{- end }} -spec: - imagePullSecret: ibm-entitlement-key - ignoreForMaintenance: false - license: - accept: true - license: Standard - fileStorageClass: "{{ .Values.cpd_service_storage_class }}" - blockStorageClass: "{{ .Values.cpd_service_block_storage_class }}" - scaleConfig: "{{ .Values.cpd_service_scale_config }}" - version: "{{ .Values.cognos_analytics_version }}" - ccs_operand_version: "{{ .Values.ccs_version }}" -{{- else }} --- # Helm-based installation for CPD 5.3.1+ # Cognos Analytics is an optional analytics and reporting service @@ -102,4 +76,3 @@ spec: restartPolicy: Never serviceAccountName: cpd-sa backoffLimit: 4 -{{- end }} From a995fb44020cbb8a28c94b2b8b7c6c2fa2a40bc6 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 16:34:18 +0530 Subject: [PATCH 66/68] =?UTF-8?q?fix:=20correct=20imagePullSecret=20name?= =?UTF-8?q?=20in=20Ibmcpd=20CR=20(underscore=20=E2=86=92=20dash)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Ibmcpd CR spec.imagePullSecret was set to 'ibm_entitlement_key' (underscores) instead of the actual Kubernetes Secret name 'ibm-entitlement-key' (dashes). This caused the CP4D operator's Ansible playbook to fail to pull Common Services images, resulting in: 'Fail to wait for commonservice CR to reach Succeeded status' Fixes MASCORE-15507 --- .../110-ibm-cp4d/templates/07-ibm-cp4d_Ibmcpd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instance-applications/110-ibm-cp4d/templates/07-ibm-cp4d_Ibmcpd.yaml b/instance-applications/110-ibm-cp4d/templates/07-ibm-cp4d_Ibmcpd.yaml index 2fc6e57ed..a00db1949 100644 --- a/instance-applications/110-ibm-cp4d/templates/07-ibm-cp4d_Ibmcpd.yaml +++ b/instance-applications/110-ibm-cp4d/templates/07-ibm-cp4d_Ibmcpd.yaml @@ -12,7 +12,7 @@ metadata: {{ .Values.custom_labels | toYaml | indent 4 }} {{- end }} spec: - imagePullSecret: ibm_entitlement_key + imagePullSecret: ibm-entitlement-key version: "{{ .Values.cpd_product_version }}" license: accept: true From 74238ce6ce69d77b913ca65cfb1649798d0ce394 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 17:06:16 +0530 Subject: [PATCH 67/68] fix: add persistent ConfigMap to CPD 5.3.1 Helm charts to stop ArgoCD OutOfSync loop When only an ArgoCD Hook Job exists in a chart (no non-hook resources), ArgoCD enters an OutOfSync/Progressing loop after the job deletes itself (HookSucceeded,HookFailed delete policy). The app shows OutOfSync because ArgoCD sees zero managed resources. Add a stable ConfigMap (sync-wave 091, before the hook job at 092) to WML, Spark, SPSS, Cognos Analytics and WSL 5.3.1 Helm branches so ArgoCD always has a persistent resource to track. Fixes: wml.noble8.inst02, spark.noble8.inst02, spss.noble8.inst02 cognos.noble8.inst02, wsl.noble8.inst02 OutOfSync/Progressing --- .../templates/01-ibm-cognos-analytics-cr.yaml | 13 +++++++++++++ .../120-ibm-spark/templates/01-ibm-spark-cr.yaml | 13 +++++++++++++ .../120-ibm-spss/templates/01-ibm-spss-cr.yaml | 13 +++++++++++++ .../120-ibm-wml/templates/02-ibm-wml-cr.yaml | 13 +++++++++++++ .../120-ibm-wsl/templates/01-ibm-wsl-cr.yaml | 13 +++++++++++++ 5 files changed, 65 insertions(+) diff --git a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml index 04fa2ce8d..6b826bd1e 100644 --- a/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml +++ b/instance-applications/120-ibm-cognos-analytics/templates/01-ibm-cognos-analytics-cr.yaml @@ -1,4 +1,17 @@ --- +# Persistent resource so ArgoCD has a stable non-hook object to track. +# Without this the app shows OutOfSync/Progressing after the Hook Job deletes itself. +apiVersion: v1 +kind: ConfigMap +metadata: + name: ibm-cognos-helm-install-config + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" +data: + cpd_product_version: "{{ .Values.cpd_product_version }}" + install_method: "helm" +--- # Helm-based installation for CPD 5.3.1+ # Cognos Analytics is an optional analytics and reporting service {{- $_job_name_prefix := "install-cognos-helm" }} diff --git a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml index ca46aec4f..b7a6a913b 100644 --- a/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml +++ b/instance-applications/120-ibm-spark/templates/01-ibm-spark-cr.yaml @@ -25,6 +25,19 @@ spec: ccs_operand_version: "{{ .Values.ccs_version }}" {{- else }} --- +# Persistent resource so ArgoCD has a stable non-hook object to track. +# Without this the app shows OutOfSync/Progressing after the Hook Job deletes itself. +apiVersion: v1 +kind: ConfigMap +metadata: + name: ibm-spark-helm-install-config + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" +data: + cpd_product_version: "{{ .Values.cpd_product_version }}" + install_method: "helm" +--- # Helm-based installation for CPD 5.3.1+ {{- $_job_name_prefix := "install-spark-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} diff --git a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml index 9aaa9eba0..e75bf0777 100644 --- a/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml +++ b/instance-applications/120-ibm-spss/templates/01-ibm-spss-cr.yaml @@ -25,6 +25,19 @@ spec: ccs_operand_version: "{{ .Values.ccs_version }}" {{- else }} --- +# Persistent resource so ArgoCD has a stable non-hook object to track. +# Without this the app shows OutOfSync/Progressing after the Hook Job deletes itself. +apiVersion: v1 +kind: ConfigMap +metadata: + name: ibm-spss-helm-install-config + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" +data: + cpd_product_version: "{{ .Values.cpd_product_version }}" + install_method: "helm" +--- # Helm-based installation for CPD 5.3.1+ {{- $_job_name_prefix := "install-spss-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} diff --git a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml index 8fe2dea76..5a9acdfa7 100644 --- a/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml +++ b/instance-applications/120-ibm-wml/templates/02-ibm-wml-cr.yaml @@ -25,6 +25,19 @@ spec: ccs_operand_version: "{{ .Values.ccs_version }}" {{- else }} --- +# Persistent resource so ArgoCD has a stable non-hook object to track. +# Without this the app shows OutOfSync/Progressing after the Hook Job deletes itself. +apiVersion: v1 +kind: ConfigMap +metadata: + name: ibm-wml-helm-install-config + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" +data: + cpd_product_version: "{{ .Values.cpd_product_version }}" + install_method: "helm" +--- # Helm-based installation for CPD 5.3.1+ {{- $_job_name_prefix := "install-wml-helm" }} {{- $_cli_image_digest := "sha256:887cc3059a04601241687711df0c03d662931e6719121eec0eb0490001b2c8b9" }} diff --git a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml index a887d12b2..9161ffffb 100644 --- a/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml +++ b/instance-applications/120-ibm-wsl/templates/01-ibm-wsl-cr.yaml @@ -56,6 +56,19 @@ spec: wsrt_operand_version: "{{ .Values.ws_runtimes_version }}" {{- else }} --- +# Persistent resource so ArgoCD has a stable non-hook object to track. +# Without this the app shows OutOfSync/Progressing after the Hook Job deletes itself. +apiVersion: v1 +kind: ConfigMap +metadata: + name: ibm-wsl-helm-install-config + namespace: "{{ .Values.cpd_operators_namespace }}" + annotations: + argocd.argoproj.io/sync-wave: "091" +data: + cpd_product_version: "{{ .Values.cpd_product_version }}" + install_method: "helm" +--- # Helm-based installation for CPD 5.3.1+ # Installs WSL and all its dependencies (opensearch, ccs, datarefinery, ws-runtimes) # using IBM Helm charts. Each component requires a cluster-scoped chart (CRDs/ClusterRoles) From a2ddc425ebfcab4b87fe270f3646ee72ba4100a6 Mon Sep 17 00:00:00 2001 From: Sakshi Singhroha Date: Fri, 14 Aug 2026 17:11:47 +0530 Subject: [PATCH 68/68] fix: add ConfigMap to README Resources Created tables for Spark, WML, WSL CI verify_chart_readme_tables.py requires every resource kind in a chart to be documented in the README. The persistent ConfigMap added to the CPD 5.3.1 Helm branches was not yet listed. Fixes CI lint failure: 'resource kind not documented in README table: ConfigMap' --- instance-applications/120-ibm-spark/README.md | 7 ++++--- instance-applications/120-ibm-wml/README.md | 1 + instance-applications/120-ibm-wsl/README.md | 15 ++++++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/instance-applications/120-ibm-spark/README.md b/instance-applications/120-ibm-spark/README.md index 9798b6a59..2a3fab040 100644 --- a/instance-applications/120-ibm-spark/README.md +++ b/instance-applications/120-ibm-spark/README.md @@ -10,12 +10,13 @@ Spark extends jupyter notebooks features inside Watson Studio notebooks which ca | Resource Type | Resource Name | Namespace | Condition | Installed By | |--------------|---------------|-----------|-----------|--------------| -| `Subscription` | Spark operator subscription | CP4D instance namespace | Always | `application_admin_role` | -| `AnalyticsEngine` | Spark service CR | CP4D instance namespace | Always | `application_admin_role` | +| `Subscription` | Spark operator subscription | CP4D operators namespace | CPD < 5.3.1 | `application_admin_role` | +| `AnalyticsEngine` | Spark service CR | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | | `ServiceAccount` | Spark control-plane service account | CP4D instance namespace | When control-plane job is enabled | `application_admin_role` | | `ClusterRole` | Spark control-plane cluster roles | N/A (cluster-scoped) | When control-plane job is enabled | `application_admin_role` | | `ClusterRoleBinding` | Spark control-plane cluster role binding | N/A (cluster-scoped) | When control-plane job is enabled | `application_admin_role` | -| `Job` | Spark control-plane job | CP4D instance namespace | When control-plane job is enabled | `application_admin_role` | +| `ConfigMap` | Helm install state tracking | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | +| `Job` | Spark Helm install job | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | ## Configuration diff --git a/instance-applications/120-ibm-wml/README.md b/instance-applications/120-ibm-wml/README.md index cd572f96e..d309bc536 100644 --- a/instance-applications/120-ibm-wml/README.md +++ b/instance-applications/120-ibm-wml/README.md @@ -12,6 +12,7 @@ Deploys and configures the CP4D Service, Watson Machine Learning (WML) needed fo |--------------|---------------|-----------|-----------|--------------| | `Subscription` | WML operator subscription | CP4D operators namespace | CPD < 5.3.1 | `application_admin_role` | | `WmlBase` | Watson Machine Learning service CR | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `ConfigMap` | Helm install state tracking | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | | `Job` | Helm install job (ibm-redis-cp + wml) | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | ## Configuration diff --git a/instance-applications/120-ibm-wsl/README.md b/instance-applications/120-ibm-wsl/README.md index 953c16262..b5a0e9eb7 100644 --- a/instance-applications/120-ibm-wsl/README.md +++ b/instance-applications/120-ibm-wsl/README.md @@ -9,13 +9,14 @@ Deploys and configures the CP4D Service, Watson Studio Local (WSL) needed for `M | Resource Type | Resource Name | Namespace | Condition | Installed By | |--------------|---------------|-----------|-----------|--------------| -| `Subscription` | WSL operator subscription | CP4D instance namespace | Always | `application_admin_role` | -| `WS` | Watson Studio Local service CR | CP4D instance namespace | Always | `application_admin_role` | -| `ServiceAccount` | WSL post-verify service account | CP4D instance namespace | Always | `application_admin_role` | -| `Role` | WSL post-verify roles | CP4D instance namespace | Always | `application_admin_role` | -| `RoleBinding` | WSL post-verify role binding | CP4D instance namespace | Always | `application_admin_role` | -| `Secret` | WSL post-verify runtime secret | CP4D instance namespace | Always | `application_admin_role` | -| `Job` | WSL post-verify job | CP4D instance namespace | Always | `application_admin_role` | +| `Subscription` | WSL operator subscription | CP4D operators namespace | CPD < 5.3.1 | `application_admin_role` | +| `WS` | Watson Studio Local service CR | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `ServiceAccount` | WSL post-verify service account | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `Role` | WSL post-verify roles | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `RoleBinding` | WSL post-verify role binding | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `Secret` | WSL post-verify runtime secret | CP4D instance namespace | CPD < 5.3.1 | `application_admin_role` | +| `ConfigMap` | Helm install state tracking | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | +| `Job` | WSL Helm install job | CP4D operators namespace | CPD >= 5.3.1 | `application_admin_role` | ## Configuration