From 8b307d60b2c0a5ccadb5df7ef96f9dc1c1f5650f Mon Sep 17 00:00:00 2001 From: AllyW Date: Mon, 20 Jan 2025 16:59:37 +0800 Subject: [PATCH 1/3] fix autogen cmd --- src/aaz_dev/command/api/_cmds.py | 2 +- .../command/controller/workspace_manager.py | 2 + .../swagger/model/specs/_resource_provider.py | 39 ++++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/aaz_dev/command/api/_cmds.py b/src/aaz_dev/command/api/_cmds.py index c3c239f4..a8fbe86a 100644 --- a/src/aaz_dev/command/api/_cmds.py +++ b/src/aaz_dev/command/api/_cmds.py @@ -112,7 +112,7 @@ def generate_command_models_from_swagger(swagger_tag, workspace_path=None): "id": resource_id }) - mod_names = Config.DEFAULT_SWAGGER_MODULE.split('/') + mod_names = Config.DEFAULT_SWAGGER_MODULE ws = WorkspaceManager.new( name=Config.DEFAULT_SWAGGER_MODULE, plane=Config.DEFAULT_PLANE, diff --git a/src/aaz_dev/command/controller/workspace_manager.py b/src/aaz_dev/command/controller/workspace_manager.py index fd5f955f..459cd8f2 100644 --- a/src/aaz_dev/command/controller/workspace_manager.py +++ b/src/aaz_dev/command/controller/workspace_manager.py @@ -1243,6 +1243,8 @@ def create_cfg_editor(self, auth, templates=None, cloud_medadata=None, arm_resou def load_client_cfg_editor(self, reload=False): if not reload and self._client_cfg_editor: return self._client_cfg_editor + if self.is_in_memory: + return None assert not self.is_in_memory try: self._client_cfg_editor = WorkspaceClientCfgEditor.load_client_cfg(self.folder) diff --git a/src/aaz_dev/swagger/model/specs/_resource_provider.py b/src/aaz_dev/swagger/model/specs/_resource_provider.py index ce925954..ee8abfde 100644 --- a/src/aaz_dev/swagger/model/specs/_resource_provider.py +++ b/src/aaz_dev/swagger/model/specs/_resource_provider.py @@ -86,7 +86,7 @@ def tags(self): self._tags = self._parse_readme_input_file_tags() return self._tags - def _parse_readme_input_file_tags(self): + def _parse_readme_input_file_tags_v0(self): tags = {} if not self._readme_paths: return tags @@ -133,6 +133,43 @@ def _parse_readme_input_file_tags(self): tags = OrderedDict(tags) return tags + def _parse_readme_input_file_tags(self): + tags = {} + if not self._readme_paths: + return tags + + for readme_path in self._readme_paths: + with open(readme_path, 'r', encoding='utf-8') as f: + readme = f.read() + + pattern = re.compile(r'yaml\s*\$\(\s*tag\s*\)\s*==\s*\'([^\']+)\'\s*input-file:\s*((?:\s*- [^\n]+\s*)+)\s*', + flags=re.DOTALL) + for piece in pattern.finditer(readme): + tag = piece[1].strip() + input_files = piece[2].splitlines() + files = [] + for i_file in input_files: + file_path = i_file.strip().lstrip('-').strip() + file_path = file_path.replace('$(this-folder)/', '') + file_path = os.path.join(os.path.dirname(readme_path), *file_path.split('/')) + if not os.path.isfile(file_path): + logger.warning(f'FileNotExist: {self} : {file_path}') + continue + files.append(file_path) + + if len(files): + if tag is None: + tag = '' + tag = OpenAPIResourceProviderTag(tag.strip(), self) + if tag not in tags: + tags[tag] = set() + tags[tag] = tags[tag].union(files) + + tags = [*tags.items()] + tags.sort(key=lambda item: item[0].date, reverse=True) + tags = OrderedDict(tags) + return tags + def _fetch_latest_tag(self, file_path): for tag, file_set in self.tags.items(): if file_path in file_set: From bdd74507f2a64f1e79d4faf0e8e2275bdb49ecee Mon Sep 17 00:00:00 2001 From: AllyW Date: Mon, 20 Jan 2025 17:20:18 +0800 Subject: [PATCH 2/3] fix reg --- src/aaz_dev/swagger/model/specs/_resource_provider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aaz_dev/swagger/model/specs/_resource_provider.py b/src/aaz_dev/swagger/model/specs/_resource_provider.py index ee8abfde..144b6a30 100644 --- a/src/aaz_dev/swagger/model/specs/_resource_provider.py +++ b/src/aaz_dev/swagger/model/specs/_resource_provider.py @@ -142,7 +142,7 @@ def _parse_readme_input_file_tags(self): with open(readme_path, 'r', encoding='utf-8') as f: readme = f.read() - pattern = re.compile(r'yaml\s*\$\(\s*tag\s*\)\s*==\s*\'([^\']+)\'\s*input-file:\s*((?:\s*- [^\n]+\s*)+)\s*', + pattern = re.compile(r'```\s*yaml\s*\$\(\s*tag\s*\)\s*==\s*\'([^\']+)\'\s*input-file:\s*((?:\s*- [^\n]+\s*)+)\s*```', flags=re.DOTALL) for piece in pattern.finditer(readme): tag = piece[1].strip() From 93e95bbe05cee70b8df158a3432c59193cd409c7 Mon Sep 17 00:00:00 2001 From: AllyW Date: Tue, 18 Feb 2025 15:56:09 +0800 Subject: [PATCH 3/3] update client cfg in swagger generation --- src/aaz_dev/command/controller/workspace_manager.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/aaz_dev/command/controller/workspace_manager.py b/src/aaz_dev/command/controller/workspace_manager.py index 459cd8f2..3fef00fe 100644 --- a/src/aaz_dev/command/controller/workspace_manager.py +++ b/src/aaz_dev/command/controller/workspace_manager.py @@ -1055,10 +1055,12 @@ def generate_to_aaz(self): # Merge the commands of subresources which exported in aaz but not exist in current workspace self._merge_sub_resources_in_aaz() - # update client config - editor = self.load_client_cfg_editor() - if editor: - self.aaz_specs.update_client_cfg(editor.cfg) + # in memory worspace folder does not support client cfg + if not self.is_in_memory: + # update client config + editor = self.load_client_cfg_editor() + if editor: + self.aaz_specs.update_client_cfg(editor.cfg) # update configurations for ws_leaf in self.iter_command_tree_leaves(): @@ -1243,8 +1245,6 @@ def create_cfg_editor(self, auth, templates=None, cloud_medadata=None, arm_resou def load_client_cfg_editor(self, reload=False): if not reload and self._client_cfg_editor: return self._client_cfg_editor - if self.is_in_memory: - return None assert not self.is_in_memory try: self._client_cfg_editor = WorkspaceClientCfgEditor.load_client_cfg(self.folder)