From: Michael Fritch Date: Fri, 13 Mar 2020 13:48:44 +0000 (-0600) Subject: mgr/orch: dump service spec by name X-Git-Tag: v15.2.0~51^2~6^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=83c8ce55d3ca4d75adf15c3fc4e0eda9708b2a00;p=ceph-ci.git mgr/orch: dump service spec by name add optional arg to allow a dump by name: `ceph orch spec dump [svc_name]` Signed-off-by: Michael Fritch --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 2b71674dba0..439e43aca40 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -162,11 +162,13 @@ class SpecStore(): del self.spec_created[service_name] self.mgr.set_store(SPEC_STORE_PREFIX + service_name, None) - def find(self, service_name): - # type: (str) -> List[ServiceSpec] + def find(self, service_name=None): + # type: (Optional[str]) -> List[ServiceSpec] specs = [] for sn, spec in self.specs.items(): - if sn == service_name or sn.startswith(service_name + '.'): + if not service_name or \ + sn == service_name or \ + sn.startswith(service_name + '.'): specs.append(spec) return specs @@ -3042,12 +3044,12 @@ receivers: """ return trivial_result(self.rm_util.report) - def list_specs(self) -> orchestrator.Completion: + def list_specs(self, service_name=None) -> orchestrator.Completion: """ Loads all entries from the service_spec mon_store root. """ specs = list() - for service_name, spec in self.spec_store.specs.items(): + for spec in self.spec_store.find(service_name=service_name): specs.append('---') specs.append(yaml.safe_dump(spec.to_json())) return trivial_result(specs) diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index c1eae587370..11c0a5c8b40 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -859,8 +859,8 @@ class Orchestrator(object): """ raise NotImplementedError() - def list_specs(self): - # type: () -> Completion + def list_specs(self, service_name=None): + # type: (Optional[str]) -> Completion """ Lists saved service specs """ diff --git a/src/pybind/mgr/orchestrator/module.py b/src/pybind/mgr/orchestrator/module.py index 280b31e21bc..bb0114db66a 100644 --- a/src/pybind/mgr/orchestrator/module.py +++ b/src/pybind/mgr/orchestrator/module.py @@ -740,9 +740,10 @@ Usage: @_cli_write_command( 'orch spec dump', + 'name=service_name,type=CephString,req=false', desc='List all Service specs') - def _get_service_specs(self): - completion = self.list_specs() + def _get_service_specs(self, service_name=None): + completion = self.list_specs(service_name=service_name) self._orchestrator_wait([completion]) raise_if_exception(completion) specs = completion.result_str()