From 6d873a0136a8a0ab6df7103206d6d4e0594f87fd Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Mon, 14 Jun 2021 17:31:44 +0500 Subject: [PATCH 1/7] Add automated update logic for chia --- charts/chia/upgrade_info.json | 1 + charts/chia/upgrade_strategy | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 charts/chia/upgrade_info.json create mode 100755 charts/chia/upgrade_strategy diff --git a/charts/chia/upgrade_info.json b/charts/chia/upgrade_info.json new file mode 100644 index 0000000000..5bf84fb901 --- /dev/null +++ b/charts/chia/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"]} diff --git a/charts/chia/upgrade_strategy b/charts/chia/upgrade_strategy new file mode 100755 index 0000000000..5297e898a4 --- /dev/null +++ b/charts/chia/upgrade_strategy @@ -0,0 +1,30 @@ +#!/usr/bin/python3 +import json +import sys + +from pkg_resources import parse_version +from pkg_resources.extern.packaging.version import Version + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + if not image_tags[key]: + return {} + + versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version)] + if not versions: + return {} + + versions.sort() + version = str(versions[-1]) + return { + 'tags': {key: version}, + 'app_version': version, + } + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + print(json.dumps(newer_mapping(json.loads(sys.argv[1])))) From 5628324e3fe743bd959fe46926302d0468c83a1e Mon Sep 17 00:00:00 2001 From: sonicaj Date: Mon, 14 Jun 2021 21:01:16 +0500 Subject: [PATCH 2/7] Add upgrade logic for plex chart --- charts/plex/upgrade_info.json | 1 + charts/plex/upgrade_strategy | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 charts/plex/upgrade_info.json create mode 100755 charts/plex/upgrade_strategy diff --git a/charts/plex/upgrade_info.json b/charts/plex/upgrade_info.json new file mode 100644 index 0000000000..5bf84fb901 --- /dev/null +++ b/charts/plex/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"]} diff --git a/charts/plex/upgrade_strategy b/charts/plex/upgrade_strategy new file mode 100755 index 0000000000..ce75f2ac23 --- /dev/null +++ b/charts/plex/upgrade_strategy @@ -0,0 +1,32 @@ +#!/usr/bin/python3 +import json +import sys + +from pkg_resources import parse_version +from pkg_resources.extern.packaging.version import Version + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + if not image_tags[key]: + return {} + + tags = {t.rsplit('-', 1)[0]: t for t in image_tags[key]} + + versions = [v for v in map(parse_version, tags) if isinstance(v, Version)] + if not versions: + return {} + + versions.sort() + version = str(versions[-1]) + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + print(json.dumps(newer_mapping(json.loads(sys.argv[1])))) From a55db161feadb89022da122902b89c0bcfd60288 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Mon, 14 Jun 2021 21:52:20 +0500 Subject: [PATCH 3/7] Add upgrade logic for ipfs chart --- charts/chia/upgrade_strategy | 2 +- charts/ipfs/upgrade_info.json | 1 + charts/ipfs/upgrade_strategy | 30 ++++++++++++++++++++++++++++++ charts/plex/upgrade_strategy | 2 +- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 charts/ipfs/upgrade_info.json create mode 100755 charts/ipfs/upgrade_strategy diff --git a/charts/chia/upgrade_strategy b/charts/chia/upgrade_strategy index 5297e898a4..2d5cd5d8f1 100755 --- a/charts/chia/upgrade_strategy +++ b/charts/chia/upgrade_strategy @@ -11,7 +11,7 @@ def newer_mapping(image_tags): if not image_tags[key]: return {} - versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version)] + versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] if not versions: return {} diff --git a/charts/ipfs/upgrade_info.json b/charts/ipfs/upgrade_info.json new file mode 100644 index 0000000000..5bf84fb901 --- /dev/null +++ b/charts/ipfs/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"]} diff --git a/charts/ipfs/upgrade_strategy b/charts/ipfs/upgrade_strategy new file mode 100755 index 0000000000..2d5cd5d8f1 --- /dev/null +++ b/charts/ipfs/upgrade_strategy @@ -0,0 +1,30 @@ +#!/usr/bin/python3 +import json +import sys + +from pkg_resources import parse_version +from pkg_resources.extern.packaging.version import Version + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + if not image_tags[key]: + return {} + + versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] + if not versions: + return {} + + versions.sort() + version = str(versions[-1]) + return { + 'tags': {key: version}, + 'app_version': version, + } + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + print(json.dumps(newer_mapping(json.loads(sys.argv[1])))) diff --git a/charts/plex/upgrade_strategy b/charts/plex/upgrade_strategy index ce75f2ac23..c08fe77db6 100755 --- a/charts/plex/upgrade_strategy +++ b/charts/plex/upgrade_strategy @@ -13,7 +13,7 @@ def newer_mapping(image_tags): tags = {t.rsplit('-', 1)[0]: t for t in image_tags[key]} - versions = [v for v in map(parse_version, tags) if isinstance(v, Version)] + versions = [v for v in map(parse_version, tags) if isinstance(v, Version) and not v.is_prerelease] if not versions: return {} From 9862c8733b26a7a9ef2678ba688483551bfc3d39 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Mon, 14 Jun 2021 22:51:14 +0500 Subject: [PATCH 4/7] Add upgrade logic for minio chart --- charts/minio/upgrade_info.json | 1 + charts/minio/upgrade_strategy | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 charts/minio/upgrade_info.json create mode 100755 charts/minio/upgrade_strategy diff --git a/charts/minio/upgrade_info.json b/charts/minio/upgrade_info.json new file mode 100644 index 0000000000..5bf84fb901 --- /dev/null +++ b/charts/minio/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"]} diff --git a/charts/minio/upgrade_strategy b/charts/minio/upgrade_strategy new file mode 100755 index 0000000000..6c285fa1ea --- /dev/null +++ b/charts/minio/upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import sys + +from datetime import datetime + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + if not image_tags[key]: + return {} + + tags = {t.strip('RELEASE.'): t for t in image_tags[key] if t.startswith('RELEASE.') and t.endswith('Z')} + if not tags: + return {} + + versions = [datetime.strptime(t, '%Y-%m-%dT%H-%M-%SZ') for t in tags] + versions.sort() + + version = versions[-1].strftime('%Y-%m-%dT%H-%M-%SZ') + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + print(json.dumps(newer_mapping(json.loads(sys.argv[1])))) From 9b071d30f73e51ae52cc14875da3b50952a6e65e Mon Sep 17 00:00:00 2001 From: sonicaj Date: Mon, 14 Jun 2021 22:53:46 +0500 Subject: [PATCH 5/7] Add upgrade logic for nextcloud chart --- charts/nextcloud/upgrade_info.json | 1 + charts/nextcloud/upgrade_strategy | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 charts/nextcloud/upgrade_info.json create mode 100755 charts/nextcloud/upgrade_strategy diff --git a/charts/nextcloud/upgrade_info.json b/charts/nextcloud/upgrade_info.json new file mode 100644 index 0000000000..5bf84fb901 --- /dev/null +++ b/charts/nextcloud/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "ix_values.yaml", "keys": ["image"]} diff --git a/charts/nextcloud/upgrade_strategy b/charts/nextcloud/upgrade_strategy new file mode 100755 index 0000000000..2d5cd5d8f1 --- /dev/null +++ b/charts/nextcloud/upgrade_strategy @@ -0,0 +1,30 @@ +#!/usr/bin/python3 +import json +import sys + +from pkg_resources import parse_version +from pkg_resources.extern.packaging.version import Version + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + if not image_tags[key]: + return {} + + versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] + if not versions: + return {} + + versions.sort() + version = str(versions[-1]) + return { + 'tags': {key: version}, + 'app_version': version, + } + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + print(json.dumps(newer_mapping(json.loads(sys.argv[1])))) From 63f42170de8dca1db34b94d3b31bf3154a5f244b Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 16 Jun 2021 11:28:10 +0500 Subject: [PATCH 6/7] Use semantic versioning common strategy from catalog_update --- charts/chia/upgrade_strategy | 12 +++--------- charts/ipfs/upgrade_strategy | 12 +++--------- charts/nextcloud/upgrade_strategy | 12 +++--------- charts/plex/upgrade_strategy | 13 +++---------- 4 files changed, 12 insertions(+), 37 deletions(-) diff --git a/charts/chia/upgrade_strategy b/charts/chia/upgrade_strategy index 2d5cd5d8f1..adafa41868 100755 --- a/charts/chia/upgrade_strategy +++ b/charts/chia/upgrade_strategy @@ -2,21 +2,15 @@ import json import sys -from pkg_resources import parse_version -from pkg_resources.extern.packaging.version import Version +from catalog_update.upgrade_strategy import semantic_versioning def newer_mapping(image_tags): key = list(image_tags.keys())[0] - if not image_tags[key]: + version = semantic_versioning(image_tags[key]) + if not version: return {} - versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] - if not versions: - return {} - - versions.sort() - version = str(versions[-1]) return { 'tags': {key: version}, 'app_version': version, diff --git a/charts/ipfs/upgrade_strategy b/charts/ipfs/upgrade_strategy index 2d5cd5d8f1..adafa41868 100755 --- a/charts/ipfs/upgrade_strategy +++ b/charts/ipfs/upgrade_strategy @@ -2,21 +2,15 @@ import json import sys -from pkg_resources import parse_version -from pkg_resources.extern.packaging.version import Version +from catalog_update.upgrade_strategy import semantic_versioning def newer_mapping(image_tags): key = list(image_tags.keys())[0] - if not image_tags[key]: + version = semantic_versioning(image_tags[key]) + if not version: return {} - versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] - if not versions: - return {} - - versions.sort() - version = str(versions[-1]) return { 'tags': {key: version}, 'app_version': version, diff --git a/charts/nextcloud/upgrade_strategy b/charts/nextcloud/upgrade_strategy index 2d5cd5d8f1..adafa41868 100755 --- a/charts/nextcloud/upgrade_strategy +++ b/charts/nextcloud/upgrade_strategy @@ -2,21 +2,15 @@ import json import sys -from pkg_resources import parse_version -from pkg_resources.extern.packaging.version import Version +from catalog_update.upgrade_strategy import semantic_versioning def newer_mapping(image_tags): key = list(image_tags.keys())[0] - if not image_tags[key]: + version = semantic_versioning(image_tags[key]) + if not version: return {} - versions = [v for v in map(parse_version, image_tags[key]) if isinstance(v, Version) and not v.is_prerelease] - if not versions: - return {} - - versions.sort() - version = str(versions[-1]) return { 'tags': {key: version}, 'app_version': version, diff --git a/charts/plex/upgrade_strategy b/charts/plex/upgrade_strategy index c08fe77db6..a8940ad684 100755 --- a/charts/plex/upgrade_strategy +++ b/charts/plex/upgrade_strategy @@ -2,23 +2,16 @@ import json import sys -from pkg_resources import parse_version -from pkg_resources.extern.packaging.version import Version +from catalog_update.upgrade_strategy import semantic_versioning def newer_mapping(image_tags): key = list(image_tags.keys())[0] - if not image_tags[key]: - return {} - tags = {t.rsplit('-', 1)[0]: t for t in image_tags[key]} - - versions = [v for v in map(parse_version, tags) if isinstance(v, Version) and not v.is_prerelease] - if not versions: + version = semantic_versioning(list(tags)) + if not version: return {} - versions.sort() - version = str(versions[-1]) return { 'tags': {key: tags[version]}, 'app_version': version, From 14c666c932b6c76763ab91d0d903f038075119e0 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 16 Jun 2021 11:31:42 +0500 Subject: [PATCH 7/7] Use datetime versioning common strategy from catalog_update --- charts/minio/upgrade_strategy | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/charts/minio/upgrade_strategy b/charts/minio/upgrade_strategy index 6c285fa1ea..f33e0d0555 100755 --- a/charts/minio/upgrade_strategy +++ b/charts/minio/upgrade_strategy @@ -2,22 +2,16 @@ import json import sys -from datetime import datetime +from catalog_update.upgrade_strategy import datetime_versioning def newer_mapping(image_tags): key = list(image_tags.keys())[0] - if not image_tags[key]: - return {} - tags = {t.strip('RELEASE.'): t for t in image_tags[key] if t.startswith('RELEASE.') and t.endswith('Z')} - if not tags: + version = datetime_versioning(list(tags), '%Y-%m-%dT%H-%M-%SZ') + if not version: return {} - versions = [datetime.strptime(t, '%Y-%m-%dT%H-%M-%SZ') for t in tags] - versions.sort() - - version = versions[-1].strftime('%Y-%m-%dT%H-%M-%SZ') return { 'tags': {key: tags[version]}, 'app_version': version,