diff --git a/python/src/mas/cli/install/settings/manageSettings.py b/python/src/mas/cli/install/settings/manageSettings.py index 36dd3f069c..8db7942221 100644 --- a/python/src/mas/cli/install/settings/manageSettings.py +++ b/python/src/mas/cli/install/settings/manageSettings.py @@ -10,13 +10,14 @@ 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 LanguageValidator, CustomizationArchiveNameValidator from mas.devops.aiservice import listAiServiceTenantInstances, listAiServiceInstances from openshift.dynamic.exceptions import ResourceNotFoundError from ...validators import AiserviceTeanantIDValidator from prompt_toolkit import print_formatted_text, HTML from mas.devops.utils import isVersionEqualOrAfter + import logging logger = logging.getLogger(__name__) @@ -265,7 +266,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") diff --git a/python/src/mas/cli/validators.py b/python/src/mas/cli/validators.py index b658d7751f..69ec48e424 100644 --- a/python/src/mas/cli/validators.py +++ b/python/src/mas/cli/validators.py @@ -240,3 +240,23 @@ 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: + """ + Validate customization archive name format. + Must match the pattern: ^[0-9a-zA-Z][0-9a-zA-Z-_.]+$ + - Must start with alphanumeric character + - Can contain alphanumeric characters, hyphens, underscores, and periods + - Spaces are not allowed + """ + archiveName = document.text + + if not match(r"^[0-9a-zA-Z][0-9a-zA-Z-_.]+$", archiveName): + raise ValidationError( + message='Customization archive name must start with alphanumeric character and can only contain alphanumeric characters, hyphens, underscores, and periods (no spaces allowed)', + cursor_position=len(archiveName) + ) + +# Made with Bob