diff --git a/python/src/mas/cli/install/settings/manageSettings.py b/python/src/mas/cli/install/settings/manageSettings.py index 36dd3f069c..163472c5f6 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 @@ -265,7 +265,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..c303d24f3c 100644 --- a/python/src/mas/cli/validators.py +++ b/python/src/mas/cli/validators.py @@ -240,3 +240,8 @@ 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))