From 50622b4e6a4792de410787fd9374f141298e9322 Mon Sep 17 00:00:00 2001 From: Arnaud Lachaume Date: Sun, 28 Feb 2016 20:04:56 +1100 Subject: [PATCH] fix aws elasticache idempotency --- .../modules/cloud/amazon/elasticache.py | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/ansible/modules/cloud/amazon/elasticache.py b/lib/ansible/modules/cloud/amazon/elasticache.py index 579091e6407..41177ac0f8e 100644 --- a/lib/ansible/modules/cloud/amazon/elasticache.py +++ b/lib/ansible/modules/cloud/amazon/elasticache.py @@ -231,8 +231,8 @@ class ElastiCacheManager(object): port=self.cache_port) except boto.exception.BotoServerError, e: self.module.fail_json(msg=e.message) - cache_cluster_data = response['CreateCacheClusterResponse']['CreateCacheClusterResult']['CacheCluster'] - self._refresh_data(cache_cluster_data) + + self._refresh_data() self.changed = True if self.wait: @@ -308,8 +308,7 @@ class ElastiCacheManager(object): except boto.exception.BotoServerError, e: self.module.fail_json(msg=e.message) - cache_cluster_data = response['ModifyCacheClusterResponse']['ModifyCacheClusterResult']['CacheCluster'] - self._refresh_data(cache_cluster_data) + self._refresh_data() self.changed = True if self.wait: @@ -337,8 +336,7 @@ class ElastiCacheManager(object): except boto.exception.BotoServerError, e: self.module.fail_json(msg=e.message) - cache_cluster_data = response['RebootCacheClusterResponse']['RebootCacheClusterResult']['CacheCluster'] - self._refresh_data(cache_cluster_data) + self._refresh_data() self.changed = True if self.wait: @@ -388,23 +386,23 @@ class ElastiCacheManager(object): 'EngineVersion': self.cache_engine_version } for key, value in modifiable_data.iteritems(): - if self.data[key] != value: + if value is not None and self.data[key] != value: return True # Check cache security groups cache_security_groups = [] for sg in self.data['CacheSecurityGroups']: cache_security_groups.append(sg['CacheSecurityGroupName']) - if set(cache_security_groups) - set(self.cache_security_groups): - return True + if set(cache_security_groups) != set(self.cache_security_groups): + return True # check vpc security groups vpc_security_groups = [] security_groups = self.data['SecurityGroups'] or [] for sg in security_groups: vpc_security_groups.append(sg['SecurityGroupId']) - if set(vpc_security_groups) - set(self.security_group_ids): - return True + if set(vpc_security_groups) != set(self.security_group_ids): + return True return False @@ -421,7 +419,7 @@ class ElastiCacheManager(object): if self.zone is not None: unmodifiable_data['zone'] = self.data['PreferredAvailabilityZone'] for key, value in unmodifiable_data.iteritems(): - if getattr(self, key) != value: + if getattr(self, key) is not None and getattr(self, key) != value: return True return False