]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: add container digests of mgr that deployed daemon to unit.meta
authorAdam King <adking@redhat.com>
Wed, 3 Mar 2021 17:24:57 +0000 (12:24 -0500)
committerAdam King <adking@redhat.com>
Thu, 18 Mar 2021 22:17:35 +0000 (18:17 -0400)
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 <adking@redhat.com>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/orchestrator/_interface.py

index a6818a17958b3e800a014f616fc9cd3158375284..ca8072f1d3726cce044cdfe2c3182225a3000370 100644 (file)
@@ -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
index 0e986007f70b0a49075194a4d8d51bfd87f27be2..e10793695fd598cda19a4c0f85105defb4fa6c84 100644 (file)
@@ -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,
index 2b396c8547e7e3a64856b53539cb396cde251cca..2bf645de61964a42fba56d69257f5585e0bae2a0 100644 (file)
@@ -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',
                     ],
index 167553af6ebbe883381d3bc7e248cf52b699f1ee..dec6b0ad5d9a6a02b96e7914b3e203eb23889b70 100644 (file)
@@ -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