From: Sebastian Wagner Date: Fri, 11 Sep 2020 11:44:54 +0000 (+0200) Subject: mgr/cepahdm: move convert_tags_to_repo_digest to serve.py X-Git-Tag: v15.2.8~14^2~21 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=0d9c3aea11b80e09418c77cd64f5df6ea7cd07a5;p=ceph.git mgr/cepahdm: move convert_tags_to_repo_digest to serve.py Signed-off-by: Sebastian Wagner (cherry picked from commit 86f5b1f16c2e859087ba5a50e9124617721ae10a) --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 303bdcdf4ccdb..7c6465f4b348f 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -25,7 +25,7 @@ import subprocess from ceph.deployment import inventory from ceph.deployment.drive_group import DriveGroupSpec from ceph.deployment.service_spec import \ - NFSServiceSpec, RGWSpec, ServiceSpec, PlacementSpec, assert_valid_host, \ + NFSServiceSpec, ServiceSpec, PlacementSpec, assert_valid_host, \ CustomContainerSpec from cephadm.serve import CephadmServe from cephadm.services.cephadmservice import CephadmDaemonSpec @@ -52,7 +52,7 @@ from .inventory import Inventory, SpecStore, HostCache, EventStore from .upgrade import CEPH_UPGRADE_ORDER, CephadmUpgrade from .template import TemplateMgr from .utils import forall_hosts, CephadmNoImage, cephadmNoImage, \ - str_to_datetime, datetime_to_str, is_repo_digest + str_to_datetime, datetime_to_str try: import remoto @@ -441,24 +441,6 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): serve = CephadmServe(self) serve.serve() - def convert_tags_to_repo_digest(self): - if not self.use_repo_digest: - return - settings = self.upgrade.get_distinct_container_image_settings() - digests: Dict[str, ContainerInspectInfo] = {} - for container_image_ref in set(settings.values()): - if not is_repo_digest(container_image_ref): - image_info = self._get_container_image_info(container_image_ref) - if image_info.repo_digest: - assert is_repo_digest(image_info.repo_digest), image_info - digests[container_image_ref] = image_info - - for entity, container_image_ref in settings.items(): - if not is_repo_digest(container_image_ref): - image_info = digests[container_image_ref] - if image_info.repo_digest: - self.set_container_image(entity, image_info.repo_digest) - def set_container_image(self, entity: str, image): self.check_mon_command({ 'prefix': 'config set', diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index e70521f13961a..a9ade9c7ba9f2 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -16,11 +16,11 @@ from ceph.deployment.service_spec import ServiceSpec, HostPlacementSpec, RGWSpec import orchestrator from cephadm.schedule import HostAssignment from cephadm.upgrade import CEPH_UPGRADE_ORDER -from cephadm.utils import forall_hosts, cephadmNoImage, str_to_datetime +from cephadm.utils import forall_hosts, cephadmNoImage, str_to_datetime, is_repo_digest from orchestrator import OrchestratorError if TYPE_CHECKING: - from cephadm.module import CephadmOrchestrator + from cephadm.module import CephadmOrchestrator, ContainerInspectInfo logger = logging.getLogger(__name__) @@ -52,7 +52,7 @@ class CephadmServe: try: - self.mgr.convert_tags_to_repo_digest() + self.convert_tags_to_repo_digest() # refresh daemons self.log.debug('refreshing hosts and daemons') @@ -614,3 +614,21 @@ class CephadmServe: if daemon_type in self.mgr.requires_post_actions: self.mgr.requires_post_actions.remove(daemon_type) self.mgr._get_cephadm_service(daemon_type).daemon_check_post(daemon_descs) + + def convert_tags_to_repo_digest(self): + if not self.mgr.use_repo_digest: + return + settings = self.mgr.upgrade.get_distinct_container_image_settings() + digests: Dict[str, ContainerInspectInfo] = {} + for container_image_ref in set(settings.values()): + if not is_repo_digest(container_image_ref): + image_info = self.mgr._get_container_image_info(container_image_ref) + if image_info.repo_digest: + assert is_repo_digest(image_info.repo_digest), image_info + digests[container_image_ref] = image_info + + for entity, container_image_ref in settings.items(): + if not is_repo_digest(container_image_ref): + image_info = digests[container_image_ref] + if image_info.repo_digest: + self.mgr.set_container_image(entity, image_info.repo_digest) diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index ee39c36a2fb2a..52be4ea7d2762 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -926,7 +926,7 @@ class TestCephadm(object): if use_repo_digest: cephadm_module.use_repo_digest = True - cephadm_module.convert_tags_to_repo_digest() + CephadmServe(cephadm_module).convert_tags_to_repo_digest() _, image, _ = cephadm_module.check_mon_command({ 'prefix': 'config get',