diff --git a/src/aaz_dev/cli/controller/az_module_manager.py b/src/aaz_dev/cli/controller/az_module_manager.py index 6328fc23..87d8d586 100644 --- a/src/aaz_dev/cli/controller/az_module_manager.py +++ b/src/aaz_dev/cli/controller/az_module_manager.py @@ -152,7 +152,7 @@ def _patch_module(self, mod_name): def _load_view_profile(self, profile_name, aaz_path): profile = CLIViewProfile() profile.name = profile_name - profile_folder_name = profile_name.lower().replace('-', '_') + profile_folder_name = profile.profile_folder_name profile_path = os.path.join(aaz_path, profile_folder_name) if not os.path.exists(profile_path): return profile diff --git a/src/aaz_dev/cli/controller/az_operation_generator.py b/src/aaz_dev/cli/controller/az_operation_generator.py index 5e6c737a..c5e02b92 100644 --- a/src/aaz_dev/cli/controller/az_operation_generator.py +++ b/src/aaz_dev/cli/controller/az_operation_generator.py @@ -880,6 +880,7 @@ def _iter_response_scopes_by_schema_base(schema, name, scope_define, cmd_ctx): key_name = to_snack_case(disc.property) key_value = disc.value disc_name = f"disc_{to_snack_case(disc.value)}" + disc_scope_define = f'{scope_define}.discriminate_by("{key_name}", "{key_value}")' for scopes in _iter_response_scopes_by_schema_base(disc, disc_name, disc_scope_define, cmd_ctx): yield scopes diff --git a/src/aaz_dev/cli/controller/az_profile_generator.py b/src/aaz_dev/cli/controller/az_profile_generator.py index 00382377..b11ee507 100644 --- a/src/aaz_dev/cli/controller/az_profile_generator.py +++ b/src/aaz_dev/cli/controller/az_profile_generator.py @@ -13,7 +13,7 @@ class AzProfileGenerator: def __init__(self, aaz_folder, profile): self.aaz_folder = aaz_folder self.profile = profile - self.profile_folder_name = profile.name.lower().replace('-', '_') + self.profile_folder_name = profile.profile_folder_name self._removed_folders = set() self._removed_files = set() self._modified_files = {} diff --git a/src/aaz_dev/cli/model/atomic/_profile.py b/src/aaz_dev/cli/model/atomic/_profile.py index 578015a6..0f0352cc 100644 --- a/src/aaz_dev/cli/model/atomic/_profile.py +++ b/src/aaz_dev/cli/model/atomic/_profile.py @@ -15,3 +15,12 @@ class CLIAtomicProfile(Model): class Options: serialize_when_none = False + + @property + def profile_folder_name(self): + profile_folder_name = self.name.lower().replace('-', '_') + if profile_folder_name != "latest": + # for rest profiles such as 2019-03-01-hybrid, the folder name starts with digit, + # it's not a valid python package name. + profile_folder_name = "profile_" + profile_folder_name + return profile_folder_name diff --git a/src/aaz_dev/cli/model/view/_profile.py b/src/aaz_dev/cli/model/view/_profile.py index 7b184ac4..4d2de618 100644 --- a/src/aaz_dev/cli/model/view/_profile.py +++ b/src/aaz_dev/cli/model/view/_profile.py @@ -19,3 +19,12 @@ class CLIViewProfile(Model): class Options: serialize_when_none = False + + @property + def profile_folder_name(self): + profile_folder_name = self.name.lower().replace('-', '_') + if profile_folder_name != "latest": + # for rest profiles such as 2019-03-01-hybrid, the folder name starts with digit, + # it's not a valid python package name. + profile_folder_name = "profile_" + profile_folder_name + return profile_folder_name