From b0aeda8268f376413f90bbf985679b8beef562b3 Mon Sep 17 00:00:00 2001 From: "M. Rehan" Date: Tue, 4 Oct 2022 13:23:35 +0500 Subject: [PATCH] add storj upgrade strategy --- charts/storj/upgrade_info.json | 1 + charts/storj/upgrade_strategy | 44 ++++++++++++++++++++++++++++++++++ test/storj/upgrade_info.json | 1 + test/storj/upgrade_strategy | 44 ++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 charts/storj/upgrade_info.json create mode 100755 charts/storj/upgrade_strategy create mode 100644 test/storj/upgrade_info.json create mode 100755 test/storj/upgrade_strategy diff --git a/charts/storj/upgrade_info.json b/charts/storj/upgrade_info.json new file mode 100644 index 0000000000..f22ddd1aee --- /dev/null +++ b/charts/storj/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"} diff --git a/charts/storj/upgrade_strategy b/charts/storj/upgrade_strategy new file mode 100755 index 0000000000..14386ed4bf --- /dev/null +++ b/charts/storj/upgrade_strategy @@ -0,0 +1,44 @@ +#!/usr/bin/python3 +import json +import sys +import re + +from catalog_update.upgrade_strategy import semantic_versioning +from catalog_validation.exceptions import ValidationException + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {} + for tag in image_tags[key]: + match = re.fullmatch('[\w]*-v[0-9]+.[0-9]+.[0-9]+-go[0-9]+.[0-9].+[0-9]+[-\w]*', tag) # noqa + if match: + removed_go_arch_version = re.sub('-go[0-9]+.[0-9].+[0-9]+[-\w]*','', tag) # noqa + app_version = re.sub('[\w]*-v', '', removed_go_arch_version) # noqa + if tags.get(app_version): + tags.get(app_version).append(tag) + else: + tags[app_version] = [tag] + version = semantic_versioning(list(tags)) + if not version: + return {} + + version_tag = tags[version][0] + for tag in tags.get(version): + archi = re.sub('[\w]*-v[0-9]+.[0-9]+.[0-9]+-go[0-9]+.[0-9].+[0-9]+', '', tag) # noqa + if archi == 'amd64' or archi == '': + version_tag = tag + break + return { + 'tags': {key: f'{version_tag}'}, + 'app_version': f'{version_tag}', + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValidationException('Invalid JSON') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/test/storj/upgrade_info.json b/test/storj/upgrade_info.json new file mode 100644 index 0000000000..f22ddd1aee --- /dev/null +++ b/test/storj/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"} diff --git a/test/storj/upgrade_strategy b/test/storj/upgrade_strategy new file mode 100755 index 0000000000..14386ed4bf --- /dev/null +++ b/test/storj/upgrade_strategy @@ -0,0 +1,44 @@ +#!/usr/bin/python3 +import json +import sys +import re + +from catalog_update.upgrade_strategy import semantic_versioning +from catalog_validation.exceptions import ValidationException + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {} + for tag in image_tags[key]: + match = re.fullmatch('[\w]*-v[0-9]+.[0-9]+.[0-9]+-go[0-9]+.[0-9].+[0-9]+[-\w]*', tag) # noqa + if match: + removed_go_arch_version = re.sub('-go[0-9]+.[0-9].+[0-9]+[-\w]*','', tag) # noqa + app_version = re.sub('[\w]*-v', '', removed_go_arch_version) # noqa + if tags.get(app_version): + tags.get(app_version).append(tag) + else: + tags[app_version] = [tag] + version = semantic_versioning(list(tags)) + if not version: + return {} + + version_tag = tags[version][0] + for tag in tags.get(version): + archi = re.sub('[\w]*-v[0-9]+.[0-9]+.[0-9]+-go[0-9]+.[0-9].+[0-9]+', '', tag) # noqa + if archi == 'amd64' or archi == '': + version_tag = tag + break + return { + 'tags': {key: f'{version_tag}'}, + 'app_version': f'{version_tag}', + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValidationException('Invalid JSON') + + print(json.dumps(newer_mapping(versions_json)))