From 3957238fbf7c223560f1410856c4efd93d9e6417 Mon Sep 17 00:00:00 2001 From: Jim Dalton Date: Sat, 19 Oct 2013 12:29:07 -0700 Subject: [PATCH] Ensure port can be read for both memcached as well as redis --- library/cloud/elasticache | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/library/cloud/elasticache b/library/cloud/elasticache index 80516ac15f..fd39ff754c 100644 --- a/library/cloud/elasticache +++ b/library/cloud/elasticache @@ -400,7 +400,7 @@ class ElastiCacheManager(object): 'node_type': self.data['CacheNodeType'], 'engine': self.data['Engine'], 'zone': self.data['PreferredAvailabilityZone'], - 'cache_port': self.data['ConfigurationEndpoint']['Port'] + 'cache_port': self._get_port() } for key, value in unmodifiable_data.iteritems(): if getattr(self, key) != value: @@ -418,6 +418,15 @@ class ElastiCacheManager(object): except boto.exception.NoAuthHandlerFound, e: self.module.fail_json(msg=e.message) + def _get_port(self): + """Get the port. Where this information is retrieved from is engine dependent.""" + if self.data['Engine'] == 'memcached': + return self.data['ConfigurationEndpoint']['Port'] + elif self.data['Engine'] == 'redis': + # Redis only supports a single node (presently) so just use + # the first and only + return self.data['CacheNodes'][0]['Endpoint']['Port'] + def _refresh_data(self, cache_cluster_data=None): """Refresh data about this cache cluster""" if cache_cluster_data is None: