X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fadapter%2Fclients%2Focloud_client.py;h=b8eeb2140de7a845a8272716bb0c563b141615bc;hb=ef929d2493f22367b2d514342a12b1686bda4413;hp=8b736146e3e938e7994aa25a5a407b0a704ede3b;hpb=682e05a97a5dedd556a173bda941da9da5598234;p=pti%2Fo2.git diff --git a/o2ims/adapter/clients/ocloud_client.py b/o2ims/adapter/clients/ocloud_client.py index 8b73614..b8eeb21 100644 --- a/o2ims/adapter/clients/ocloud_client.py +++ b/o2ims/adapter/clients/ocloud_client.py @@ -15,18 +15,18 @@ # client talking to Stx standalone import uuid -from o2common.service.client.base_client import BaseClient from typing import List # Optional, Set -from o2ims.domain import stx_object as ocloudModel -from o2common.config import config -from o2ims.domain.resource_type import ResourceTypeEnum -# from dcmanagerclient.api import client from cgtsclient.client import get_client as get_stx_client from cgtsclient.exc import EndpointException from dcmanagerclient.api.client import client as get_dc_client +from o2common.config import config +from o2common.service.client.base_client import BaseClient +from o2ims.domain import stx_object as ocloudModel +from o2ims.domain.resource_type import ResourceTypeEnum + from o2common.helper import o2logging logger = o2logging.get_logger(__name__) @@ -43,7 +43,7 @@ class StxOcloudClient(BaseClient): def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getInstanceInfo() - def _list(self, **filters): + def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: return [self.driver.getInstanceInfo()] def _set_stx_client(self): @@ -58,7 +58,7 @@ class StxResourcePoolClient(BaseClient): def _get(self, id) -> ocloudModel.StxGenericModel: return self.driver.getResourcePoolDetail(id) - def _list(self, **filters): + def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: return self.driver.getResourcePoolList(**filters) def _set_stx_client(self): @@ -73,7 +73,7 @@ class StxDmsClient(BaseClient): def _get(self, name) -> ocloudModel.StxGenericModel: return self.driver.getK8sDetail(name) - def _list(self, **filters): + def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: return self.driver.getK8sList(**filters) def _set_stx_client(self): @@ -89,7 +89,6 @@ class StxPserverClient(BaseClient): return self.driver.getPserver(id) def _list(self, **filters) -> List[ocloudModel.StxGenericModel]: - filters['resourcepoolid'] return self.driver.getPserverList(**filters) def _set_stx_client(self): @@ -230,7 +229,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.info(os_client_args) + # logger.info(os_client_args) config_client = get_stx_client(**os_client_args) except EndpointException as e: msg = e.format_message() @@ -238,7 +237,7 @@ 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.info(os_client_args) + # logger.info(os_client_args) config_client = get_stx_client(**os_client_args) else: raise ValueError('Stx endpoint exception: %s' % msg) @@ -271,6 +270,7 @@ class StxClientImp(object): ResourceTypeEnum.OCLOUD, systems[0]) if systems else None def getSubcloudList(self): + self.dcclient = self.getDcmanagerClient() subs = self.dcclient.subcloud_manager.list_subclouds() known_subs = [sub for sub in subs if sub.sync_status != 'unknown'] return known_subs @@ -315,7 +315,8 @@ class StxClientImp(object): systems = self.stxclient.isystem.list() logger.debug('systems:' + str(systems[0].to_dict())) return ocloudModel.StxGenericModel( - ResourceTypeEnum.RESOURCE_POOL, systems[0]) if systems else None + ResourceTypeEnum.RESOURCE_POOL, + self._respoolconverter(systems[0])) if systems else None def getPserverList(self, **filters) -> List[ocloudModel.StxGenericModel]: hosts = self.stxclient.ihost.list() @@ -323,6 +324,7 @@ class StxClientImp(object): return [ocloudModel.StxGenericModel( ResourceTypeEnum.PSERVER, self._hostconverter(host)) for host in hosts if host and (host.availability == 'available' + or host.availability == 'online' or host.availability == 'degraded')] def getPserver(self, id) -> ocloudModel.StxGenericModel: @@ -534,23 +536,65 @@ class StxClientImp(object): @ staticmethod def _hostconverter(host): + selected_keys = [ + "hostname", "personality", "id", "mgmt_ip", "mgmt_mac", + "software_load", "capabilities", + "operational", "availability", "administrative", + "boot_device", "rootfs_device", "install_state", "subfunctions", + "clock_synchronization", "max_cpu_mhz_allowed" + ] + content = host.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(host, 'filtered', filtered) setattr(host, 'name', host.hostname) return host @ staticmethod def _cpuconverter(cpu): + selected_keys = [ + "cpu", "core", "thread", "allocated_function", "numa_node", + "cpu_model", "cpu_family" + ] + content = cpu.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(cpu, 'filtered', filtered) setattr(cpu, 'name', cpu.ihost_uuid.split( '-', 1)[0] + '-cpu-'+str(cpu.cpu)) return cpu @ staticmethod def _memconverter(mem): + selected_keys = [ + "memtotal_mib", "memavail_mib", "vm_hugepages_use_1G", + "vm_hugepages_possible_1G", "hugepages_configured", + "vm_hugepages_avail_1G", "vm_hugepages_nr_1G", + "vm_hugepages_nr_4K", "vm_hugepages_nr_2M", + "vm_hugepages_possible_2M", "vm_hugepages_avail_2M", + "platform_reserved_mib", "numa_node" + ] + content = mem.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(mem, 'filtered', filtered) setattr(mem, 'name', mem.ihost_uuid.split('-', 1)[0] + '-mem-node-'+str(mem.numa_node)) return mem @ staticmethod def _ethconverter(eth): + selected_keys = [ + "name", "namedisplay", "dev_id", "pdevice", "capabilities", + "type", "driver", "mac", "numa_node", + "pciaddr", "pclass", "psvendor", "psdevice", + "sriov_totalvfs", "sriov_numvfs", "dpdksupport", + "sriov_vf_driver", "sriov_vf_pdevice_id", "interface_uuid" + ] + content = eth.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(eth, 'filtered', filtered) setattr(eth, 'name', eth.host_uuid.split('-', 1)[0] + '-'+eth.name) setattr(eth, 'updated_at', None) setattr(eth, 'created_at', None) @@ -558,6 +602,15 @@ class StxClientImp(object): @ staticmethod def _ifconverter(ifs): + selected_keys = [ + "ifname", "iftype", "imac", "vlan_id", "imtu", + "ifclass", "uses", "max_tx_rate", + "sriov_vf_driver", "sriov_numvfs", "ptp_role" + ] + content = ifs.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(ifs, 'filtered', filtered) setattr(ifs, 'name', ifs.ihost_uuid.split('-', 1)[0] + '-'+ifs.ifname) setattr(ifs, 'updated_at', None) setattr(ifs, 'created_at', None) @@ -565,6 +618,15 @@ class StxClientImp(object): @ staticmethod def _devconverter(dev): + selected_keys = [ + "name", "pdevice", "pciaddr", "pvendor_id", "pvendor", + "pclass_id", "pclass", "psvendor", "psdevice", + "sriov_totalvfs", "sriov_numvfs", "numa_node" + ] + content = dev.to_dict() + filtered = dict( + filter(lambda item: item[0] in selected_keys, content.items())) + setattr(dev, 'filtered', filtered) setattr(dev, 'name', dev.host_uuid.split('-', 1)[0] + '-'+dev.name) return dev