Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3aac46d
[patch] add support for Redhat Opeshift AI
karol-czarnecki Jan 28, 2026
fbf5e2e
[patch] fix linter issues
karol-czarnecki Jan 28, 2026
84f05ad
[patch] add temporary flat --rhoai to install RHOAI in devmode
karol-czarnecki Jan 28, 2026
1fcf696
[patch] fix aiservice tests
karol-czarnecki Jan 28, 2026
f6fdd94
[patch] added condition to install odh or rhoai
karol-czarnecki Jan 29, 2026
01a34b7
[patch] fix E999 SyntaxError
karol-czarnecki Jan 29, 2026
7a3bbc4
[patch] update argParser with rhoai
karol-czarnecki Jan 29, 2026
338e3e2
[patch] remove rhoi from test
karol-czarnecki Jan 29, 2026
ca39fa1
[patch] add rhoai to app.py
karol-czarnecki Jan 29, 2026
b44bbe4
[patch] added missed params
karol-czarnecki Jan 29, 2026
5e49214
[patch] add rhoai to aiservice pipeline and task
karol-czarnecki Jan 29, 2026
7fba60a
[patch] update --rhoai getParam
karol-czarnecki Jan 29, 2026
5bd6e87
Squashed commit of the following:
karol-czarnecki Jan 29, 2026
1021511
[patch] sync from master and rebuild tars
karol-czarnecki Jan 29, 2026
d0f2602
[patch] add rhoai task to mas-install
karol-czarnecki Jan 29, 2026
340138a
[patch] added rhoai to generate task
karol-czarnecki Jan 29, 2026
66c5a5d
[patch] fix unknown field spec.params[38].value
karol-czarnecki Jan 29, 2026
3284d00
Squashed commit of the following:
karol-czarnecki Jan 30, 2026
7a02204
[patch] remove tars before PR
karol-czarnecki Jan 30, 2026
9d8332b
Merge branch 'master' into masaib1704
karol-czarnecki Jan 30, 2026
fc786f6
[patch] temp comment out this part as target file does not exists
karol-czarnecki Jan 30, 2026
bcdc57e
Merge branch 'master' into masaib1704
karol-czarnecki Jan 30, 2026
fba2ad5
Merge branch 'master' into masaib1704
karol-czarnecki Feb 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions python/src/mas/cli/aiservice/install/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,15 @@ def nonInteractiveMode(self) -> None:
self.operationalMode = 1
self.setParam("environment_type", "production")
self.setParam("aiservice_odh_model_deployment_type", "raw")
self.setParam("aiservice_rhoai_model_deployment_type", "raw")
self.setParam("rhoai", "false")
else:
self.operationalMode = 2
self.setParam("mas_annotations", "mas.ibm.com/operationalMode=nonproduction")
self.setParam("environment_type", "non-production")
self.setParam("aiservice_odh_model_deployment_type", "serverless")
self.setParam("aiservice_rhoai_model_deployment_type", "serverless")
self.setParam("rhoai", "false")

elif key == "additional_configs":
self.localConfigDir = value
Expand Down Expand Up @@ -875,6 +879,10 @@ def configOperationMode(self):
if self.operationalMode == 1:
self.setParam("environment_type", "production")
self.setParam("aiservice_odh_model_deployment_type", "raw")
self.setParam("aiservice_rhoai_model_deployment_type", "raw")
self.setParam("rhoai", "false")
else:
self.setParam("environment_type", "non-production")
self.setParam("aiservice_odh_model_deployment_type", "serverless")
self.setParam("aiservice_rhoai_model_deployment_type", "serverless")
self.setParam("rhoai", "false")
4 changes: 4 additions & 0 deletions python/src/mas/cli/aiservice/install/argBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ def buildCommand(self) -> str:

if self.getParam('aiservice_odh_model_deployment_type') != "":
command += f" --odh-model-deployment-type \"{self.getParam('aiservice_odh_model_deployment_type')}\"{newline}"
if self.getParam('aiservice_rhoai_model_deployment_type') != "":
command += f" --rhoai-model-deployment-type \"{self.getParam('aiservice_rhoai_model_deployment_type')}\"{newline}"
if self.getParam('rhoai') == "true":
command += f" --rhoai{newline}"

if self.getParam('aiservice_watsonxai_apikey') != "":
command += f" --watsonxai-apikey \"{self.getParam('aiservice_watsonxai_apikey')}\"{newline}"
Expand Down
21 changes: 21 additions & 0 deletions python/src/mas/cli/aiservice/install/argParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,27 @@ def isValidFile(parser, arg) -> str:
help="Model deployment type for ODH"
)

# Red Hat Openshift AI
# -----------------------------------------------------------------------------
rhoaiArgGroup = aiServiceinstallArgParser.add_argument_group("RedHat Openshift AI")

rhoaiArgGroup.add_argument(
"--rhoai-model-deployment-type",
dest="aiservice_rhoai_model_deployment_type",
required=False,
default="raw",
help="Model deployment type for RedHat Openshift AI"
)

rhoaiArgGroup.add_argument(
"--rhoai",
dest="rhoai",
required=False,
help="temporary flag to install Redhat Openshift AI instead of Opendatahub",
action="store_const",
const="true"
)

# S3 - General
# -----------------------------------------------------------------------------
s3ArgGroup = aiServiceinstallArgParser.add_argument_group("S3 Storage")
Expand Down
3 changes: 3 additions & 0 deletions python/src/mas/cli/aiservice/install/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@
"artifactory_token",
# ODH
"aiservice_odh_model_deployment_type",
# RHOAI
"aiservice_rhoai_model_deployment_type",
"rhoai",
# AI Service
"aiservice_s3_accesskey",
"aiservice_s3_secretkey",
Expand Down
4 changes: 4 additions & 0 deletions python/src/mas/cli/install/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -579,9 +579,13 @@ def configOperationMode(self):
if self.operationalMode == 1:
self.setParam("environment_type", "production")
self.setParam("aiservice_odh_model_deployment_type", "raw")
self.setParam("aiservice_rhoai_model_deployment_type", "raw")
self.setParam("rhoai", "false")
else:
self.setParam("environment_type", "non-production")
self.setParam("aiservice_odh_model_deployment_type", "serverless")
self.setParam("aiservice_rhoai_model_deployment_type", "serverless")
self.setParam("rhoai", "false")

@logMethodCall
def configRoutingMode(self):
Expand Down
7 changes: 7 additions & 0 deletions python/src/mas/cli/install/argBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,13 @@ def buildCommand(self) -> str:

if self.getParam('aiservice_odh_model_deployment_type') != "":
command += f" --odh-model-deployment-type \"{self.getParam('aiservice_odh_model_deployment_type')}\"{newline}"
if self.getParam('aiservice_rhoai_model_deployment_type') != "":
command += f" --rhoai-model-deployment-type \"{self.getParam('aiservice_rhoai_model_deployment_type')}\"{newline}"
if self.getParam('rhoai') == "true":
command += f" --rhoai{newline}"

if self.getParam('mas_app_settings_persistent_volumes_flag') == "true":
command += f" --manage-persistent-volumes{newline}"

if self.getParam('aiservice_watsonxai_apikey') != "":
command += f" --watsonxai-apikey \"{self.getParam('aiservice_watsonxai_apikey')}\"{newline}"
Expand Down
20 changes: 20 additions & 0 deletions python/src/mas/cli/install/argParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -765,6 +765,26 @@ def isValidFile(parser: argparse.ArgumentParser, arg: str) -> str:
help="Model deployment type for ODH"
)

# Red Hat Openshift AI
# -----------------------------------------------------------------------------
rhoaiArgGroup = installArgParser.add_argument_group("RedHat Openshift AI")

rhoaiArgGroup.add_argument(
"--rhoai-model-deployment-type",
dest="aiservice_rhoai_model_deployment_type",
required=False,
default="raw",
help="Model deployment type for RedHat Openshift AI"
)

rhoaiArgGroup.add_argument(
"--rhoai",
dest="rhoai",
required=False,
help="temporary flag to install Redhat Openshift AI instead of Opendatahub",
action="store_const",
const="true"
)
# S3 Storage
# -----------------------------------------------------------------------------
aiServiceS3ArgGroup = installArgParser.add_argument_group(
Expand Down
3 changes: 3 additions & 0 deletions python/src/mas/cli/install/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,9 @@
"mas_special_characters",
# ODH
"aiservice_odh_model_deployment_type",
# RHOAI
"aiservice_rhoai_model_deployment_type",
"rhoai",
# AI Service
"aiservice_s3_accesskey",
"aiservice_s3_secretkey",
Expand Down
1 change: 1 addition & 0 deletions tekton/generate-tekton-tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
- minio
- aiservice
- odh
- rhoai
- aiservice-upgrade

# 4. Generate Tasks (FVT)
Expand Down
8 changes: 8 additions & 0 deletions tekton/src/params/install-aiservice.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,14 @@
type: string
description: Model deployment type for ODH. Must be one of; [raw, serverless]
default: "raw"
- name: aiservice_rhoai_model_deployment_type
type: string
description: Model deployment type for Redhat Openshift AI. Must be one of; [raw, serverless]
default: "raw"
- name: rhoai
type: string
description: flag to install rhoai
default: ""

- name: minio_root_user
type: string
Expand Down
7 changes: 7 additions & 0 deletions tekton/src/pipelines/mas-install.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,12 @@ spec:
runAfter:
- cert-manager

# 4.6 Redhat Openshift AI ( for AI Service )
# -------------------------------------------------------------------------
{{ lookup('template', pipeline_src_dir ~ '/taskdefs/aiservice/rhoai.yml.j2', template_vars={'application': 'aiservice'}) | indent(4) }}
runAfter:
- cert-manager

# 5. Install & Configure IBM MAS
# -------------------------------------------------------------------------
# 5.1 Configure Workspace
Expand Down Expand Up @@ -377,6 +383,7 @@ spec:
- db2-aiservice
- minio
- aiservice-odh
- aiservice-rhoai

# 15. Verify health of the cluster before we consider the install complete
# -------------------------------------------------------------------------
Expand Down
3 changes: 3 additions & 0 deletions tekton/src/pipelines/taskdefs/aiservice/aiservice.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@
- name: environment_type
value: $(params.environment_type)

# RHOAI flag
- name: rhoai
value: $(params.rhoai)
- name: aiservice_certificate_issuer
value: $(params.aiservice_certificate_issuer)

Expand Down
7 changes: 6 additions & 1 deletion tekton/src/pipelines/taskdefs/aiservice/odh.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,16 @@
value: $(params.custom_labels)
- name: aiservice_odh_model_deployment_type
value: $(params.aiservice_odh_model_deployment_type)
- name: rhoai
value: $(params.rhoai)

taskRef:
name: mas-devops-aiservice-odh
kind: Task
when:
- input: "$(params.aiservice_channel)"
operator: notin
values: [""]
values: [""]
- input: "$(params.rhoai)"
operator: notin
values: ["true"]
37 changes: 37 additions & 0 deletions tekton/src/pipelines/taskdefs/aiservice/rhoai.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
- name: aiservice-rhoai
params:
{{ lookup('template', 'taskdefs/common/cli-params.yml.j2') | indent(4) }}
- name: devops_suite_name
value: aiservice-rhoai

- name: mas_instance_id
{% if application is defined and application == "aiservice" %}
value: $(params.aiservice_instance_id)
{% else %}
value: $(params.mas_instance_id)
{% endif %}
- name: artifactory_username
value: $(params.artifactory_username)
- name: artifactory_token
value: $(params.artifactory_token)
- name: aiservice_channel
value: "$(params.aiservice_channel)"
- name: ibm_entitlement_key
value: $(params.ibm_entitlement_key)
- name: custom_labels
value: $(params.custom_labels)
- name: aiservice_rhoai_model_deployment_type
value: $(params.aiservice_rhoai_model_deployment_type)
- name: rhoai
value: $(params.rhoai)

taskRef:
name: mas-devops-aiservice-rhoai
kind: Task
when:
- input: "$(params.aiservice_channel)"
operator: notin
values: [""]
- input: "$(params.rhoai)"
operator: in
values: ["true"]
2 changes: 2 additions & 0 deletions tekton/src/tasks/aiservice/aiservice.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ spec:
- name: rsl_token
type: string

# RHOAI flag
- name: rhoai
# Certificate Issuer
- name: aiservice_certificate_issuer
type: string
Expand Down
91 changes: 91 additions & 0 deletions tekton/src/tasks/aiservice/rhoai.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: mas-devops-aiservice-rhoai
spec:
params:
{{ lookup('template', task_src_dir ~ '/common/cli-params.yml.j2') | indent(4) }}

# Pre-Release Support
- name: artifactory_username
default: ''
type: string
description: Required to use development MAS builds
- name: artifactory_token
default: ''
type: string
description: Required to use development MAS builds

# Entitlement
- name: ibm_entitlement_key
type: string

# MAS Details
- name: mas_instance_id
type: string
description: Instance ID

# Application - Operator
- name: aiservice_channel
type: string
description: Catalog channel for the application operator subscription

# Application - Operand
- name: mas_app_bindings_jdbc
default: ""
type: string
- name: mas_app_plan
type: string
description: Application installation plan
default: ""

# Custom Label Support
- name: custom_labels
type: string
description: Optional MAS custom labels, comma separated list of key=value pairs
default: ""

# Model deployment type
- name: aiservice_rhoai_model_deployment_type
type: string
description: Model deployment type for RHOAI
default: "raw"

stepTemplate:
env:
{{ lookup('template', task_src_dir ~ '/common/cli-env.yml.j2') | indent(6) }}

# Pre-Release Support
- name: ARTIFACTORY_USERNAME
value: $(params.artifactory_username)
- name: ARTIFACTORY_TOKEN
value: $(params.artifactory_token)

# Entitlement
- name: IBM_ENTITLEMENT_KEY
value: $(params.ibm_entitlement_key)

# MAS Details
- name: MAS_INSTANCE_ID
value: $(params.mas_instance_id)

# Application - Operator
- name: MAS_APP_CHANNEL
value: $(params.aiservice_channel)

# Custom Label Support
- name: CUSTOM_LABELS
value: $(params.custom_labels)

# Model deployment type
- name: AISERVICE_RHOAI_MODEL_DEPLOYMENT_TYPE
value: $(params.aiservice_rhoai_model_deployment_type)

steps:
- name: aiservice-rhoai
command:
- /opt/app-root/src/run-role.sh
- aiservice_rhoai
image: quay.io/ibmmas/cli:latest
imagePullPolicy: $(params.image_pull_policy)