From e81ed6a0c867e9d1bdd9d3b52846ec2340d84c86 Mon Sep 17 00:00:00 2001 From: MINHO KIM Date: Mon, 24 Oct 2022 13:39:56 +0900 Subject: [PATCH] fix: change list_container_groups method in Container_instance's manager.py #14 --- .../container_instances/connector.py | 8 ++ .../container_instances/container_manager.py | 113 +++++++++--------- 2 files changed, 63 insertions(+), 58 deletions(-) diff --git a/src/spaceone/inventory/connector/container_instances/connector.py b/src/spaceone/inventory/connector/container_instances/connector.py index eec76bd0..c0d9f87f 100644 --- a/src/spaceone/inventory/connector/container_instances/connector.py +++ b/src/spaceone/inventory/connector/container_instances/connector.py @@ -2,6 +2,7 @@ from spaceone.inventory.libs.connector import AzureConnector from spaceone.inventory.error.custom import * + __all__ = ['ContainerInstancesConnector'] _LOGGER = logging.getLogger(__name__) @@ -18,3 +19,10 @@ def list_container_groups(self): def get_container_groups(self, resource_group_name, container_group_name): return self.container_instance_client.container_groups.get(resource_group_name=resource_group_name, container_group_name=container_group_name) + + def list_resource_groups(self): + return self.resource_client.resource_groups.list() + + def list_container_groups_by_resource_group(self, resource_group_name): + return self.container_instance_client.container_groups.list_by_resource_group( + resource_group_name=resource_group_name) diff --git a/src/spaceone/inventory/manager/container_instances/container_manager.py b/src/spaceone/inventory/manager/container_instances/container_manager.py index da1e67d3..22c26891 100644 --- a/src/spaceone/inventory/manager/container_instances/container_manager.py +++ b/src/spaceone/inventory/manager/container_instances/container_manager.py @@ -38,64 +38,61 @@ def collect_cloud_service(self, params): container_instances_responses = [] error_responses = [] - container_instances = container_instances_conn.list_container_groups() - for container_instance in container_instances: - container_instance_id = '' - try: - container_instance_dict = self.convert_nested_dictionary(container_instance) - container_instance_id = container_instance_dict['id'] - - # if bug fix these code will be deleted - resource_group_name = self.get_resource_group_from_id(container_instance_id) - container_group_name = container_instance_dict['name'] - container_instance = container_instances_conn.get_container_groups( - resource_group_name=resource_group_name, - container_group_name=container_group_name) - container_instance_dict = self.convert_nested_dictionary(container_instance) - time.sleep(0.2) # end code - - # Update data info in Container Instance's Raw Data - for container in container_instance_dict['containers']: - _start_time = container['instance_view']['current_state']['start_time'] - if _start_time is not None: - container_instance_dict['start_time'] = datetime_to_iso8601(_start_time) - - # Set detail volume info for container - if container_instance_dict['volumes'] is not None: - for volume in container_instance_dict['volumes']: - self.set_volumes_detail_info(volume, container_instance_dict['containers']) - - # Set Container Instance volume type and volume count - self.set_container_instance_volume_type(container_instance_dict['volumes']) - container_instance_dict['volume_count_display'] = len(container_instance_dict['volumes']) - - container_instance_dict.update({ - 'resource_group': self.get_resource_group_from_id(container_instance_id), - 'subscription_id': subscription_info['subscription_id'], - 'subscription_name': subscription_info['subscription_name'], - 'azure_monitor': {'resource_id': container_instance_id}, - 'container_count_display': len(container_instance_dict['containers']) - }) - - container_instance_data = ContainerInstance(container_instance_dict, strict=False) - container_instance_resource = ContainerInstanceResource({ - 'name': container_instance_data.name, - 'account': container_instance_dict['subscription_id'], - 'data': container_instance_data, - 'tags': container_instance_dict.get('tags', {}), - 'region_code': container_instance_data.location, - 'reference': ReferenceModel(container_instance_data.reference()) - }) - - self.set_region_code(container_instance_data['location']) - container_instances_responses.append( - ContainerInstanceResponse({'resource': container_instance_resource})) - - except Exception as e: - _LOGGER.error(f'[list_instances] {container_instance_id} {e}', exc_info=True) - error_response = self.generate_resource_error_response(e, 'Container', 'ContainerInstances', - container_instance_id) - error_responses.append(error_response) + # container_instances = container_instances_conn.list_container_groups() + resource_groups = container_instances_conn.list_resource_groups() + for resource_group in resource_groups: + resource_group_name = self.get_resource_group_from_id(resource_group.id) + container_instances = container_instances_conn.list_container_groups_by_resource_group(resource_group_name= + resource_group_name) + for container_instance in container_instances: + container_instance_id = '' + + try: + container_instance_dict = self.convert_nested_dictionary(container_instance) + container_instance_id = container_instance_dict['id'] + + # Update data info in Container Instance's Raw Data + for container in container_instance_dict['containers']: + _start_time = container['instance_view']['current_state']['start_time'] + if _start_time is not None: + container_instance_dict['start_time'] = datetime_to_iso8601(_start_time) + + # Set detail volume info for container + if container_instance_dict['volumes'] is not None: + for volume in container_instance_dict['volumes']: + self.set_volumes_detail_info(volume, container_instance_dict['containers']) + + # Set Container Instance volume type and volume count + self.set_container_instance_volume_type(container_instance_dict['volumes']) + container_instance_dict['volume_count_display'] = len(container_instance_dict['volumes']) + + container_instance_dict.update({ + 'resource_group': self.get_resource_group_from_id(container_instance_id), + 'subscription_id': subscription_info['subscription_id'], + 'subscription_name': subscription_info['subscription_name'], + 'azure_monitor': {'resource_id': container_instance_id}, + 'container_count_display': len(container_instance_dict['containers']) + }) + + container_instance_data = ContainerInstance(container_instance_dict, strict=False) + container_instance_resource = ContainerInstanceResource({ + 'name': container_instance_data.name, + 'account': container_instance_dict['subscription_id'], + 'data': container_instance_data, + 'tags': container_instance_dict.get('tags', {}), + 'region_code': container_instance_data.location, + 'reference': ReferenceModel(container_instance_data.reference()) + }) + + self.set_region_code(container_instance_data['location']) + container_instances_responses.append( + ContainerInstanceResponse({'resource': container_instance_resource})) + + except Exception as e: + _LOGGER.error(f'[list_instances] {container_instance_id} {e}', exc_info=True) + error_response = self.generate_resource_error_response(e, 'Container', 'ContainerInstances', + container_instance_id) + error_responses.append(error_response) _LOGGER.debug(f'** Container Instances Finished {time.time() - start_time} Seconds **') return container_instances_responses, error_responses