]> git.apps.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)
committerSage Weil <sage@newdream.net>
Wed, 24 Mar 2021 02:59:26 +0000 (21:59 -0500)
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>
(cherry picked from commit baa95a7a13ceef0292f163af6c7c7c74d8a21420)

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 4ee7c043d99d147e381c708fd5b9cc921bcdb271..072db303bdf199534247791d2723ac09db242f51 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 0364709e4ec55010bddc3f3cdd6dd58a0cdcbe05..824f674807523bb5aaf5bb1bf0a4c9b560cdc138 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')
@@ -883,6 +884,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