]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: make upgrade ls output structured
authorSage Weil <sage@newdream.net>
Fri, 15 Oct 2021 15:09:07 +0000 (11:09 -0400)
committerSage Weil <sage@newdream.net>
Fri, 15 Oct 2021 15:09:07 +0000 (11:09 -0400)
Signed-off-by: Sage Weil <sage@newdream.net>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/upgrade.py
src/pybind/mgr/orchestrator/_interface.py

index 720422902cc0776785aab99d0371978e04c6efd0..08361e47622df1818689fe8f3b291f5610290014 100644 (file)
@@ -2470,7 +2470,7 @@ Then run the following:
         return self.upgrade.upgrade_status()
 
     @handle_orch_error
-    def upgrade_ls(self, image: Optional[str], tags: bool) -> List[str]:
+    def upgrade_ls(self, image: Optional[str], tags: bool) -> Dict[Any, Any]:
         return self.upgrade.upgrade_ls(image, tags)
 
     @handle_orch_error
index e71c9c8bf3a1cdf11a506a8e2a0e75f0edc7412b..4e23e0d121ea82049036b8b6e276de96110ea904 100644 (file)
@@ -2,7 +2,7 @@ import json
 import logging
 import time
 import uuid
-from typing import TYPE_CHECKING, Optional, Dict, List, Tuple
+from typing import TYPE_CHECKING, Optional, Dict, List, Tuple, Any
 
 import orchestrator
 from cephadm.registry import Registry
@@ -177,15 +177,18 @@ class CephadmUpgrade:
 
         return None
 
-    def upgrade_ls(self, image: Optional[str], tags: bool) -> List[str]:
-        if image:
-            reg_name, image = image.split('/', 1)
-        else:
-            reg_name, image = self.mgr.container_image_base.split('/', 1)
-        self.mgr.log.info(f'reg_name {reg_name} image {image}')
+    def upgrade_ls(self, image: Optional[str], tags: bool) -> Dict:
+        if not image:
+            image = self.mgr.container_image_base
+        reg_name, bare_image = image.split('/', 1)
         reg = Registry(reg_name)
         versions = []
-        ls = reg.get_tags(image)
+        r: Dict[Any, Any] = {
+            "image": image,
+            "registry": reg_name,
+            "bare_image": bare_image,
+        }
+        ls = reg.get_tags(bare_image)
         if not tags:
             for t in ls:
                 if t[0] != 'v':
@@ -196,14 +199,14 @@ class CephadmUpgrade:
                 if '-' in v[2]:
                     continue
                 versions.append('.'.join(v))
-            ls = sorted(
+            r["versions"] = sorted(
                 versions,
                 key=lambda k: list(map(int, k.split('.'))),
                 reverse=True
             )
         else:
-            ls = sorted(ls)
-        return ls
+            r["tags"] = sorted(ls)
+        return r
 
     def upgrade_start(self, image: str, version: str) -> str:
         if self.mgr.mode != 'root':
index ffc77784c3013b8c5682e5859fd924ae79a0e758..04b62022b969061ff7eb6972956d4d491f2d72db 100644 (file)
@@ -642,7 +642,7 @@ class Orchestrator(object):
     def upgrade_check(self, image: Optional[str], version: Optional[str]) -> OrchResult[str]:
         raise NotImplementedError()
 
-    def upgrade_ls(self, image: Optional[str], tags: bool) -> OrchResult[List[str]]:
+    def upgrade_ls(self, image: Optional[str], tags: bool) -> OrchResult[Dict[Any, Any]]:
         raise NotImplementedError()
 
     def upgrade_start(self, image: Optional[str], version: Optional[str]) -> OrchResult[str]: