From 27ed467c06f70aec1ece30277e003ccfb54d14c4 Mon Sep 17 00:00:00 2001 From: yuriypr Date: Fri, 10 Oct 2025 10:18:02 +0200 Subject: [PATCH 1/4] fix tag --- cid/helpers/quicksight/dashboard.py | 31 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index c5836441..e19aab69 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -214,19 +214,26 @@ def health(self) -> bool: def deployed_cid_version(self): if self._cid_version: return self._cid_version - tag_version = (self.qs.get_tags(self.arn) or {}).get('cid_version_tag') - #print(f'{self.id}: {tag_version}') - if tag_version: - logger.trace(f'version of {self.arn} from tag = {tag_version}') - self._cid_version = CidVersion(tag_version) + + # Prioritize definition version over existing tags + if 'version' in self.definition: + self._cid_version = CidVersion(self.definition['version']) + # Update tag to match definition + logger.trace(f'updating tag of {self.arn} to cid_version_tag = {self._cid_version}') + self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) else: - if self.deployed_template: - self._cid_version = self.deployed_template.cid_version - elif self.deployed_definition: - self._cid_version = self.deployed_definition.cid_version - if self._cid_version: - logger.trace(f'setting tag of {self.arn} to cid_version_tag = {self._cid_version}') - self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) + tag_version = (self.qs.get_tags(self.arn) or {}).get('cid_version_tag') + if tag_version: + logger.trace(f'version of {self.arn} from tag = {tag_version}') + self._cid_version = CidVersion(tag_version) + else: + if self.deployed_template: + self._cid_version = self.deployed_template.cid_version + elif self.deployed_definition: + self._cid_version = self.deployed_definition.cid_version + if self._cid_version: + logger.trace(f'setting tag of {self.arn} to cid_version_tag = {self._cid_version}') + self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) return self._cid_version From 174d1e1402857aa8d454033b7a82ae417f663020 Mon Sep 17 00:00:00 2001 From: yuriypr Date: Fri, 10 Oct 2025 11:02:33 +0200 Subject: [PATCH 2/4] fix version and tag --- cid/helpers/quicksight/dashboard.py | 26 ++++++++++++-------------- cid/helpers/quicksight/definition.py | 8 ++++---- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index e19aab69..9599742f 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -213,27 +213,25 @@ def health(self) -> bool: @property def deployed_cid_version(self): if self._cid_version: - return self._cid_version + return self._cid_version - # Prioritize definition version over existing tags - if 'version' in self.definition: - self._cid_version = CidVersion(self.definition['version']) - # Update tag to match definition - logger.trace(f'updating tag of {self.arn} to cid_version_tag = {self._cid_version}') - self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) + # Check deployed definition first (most accurate) + if self.deployed_definition: + self._cid_version = self.deployed_definition.cid_version else: + # Fallback to tag version if no deployed resources found tag_version = (self.qs.get_tags(self.arn) or {}).get('cid_version_tag') if tag_version: logger.trace(f'version of {self.arn} from tag = {tag_version}') self._cid_version = CidVersion(tag_version) - else: - if self.deployed_template: + elif self.deployed_template: self._cid_version = self.deployed_template.cid_version - elif self.deployed_definition: - self._cid_version = self.deployed_definition.cid_version - if self._cid_version: - logger.trace(f'setting tag of {self.arn} to cid_version_tag = {self._cid_version}') - self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) + + # Update tag to match actual deployed version + if self._cid_version: + logger.trace(f'setting tag of {self.arn} to cid_version_tag = {self._cid_version}') + self.qs.set_tags(self.arn, cid_version_tag=self._cid_version) + return self._cid_version diff --git a/cid/helpers/quicksight/definition.py b/cid/helpers/quicksight/definition.py index ecfa500c..2c84eaa8 100644 --- a/cid/helpers/quicksight/definition.py +++ b/cid/helpers/quicksight/definition.py @@ -38,13 +38,13 @@ def resolve_version(self, raw: dict): if about_content: all_about_content = " | ".join(about_content) # find first string that looks like vx.y.z using a regular expression where x, y and z are numbers - version_matches = re.findall(r"(v\d+?\.\d+?\.\d+?)", all_about_content) + version_matches = re.findall(r"([vV]\d+?\.\d+?\.\d+?)", all_about_content) if version_matches: - return version_matches[0] + return version_matches[0].lower() # normalize to lowercase else: - version_matches = re.findall(r"(v\d+?\.\d+?)", all_about_content) + version_matches = re.findall(r"([vV]\d+?\.\d+?)", all_about_content) if version_matches: - return f"{version_matches[0]}.0" + return f"{version_matches[0].lower()}.0" # normalize to lowercase return None From ff9ecee575cac0511ed1d8d82d6cd08a68e2ad3f Mon Sep 17 00:00:00 2001 From: Iakov GAN <82834333+iakov-aws@users.noreply.github.com> Date: Fri, 10 Oct 2025 12:12:56 +0200 Subject: [PATCH 3/4] improve logic of cid_version to avoid reading definition --- cid/helpers/quicksight/dashboard.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index 9599742f..e31f76f0 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -216,16 +216,16 @@ def deployed_cid_version(self): return self._cid_version # Check deployed definition first (most accurate) - if self.deployed_definition: + tag_version = (self.qs.get_tags(self.arn) or {}).get('cid_version_tag') + if tag_version: + logger.trace(f'version of {self.arn} from tag = {tag_version}') + self._cid_version = CidVersion(tag_version) + elif self.deployed_definition: self._cid_version = self.deployed_definition.cid_version + elif self.deployed_template: + self._cid_version = self.deployed_template.cid_version else: - # Fallback to tag version if no deployed resources found - tag_version = (self.qs.get_tags(self.arn) or {}).get('cid_version_tag') - if tag_version: - logger.trace(f'version of {self.arn} from tag = {tag_version}') - self._cid_version = CidVersion(tag_version) - elif self.deployed_template: - self._cid_version = self.deployed_template.cid_version + logger.trace(f'something strange. unable to define cid_version') # Update tag to match actual deployed version if self._cid_version: From cddf4a5c32990036c91ed94d879b8bdc39f345ff Mon Sep 17 00:00:00 2001 From: Iakov GAN <82834333+iakov-aws@users.noreply.github.com> Date: Fri, 10 Oct 2025 12:14:40 +0200 Subject: [PATCH 4/4] Update dashboard.py --- cid/helpers/quicksight/dashboard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index e31f76f0..b543c42b 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -228,7 +228,7 @@ def deployed_cid_version(self): logger.trace(f'something strange. unable to define cid_version') # Update tag to match actual deployed version - if self._cid_version: + if self._cid_version and not tag_version: logger.trace(f'setting tag of {self.arn} to cid_version_tag = {self._cid_version}') self.qs.set_tags(self.arn, cid_version_tag=self._cid_version)