|
|
|
@ -1087,12 +1087,18 @@ class Ec2Inventory(object):
|
|
|
|
|
key = self.to_safe('ec2_' + self.uncammelize(key))
|
|
|
|
|
|
|
|
|
|
# Handle complex types
|
|
|
|
|
|
|
|
|
|
# Target: Memcached Cache Clusters
|
|
|
|
|
if key == 'ec2_configuration_endpoint' and value:
|
|
|
|
|
host_info['ec2_configuration_endpoint_address'] = value['Address']
|
|
|
|
|
host_info['ec2_configuration_endpoint_port'] = value['Port']
|
|
|
|
|
|
|
|
|
|
# Target: Cache Nodes and Redis Cache Clusters (single node)
|
|
|
|
|
if key == 'ec2_endpoint' and value:
|
|
|
|
|
host_info['ec2_endpoint_address'] = value['Address']
|
|
|
|
|
host_info['ec2_endpoint_port'] = value['Port']
|
|
|
|
|
|
|
|
|
|
# Target: Redis Replication Groups
|
|
|
|
|
if key == 'ec2_node_groups' and value:
|
|
|
|
|
host_info['ec2_endpoint_address'] = value[0]['PrimaryEndpoint']['Address']
|
|
|
|
|
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_id_'+ str(replica_count)] = node['CacheClusterId']
|
|
|
|
|
replica_count += 1
|
|
|
|
|
|
|
|
|
|
# Target: Redis Replication Groups
|
|
|
|
|
if key == 'ec2_member_clusters' and value:
|
|
|
|
|
host_info['ec2_member_clusters'] = ','.join([str(i) for i in value])
|
|
|
|
|
|
|
|
|
|
# Target: All Cache Clusters
|
|
|
|
|
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_parameter_group_name'] = value['CacheParameterGroupName']
|
|
|
|
|
host_info['ec2_cache_parameter_apply_status'] = value['ParameterApplyStatus']
|
|
|
|
|
|
|
|
|
|
# Target: Almost everything
|
|
|
|
|
elif key == 'ec2_security_groups':
|
|
|
|
|
sg_ids = []
|
|
|
|
|
for sg in value:
|
|
|
|
|
sg_ids.append(sg['SecurityGroupId'])
|
|
|
|
|
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]:
|
|
|
|
|
host_info[key] = value
|
|
|
|
|
|
|
|
|
|
# Target: Everything
|
|
|
|
|
# Sanitize string values
|
|
|
|
|
elif isinstance(value, six.string_types):
|
|
|
|
|
host_info[key] = value.strip()
|
|
|
|
|
|
|
|
|
|
# Target: Everything
|
|
|
|
|
# Replace None by an empty string
|
|
|
|
|
elif type(value) == type(None):
|
|
|
|
|
host_info[key] = ''
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
# Remove non-processed complex types
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
return host_info
|
|
|
|
|