From c544d851b88d5498ac79e9191e887041e6665d28 Mon Sep 17 00:00:00 2001 From: Benton Roberts Date: Wed, 21 Sep 2011 20:30:10 -0400 Subject: [PATCH] [aws|elasticache] add pending_values to modified nodes --- .../elasticache/cache_cluster_parser.rb | 20 +++++++++++++++++-- .../elasticache/cache_cluster_tests.rb | 5 +---- tests/aws/requests/elasticache/helper.rb | 1 + 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb b/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb index 40fa1f4ba2..5c6b86cab1 100644 --- a/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb +++ b/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb @@ -24,6 +24,7 @@ def start_element(name, attrs = []) case name when 'CacheSecurityGroup'; then @security_group = {} when 'CacheNode'; then @cache_node = {} + when 'PendingModifiedValues'; then @pending_values = {} end end @@ -31,11 +32,21 @@ def start_element(name, attrs = []) def end_element(name) case name when 'AutoMinorVersionUpgrade', 'CacheClusterId', - 'CacheClusterStatus', 'CacheNodeType', 'Engine', 'EngineVersion', + 'CacheClusterStatus', 'CacheNodeType', 'Engine', 'PreferredAvailabilityZone', 'PreferredMaintenanceWindow' @cache_cluster[name] = value + when 'EngineVersion', 'CacheNodeIdsToRemoves' + if @pending_values + @pending_values[name] = value ? value.strip : name + else + @cache_cluster[name] = value + end when 'NumCacheNodes' - @cache_cluster[name] = value.to_i + if @pending_values + @pending_values[name] = value.to_i + else + @cache_cluster[name] = value.to_i + end when 'CacheClusterCreateTime' @cache_cluster[name] = DateTime.parse(value) when 'CacheSecurityGroup' @@ -45,10 +56,15 @@ def end_element(name) when 'CacheNode' @cache_cluster["#{name}s"] << @cache_node unless @cache_node.empty? @cache_node = nil + when'PendingModifiedValues' + @cache_cluster[name] = @pending_values + @pending_values = nil when 'CacheNodeCreateTime', 'CacheNodeStatus', 'Address', 'ParameterGroupStatus', 'Port', 'CacheNodeId' if @cache_node @cache_node[name] = value ? value.strip : name + elsif @pending_values + @pending_values[name] = value ? value.strip : name end when 'CacheNodeIdsToReboots', 'CacheParameterGroupName', 'ParameterApplyStatus' @cache_cluster['CacheParameterGroup'][name] = value diff --git a/tests/aws/requests/elasticache/cache_cluster_tests.rb b/tests/aws/requests/elasticache/cache_cluster_tests.rb index 95f295cfd7..3b6316c801 100644 --- a/tests/aws/requests/elasticache/cache_cluster_tests.rb +++ b/tests/aws/requests/elasticache/cache_cluster_tests.rb @@ -85,11 +85,8 @@ :nodes_to_remove => node_id, :apply_immediately => true, }).body - Formatador.display_line "Waiting for cluster #{CLUSTER_ID}..." - AWS[:elasticache].clusters.get(CLUSTER_ID).wait_for {ready?} c.reload - node = c.nodes.find {|n| n['CacheNodeId'] == node_id} - #returns('deleting') { node['CacheNodeStatus'] } + returns(NUM_NODES - 1) { c.pending_values['NumCacheNodes'] } body['CacheCluster'] end diff --git a/tests/aws/requests/elasticache/helper.rb b/tests/aws/requests/elasticache/helper.rb index 4b386c7714..103384476e 100644 --- a/tests/aws/requests/elasticache/helper.rb +++ b/tests/aws/requests/elasticache/helper.rb @@ -29,6 +29,7 @@ module Formats 'NumCacheNodes' => Integer, 'PreferredMaintenanceWindow' => String, 'CacheNodes' => Array, + 'PendingModifiedValues' => Hash, } CACHE_CLUSTER_RUNNING = CACHE_CLUSTER.merge({ 'CacheClusterCreateTime' => DateTime,