Inferring service_name from the daemon name is error-prone.
Fixes: https://tracker.ceph.com/issues/46219
Signed-off-by: Sage Weil <sage@newdream.net>
sd.memory_usage = d.get('memory_usage')
sd.memory_request = d.get('memory_request')
sd.memory_limit = d.get('memory_limit')
+ sd._service_name = d.get('service_name')
sd.version = d.get('version')
if sd.daemon_type == 'osd':
sd.osdspec_affinity = self.mgr.osd_service.get_osdspec_affinity(sd.daemon_id)
self._registry_login(daemon_spec.host, self.mgr.registry_url,
self.mgr.registry_username, self.mgr.registry_password)
- daemon_spec.extra_args.extend(['--config-json', '-'])
-
self.log.info('%s daemon %s on %s' % (
'Reconfiguring' if reconfig else 'Deploying',
daemon_spec.name(), daemon_spec.host))
daemon_spec.host, daemon_spec.name(), 'deploy',
[
'--name', daemon_spec.name(),
+ '--meta-json', json.dumps({
+ 'service_name': daemon_spec.service_name,
+ }),
+ '--config-json', '-',
] + daemon_spec.extra_args,
stdin=json.dumps(daemon_spec.final_config),
image=image)
CephadmServe(cephadm_module)._check_daemons()
- _run_cephadm.assert_called_with('test', 'mon.test', 'deploy', [
- '--name', 'mon.test', '--reconfig', '--config-json', '-'],
- stdin='{"config": "\\n\\n[mon]\\nk=v\\n[mon.test]\\npublic network = 127.0.0.0/8\\n", '
- + '"keyring": "", "files": {"config": "[mon.test]\\npublic network = 127.0.0.0/8\\n"}}',
- image='')
+ _run_cephadm.assert_called_with(
+ 'test', 'mon.test', 'deploy', [
+ '--name', 'mon.test',
+ '--meta-json', '{"service_name": "mon"}',
+ '--config-json', '-',
+ '--reconfig',
+ ],
+ stdin='{"config": "\\n\\n[mon]\\nk=v\\n[mon.test]\\npublic network = 127.0.0.0/8\\n", '
+ + '"keyring": "", "files": {"config": "[mon.test]\\npublic network = 127.0.0.0/8\\n"}}',
+ image='')
@mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
def test_daemon_check_post(self, cephadm_module: CephadmOrchestrator):
memory_usage: Optional[int] = None,
memory_request: Optional[int] = None,
memory_limit: Optional[int] = None,
+ service_name: Optional[str] = None,
) -> None:
# Host is at the same granularity as InventoryHost
# in the FSMap/ServiceMap.
self.daemon_id: Optional[str] = daemon_id
+ self._service_name: Optional[str] = service_name
+
# Service version that was deployed
self.version = version
if self.daemon_type == 'osd' and self.osdspec_affinity:
return self.osdspec_affinity
+ if self._service_name:
+ if '.' in self._service_name:
+ return self._service_name.split('.', 1)[1]
+ else:
+ return ''
+
def _match() -> str:
assert self.daemon_id is not None
err = OrchestratorError("DaemonDescription: Cannot calculate service_id: "
return self.daemon_id
def service_name(self) -> str:
+ if self._service_name:
+ return self._service_name
assert self.daemon_type is not None
if daemon_type_to_service(self.daemon_type) in ServiceSpec.REQUIRES_SERVICE_ID:
return f'{daemon_type_to_service(self.daemon_type)}.{self.service_id()}'