From: Sage Weil Date: Fri, 15 Oct 2021 15:09:07 +0000 (-0400) Subject: mgr/cephadm: make upgrade ls output structured X-Git-Tag: v17.1.0~655^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=be3fd05fc59bd523c1171d18cb0a0784f6a6d5c1;p=ceph.git mgr/cephadm: make upgrade ls output structured Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 720422902cc0..08361e47622d 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -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 diff --git a/src/pybind/mgr/cephadm/upgrade.py b/src/pybind/mgr/cephadm/upgrade.py index e71c9c8bf3a1..4e23e0d121ea 100644 --- a/src/pybind/mgr/cephadm/upgrade.py +++ b/src/pybind/mgr/cephadm/upgrade.py @@ -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': diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index ffc77784c301..04b62022b969 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -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]: