From: Joseph Sawaya Date: Mon, 30 Aug 2021 16:00:58 +0000 (-0400) Subject: mgr/rook: fix orch ls to display OSD info X-Git-Tag: v17.1.0~682^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bf8e5fe4f066589ddfb1afb345ef2cc3079feb31;p=ceph.git mgr/rook: fix orch ls to display OSD info This commit adds OSDs to the describe_service method in the RookOrchestrator class to display the information about running OSDs when a user does `ceph orch ls`. Signed-off-by: Joseph Sawaya --- diff --git a/src/pybind/mgr/rook/module.py b/src/pybind/mgr/rook/module.py index bf6f673b302d..0b6badcff08b 100644 --- a/src/pybind/mgr/rook/module.py +++ b/src/pybind/mgr/rook/module.py @@ -348,7 +348,19 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): size=active, last_refresh=now, ) - + if service_type == 'osd' or service_type is None: + # OSDs + all_osds = self.rook_cluster.get_osds() + svc = 'osd' + spec[svc] = orchestrator.ServiceDescription( + spec=DriveGroupSpec( + service_type='osd', + placement=PlacementSpec(count=len(all_osds), hosts=[osd.metadata.labels['topology-location-host'] for osd in all_osds]), + ), + size=len(all_osds), + last_refresh=now, + running= sum(osd.status.phase == 'Running' for osd in all_osds) + ) for dd in self._list_daemons(): if dd.service_name() not in spec: continue diff --git a/src/pybind/mgr/rook/rook_cluster.py b/src/pybind/mgr/rook/rook_cluster.py index 5a13d3929487..2fa86c9138a8 100644 --- a/src/pybind/mgr/rook/rook_cluster.py +++ b/src/pybind/mgr/rook/rook_cluster.py @@ -703,6 +703,10 @@ class RookCluster(object): self.fetcher.fetch() return self.fetcher.devices() + def get_osds(self) -> List: + osd_pods: KubernetesResource = KubernetesResource(self.coreV1_api.list_namespaced_pod, namespace='rook-ceph', label_selector='app=rook-ceph-osd') + return list(osd_pods.items) + def get_nfs_conf_url(self, nfs_cluster: str, instance: str) -> Optional[str]: # # Fetch cephnfs object for "nfs_cluster" and then return a rados://