mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Adding support for AWS CloudFormation list_stacks and list_stack_resources API calls
This commit is contained in:
parent
07c4d64195
commit
35b25fd4fa
6 changed files with 151 additions and 0 deletions
|
@ -17,6 +17,8 @@ module Fog
|
||||||
request :describe_stacks
|
request :describe_stacks
|
||||||
request :get_template
|
request :get_template
|
||||||
request :validate_template
|
request :validate_template
|
||||||
|
request :list_stacks
|
||||||
|
request :list_stack_resources
|
||||||
|
|
||||||
class Mock
|
class Mock
|
||||||
|
|
||||||
|
|
32
lib/fog/aws/parsers/cloud_formation/list_stack_resources.rb
Normal file
32
lib/fog/aws/parsers/cloud_formation/list_stack_resources.rb
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
module Fog
|
||||||
|
module Parsers
|
||||||
|
module AWS
|
||||||
|
module CloudFormation
|
||||||
|
|
||||||
|
class ListStackResources < Fog::Parsers::Base
|
||||||
|
|
||||||
|
def reset
|
||||||
|
@resource = {}
|
||||||
|
@response = { 'StackResourceSummaries' => [] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def end_element(name)
|
||||||
|
case name
|
||||||
|
when 'ResourceStatus', 'LogicalResourceId', 'PhysicalResourceId', 'ResourceType'
|
||||||
|
@resource[name] = value
|
||||||
|
when 'member'
|
||||||
|
@response['StackResourceSummaries'] << @resource
|
||||||
|
@resource = {}
|
||||||
|
when 'LastUpdatedTimestamp'
|
||||||
|
@resource[name] = Time.parse(value)
|
||||||
|
when 'RequestId'
|
||||||
|
@response[name] = value
|
||||||
|
when 'NextToken'
|
||||||
|
@response[name] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
34
lib/fog/aws/parsers/cloud_formation/list_stacks.rb
Normal file
34
lib/fog/aws/parsers/cloud_formation/list_stacks.rb
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
module Fog
|
||||||
|
module Parsers
|
||||||
|
module AWS
|
||||||
|
module CloudFormation
|
||||||
|
|
||||||
|
class ListStacks < Fog::Parsers::Base
|
||||||
|
|
||||||
|
def reset
|
||||||
|
@stack = {}
|
||||||
|
@response = { 'StackSummaries' => [] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def end_element(name)
|
||||||
|
case name
|
||||||
|
when 'StackId', 'StackStatus', 'StackName', 'TemplateDescription'
|
||||||
|
@stack[name] = value
|
||||||
|
when 'member'
|
||||||
|
@response['StackSummaries'] << @stack
|
||||||
|
@stack = {}
|
||||||
|
when 'RequestId'
|
||||||
|
@response[name] = value
|
||||||
|
when 'CreationTime'
|
||||||
|
@stack[name] = Time.parse(value)
|
||||||
|
when 'DeletionTime'
|
||||||
|
@stack[name] = Time.parse(value)
|
||||||
|
when 'NextToken'
|
||||||
|
@response[name] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
36
lib/fog/aws/requests/cloud_formation/list_stack_resources.rb
Normal file
36
lib/fog/aws/requests/cloud_formation/list_stack_resources.rb
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
module Fog
|
||||||
|
module AWS
|
||||||
|
class CloudFormation
|
||||||
|
class Real
|
||||||
|
|
||||||
|
require 'fog/aws/parsers/cloud_formation/list_stack_resources'
|
||||||
|
|
||||||
|
# List stack resources.
|
||||||
|
#
|
||||||
|
# @param options [Hash]
|
||||||
|
# @option options StackName [String] Name of the stack to describe.
|
||||||
|
#
|
||||||
|
# @return [Excon::Response]
|
||||||
|
# * body [Hash]:
|
||||||
|
# * StackResourceSummaries [Array] - Matching stacks
|
||||||
|
# * resources [Hash]:
|
||||||
|
# * ResourceStatus [String] -
|
||||||
|
# * LogicalResourceId [String] -
|
||||||
|
# * PhysicalResourceId [String] -
|
||||||
|
# * ResourceType [String] -
|
||||||
|
# * LastUpdatedTimestamp [Time] -
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# @see http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStacks.html
|
||||||
|
|
||||||
|
def list_stack_resources(options = {})
|
||||||
|
request({
|
||||||
|
'Action' => 'ListStackResources',
|
||||||
|
:parser => Fog::Parsers::AWS::CloudFormation::ListStackResources.new
|
||||||
|
}.merge!(options))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
37
lib/fog/aws/requests/cloud_formation/list_stacks.rb
Normal file
37
lib/fog/aws/requests/cloud_formation/list_stacks.rb
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
module Fog
|
||||||
|
module AWS
|
||||||
|
class CloudFormation
|
||||||
|
class Real
|
||||||
|
|
||||||
|
require 'fog/aws/parsers/cloud_formation/list_stacks'
|
||||||
|
|
||||||
|
# List stacks.
|
||||||
|
#
|
||||||
|
# @param options [Hash]
|
||||||
|
#
|
||||||
|
# @return [Excon::Response]
|
||||||
|
# * body [Hash]:
|
||||||
|
# * StackSummaries [Array] - Matching stacks
|
||||||
|
# * stack [Hash]:
|
||||||
|
# * StackId [String] -
|
||||||
|
# * StackName [String] -
|
||||||
|
# * TemplateDescription [String] -
|
||||||
|
# * CreationTime [Time] -
|
||||||
|
# * DeletionTime [Time] -
|
||||||
|
# * StackStatus [String] -
|
||||||
|
# * DeletionTime [String] -
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# @see http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStacks.html
|
||||||
|
|
||||||
|
def list_stacks(options = {})
|
||||||
|
request({
|
||||||
|
'Action' => 'ListStacks',
|
||||||
|
:parser => Fog::Parsers::AWS::CloudFormation::ListStacks.new
|
||||||
|
}.merge!(options))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -144,6 +144,16 @@ Shindo.tests('AWS::CloudFormation | stack requests', ['aws', 'cloudformation'])
|
||||||
Fog::AWS[:cloud_formation].delete_stack(@stack_name)
|
Fog::AWS[:cloud_formation].delete_stack(@stack_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
tests("list_stacks").succeeds do
|
||||||
|
pending if Fog.mocking?
|
||||||
|
Fog::AWS[:cloud_formation].list_stacks.body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("list_stack_resources").succeeds do
|
||||||
|
pending if Fog.mocking?
|
||||||
|
Fog::AWS[:cloud_formation].list_stack_resources("StackName"=>@stack_name).body
|
||||||
|
end
|
||||||
|
|
||||||
unless Fog.mocking?
|
unless Fog.mocking?
|
||||||
@keypair.destroy
|
@keypair.destroy
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue