mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[aws|elasticache] implement RebootCacheCluster
This commit is contained in:
parent
c544d851b8
commit
bb21207fa8
3 changed files with 61 additions and 1 deletions
|
@ -14,7 +14,7 @@ module Fog
|
|||
request :delete_cache_cluster
|
||||
request :describe_cache_clusters
|
||||
request :modify_cache_cluster
|
||||
#request :reboot_cache_cluster
|
||||
request :reboot_cache_cluster
|
||||
|
||||
#request :create_cache_parameter_group
|
||||
#request :delete_cache_parameter_group
|
||||
|
|
44
lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb
Normal file
44
lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb
Normal file
|
@ -0,0 +1,44 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class Elasticache
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/elasticache/single_cache_cluster'
|
||||
|
||||
# Reboots some or all of an existing cache cluster's nodes
|
||||
# Returns a cache cluster description
|
||||
#
|
||||
# === Required Parameters
|
||||
# * id <~String> - The ID of the existing cluster to be rebooted
|
||||
# === Optional Parameters
|
||||
# * nodes_to_reboot <~Array> - Array of node IDs to reboot
|
||||
# === Returns
|
||||
# * response <~Excon::Response>:
|
||||
# * body <~Hash>
|
||||
def reboot_cache_cluster(id, nodes_to_reboot)
|
||||
# Construct CacheNodeIdsToReboot parameters in the format:
|
||||
# CacheNodeIdsToReboot.member.N => "node_id"
|
||||
node_ids = nodes_to_reboot || []
|
||||
node_id_params = node_ids.inject({}) do |node_hash, node_id|
|
||||
index = node_ids.index(node_id) + 1
|
||||
node_hash["CacheNodeIdsToReboot.member.#{index}"] = node_id
|
||||
node_hash
|
||||
end
|
||||
# Merge the CacheNodeIdsToReboot parameters with the normal options
|
||||
request(node_id_params.merge(
|
||||
'Action' => 'RebootCacheCluster',
|
||||
'CacheClusterId' => id,
|
||||
:parser => Fog::Parsers::AWS::Elasticache::SingleCacheCluster.new
|
||||
))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
def reboot_cache_cluster
|
||||
Fog::Mock.not_implemented
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -73,6 +73,22 @@ Shindo.tests('AWS::Elasticache | cache cluster requests', ['aws', 'elasticache']
|
|||
body['CacheCluster']
|
||||
end
|
||||
|
||||
tests(
|
||||
'#reboot_cache_cluster - reboot a node'
|
||||
).formats(AWS::Elasticache::Formats::CACHE_CLUSTER_RUNNING) do
|
||||
c = AWS[:elasticache].clusters.get(CLUSTER_ID)
|
||||
node_id = c.nodes.last['CacheNodeId']
|
||||
Formatador.display_line "Rebooting node #{node_id}..."
|
||||
body = AWS[:elasticache].reboot_cache_cluster(c.id, [ node_id ]).body
|
||||
returns('rebooting cache cluster nodes') do
|
||||
body['CacheCluster']['CacheClusterStatus']
|
||||
end
|
||||
body['CacheCluster']
|
||||
end
|
||||
|
||||
Formatador.display_line "Waiting for cluster #{CLUSTER_ID}..."
|
||||
AWS[:elasticache].clusters.get(CLUSTER_ID).wait_for {ready?}
|
||||
|
||||
tests(
|
||||
'#modify_cache_cluster - remove a node'
|
||||
).formats(AWS::Elasticache::Formats::CACHE_CLUSTER_RUNNING) do
|
||||
|
|
Loading…
Reference in a new issue