X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fadapter%2Fclients%2Focloud_client.py;h=35188aa7f686b7a7a0b09e43282b7e6438b84a88;hb=df795c526aff71a64c5709f5ec3d8adc0ce5b3f0;hp=ddc644ee08454385342bc2dabf8977d07d0b03fd;hpb=d23f4cb727b41a43cdb28c3e819fa902cd4fc8cc;p=pti%2Fo2.git diff --git a/o2ims/adapter/clients/ocloud_client.py b/o2ims/adapter/clients/ocloud_client.py index ddc644e..35188aa 100644 --- a/o2ims/adapter/clients/ocloud_client.py +++ b/o2ims/adapter/clients/ocloud_client.py @@ -172,7 +172,37 @@ class StxIfPortClient(BaseClient): self.driver.setStxClient(self._pool_id) -# internal driver which implement client call to Stx Standalone instance +class StxDevClient(BaseClient): + def __init__(self): + super().__init__() + self.driver = StxClientImp() + + def _get(self, id) -> ocloudModel.StxGenericModel: + return self.driver.getDevice(id) + + def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: + return self.driver.getDeviceList(**filters) + + def _set_stx_client(self): + self.driver.setStxClient(self._pool_id) + + +class StxAccClient(BaseClient): + def __init__(self): + super().__init__() + self.driver = StxClientImp() + + def _get(self, id) -> ocloudModel.StxGenericModel: + return self.driver.getAccelerator(id) + + def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: + return self.driver.getAcceleratorList(**filters) + + def _set_stx_client(self): + self.driver.setStxClient(self._pool_id) + + +# internal driver which implement client call to Stx Standalone and DC instance class StxClientImp(object): def __init__(self, stx_client=None, dc_client=None): super().__init__() @@ -200,7 +230,7 @@ class StxClientImp(object): os_client_args = config.get_stx_access_info( region_name=subcloud[0].name, subcloud_hostname=subcloud[0].oam_floating_ip) - logger.warning(os_client_args) + logger.info(os_client_args) config_client = get_stx_client(**os_client_args) except EndpointException as e: msg = e.format_message() @@ -208,12 +238,13 @@ class StxClientImp(object): os_client_args = config.get_stx_access_info( region_name=subcloud[0].name, sub_is_https=True, subcloud_hostname=subcloud[0].oam_floating_ip) - logger.warning(os_client_args) + logger.info(os_client_args) config_client = get_stx_client(**os_client_args) else: raise ValueError('Stx endpoint exception: %s' % msg) - else: + except Exception: raise ValueError('cgtsclient get subcloud client failed') + return config_client def setStxClient(self, resource_pool_id): @@ -446,6 +477,41 @@ class StxClientImp(object): return ocloudModel.StxGenericModel( ResourceTypeEnum.PSERVER_IF_PORT, portinfo) + def getDeviceList(self, **filters) -> List[ocloudModel.StxGenericModel]: + hostid = filters.get('hostid', None) + assert (hostid is not None), 'missing hostid to query pci device list' + pci_dev_list = self.stxclient.pci_device.list(hostid) + return [ocloudModel.StxGenericModel( + ResourceTypeEnum.PSERVER_PCI_DEV, + self._devconverter(pci_dev)) + for pci_dev in pci_dev_list if pci_dev] + + def getDevice(self, id) -> ocloudModel.StxGenericModel: + pciinfo = self.stxclient.pci_device.get(id) + return ocloudModel.StxGenericModel( + ResourceTypeEnum.PSERVER_PCI_DEV, self._devconverter(pciinfo)) + + def getAcceleratorList(self, **filters) -> \ + List[ocloudModel.StxGenericModel]: + hostid = filters.get('hostid', None) + assert (hostid is not None), 'missing hostid to query accelerator list' + pci_dev_list = self.stxclient.pci_device.list(hostid) + acc_list = [] + for pci_dev in pci_dev_list: + if pci_dev.pvendor_id in ['8086']: + if pci_dev.pdevice_id in ['0d5c', '0d5d']: + logger.info('Accelerator vendor ID: {}, device ID: {}'. + format(pci_dev.pvendor_id, pci_dev.pdevice_id)) + acc_list.append(ocloudModel.StxGenericModel( + ResourceTypeEnum.PSERVER_ACC, + self._devconverter(pci_dev))) + return acc_list + + def getAccelerator(self, id) -> ocloudModel.StxGenericModel: + pciinfo = self.stxclient.pci_device.get(id) + return ocloudModel.StxGenericModel( + ResourceTypeEnum.PSERVER_ACC, self._devconverter(pciinfo)) + def _getIsystems(self): return self.stxclient.isystem.list() @@ -490,6 +556,11 @@ class StxClientImp(object): setattr(ifs, 'created_at', None) return ifs + @ staticmethod + def _devconverter(dev): + setattr(dev, 'name', dev.host_uuid.split('-', 1)[0] + '-'+dev.name) + return dev + @ staticmethod def _k8sconverter(cluster): setattr(cluster, 'name', cluster.cloud_name +