From: Adam King Date: Wed, 3 Mar 2021 17:24:57 +0000 (-0500) Subject: mgr/cephadm: add container digests of mgr that deployed daemon to unit.meta X-Git-Tag: v17.1.0~2516^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=baa95a7a13ceef0292f163af6c7c7c74d8a21420;p=ceph.git mgr/cephadm: add container digests of mgr that deployed daemon to unit.meta For use in upgrade. It's useful to see if daemon was deployed by mgr running same container digest as container we are upgrading to. Signed-off-by: Adam King --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index a6818a17958b3..ca8072f1d3726 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1757,6 +1757,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, def daemon_is_self(self, daemon_type: str, daemon_id: str) -> bool: return daemon_type == 'mgr' and daemon_id == self.get_mgr_id() + def get_active_mgr_digests(self) -> List[str]: + digests = self.mgr_service.get_active_daemon( + self.cache.get_daemons_by_type('mgr')).container_image_digests + return digests if digests else [] + def _schedule_daemon_action(self, daemon_name: str, action: str) -> str: dd = self.cache.get_daemon(daemon_name) assert dd.daemon_type is not None diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index 0e986007f70b0..e10793695fd59 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -279,6 +279,7 @@ class CephadmServe: sd.memory_request = d.get('memory_request') sd.memory_limit = d.get('memory_limit') sd._service_name = d.get('service_name') + sd.deployed_by = d.get('deployed_by') sd.version = d.get('version') sd.ports = d.get('ports') sd.ip = d.get('ip') @@ -880,6 +881,7 @@ class CephadmServe: 'service_name': daemon_spec.service_name, 'ports': daemon_spec.ports, 'ip': daemon_spec.ip, + 'deployed_by': self.mgr.get_active_mgr_digests(), }), '--config-json', '-', ] + daemon_spec.extra_args, diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index 2b396c8547e7e..2bf645de61964 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -289,7 +289,7 @@ class TestCephadm(object): _run_cephadm.assert_called_with( 'test', 'mon.test', 'deploy', [ '--name', 'mon.test', - '--meta-json', '{"service_name": "mon", "ports": [], "ip": null}', + '--meta-json', '{"service_name": "mon", "ports": [], "ip": null, "deployed_by": []}', '--config-json', '-', '--reconfig', ], diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index 167553af6ebbe..dec6b0ad5d9a6 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -793,6 +793,7 @@ class DaemonDescription(object): service_name: Optional[str] = None, ports: Optional[List[int]] = None, ip: Optional[str] = None, + deployed_by: Optional[List[str]] = None, ) -> None: # Host is at the same granularity as InventoryHost @@ -847,6 +848,8 @@ class DaemonDescription(object): self.ports: Optional[List[int]] = ports self.ip: Optional[str] = ip + + self.deployed_by = deployed_by self.is_active = is_active