Преглед изворни кода

NAS-123198 / 23.10 / bump minio and fix upgrade strategy (#1402)

Stavros Kois пре 2 година
родитељ
комит
4cf851c9b5

+ 1 - 1
library/ix-dev/charts/minio/Chart.yaml

@@ -3,7 +3,7 @@ description: High Performance, Kubernetes Native Object Storage
 annotations:
   title: MinIO
 type: application
-version: 1.7.16
+version: 1.7.17
 apiVersion: v2
 appVersion: '2023-03-13'
 kubeVersion: '>=1.16.0-0'

+ 1 - 1
library/ix-dev/charts/minio/upgrade_info.json

@@ -1 +1 @@
-{"filename":  "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"}
+{ "filename": "values.yaml", "keys": ["image"] }

+ 44 - 9
library/ix-dev/charts/minio/upgrade_strategy

@@ -1,22 +1,57 @@
 #!/usr/bin/python3
 import json
+import re
 import sys
 
+from catalog_update.upgrade_strategy import semantic_versioning
 from catalog_update.upgrade_strategy import datetime_versioning
 
 
+ENUMS = {
+    'image': {
+        'RE_STABLE_VERSION': re.compile(r'RELEASE.\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}}Z'),
+        'STRIP_TEXT': 'RELEASE.',
+        'function': datetime_versioning,
+        'function_arg': '%Y-%m-%dT%H-%M-%SZ'
+    },
+    'logSearchImage': {
+        'RE_STABLE_VERSION': re.compile(r'v\d+\.\d+\.\d+'),
+        'STRIP_TEXT': 'v',
+        'function': semantic_versioning
+    },
+}
+
+
 def newer_mapping(image_tags):
-    key = list(image_tags.keys())[0]
-    tags = {t.strip('RELEASE.'): t for t in image_tags[key] if t.startswith('RELEASE.') and t.endswith('Z')}
-    version = datetime_versioning(list(tags), '%Y-%m-%dT%H-%M-%SZ')
-    if not version:
-        return {}
-
-    return {
-        'tags': {key: tags[version]},
-        'app_version': version.split('T')[0],
+
+    output = {
+        "tags": {},
+        "app_version": ""
     }
 
+    for key in image_tags.keys():
+        STRIP_TEXT = ENUMS[key].get('STRIP_TEXT', None) if key in ENUMS else None
+        RE_STABLE_VERSION = ENUMS[key].get('RE_STABLE_VERSION', None) if key in ENUMS else None
+        VERSION_FUNCTION = ENUMS[key].get('function', None) if key in ENUMS else None
+
+        if (STRIP_TEXT is None) or (RE_STABLE_VERSION is None) or (VERSION_FUNCTION is None):
+            continue
+
+        tags = {t.strip(STRIP_TEXT): t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)}
+        if ENUMS[key].get('function_arg', None):
+            version = VERSION_FUNCTION(list(tags), ENUMS[key].get('function_arg'))
+        else:
+            version = VERSION_FUNCTION(list(tags))
+        if not version:
+            continue
+
+        if key == 'image':
+            output['app_version'] = version
+
+        output['tags'][key] = tags[version]
+
+    return output
+
 
 if __name__ == '__main__':
     try:

+ 1 - 1
library/ix-dev/charts/minio/values.yaml

@@ -1,7 +1,7 @@
 image:
   pullPolicy: IfNotPresent
   repository: minio/minio
-  tag: RELEASE.2023-03-13T19-46-17Z
+  tag: RELEASE.2023-07-21T21-12-44Z
 logSearchImage:
   pullPolicy: IfNotPresent
   repository: minio/operator