def get_inventory(self, node_filter=None, refresh=False): node_list = None if node_filter and node_filter.nodes: # Explicit node list node_list = node_filter.nodes elif node_filter and node_filter.labels: # TODO: query k8s API to resolve to node list, and pass # it into RookCluster.get_discovered_devices raise NotImplementedError() devs = self.rook_cluster.get_discovered_devices(node_list) result = [] for node_name, node_devs in devs.items(): devs = [] for d in node_devs: dev = inventory.Device( path=d['name'], sys_api=dict(rotational='1' if d['rotational'] else '0', size=d['size']), available=d['empty'], rejected_reasons=[] if d['empty'] else ['not empty'], ) devs.append(dev) result.append( orchestrator.InventoryNode(node_name, inventory.Devices(devs))) return result
def get_inventory(self, host_filter=None, refresh=False): host_list = None if host_filter and host_filter.hosts: # Explicit host list host_list = host_filter.hosts elif host_filter and host_filter.labels: # TODO: query k8s API to resolve to host list, and pass # it into RookCluster.get_discovered_devices raise NotImplementedError() devs = self.rook_cluster.get_discovered_devices(host_list) result = [] for host_name, host_devs in devs.items(): devs = [] for d in host_devs: if 'cephVolumeData' in d and d['cephVolumeData']: devs.append(inventory.Device.from_json(json.loads(d['cephVolumeData']))) else: devs.append(inventory.Device( path = '/dev/' + d['name'], sys_api = dict( rotational = '1' if d['rotational'] else '0', size = d['size'] ), available = False, rejected_reasons=['device data coming from ceph-volume not provided'], )) result.append(orchestrator.InventoryHost(host_name, inventory.Devices(devs))) return result