diff --git a/.secrets.baseline b/.secrets.baseline index 30d479885d5..b5201ae7594 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -3,8 +3,7 @@ "files": "build/bin/config/oscap/ssg-rhel9-ds.xml|^.secrets.baseline$|^docs/catalogs/", "lines": null }, - - "generated_at": "2026-05-01T10:41:14Z", + "generated_at": "2026-05-07T14:37:02Z", "plugins_used": [ { "name": "AWSKeyDetector" @@ -225,7 +224,7 @@ "hashed_secret": "b2817467154949a61f8e9ad31d1eeaf03221cbfa", "is_secret": false, "is_verified": false, - "line_number": 368, + "line_number": 372, "type": "Secret Keyword", "verified_result": null } diff --git a/image/cli/mascli/functions/gitops_aiservice_tenant b/image/cli/mascli/functions/gitops_aiservice_tenant index aeb71b4a1a6..68ed15175bd 100644 --- a/image/cli/mascli/functions/gitops_aiservice_tenant +++ b/image/cli/mascli/functions/gitops_aiservice_tenant @@ -26,6 +26,7 @@ ibm_aiservice_tenant(required): --slscfg-url ${COLOR_YELLOW}SLSCFG_URL${TEXT_RESET} URL of the SLS configuration service --aiservice-watsonxai-url ${COLOR_YELLOW}AISERVICE_WATSONXAI_URL${TEXT_RESET} Endpoint URL for Watsonx.ai --aiservice-watsonx-full ${COLOR_YELLOW}AISERVICE_WATSONX_FULL${TEXT_RESET} Full URL for Watsonx.ai including API key + --tenant-scheduling-config-file ${COLOR_YELLOW}TENANT_SCHEDULING_CONFIG_FILE${TEXT_RESET} Path to tenant scheduling configuration file (tolerations and nodeSelector) AiService : --aiservice-namespace ${COLOR_YELLOW}AISERVICE_NAMESPACE${TEXT_RESET} The namespace where AI Service is deployed @@ -256,7 +257,10 @@ function gitops_aiservice_tenant_noninteractive() { --tenant-entitlement-end-date) export TENANT_ENTITLEMENT_END_DATE=$1 && shift ;; - + + --tenant-scheduling-config-yaml) + export TENANT_SCHEDULING_CONFIG_YAML=$1 && shift + ;; # Automatic GitHub Push -P|--github-push) @@ -387,37 +391,42 @@ function gitops_aiservice_tenant() { # echo all the variables of gitops envs - # -- aiservice - echo_reset_dim "Aiservice namespace ........................... ${COLOR_MAGENTA}${AISERVICE_NAMESPACE}" - echo_reset_dim "Catalog channel ............................... ${COLOR_MAGENTA}${CATALOG_CHANNEL}" - echo_reset_dim "Catalog source ................................ ${COLOR_MAGENTA}${CATALOG_SOURCE}" - echo_reset_dim "AiService provision tenant ................... ${COLOR_MAGENTA}${AISERVICE_PROVISION_TENANT}" - echo_reset_dim "AiService instance ID ......................... ${COLOR_MAGENTA}${AISERVICE_INSTANCE_ID}" - echo_reset_dim "tenant namespace ............................. ${COLOR_MAGENTA}${TENANT_NAMESPACE}" - echo_reset_dim "tenant ID .................................... ${COLOR_MAGENTA}${TENANT_ID}" - echo_reset_dim "cluster domain ............................... ${COLOR_MAGENTA}${CLUSTER_DOMAIN}" - echo_reset_dim "in SaaS environment .......................... ${COLOR_MAGENTA}${IN_SAAS_ENV}" - - echo_reset_dim "MAS ICR CP registry .......................... ${COLOR_MAGENTA}${MAS_ICR_CP}" - echo_reset_dim "MAS ICR CPOPEN registry ...................... ${COLOR_MAGENTA}${MAS_ICR_CPOPEN}" + # -- aiservice tenant + echo_reset_dim "Aiservice namespace ............................................ ${COLOR_MAGENTA}${AISERVICE_NAMESPACE}" + echo_reset_dim "Catalog channel ................................................ ${COLOR_MAGENTA}${CATALOG_CHANNEL}" + echo_reset_dim "Catalog source ................................................. ${COLOR_MAGENTA}${CATALOG_SOURCE}" + echo_reset_dim "AiService provision tenant ..................................... ${COLOR_MAGENTA}${AISERVICE_PROVISION_TENANT}" + echo_reset_dim "AiService instance ID .......................................... ${COLOR_MAGENTA}${AISERVICE_INSTANCE_ID}" + echo_reset_dim "tenant namespace ............................................... ${COLOR_MAGENTA}${TENANT_NAMESPACE}" + echo_reset_dim "tenant ID ...................................................... ${COLOR_MAGENTA}${TENANT_ID}" + echo_reset_dim "cluster domain ................................................. ${COLOR_MAGENTA}${CLUSTER_DOMAIN}" + echo_reset_dim "in SaaS environment ............................................ ${COLOR_MAGENTA}${IN_SAAS_ENV}" +if [[ -n "$TENANT_SCHEDULING_CONFIG_YAML" ]]; then + echo_reset_dim "Scheduling constraints (tolerations/nodeSelector) .............. ${COLOR_MAGENTA}${TENANT_SCHEDULING_CONFIG_YAML}" +else + echo_reset_dim "Scheduling constraints (tolerations/nodeSelector) .............. ${COLOR_MAGENTA}Not Configured" +fi + + echo_reset_dim "MAS ICR CP registry ............................................ ${COLOR_MAGENTA}${MAS_ICR_CP}" + echo_reset_dim "MAS ICR CPOPEN registry ........................................ ${COLOR_MAGENTA}${MAS_ICR_CPOPEN}" # -- SLS - echo_reset_dim "SLS subscription ID .......................... ${COLOR_MAGENTA}${AISERVICE_SLS_SUBSCRIPTION_ID}" - echo_reset_dim "SLS service param file path .................. ${COLOR_MAGENTA}${STANDALONE_SLS_SERVICE}" + echo_reset_dim "SLS subscription ID ............................................ ${COLOR_MAGENTA}${AISERVICE_SLS_SUBSCRIPTION_ID}" + echo_reset_dim "SLS service param file path .................................... ${COLOR_MAGENTA}${STANDALONE_SLS_SERVICE}" if [ ! -z "$STANDALONE_SLS_SERVICE" ]; then - echo_reset_dim "ICN ........................................ ${COLOR_MAGENTA}${ICN}" - echo_reset_dim "SAAS_SUB_ID ........................................ ${COLOR_MAGENTA}${SAAS_SUB_ID}" + echo_reset_dim "ICN .......................................................... ${COLOR_MAGENTA}${ICN}" + echo_reset_dim "SAAS_SUB_ID .................................................. ${COLOR_MAGENTA}${SAAS_SUB_ID}" fi # -- Watsonx - echo_reset_dim "Watsonx.ai URL ............................... ${COLOR_MAGENTA}${AISERVICE_WATSONXAI_URL}" - echo_reset_dim "Watsonx.ai full URL .......................... ${COLOR_MAGENTA}${AISERVICE_WATSONX_FULL}" - echo_reset_dim "watsonx.ai instance ID ......................... ${COLOR_MAGENTA}${AISERVICE_WATSONX_INSTANCE_ID}" - echo_reset_dim "watsonx.ai version ............................. ${COLOR_MAGENTA}${AISERVICE_WATSONX_VERSION}" - echo_reset_dim "watsonx.ai username ........................... ${COLOR_MAGENTA}${AISERVICE_WATSONX_USERNAME}" - echo_reset_dim "Aiservice operator log level ................... ${COLOR_MAGENTA}${AISERVICE_OPERATOR_LOG_LEVEL}" + echo_reset_dim "Watsonx.ai URL ................................................. ${COLOR_MAGENTA}${AISERVICE_WATSONXAI_URL}" + echo_reset_dim "Watsonx.ai full URL ............................................ ${COLOR_MAGENTA}${AISERVICE_WATSONX_FULL}" + echo_reset_dim "watsonx.ai instance ID ......................................... ${COLOR_MAGENTA}${AISERVICE_WATSONX_INSTANCE_ID}" + echo_reset_dim "watsonx.ai version ............................................. ${COLOR_MAGENTA}${AISERVICE_WATSONX_VERSION}" + echo_reset_dim "watsonx.ai username ............................................ ${COLOR_MAGENTA}${AISERVICE_WATSONX_USERNAME}" + echo_reset_dim "Aiservice operator log level ................................... ${COLOR_MAGENTA}${AISERVICE_OPERATOR_LOG_LEVEL}" # -- STORAGE - echo_reset_dim "SSL enabled .................................. ${COLOR_MAGENTA}${AISERVICE_STORAGE_SSL}" - echo_reset_dim "Storage provider ............................. ${COLOR_MAGENTA}${AISERVICE_STORAGE_PROVIDER}" + echo_reset_dim "SSL enabled .................................................... ${COLOR_MAGENTA}${AISERVICE_STORAGE_SSL}" + echo_reset_dim "Storage provider ............................................... ${COLOR_MAGENTA}${AISERVICE_STORAGE_PROVIDER}" AVP_TYPE=aws # Support for IBM will be added later sm_login @@ -476,6 +485,13 @@ function gitops_aiservice_tenant() { fi sm_verify_secret_exists ${SECRETS_PREFIX}rsl "rsl_org_id,rsl_token" sm_verify_secret_exists ${SECRETS_PREFIX}watsonx "watsonxai_apikey,watsonxai_project_id" + + # Load scheduling config file + # --------------------------------------------------------------------------- + if [[ -n "$TENANT_SCHEDULING_CONFIG_YAML" && -s "$TENANT_SCHEDULING_CONFIG_YAML" ]]; then + export TENANT_SCHEDULING_CONFIG=$(yq eval '.' ${TENANT_SCHEDULING_CONFIG_YAML}) + echo -e "\n - TENANT_SCHEDULING_CONFIG CONTENT .................. ${TENANT_SCHEDULING_CONFIG}" + fi # finally push them into the git repo diff --git a/image/cli/mascli/templates/gitops/appset-configs/cluster/instance/ibm-aiservice-tenant.yaml.j2 b/image/cli/mascli/templates/gitops/appset-configs/cluster/instance/ibm-aiservice-tenant.yaml.j2 index 4ef21b14e92..165d8c2654e 100644 --- a/image/cli/mascli/templates/gitops/appset-configs/cluster/instance/ibm-aiservice-tenant.yaml.j2 +++ b/image/cli/mascli/templates/gitops/appset-configs/cluster/instance/ibm-aiservice-tenant.yaml.j2 @@ -54,4 +54,9 @@ ibm_aiservice_tenant: tenant_entitlement_start_date: "{{ TENANT_ENTITLEMENT_START_DATE }}" tenant_entitlement_end_date: "{{ TENANT_ENTITLEMENT_END_DATE }}" - aiservice_operator_log_level: "{{ AISERVICE_OPERATOR_LOG_LEVEL }}" \ No newline at end of file + aiservice_operator_log_level: "{{ AISERVICE_OPERATOR_LOG_LEVEL }}" + +{% if TENANT_SCHEDULING_CONFIG is defined and TENANT_SCHEDULING_CONFIG != '' %} + tenant_scheduling_config: + {{ TENANT_SCHEDULING_CONFIG | indent(4)}} +{% endif %} diff --git a/tekton/src/pipelines/gitops/gitops-aiservice-tenant-pipeline.yml.j2 b/tekton/src/pipelines/gitops/gitops-aiservice-tenant-pipeline.yml.j2 index 4a95856d38f..05aacf86ca5 100644 --- a/tekton/src/pipelines/gitops/gitops-aiservice-tenant-pipeline.yml.j2 +++ b/tekton/src/pipelines/gitops/gitops-aiservice-tenant-pipeline.yml.j2 @@ -90,6 +90,9 @@ spec: type: string - name: tenant_entitlement_end_date type: string + - name: tenant_scheduling_config_yaml + type: string + default: "" # standalone sls - name: sls_service @@ -98,6 +101,7 @@ spec: workspaces: - name: configs + - name: shared-gitops-configs tasks: - name: run-gitops-aiservice-tenant taskRef: @@ -105,6 +109,8 @@ spec: workspaces: - name: configs workspace: configs + - name: shared-gitops-configs + workspace: shared-gitops-configs params: - name: cluster_name value: $(params.cluster_name) @@ -190,5 +196,7 @@ spec: value: $(params.tenant_entitlement_start_date) - name: tenant_entitlement_end_date value: $(params.tenant_entitlement_end_date) + - name: tenant_scheduling_config_yaml + value: $(params.tenant_scheduling_config_yaml) - name: sls_service value: $(params.sls_service) \ No newline at end of file diff --git a/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 b/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 index 6e0f6b8576c..8afe759e3d7 100644 --- a/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 +++ b/tekton/src/tasks/gitops/gitops-aiservice-tenant.yml.j2 @@ -87,6 +87,8 @@ spec: type: string - name: tenant_entitlement_end_date type: string + - name: tenant_scheduling_config_yaml + type: string - name: sls_service type: string default: "" @@ -173,6 +175,8 @@ spec: value: $(params.tenant_entitlement_start_date) - name: TENANT_ENTITLEMENT_END_DATE value: $(params.tenant_entitlement_end_date) + - name: TENANT_SCHEDULING_CONFIG_YAML + value: $(params.tenant_scheduling_config_yaml) - name: STANDALONE_SLS_SERVICE value: $(params.sls_service) envFrom: @@ -216,3 +220,4 @@ spec: image: quay.io/ibmmas/cli:latest workspaces: - name: configs + - name: shared-gitops-configs