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 <adking@redhat.com>
This commit is contained in:
Adam King 2021-03-03 12:24:57 -05:00
parent 4f746f2655
commit baa95a7a13
4 changed files with 11 additions and 1 deletions

View 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

View 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,

View 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',
],

View 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