diff --git a/cid/helpers/quicksight/dashboard.py b/cid/helpers/quicksight/dashboard.py index c5836441..b543c42b 100644 --- a/cid/helpers/quicksight/dashboard.py +++ b/cid/helpers/quicksight/dashboard.py @@ -213,20 +213,25 @@ def health(self) -> bool: @property def deployed_cid_version(self): if self._cid_version: - return self._cid_version + return self._cid_version + + # Check deployed definition first (most accurate) 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) + 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: - 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) + logger.trace(f'something strange. unable to define cid_version') + + # Update tag to match actual deployed 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) + 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