diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb7646c86fd..95931440ff5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ default_language_version: python: python repos: - repo: https://github.com/psf/black - rev: 26.3.1 + rev: 26.5.1 hooks: - id: black - repo: https://github.com/PyCQA/flake8 diff --git a/.secrets.baseline b/.secrets.baseline index 26365be4fb9..636562b69f4 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -3,7 +3,7 @@ "files": "build/bin/config/oscap/ssg-rhel9-ds.xml|^.secrets.baseline$|^docs/catalogs/", "lines": null }, - "generated_at": "2026-05-18T08:58:20Z", + "generated_at": "2026-05-19T12:05:11Z", "plugins_used": [ { "name": "AWSKeyDetector" diff --git a/python/src/mas/cli/aiservice/install/app.py b/python/src/mas/cli/aiservice/install/app.py index 57ec942026a..053f1b8f5ab 100644 --- a/python/src/mas/cli/aiservice/install/app.py +++ b/python/src/mas/cli/aiservice/install/app.py @@ -45,7 +45,14 @@ from mas.devops.mas import getCurrentCatalog, getDefaultStorageClasses from mas.devops.sls import findSLSByNamespace from mas.devops.data import getCatalog, NoSuchCatalogError -from mas.devops.tekton import installOpenShiftPipelines, updateTektonDefinitions, prepareInstallSecrets, testCLI, launchInstallPipeline +from mas.devops.tekton import ( + installOpenShiftPipelines, + updateTektonDefinitions, + prepareAiServicePipelinesNamespace, + prepareInstallSecrets, + testCLI, + launchInstallPipeline, +) from mas.devops.pre_install import applyPreInstallMASRBAC, permissionCheckForRBAC from mas.devops.utils import isVersionEqualOrAfter @@ -588,6 +595,13 @@ def install(self, argv): with Halo(text=f"Preparing namespace ({pipelinesNamespace})", spinner=self.spinner) as h: createNamespace(self.dynamicClient, pipelinesNamespace) + prepareAiServicePipelinesNamespace( + dynClient=self.dynamicClient, + instanceId=self.getParam("aiservice_instance_id"), + storageClass=self.pipelineStorageClass, + accessMode=self.pipelineStorageAccessMode, + configureRBAC=(self.getParam("service_account_name") == ""), + ) prepareInstallSecrets( dynClient=self.dynamicClient, namespace=pipelinesNamespace, diff --git a/python/test/aiservice/install/test_app.py b/python/test/aiservice/install/test_app.py index f1923191fc0..e1ddc6e4c58 100644 --- a/python/test/aiservice/install/test_app.py +++ b/python/test/aiservice/install/test_app.py @@ -60,6 +60,7 @@ def test_install_noninteractive(tmpdir): mock.patch("mas.cli.aiservice.install.app.getCurrentCatalog") as get_current_catalog, mock.patch("mas.cli.aiservice.install.app.installOpenShiftPipelines"), mock.patch("mas.cli.aiservice.install.app.updateTektonDefinitions"), + mock.patch("mas.cli.aiservice.install.app.prepareAiServicePipelinesNamespace"), mock.patch("mas.cli.aiservice.install.app.launchInstallPipeline") as launch_ai_service_install_pipeline, ): dynamic_client_class.return_value = dynamic_client @@ -211,6 +212,7 @@ def test_install_interactive_advanced(tmpdir): mock.patch("mas.cli.aiservice.install.app.getCurrentCatalog") as get_current_catalog, mock.patch("mas.cli.aiservice.install.app.installOpenShiftPipelines"), mock.patch("mas.cli.aiservice.install.app.updateTektonDefinitions"), + mock.patch("mas.cli.aiservice.install.app.prepareAiServicePipelinesNamespace"), mock.patch("mas.cli.aiservice.install.app.launchInstallPipeline") as launch_ai_service_install_pipeline, mock.patch("mas.cli.cli.isSNO") as is_sno, mock.patch("mas.cli.displayMixins.prompt") as mixins_prompt, @@ -352,6 +354,7 @@ def test_install_interactive_simplified(tmpdir): mock.patch("mas.cli.aiservice.install.app.getCurrentCatalog") as get_current_catalog, mock.patch("mas.cli.aiservice.install.app.installOpenShiftPipelines"), mock.patch("mas.cli.aiservice.install.app.updateTektonDefinitions"), + mock.patch("mas.cli.aiservice.install.app.prepareAiServicePipelinesNamespace"), mock.patch("mas.cli.aiservice.install.app.launchInstallPipeline") as launch_ai_service_install_pipeline, mock.patch("mas.cli.cli.isSNO") as is_sno, mock.patch("mas.cli.displayMixins.prompt") as mixins_prompt, diff --git a/python/test/utils/install_test_helper.py b/python/test/utils/install_test_helper.py index 2fea90b43ba..d7b2601faba 100644 --- a/python/test/utils/install_test_helper.py +++ b/python/test/utils/install_test_helper.py @@ -276,9 +276,11 @@ def run_install_test(self): app_class = AiServiceInstallApp app_module = "mas.cli.aiservice.install.app" + prepare_namespace_func = "prepareAiServicePipelinesNamespace" else: app_class = InstallApp app_module = "mas.cli.install.app" + prepare_namespace_func = "preparePipelinesNamespace" self.setup_test_files() self.start_watchdog() @@ -297,6 +299,7 @@ def run_install_test(self): mock.patch(f"{app_module}.installOpenShiftPipelines"), mock.patch(f"{app_module}.updateTektonDefinitions"), mock.patch(f"{app_module}.createNamespace"), + mock.patch(f"{app_module}.{prepare_namespace_func}"), mock.patch(f"{app_module}.launchInstallPipeline") as launch_install_pipeline, mock.patch("mas.cli.install.app.configureIngressForPathBasedRouting") as configure_ingress, mock.patch("mas.cli.cli.isSNO") as is_sno,