diff --git a/docs/guides/aiservice-install.md b/docs/guides/aiservice-install.md index 89ab50eb86c..bb7d62945ee 100644 --- a/docs/guides/aiservice-install.md +++ b/docs/guides/aiservice-install.md @@ -86,7 +86,7 @@ The interactive install will guide you through the following steps:
  • Certificate Issuer (Advanced Mode Only): Optionally configure a pre-configured certificate issuer for AI Service
  • Network configuration (Advanced Mode Only): Optionally enable IPv6 SingleStack network configuration for AI Service
  • Database Configuration: Set up database connection for AI Service
  • -
  • RSL Configuration: Configure Red Hat Service Locator integration
  • +
  • RSL Configuration: Optionally provide RSL CA certificate for Reliability Strategies Library integration
  • Tenant Configuration: Set up AI Service tenant(s)
  • Customize pod scheduling configuration for AI Workloads (Advanced Mode Only): Configure tolerations & nodeSelector for AI workloads (Training pipeline & Inference Service). See Scheduling Configuration File Format for file configuration details.
  • Operational Mode: Choose between production or non-production mode
  • @@ -156,10 +156,7 @@ docker run -e IBM_ENTITLEMENT_KEY -ti --rm -v ~:/mnt/home quay.io/ibmmas/cli:@@C --tenant-entitlement-end-date 2026-01-01 \ --tenant-scheduling-config-file "/mnt/home/aiservice-tenant-affinity.yaml" \ \ - --rsl-url http://your-rsl-host:3001/api/v3/vector/query \ - --rsl-org-id your_org_id \ - --rsl-token 'Bearer your_rsl_token' \ - \ + --accept-license --no-confirm " ``` @@ -263,13 +260,14 @@ docker run -e IBM_ENTITLEMENT_KEY -ti --rm -v ~:/mnt/home quay.io/ibmmas/cli:@@C | `--tenant-entitlement-start-date` | Entitlement start date (YYYY-MM-DD) | Yes | `2025-01-01` | | `--tenant-entitlement-end-date` | Entitlement end date (YYYY-MM-DD) | Yes | `2026-01-01` | -### RSL (Red Hat Service Locator) Configuration +### RSL (Reliability Strategies Library) Configuration | Parameter | Description | Required | Example | |-----------|-------------|----------|---------| -| `--rsl-url` | RSL service URL | Optional | `http://host:3001/api/v3/vector/query` | -| `--rsl-org-id` | RSL organization ID | Optional | `your_org_id` | -| `--rsl-token` | RSL authentication token | Optional | `Bearer your_token` | +| `--rsl-ca-crt` | RSL CA certificate (PEM format) | Optional | `/path/to/ca.crt` | + +!!! note + The `rsl_url`, `rsl_org_id`, and `rsl_token` parameters are no longer needed to pass inside the install command. ### AI Workload Scheduling Configuration diff --git a/python/src/mas/cli/aiservice/install/app.py b/python/src/mas/cli/aiservice/install/app.py index 053f1b8f5ab..80d66c6d63c 100644 --- a/python/src/mas/cli/aiservice/install/app.py +++ b/python/src/mas/cli/aiservice/install/app.py @@ -812,20 +812,11 @@ def aiServiceIntegrations(self) -> None: [ "RSL (Reliable Strategy Library) connects to strategic asset management via STRATEGIZEAPI.", "", - "RSL URL: https://api.rsl-service.suite.maximo.com (standard for all customers)", - "Org ID: Get from MAS Manage > System Properties > 'mxe.rs.rslorgid'", - "Token: Use your IBM entitlement key (same as MAS installation)", - "", "Note: Future versions will auto-configure these from MAS Manage.", "", ] ) - self.promptForString("RSL url", "rsl_url") - self.promptForString("ORG Id of RSL", "rsl_org_id") - rslToken = self.promptForString("Token for RSL", isPassword=True) - if not rslToken.startswith("Bearer "): - rslToken = "Bearer " + rslToken - self.setParam("rsl_token", rslToken) + if self.yesOrNo("Does the RSL API use a self-signed certificate?"): self.promptForString("RSL CA certificate (PEM format)", "rsl_ca_crt") diff --git a/python/src/mas/cli/aiservice/install/argBuilder.py b/python/src/mas/cli/aiservice/install/argBuilder.py index 3bc8b202b30..6ebe1033d2d 100644 --- a/python/src/mas/cli/aiservice/install/argBuilder.py +++ b/python/src/mas/cli/aiservice/install/argBuilder.py @@ -179,12 +179,6 @@ def buildCommand(self) -> str: if self.aiserviceTenantSchedulingConfigFileLocal: command += f' --tenant-scheduling-config-file "{self.aiserviceTenantSchedulingConfigFileLocal}"{newline}' - if self.getParam("rsl_url") != "": - command += f" --rsl-url \"{self.getParam('rsl_url')}\"{newline}" - if self.getParam("rsl_org_id") != "": - command += f" --rsl-org-id \"{self.getParam('rsl_org_id')}\"{newline}" - if self.getParam("rsl_token") != "": - command += f" --rsl-token \"{self.getParam('rsl_token')}\"{newline}" if self.getParam("rsl_ca_crt") != "": command += f" --rsl-ca-crt \"{self.getParam('rsl_ca_crt')}\"{newline}" diff --git a/python/src/mas/cli/aiservice/install/argParser.py b/python/src/mas/cli/aiservice/install/argParser.py index f3e9186f2c2..9346386466e 100644 --- a/python/src/mas/cli/aiservice/install/argParser.py +++ b/python/src/mas/cli/aiservice/install/argParser.py @@ -187,9 +187,7 @@ def isValidFile(parser, arg) -> str: ) aiServiceArgGroup.add_argument("--tenant-entitlement-start-date", dest="tenant_entitlement_start_date", required=False, help="Start date for AI Service tenant") aiServiceArgGroup.add_argument("--tenant-entitlement-end-date", dest="tenant_entitlement_end_date", required=False, help="End date for AI Service tenant") -aiServiceArgGroup.add_argument("--rsl-url", dest="rsl_url", required=False, help="rsl url") -aiServiceArgGroup.add_argument("--rsl-org-id", dest="rsl_org_id", required=False, help="org id for rsl") -aiServiceArgGroup.add_argument("--rsl-token", dest="rsl_token", required=False, help="token for rsl") + aiServiceArgGroup.add_argument( "--rsl-ca-crt", dest="rsl_ca_crt", required=False, help="CA certificate for RSL API (PEM format, optional, only if using self-signed certs)" ) diff --git a/python/src/mas/cli/aiservice/install/params.py b/python/src/mas/cli/aiservice/install/params.py index 5fde8d70b99..7625c418c9a 100644 --- a/python/src/mas/cli/aiservice/install/params.py +++ b/python/src/mas/cli/aiservice/install/params.py @@ -92,9 +92,6 @@ "tenant_entitlement_type", "tenant_entitlement_start_date", "tenant_entitlement_end_date", - "rsl_url", - "rsl_org_id", - "rsl_token", "rsl_ca_crt", "environment_type", "configure_aiassistant", diff --git a/python/src/mas/cli/aiservice/install/summarizer.py b/python/src/mas/cli/aiservice/install/summarizer.py index 35ec9e58385..f3479b3c40f 100644 --- a/python/src/mas/cli/aiservice/install/summarizer.py +++ b/python/src/mas/cli/aiservice/install/summarizer.py @@ -80,10 +80,6 @@ def aiServiceSummary(self) -> None: self.printParamSummary("URL", "aiservice_watsonxai_url") self.printParamSummary("Project ID", "aiservice_watsonxai_project_id") - self.printH2("RSL") - self.printParamSummary("URL", "rsl_url") - self.printParamSummary("Organization ID", "rsl_org_id") - def db2Summary(self) -> None: self.printH2("IBM Db2 Univeral Operator Configuration") self.printParamSummary("Action", "db2_action_aiservice") diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index b7595d9b53d..2a1a4869193 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -1870,20 +1870,11 @@ def aiServiceIntegrations(self) -> None: [ "RSL (Reliable Strategy Library) connects to strategic asset management via STRATEGIZEAPI.", "", - "RSL URL: https://api.rsl-service.suite.maximo.com (standard for all customers)", - "Org ID: Get from MAS Manage > System Properties > 'mxe.rs.rslorgid'", - "Token: Use your IBM entitlement key (same as MAS installation)", - "", "Note: Future versions will auto-configure these from MAS Manage.", "", ] ) - self.promptForString("RSL url", "rsl_url") - self.promptForString("ORG Id of RSL", "rsl_org_id") - rslToken = self.promptForString("Token for RSL", isPassword=True) - if not rslToken.startswith("Bearer "): - rslToken = "Bearer " + rslToken - self.setParam("rsl_token", rslToken) + if self.yesOrNo("Does the RSL API use a self-signed certificate?"): self.promptForString("RSL CA certificate (PEM format)", "rsl_ca_crt") diff --git a/python/src/mas/cli/install/argBuilder.py b/python/src/mas/cli/install/argBuilder.py index cb891849c55..c34f63298d2 100644 --- a/python/src/mas/cli/install/argBuilder.py +++ b/python/src/mas/cli/install/argBuilder.py @@ -427,12 +427,6 @@ def buildCommand(self) -> str: if self.aiserviceTenantSchedulingConfigFileLocal: command += f' --tenant-scheduling-config-file "{self.aiserviceTenantSchedulingConfigFileLocal}"{newline}' - if self.getParam("rsl_url") != "": - command += f" --rsl-url \"{self.getParam('rsl_url')}\"{newline}" - if self.getParam("rsl_org_id") != "": - command += f" --rsl-org-id \"{self.getParam('rsl_org_id')}\"{newline}" - if self.getParam("rsl_token") != "": - command += f" --rsl-token \"{self.getParam('rsl_token')}\"{newline}" if self.getParam("rsl_ca_crt") != "": command += f" --rsl-ca-crt \"{self.getParam('rsl_ca_crt')}\"{newline}" diff --git a/python/src/mas/cli/install/argParser.py b/python/src/mas/cli/install/argParser.py index 603d02dafe1..0d6aa404701 100644 --- a/python/src/mas/cli/install/argParser.py +++ b/python/src/mas/cli/install/argParser.py @@ -1040,9 +1040,7 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str: required=False, help="End date for AI Service tenant", ) -aiServiceTenantArgGroup.add_argument("--rsl-url", dest="rsl_url", required=False, help="rsl url") -aiServiceTenantArgGroup.add_argument("--rsl-org-id", dest="rsl_org_id", required=False, help="org id for rsl") -aiServiceTenantArgGroup.add_argument("--rsl-token", dest="rsl_token", required=False, help="token for rsl") + aiServiceTenantArgGroup.add_argument( "--rsl-ca-crt", dest="rsl_ca_crt", diff --git a/python/src/mas/cli/install/params.py b/python/src/mas/cli/install/params.py index 950ae7d0f3f..5de5836b309 100644 --- a/python/src/mas/cli/install/params.py +++ b/python/src/mas/cli/install/params.py @@ -210,9 +210,6 @@ "tenant_entitlement_type", "tenant_entitlement_start_date", "tenant_entitlement_end_date", - "rsl_url", - "rsl_org_id", - "rsl_token", "rsl_ca_crt", "environment_type", "configure_aiassistant", diff --git a/python/src/mas/cli/install/summarizer.py b/python/src/mas/cli/install/summarizer.py index 8f7038f4f74..23d820e7fc0 100644 --- a/python/src/mas/cli/install/summarizer.py +++ b/python/src/mas/cli/install/summarizer.py @@ -385,10 +385,6 @@ def aiServiceSummary(self) -> None: self.printParamSummary("URL", "aiservice_watsonxai_url") self.printParamSummary("Project ID", "aiservice_watsonxai_project_id") - self.printH2("RSL") - self.printParamSummary("URL", "rsl_url") - self.printParamSummary("Organization ID", "rsl_org_id") - def db2Summary(self) -> None: if self.getParam("db2_action_system") == "install" or self.getParam("db2_action_manage") == "install": self.printH2("IBM Db2 Univeral Operator Configuration") diff --git a/python/test/aiservice/install/test_app.py b/python/test/aiservice/install/test_app.py index e1ddc6e4c58..4c2f6b323b8 100644 --- a/python/test/aiservice/install/test_app.py +++ b/python/test/aiservice/install/test_app.py @@ -154,12 +154,6 @@ def test_install_noninteractive(tmpdir): "2026-08-28", "--tenant-scheduling-config-file", f"{tmpdir}/aiservice-tenant-affinity-config.yaml", - "--rsl-url", - "https:/test.rsl.maximo.ibm.com/api/v3/vector/query", - "--rsl-org-id", - "testOrgId", - "--rsl-token", - "testRslToken", "--rsl-ca-crt", "testRslCaCert", "--accept-license", diff --git a/python/test/aiservice/install/test_dev_mode.py b/python/test/aiservice/install/test_dev_mode.py index eb760e4ba51..753dd489b13 100644 --- a/python/test/aiservice/install/test_dev_mode.py +++ b/python/test/aiservice/install/test_dev_mode.py @@ -94,9 +94,6 @@ def test_aiservice_install_master_dev_mode(tmpdir): ".*Watsonxai Deployment ID.*": lambda msg: "", ".*Watsonxai Space ID.*": lambda msg: "", # 13. RSL Integration - ".*RSL url.*": lambda msg: "https://api.rsl-service.suite.maximo.com", - ".*ORG Id of RSL.*": lambda msg: "testOrgId", - ".*Token for RSL.*": lambda msg: "testRslToken", ".*Does the RSL API use a self-signed certificate.*": lambda msg: "n", # 14. MongoDB configuration ".*Create MongoDb cluster.*": lambda msg: "y", @@ -166,9 +163,6 @@ def test_aiservice_install_master_dev_mode_existing_catalog(tmpdir): ".*Watsonxai Deployment ID.*": lambda msg: "", ".*Watsonxai Space ID.*": lambda msg: "", # 13. RSL Integration - ".*RSL url.*": lambda msg: "https://api.rsl-service.suite.maximo.com", - ".*ORG Id of RSL.*": lambda msg: "testOrgId", - ".*Token for RSL.*": lambda msg: "testRslToken", ".*Does the RSL API use a self-signed certificate.*": lambda msg: "n", # 14. MongoDB configuration ".*Create MongoDb cluster.*": lambda msg: "y", @@ -264,12 +258,6 @@ def test_aiservice_install_master_dev_mode_non_interactive(tmpdir): "https://us-south.ml.cloud.ibm.com", "--watsonxai-project-id", "testProjectId", - "--rsl-url", - "https://api.rsl-service.suite.maximo.com", - "--rsl-org-id", - "testOrgId", - "--rsl-token", - "testRslToken", "--accept-license", "--no-confirm", "--skip-pre-check", diff --git a/tekton/src/params/backup.yml.j2 b/tekton/src/params/backup.yml.j2 index 39d6d691348..0fa29c88dc0 100644 --- a/tekton/src/params/backup.yml.j2 +++ b/tekton/src/params/backup.yml.j2 @@ -429,4 +429,4 @@ - name: facilities_db_storage_class_rwo type: string description: Storage class for Facilities DB2 ReadWriteOnce Storage - default: "" \ No newline at end of file + default: "" diff --git a/tekton/src/params/gitops-git.yml.j2 b/tekton/src/params/gitops-git.yml.j2 index bc85ea2dff5..1efcf44f1a0 100644 --- a/tekton/src/params/gitops-git.yml.j2 +++ b/tekton/src/params/gitops-git.yml.j2 @@ -1,5 +1,5 @@ # Gitops Git Parameters -# ------------------------------------------------------------------------- +# ------------------------------------------------------------------------- - name: github_push type: string default: "False" diff --git a/tekton/src/params/install-aiservice.yml.j2 b/tekton/src/params/install-aiservice.yml.j2 index 4d87d68f76a..d3d254450a3 100644 --- a/tekton/src/params/install-aiservice.yml.j2 +++ b/tekton/src/params/install-aiservice.yml.j2 @@ -158,19 +158,12 @@ # MAS Application Configuration - IBM Maximo AI Service - RSL # ----------------------------------------------------------------------------- -- name: rsl_url +- name: rsl_ca_crt type: string - description: url of RSL - default: "" -- name: rsl_org_id - type: string - description: org id for RSL - default: "" -- name: rsl_token - type: string - description: token for RSL + description: ca certificate for RSL default: "" + # MAS Application Configuration - IBM Maximo AI Service - Certificate Issuer # ----------------------------------------------------------------------------- - name: aiservice_certificate_issuer diff --git a/tekton/src/params/install-db2.yml.j2 b/tekton/src/params/install-db2.yml.j2 index a0e80431f0f..71574bab6d7 100644 --- a/tekton/src/params/install-db2.yml.j2 +++ b/tekton/src/params/install-db2.yml.j2 @@ -165,4 +165,5 @@ - name: db2_ldap_password type: string description: Define the password of the db2 user in the local LDAP registry. Must define when db2_ldap_username is used. - default: "" \ No newline at end of file + default: "" + diff --git a/tekton/src/params/install-ibmcatalogs.yml.j2 b/tekton/src/params/install-ibmcatalogs.yml.j2 index b1b54063f43..288920dd361 100644 --- a/tekton/src/params/install-ibmcatalogs.yml.j2 +++ b/tekton/src/params/install-ibmcatalogs.yml.j2 @@ -9,4 +9,5 @@ - name: mas_catalog_digest type: string description: Set when using dev or pre-release catalog in airgap - default: "" \ No newline at end of file + default: "" + diff --git a/tekton/src/params/install-workspace.yml.j2 b/tekton/src/params/install-workspace.yml.j2 index 7d218d0ce4e..91cf876a4df 100644 --- a/tekton/src/params/install-workspace.yml.j2 +++ b/tekton/src/params/install-workspace.yml.j2 @@ -13,4 +13,5 @@ - name: mas_appws_bindings_jdbc type: string description: JDBC Bindings Workspace - default: "workspace-application" \ No newline at end of file + default: "workspace-application" + diff --git a/tekton/src/params/install.yml.j2 b/tekton/src/params/install.yml.j2 index 2c0239ab5db..d372806b90f 100644 --- a/tekton/src/params/install.yml.j2 +++ b/tekton/src/params/install.yml.j2 @@ -773,4 +773,5 @@ # AI Service Configuration # ----------------------------------------------------------------------------- -{{ lookup('template', params_src_dir ~ '/install-aiservice.yml.j2') }} \ No newline at end of file +{{ lookup('template', params_src_dir ~ '/install-aiservice.yml.j2') }} + diff --git a/tekton/src/pipelines/mas-install.yml.j2 b/tekton/src/pipelines/mas-install.yml.j2 index e091ec8eee8..83f6cb13f3c 100644 --- a/tekton/src/pipelines/mas-install.yml.j2 +++ b/tekton/src/pipelines/mas-install.yml.j2 @@ -559,4 +559,5 @@ spec: - name: pipelinerun_name value: $(context.pipelineRun.name) - name: pipelinerun_namespace - value: $(context.pipelineRun.namespace) \ No newline at end of file + value: $(context.pipelineRun.namespace) + diff --git a/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 b/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 index 50f35276e72..78181afefb7 100644 --- a/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 +++ b/tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2 @@ -71,13 +71,10 @@ value: $(params.tenant_entitlement_start_date) - name: tenant_entitlement_end_date value: $(params.tenant_entitlement_end_date) - - - name: rsl_url - value: $(params.rsl_url) - - name: rsl_org_id - value: $(params.rsl_org_id) - - name: rsl_token - value: $(params.rsl_token) + + - name: rsl_ca_crt + value: $(params.rsl_ca_crt) + - name: mas_icr_cp value: $(params.mas_icr_cp) diff --git a/tekton/src/tasks/aiservice/aiservice.yml.j2 b/tekton/src/tasks/aiservice/aiservice.yml.j2 index 4fce847acea..69a56166d1c 100644 --- a/tekton/src/tasks/aiservice/aiservice.yml.j2 +++ b/tekton/src/tasks/aiservice/aiservice.yml.j2 @@ -148,12 +148,9 @@ spec: type: string # RSL - - name: rsl_url - type: string - - name: rsl_org_id - type: string - - name: rsl_token + - name: rsl_ca_crt type: string + # RHOAI flag - name: rhoai @@ -260,12 +257,8 @@ spec: value: $(params.tenant_scheduling_cfg_file) # RSL - - name: RSL_URL - value: $(params.rsl_url) - - name: RSL_ORG_ID - value: $(params.rsl_org_id) - - name: RSL_TOKEN - value: $(params.rsl_token) + - name: RSL_CA_CRT + value: $(params.rsl_ca_crt) # Certificate Issuer - name: AISERVICE_CERTIFICATE_ISSUER diff --git a/tekton/src/tasks/clean-workspaces.yml.j2 b/tekton/src/tasks/clean-workspaces.yml.j2 index 9d898867361..cd50e29357a 100644 --- a/tekton/src/tasks/clean-workspaces.yml.j2 +++ b/tekton/src/tasks/clean-workspaces.yml.j2 @@ -76,4 +76,5 @@ spec: echo "" echo "==========================================" echo "Workspace cleanup completed successfully" - echo "==========================================" \ No newline at end of file + echo "==========================================" + diff --git a/tekton/src/tasks/common/mas-config-helper.yml.j2 b/tekton/src/tasks/common/mas-config-helper.yml.j2 index e1dce78037c..48edd6afb5a 100644 --- a/tekton/src/tasks/common/mas-config-helper.yml.j2 +++ b/tekton/src/tasks/common/mas-config-helper.yml.j2 @@ -53,4 +53,5 @@ spec: echo -n "$IS_POST_92" > $(results.is-post-92.path) echo "DEBUG: Result written to $(results.is-post-92.path)" - # Additional configuration analysis can be added here in the future \ No newline at end of file + # Additional configuration analysis can be added here in the future + diff --git a/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 b/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 index 0a1e6917097..56a1d2c1797 100644 --- a/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 +++ b/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 @@ -201,7 +201,7 @@ spec: export CATALOG_CHANNEL=${AISERVICE_CATALOG_CHANNEL} fi echo "[INFO] CATALOG_CHANNEL=${CATALOG_CHANNEL}" - + mas gitops-aiservice-tenant -a $ACCOUNT -c $CLUSTER_NAME \ --secrets-path $SECRET_PATH \ --dir /tmp/init-aiservice-tenant \ diff --git a/tekton/src/tasks/ivt/ivt-manage.yml.j2 b/tekton/src/tasks/ivt/ivt-manage.yml.j2 index 3f83bc80519..faa6602e6f1 100644 --- a/tekton/src/tasks/ivt/ivt-manage.yml.j2 +++ b/tekton/src/tasks/ivt/ivt-manage.yml.j2 @@ -143,4 +143,4 @@ spec: securityContext: privileged: true runAsUser: 0 - \ No newline at end of file + diff --git a/tekton/src/tasks/prepare-backup-workspace.yml.j2 b/tekton/src/tasks/prepare-backup-workspace.yml.j2 index 768a1566f44..57763eb7b3d 100644 --- a/tekton/src/tasks/prepare-backup-workspace.yml.j2 +++ b/tekton/src/tasks/prepare-backup-workspace.yml.j2 @@ -66,4 +66,5 @@ spec: echo "" echo "==========================================" echo "Workspace preparation completed successfully" - echo "==========================================" \ No newline at end of file + echo "==========================================" + diff --git a/tekton/src/tasks/upload-backup-archive.yml.j2 b/tekton/src/tasks/upload-backup-archive.yml.j2 index 8a8ec3e3793..7bc4b35b776 100644 --- a/tekton/src/tasks/upload-backup-archive.yml.j2 +++ b/tekton/src/tasks/upload-backup-archive.yml.j2 @@ -101,3 +101,4 @@ spec: workspaces: - name: backups +