diff options
author | rubal033 <rubal033@yahoo.com> | 2018-05-31 20:54:37 +0200 |
---|---|---|
committer | Ryan Brown <sb@ryansb.com> | 2018-05-31 20:54:37 +0200 |
commit | 61c6f4fda1b52fe6b775d0094831a55f37bb7d80 (patch) | |
tree | bd39cef4b11704bbf4b6835da2a250a52bca7526 /contrib | |
parent | Terraform: Pass module targets to terraform plan as well as apply (#40958) (diff) | |
download | ansible-61c6f4fda1b52fe6b775d0094831a55f37bb7d80.tar.xz ansible-61c6f4fda1b52fe6b775d0094831a55f37bb7d80.zip |
Fixes #40661 fixed elasticache inventory node limit issue. (#40674)
* fixed elasticache inventory node limit issue
* fixed elasticache inventory node limit issue, sanity fixes
* fixed elasticache inventory node limit issue, sanity fixes
* fixed elasticache inventory node limit issue, spelling corrections
* fixed elasticache inventory node limit issue, removed blank lines
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/inventory/ec2.py | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py index 964b5be164..479bdf1e4e 100755 --- a/contrib/inventory/ec2.py +++ b/contrib/inventory/ec2.py @@ -782,13 +782,26 @@ class Ec2Inventory(object): # ElastiCache boto module doesn't provide a get_all_instances method, # that's why we need to call describe directly (it would be called by # the shorthand method anyway...) + clusters = [] try: conn = self.connect_to_aws(elasticache, region) if conn: # show_cache_node_info = True # because we also want nodes' information - response = conn.describe_cache_clusters(None, None, None, True) - + _marker = 1 + while _marker: + if _marker == 1: + _marker = None + response = conn.describe_cache_clusters(None, None, _marker, True) + _marker = response['DescribeCacheClustersResponse']['DescribeCacheClustersResult']['Marker'] + try: + # Boto also doesn't provide wrapper classes to CacheClusters or + # CacheNodes. Because of that we can't make use of the get_list + # method in the AWSQueryConnection. Let's do the work manually + clusters = clusters + response['DescribeCacheClustersResponse']['DescribeCacheClustersResult']['CacheClusters'] + except KeyError as e: + error = "ElastiCache query to AWS failed (unexpected format)." + self.fail_with_error(error, 'getting ElastiCache clusters') except boto.exception.BotoServerError as e: error = e.reason @@ -802,16 +815,6 @@ class Ec2Inventory(object): error = "Looks like AWS ElastiCache is down:\n%s" % e.message self.fail_with_error(error, 'getting ElastiCache clusters') - try: - # Boto also doesn't provide wrapper classes to CacheClusters or - # CacheNodes. Because of that we can't make use of the get_list - # method in the AWSQueryConnection. Let's do the work manually - clusters = response['DescribeCacheClustersResponse']['DescribeCacheClustersResult']['CacheClusters'] - - except KeyError as e: - error = "ElastiCache query to AWS failed (unexpected format)." - self.fail_with_error(error, 'getting ElastiCache clusters') - for cluster in clusters: self.add_elasticache_cluster(cluster, region) |