Improves code organization in get_dict_from_describe_dict method

This commit is contained in:
Victor Schröder 2015-06-14 23:32:10 +02:00
parent 41b034a5d2
commit 77a2ad0e8c

View file

@ -1087,12 +1087,18 @@ class Ec2Inventory(object):
key = self.to_safe('ec2_' + self.uncammelize(key)) key = self.to_safe('ec2_' + self.uncammelize(key))
# Handle complex types # Handle complex types
# Target: Memcached Cache Clusters
if key == 'ec2_configuration_endpoint' and value: if key == 'ec2_configuration_endpoint' and value:
host_info['ec2_configuration_endpoint_address'] = value['Address'] host_info['ec2_configuration_endpoint_address'] = value['Address']
host_info['ec2_configuration_endpoint_port'] = value['Port'] host_info['ec2_configuration_endpoint_port'] = value['Port']
# Target: Cache Nodes and Redis Cache Clusters (single node)
if key == 'ec2_endpoint' and value: if key == 'ec2_endpoint' and value:
host_info['ec2_endpoint_address'] = value['Address'] host_info['ec2_endpoint_address'] = value['Address']
host_info['ec2_endpoint_port'] = value['Port'] host_info['ec2_endpoint_port'] = value['Port']
# Target: Redis Replication Groups
if key == 'ec2_node_groups' and value: if key == 'ec2_node_groups' and value:
host_info['ec2_endpoint_address'] = value[0]['PrimaryEndpoint']['Address'] host_info['ec2_endpoint_address'] = value[0]['PrimaryEndpoint']['Address']
host_info['ec2_endpoint_port'] = value[0]['PrimaryEndpoint']['Port'] host_info['ec2_endpoint_port'] = value[0]['PrimaryEndpoint']['Port']
@ -1107,25 +1113,41 @@ class Ec2Inventory(object):
host_info['ec2_replica_cluster_port_'+ str(replica_count)] = node['ReadEndpoint']['Port'] host_info['ec2_replica_cluster_port_'+ str(replica_count)] = node['ReadEndpoint']['Port']
host_info['ec2_replica_cluster_id_'+ str(replica_count)] = node['CacheClusterId'] host_info['ec2_replica_cluster_id_'+ str(replica_count)] = node['CacheClusterId']
replica_count += 1 replica_count += 1
# Target: Redis Replication Groups
if key == 'ec2_member_clusters' and value: if key == 'ec2_member_clusters' and value:
host_info['ec2_member_clusters'] = ','.join([str(i) for i in value]) host_info['ec2_member_clusters'] = ','.join([str(i) for i in value])
# Target: All Cache Clusters
elif key == 'ec2_cache_parameter_group': elif key == 'ec2_cache_parameter_group':
host_info["ec2_cache_node_ids_to_reboot"] = ','.join([str(i) for i in value['CacheNodeIdsToReboot']]) host_info["ec2_cache_node_ids_to_reboot"] = ','.join([str(i) for i in value['CacheNodeIdsToReboot']])
host_info['ec2_cache_parameter_group_name'] = value['CacheParameterGroupName'] host_info['ec2_cache_parameter_group_name'] = value['CacheParameterGroupName']
host_info['ec2_cache_parameter_apply_status'] = value['ParameterApplyStatus'] host_info['ec2_cache_parameter_apply_status'] = value['ParameterApplyStatus']
# Target: Almost everything
elif key == 'ec2_security_groups': elif key == 'ec2_security_groups':
sg_ids = [] sg_ids = []
for sg in value: for sg in value:
sg_ids.append(sg['SecurityGroupId']) sg_ids.append(sg['SecurityGroupId'])
host_info["ec2_security_group_ids"] = ','.join([str(i) for i in sg_ids]) host_info["ec2_security_group_ids"] = ','.join([str(i) for i in sg_ids])
# Target: Everything
# Preserve booleans and integers
elif type(value) in [int, bool]: elif type(value) in [int, bool]:
host_info[key] = value host_info[key] = value
# Target: Everything
# Sanitize string values
elif isinstance(value, six.string_types): elif isinstance(value, six.string_types):
host_info[key] = value.strip() host_info[key] = value.strip()
# Target: Everything
# Replace None by an empty string
elif type(value) == type(None): elif type(value) == type(None):
host_info[key] = '' host_info[key] = ''
else: else:
# Remove non-processed complex types
pass pass
return host_info return host_info