return [s for n, s in sm.items()]
@trivial_completion
- def list_daemons(self, daemon_type=None, daemon_id=None,
+ def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None,
host=None, refresh=False):
if refresh:
# ugly sync path, FIXME someday perhaps?
if host and h != host:
continue
for name, dd in dm.items():
- if daemon_type and daemon_type != dd.daemon_type:
+ if daemon_type is not None and daemon_type != dd.daemon_type:
continue
- if daemon_id and daemon_id != dd.daemon_id:
+ if daemon_id is not None and daemon_id != dd.daemon_id:
+ continue
+ if service_name is not None and service_name != dd.service_name():
continue
result.append(dd)
return result
"""
raise NotImplementedError()
- def list_daemons(self, daemon_type=None, daemon_id=None, host=None, refresh=False):
- # type: (Optional[str], Optional[str], Optional[str], bool) -> Completion
+ def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None, host=None, refresh=False):
+ # type: (Optional[str], Optional[str], Optional[str], Optional[str], bool) -> Completion
"""
Describe a daemon (of any kind) that is already configured in
the orchestrator.
@_cli_read_command(
'orch ps',
"name=hostname,type=CephString,req=false "
+ "name=service_name,type=CephString,req=false "
"name=daemon_type,type=CephString,req=false "
"name=daemon_id,type=CephString,req=false "
"name=format,type=CephChoices,strings=json|plain,req=false "
"name=refresh,type=CephBool,req=false",
'List daemons known to orchestrator')
- def _list_daemons(self, hostname=None, daemon_type=None, daemon_id=None, format='plain', refresh=False):
- completion = self.list_daemons(daemon_type,
+ def _list_daemons(self, hostname=None, service_name=None, daemon_type=None, daemon_id=None, format='plain', refresh=False):
+ completion = self.list_daemons(service_name,
+ daemon_type,
daemon_id=daemon_id,
host=hostname,
refresh=refresh)
return [v for k, v in spec.items()]
@deferred_read
- def list_daemons(self, daemon_type=None, daemon_id=None, host=None,
+ def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None, host=None,
refresh=False):
return self._list_daemons(daemon_type, daemon_id, host, refresh)
- def _list_daemons(self, daemon_type=None, daemon_id=None, host=None,
+ def _list_daemons(self, service_name=None, daemon_type=None, daemon_id=None, host=None,
refresh=False):
pods = self.rook_cluster.describe_pods(daemon_type, daemon_id, host)
self.log.debug('pods %s' % pods)
# Unknown type -- skip it
continue
+ if service_name is not None and service_name != sd.service_name():
+ continue
sd.container_image_name = p['container_image_name']
-
sd.created = p['created']
sd.last_configured = p['created']
sd.last_deployed = p['created']
return list(filter(_filter_func, services))
@deferred_read
- def list_daemons(self, daemon_type=None, daemon_id=None, host=None, refresh=False):
+ def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None, host=None, refresh=False):
"""
There is no guarantee which daemons are returned by describe_service, except that
it returns the mgr we're running in.
daemons = self._daemons if self._daemons else self._get_ceph_daemons()
def _filter_func(d):
+ if service_name is not None and service_name != d.service_name():
+ return False
if daemon_type is not None and daemon_type != d.daemon_type:
return False
if daemon_id is not None and daemon_id != d.daemon_id: