X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fadapter%2Fclients%2Focloud_client.py;h=e963987d8626de02ec06af12c9771c4de6cedc3d;hb=refs%2Fchanges%2F52%2F8452%2F3;hp=d7abd87fc5750d505edf402265a94e84199207e9;hpb=576ad21504bb3e50546b349c63ebec7bd0c805ab;p=pti%2Fo2.git diff --git a/o2ims/adapter/clients/ocloud_client.py b/o2ims/adapter/clients/ocloud_client.py index d7abd87..e963987 100644 --- a/o2ims/adapter/clients/ocloud_client.py +++ b/o2ims/adapter/clients/ocloud_client.py @@ -24,12 +24,17 @@ 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.helper import o2logging logger = o2logging.get_logger(__name__) +CGTSCLIENT_ENDPOINT_ERROR_MSG = \ + 'Must provide Keystone credentials or user-defined endpoint and token' + + class StxOcloudClient(BaseClient): def __init__(self, driver=None): super().__init__() @@ -191,10 +196,24 @@ class StxClientImp(object): subcloud_additional_details(subcloud_id) logger.debug('subcloud name: %s, oam_floating_ip: %s' % (subcloud[0].name, subcloud[0].oam_floating_ip)) - os_client_args = config.get_stx_access_info( - region_name=subcloud[0].name, - subcloud_hostname=subcloud[0].oam_floating_ip) - config_client = get_stx_client(**os_client_args) + try: + 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) + config_client = get_stx_client(**os_client_args) + except EndpointException as e: + msg = e.format_message() + if CGTSCLIENT_ENDPOINT_ERROR_MSG in msg: + 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) + config_client = get_stx_client(**os_client_args) + else: + raise ValueError('Stx endpoint exception: %s' % msg) + else: + raise ValueError('cgtsclient get subcloud client failed') return config_client def setStxClient(self, resource_pool_id): @@ -243,8 +262,9 @@ class StxClientImp(object): subclouds = self.getSubcloudList() logger.debug('subclouds numbers: %s' % len(subclouds)) for subcloud in subclouds: - subcloud_stxclient = self.getSubcloudClient(subcloud.subcloud_id) try: + subcloud_stxclient = self.getSubcloudClient( + subcloud.subcloud_id) systems = subcloud_stxclient.isystem.list() logger.debug('systems:' + str(systems[0].to_dict())) pools.append(systems[0])