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 <jsawaya@redhat.com>
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
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://