From 06db1b4eaf57d1861d7c054ed4e7346ca502bc45 Mon Sep 17 00:00:00 2001 From: Knicholas Kennedy Date: Sat, 2 May 2026 19:11:37 -0400 Subject: [PATCH 1/2] Simply added 9.1.x to cognos install manageSettingsCP4D Signed-off-by: Knicholas Kennedy --- python/src/mas/cli/install/settings/manageSettings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/mas/cli/install/settings/manageSettings.py b/python/src/mas/cli/install/settings/manageSettings.py index 7f006559cf6..944d5dcd7aa 100644 --- a/python/src/mas/cli/install/settings/manageSettings.py +++ b/python/src/mas/cli/install/settings/manageSettings.py @@ -293,7 +293,7 @@ def manageSettingsLanguages(self) -> None: self.setParam("mas_app_settings_secondary_langs", secondaryLanguages.upper()) def manageSettingsCP4D(self) -> None: - if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x"] and self.showAdvancedOptions: + if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x", "9.1.x"] and self.showAdvancedOptions: self.printDescription([ f"Integration with Cognos Analytics provides additional support for reporting features in Maximo {self.manageAppName}, for more information refer to the documentation online: ", " - https://ibm.biz/BdMuxs" From 633f668e3684dd532c1f82a72fa2f244e1c6e58d Mon Sep 17 00:00:00 2001 From: Knicholas Kennedy Date: Sat, 2 May 2026 19:23:04 -0400 Subject: [PATCH 2/2] Added customization archive name validator to validators and added the validator to the prompt for string in manageSettings.py Signed-off-by: Knicholas Kennedy --- python/src/mas/cli/install/settings/manageSettings.py | 6 +++--- python/src/mas/cli/validators.py | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/python/src/mas/cli/install/settings/manageSettings.py b/python/src/mas/cli/install/settings/manageSettings.py index 944d5dcd7aa..9f81d001745 100644 --- a/python/src/mas/cli/install/settings/manageSettings.py +++ b/python/src/mas/cli/install/settings/manageSettings.py @@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Dict, List, NoReturn from prompt_toolkit.completion import WordCompleter -from mas.cli.validators import LanguageValidator +from mas.cli.validators import CustomizationArchiveNameValidator, LanguageValidator from mas.devops.aiservice import listAiServiceTenantInstances, listAiServiceInstances from openshift.dynamic.exceptions import ResourceNotFoundError from ...validators import AiserviceTeanantIDValidator @@ -260,7 +260,7 @@ def manageSettingsCustomizationArchive(self) -> None: ]) if self.yesOrNo("Include customization archive"): - self.promptForString("Customization archive name", "mas_app_settings_customization_archive_name") + self.promptForString("Customization archive name", "mas_app_settings_customization_archive_name", validator=CustomizationArchiveNameValidator()) self.promptForString("Customization archive path/url", "mas_app_settings_customization_archive_url") if self.yesOrNo("Provide authentication to access customization archive URL"): self.promptForString("Username", "mas_app_settings_customization_archive_username") @@ -293,7 +293,7 @@ def manageSettingsLanguages(self) -> None: self.setParam("mas_app_settings_secondary_langs", secondaryLanguages.upper()) def manageSettingsCP4D(self) -> None: - if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x", "9.1.x"] and self.showAdvancedOptions: + if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x"] and self.showAdvancedOptions: self.printDescription([ f"Integration with Cognos Analytics provides additional support for reporting features in Maximo {self.manageAppName}, for more information refer to the documentation online: ", " - https://ibm.biz/BdMuxs" diff --git a/python/src/mas/cli/validators.py b/python/src/mas/cli/validators.py index 77b2c4a9f95..bf777adf60f 100644 --- a/python/src/mas/cli/validators.py +++ b/python/src/mas/cli/validators.py @@ -241,4 +241,11 @@ def validate(self, document: Document) -> None: if not match(r"^.{1,4}$", bucketPrefix): raise ValidationError(message='Bucket prefix does not meet the requirement', cursor_position=len(bucketPrefix)) + +class CustomizationArchiveNameValidator(Validator): + def validate(self, document: Document) -> None: + name = document.text + if not match(r"^[0-9a-zA-Z][0-9a-zA-Z\-_.]+$", name): + raise ValidationError(message='Customization archive name must start with a letter or digit, and contain only letters, digits, hyphens, underscores, and dots', cursor_position=len(name)) + # Made with Bob