Merge pull request #1481 from boardnutz/master

Added describe_reserved_cache_clusters to Elasticache
This commit is contained in:
Wesley Beary 2013-01-17 14:31:53 -08:00
commit 578c4241b6
5 changed files with 116 additions and 1 deletions

View File

@ -24,6 +24,7 @@ module Fog
request :reset_cache_parameter_group
request :describe_engine_default_parameters
request :describe_cache_parameters
request :describe_reserved_cache_nodes
request :create_cache_security_group
request :delete_cache_security_group
@ -87,7 +88,8 @@ module Fog
:host => @host,
:path => @path,
:port => @port,
:version => '2011-07-15'
#:version => '2011-07-15'
:version => '2012-11-15'
}
)

View File

@ -0,0 +1,37 @@
module Fog
module Parsers
module AWS
module Elasticache
class DescribeReservedCacheNodes < Fog::Parsers::Base
def reset
@reserved_node = {}
@response = { 'ReservedCacheNodes' => [] }
end
def end_element(name)
case name
when 'ReservedCacheNodeId', 'ReservedCacheNodesOfferingId', 'CacheNodeType', 'ProductDescription', 'State'
@reserved_node[name] = @value
when 'Duration', 'CacheNodeCount'
@reserved_node[name] = @value.to_i
when 'FixedPrice', 'UsagePrice'
@reserved_node[name] = @value.to_f
when 'ReservedCacheNode'
@response['ReservedCacheNodes'] << @reserved_node
@reserved_node = {}
when 'Marker'
@response[name] = @value
when 'StartTime'
@reserved_node[name] = Time.parse(@value)
end
end
end
end
end
end
end

View File

@ -0,0 +1,42 @@
module Fog
module AWS
class Elasticache
class Real
require 'fog/aws/parsers/elasticache/describe_reserved_cache_nodes'
# Describe all or specified reserved Elasticache nodes
# http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReservedCacheNodes.html
# ==== Parameters
# * ReservedCacheNodeId <~String> - ID of node to retrieve information for. If absent, information for all nodes is returned.
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
def describe_reserved_cache_nodes(identifier=nil, opts={})
params = {}
params['ReservedCacheNodeId'] = identifier if identifier
if opts[:marker]
params['Marker'] = opts[:marker]
end
if opts[:max_records]
params['MaxRecords'] = opts[:max_records]
end
request({
'Action' => 'DescribeReservedCacheNodes',
:parser => Fog::Parsers::AWS::Elasticache::DescribeReservedCacheNodes.new
}.merge(params))
end
end
class Mock
def describe_db_reserved_instances(identifier=nil, opts={})
Fog::Mock.not_implemented
end
end
end
end
end

View File

@ -0,0 +1,17 @@
Shindo.tests('AWS::Elasticache | describe reserved cache nodes',
['aws', 'elasticache']) do
tests('success') do
pending if Fog.mocking?
tests(
'#describe_reserved_cache_nodes'
).formats(AWS::Elasticache::Formats::RESERVED_CACHE_NODES) do
AWS[:elasticache].describe_reserved_cache_nodes().body['ReservedCacheNodes']
end
end
tests('failure') do
# TODO:
end
end

View File

@ -63,6 +63,23 @@ class AWS
'SourceType' => String,
}
EVENT_LIST = [EVENT]
RESERVED_CACHE_CLUSTER = {
'CacheNodeCount' => Integer,
'CacheNodeType' => String,
'Duration' => Integer,
'FixedPrice' => Float,
'OfferingType' => String,
'ProductDescription' => String,
'RecurringCharges' => Array,
'ReservedCacheNodeId' => String,
'ReservedCacheNodesOfferingId' => String,
'StartTime' => DateTime,
'State' => String,
'UsagePrice' => Float
}
RESERVED_CACHE_CLUSTER_LIST = [RESERVED_CACHE_CLUSTER]
end
end
end