self.log.debug('list_daemons result %s' % result)
return trivial_result(result)
- def service_action(self, action, service_type, service_name):
- self.log.debug('service_action action %s type %s name %s' % (
- action, service_type, service_name))
- if service_name:
- prefix = service_name + '.'
- else:
- prefix = ''
+ def service_action(self, action, service_name):
+ self.log.debug('service_action action %s name %s' % (
+ action, service_name))
args = []
for host, dm in self.daemon_cache.data.items():
for name, d in dm.items():
- if d.daemon_type == service_type and d.daemon_id.startswith(prefix):
+ if d.matches_service(service_name):
args.append((d.daemon_type, d.daemon_id,
d.nodename, action))
if not args:
raise orchestrator.OrchestratorError(
- 'Unable to find %s.%s.* daemon(s)' % (
- service_type, service_name))
+ 'Unable to find %s.%s.* daemon(s)' % (service_name))
return self._daemon_action(args)
@async_map_completion
raise OrchestratorError('Unable to find daemon(s) %s' % (names))
return self._remove_daemon(args)
- def remove_service(self, service_type, service_name):
- if service_name:
- prefix = service_name + '.'
- else:
- prefix = ''
+ def remove_service(self, service_name):
args = []
for host, dm in self.daemon_cache.data.items():
for name, d in dm.items():
- if d.daemon_type == service_type and \
- d.daemon_id.startswith(prefix):
+ if d.matches_service(service_name):
args.append(
('%s.%s' % (d.daemon_type, d.daemon_id), d.nodename)
)
if not args:
- raise OrchestratorError('Unable to find daemons in %s.%s* service' % (
- service_type, prefix))
+ raise OrchestratorError('Unable to find daemons in %s service' % (
+ service_name))
return self._remove_daemon(args)
def get_inventory(self, node_filter=None, refresh=False):
with self._with_host(cephadm_module, 'test'):
c = cephadm_module.list_daemons(refresh=True)
wait(cephadm_module, c)
- c = cephadm_module.remove_service('rgw', 'myrgw')
+ c = cephadm_module.remove_service('rgw.myrgw')
out = wait(cephadm_module, c)
assert out == ["Removed rgw.myrgw.foobar from host 'test'"]
"""
raise NotImplementedError()
- def remove_service(self, service_type, service_name=None):
- # type: (str, Optional[str]) -> Completion
+ def remove_service(self, service_name):
+ # type: (str) -> Completion
"""
Remove a service (a collection of daemons).
"""
raise NotImplementedError()
- def service_action(self, action, service_type, service_name):
- # type: (str, str, str) -> Completion
+ def service_action(self, action, service_name):
+ # type: (str, str) -> Completion
"""
Perform an action (start/stop/reload) on a service (i.e., all daemons
providing the logical service).
def name(self):
return '%s.%s' % (self.daemon_type, self.daemon_id)
+ def matches_service(self, service_name):
+ # type: (Optional[str]) -> bool
+ if service_name:
+ return self.name().startswith(service_name + '.')
+ return False
+
def __repr__(self):
return "<DaemonDescription>({type}.{id})".format(type=self.daemon_type,
id=self.daemon_id)
@_cli_write_command(
'orch',
"name=action,type=CephChoices,strings=start|stop|restart|redeploy|reconfig "
- "name=svc_name,type=CephString",
+ "name=service_name,type=CephString",
'Start, stop, restart, redeploy, or reconfig an entire service (i.e. all daemons)')
- def _service_action(self, action, svc_name):
- if '.' in svc_name:
- (service_type, service_id) = svc_name.split('.', 1)
- else:
- service_type = svc_name;
- service_id = None
- completion = self.service_action(action, service_type, service_id)
+ def _service_action(self, action, service_name):
+ completion = self.service_action(action, service_name)
self._orchestrator_wait([completion])
raise_if_exception(completion)
return HandleCommandResult(stdout=completion.result_str())
@_cli_write_command(
'orch rm',
- "name=name,type=CephString",
+ "name=service_name,type=CephString",
'Remove a service')
- def _service_rm(self, name):
- if '.' in name:
- (service_type, service_name) = name.split('.')
- else:
- service_type = name;
- service_name = None
- if name in ['mon', 'mgr']:
+ def _service_rm(self, service_name):
+ if service_name in ['mon', 'mgr']:
raise OrchestratorError('The mon and mgr services cannot be removed')
- completion = self.remove_service(service_type, service_name)
+ completion = self.remove_service(service_name)
self._orchestrator_wait([completion])
raise_if_exception(completion)
return HandleCommandResult(stdout=completion.result_str())
assert isinstance(names, list)
@deferred_write("remove_service")
- def remove_service(self, service_type, service_name):
- assert isinstance(service_type, str)
+ def remove_service(self, service_name):
assert isinstance(service_name, str)
@deferred_write("blink_device_light")
return ''
@deferred_write("service_action")
- def service_action(self, action, service_type, service_name=None, service_id=None):
+ def service_action(self, action, service_name):
pass
@deferred_write("Adding NFS service")