Class: Fog::AWS::CloudFormation::Real
- Inherits:
-
Object
- Object
- Fog::AWS::CloudFormation::Real
- Defined in:
- lib/fog/aws/cloud_formation.rb,
lib/fog/aws/requests/cloud_formation/create_stack.rb,
lib/fog/aws/requests/cloud_formation/delete_stack.rb,
lib/fog/aws/requests/cloud_formation/get_template.rb,
lib/fog/aws/requests/cloud_formation/update_stack.rb,
lib/fog/aws/requests/cloud_formation/describe_stacks.rb,
lib/fog/aws/requests/cloud_formation/validate_template.rb,
lib/fog/aws/requests/cloud_formation/describe_stack_events.rb,
lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb
Instance Method Summary collapse
-
#create_stack(stack_name, options = {}) ⇒ Object
Create a stack.
-
#delete_stack(stack_name) ⇒ Object
Delete a stack.
-
#describe_stack_events(stack_name, options = {}) ⇒ Object
Describe stack events.
-
#describe_stack_resources(options = {}) ⇒ Object
Describe stack resources.
-
#describe_stacks(options = {}) ⇒ Object
Describe stacks.
-
#get_template(stack_name) ⇒ Object
Describe stacks.
-
#initialize(options = {}) ⇒ Real
constructor
Initialize connection to CloudFormation.
- #reload ⇒ Object
-
#update_stack(stack_name, options = {}) ⇒ Object
Update a stack.
-
#validate_template(options = {}) ⇒ Object
Describe stacks.
Constructor Details
#initialize(options = {}) ⇒ Real
Initialize connection to CloudFormation
Notes
options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection
Examples
cf = CloudFormation.new(
:aws_access_key_id => your_aws_access_key_id,
:aws_secret_access_key => your_aws_secret_access_key
)
Parameters
-
options<~Hash> - config arguments for connection. Defaults to {}.
Returns
-
CloudFormation object with connection to AWS.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/fog/aws/cloud_formation.rb', line 47 def initialize(={}) require 'fog/core/parser' require 'multi_json' @aws_access_key_id = [:aws_access_key_id] @aws_secret_access_key = [:aws_secret_access_key] @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key) @connection_options = [:connection_options] || {} [:region] ||= 'us-east-1' @host = [:host] || case [:region] when 'ap-northeast-1' 'cloudformation.ap-northeast-1.amazonaws.com' when 'ap-southeast-1' 'cloudformation.ap-southeast-1.amazonaws.com' when 'eu-west-1' 'cloudformation.eu-west-1.amazonaws.com' when 'us-east-1' 'cloudformation.us-east-1.amazonaws.com' when 'us-west-1' 'cloudformation.us-west-1.amazonaws.com' else raise ArgumentError, "Unknown region: #{[:region].inspect}" end @path = [:path] || '/' @persistent = [:persistent] || false @port = [:port] || 443 @scheme = [:scheme] || 'https' @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options) end |
Instance Method Details
#create_stack(stack_name, options = {}) ⇒ Object
Create a stack
Parameters
-
stack_name<~String>: name of the stack to create
-
options<~Hash>:
-
TemplateBody<~String>: structure containing the template body
or (one of the two Template parameters is required)
-
TemplateURL<~String>: URL of file containing the template body
-
DisableRollback<~Boolean>: Controls rollback on stack creation failure, defaults to false
-
NotificationARNs<~Array>: List of SNS topics to publish events to
-
Parameters<~Hash>: Hash of providers to supply to template
-
TimeoutInMinutes<~Integer>: Minutes to wait before status is set to CREATE_FAILED
-
Capabilities<~Array>: List of capabilties the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘StackId’<~String> - Id of the new stack
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/fog/aws/requests/cloud_formation/create_stack.rb', line 31 def create_stack(stack_name, = {}) params = { 'StackName' => stack_name, } if ['DisableRollback'] params['DisableRollback'] = ['DisableRollback'] end if ['NotificationARNs'] params.merge!(Fog::AWS.indexed_param("NotificationARNs.member", [*['NotificationARNs']])) end if ['Parameters'] ['Parameters'].keys.each_with_index do |key, index| index += 1 # params are 1-indexed params.merge!({ "Parameters.member.#{index}.ParameterKey" => key, "Parameters.member.#{index}.ParameterValue" => ['Parameters'][key] }) end end if ['TemplateBody'] params['TemplateBody'] = ['TemplateBody'] elsif ['TemplateURL'] params['TemplateURL'] = ['TemplateURL'] end if ['TimeoutInMinutes'] params['TimeoutInMinutes'] = ['TimeoutInMinutes'] end if ['Capabilities'] params.merge!(Fog::AWS.indexed_param("Capabilities.member", [*['Capabilities']])) end request({ 'Action' => 'CreateStack', :parser => Fog::Parsers::AWS::CloudFormation::CreateStack.new }.merge!(params)) end |
#delete_stack(stack_name) ⇒ Object
Delete a stack
Parameters
-
stack_name<~String>: name of the stack to create
Returns
-
response<~Excon::Response>:
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html
19 20 21 22 23 24 25 |
# File 'lib/fog/aws/requests/cloud_formation/delete_stack.rb', line 19 def delete_stack(stack_name) request( 'Action' => 'DeleteStack', 'StackName' => stack_name, :parser => Fog::Parsers::AWS::CloudFormation::Basic.new ) end |
#describe_stack_events(stack_name, options = {}) ⇒ Object
Describe stack events
Parameters
-
stack_name<~String>: stack name to return events for
-
options<~Hash>:
-
NextToken<~String>: identifies the start of the next list of events, if there is one
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘StackEvents’<~Array> - Matching resources
-
event<~Hash>:
-
‘EventId’<~String> -
-
‘StackId’<~String> -
-
‘StackName’<~String> -
-
‘LogicalResourceId’<~String> -
-
‘PhysicalResourceId’<~String> -
-
‘ResourceType’<~String> -
-
‘Timestamp’<~Time> -
-
‘ResourceStatus’<~String> -
-
‘ResourceStatusReason’<~String> -
-
-
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html
33 34 35 36 37 38 39 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_events.rb', line 33 def describe_stack_events(stack_name, = {}) request({ 'Action' => 'DescribeStackEvents', 'StackName' => stack_name, :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackEvents.new }.merge!()) end |
#describe_stack_resources(options = {}) ⇒ Object
Describe stack resources
Parameters
-
options<~Hash>:
-
‘PhysicalResourceId’<~String>: name or unique identifier that corresponds to a physical instance ID
or (one of PhysicalResourceId and StackName is required)
-
‘StackName’<~String>: only return events related to this stack name
-
‘LogicalResourceId’<~String>: logical name of the resource as specified in the template
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘StackResources’<~Array> - Matching resources
-
resource<~Hash>:
-
‘StackId’<~String> -
-
‘StackName’<~String> -
-
‘LogicalResourceId’<~String> -
-
‘PhysicalResourceId’<~String> -
-
‘ResourceType’<~String> -
-
‘Timestamp’<~Time> -
-
‘ResourceStatus’<~String> -
-
-
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResources.html
33 34 35 36 37 38 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb', line 33 def describe_stack_resources( = {}) request({ 'Action' => 'DescribeStackResources', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackResources.new }.merge!()) end |
#describe_stacks(options = {}) ⇒ Object
Describe stacks
Parameters
-
options<~Hash>:
-
‘StackName’<~String>: name of the stack to describe
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Stacks’<~Array> - Matching stacks
-
stack<~Hash>:
-
‘StackName’<~String> -
-
‘StackId’<~String> -
-
‘CreationTime’<~String> -
-
‘StackStatus’<~String> -
-
‘DisableRollback’<~String> -
-
‘Outputs’<~Array> -
-
output<~Hash>:
-
‘OutputKey’<~String> -
-
‘OutputValue’<~String> -
-
-
-
-
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStacks.html
32 33 34 35 36 37 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stacks.rb', line 32 def describe_stacks( = {}) request({ 'Action' => 'DescribeStacks', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStacks.new }.merge!()) end |
#get_template(stack_name) ⇒ Object
Describe stacks
Parameters
-
stack_name<~String> - stack name to get template from
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘TemplateBody’<~String> - structure containing the template body (json)
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_GetTemplate.html
21 22 23 24 25 26 27 |
# File 'lib/fog/aws/requests/cloud_formation/get_template.rb', line 21 def get_template(stack_name) request( 'Action' => 'GetTemplate', 'StackName' => stack_name, :parser => Fog::Parsers::AWS::CloudFormation::GetTemplate.new ) end |
#reload ⇒ Object
78 79 80 |
# File 'lib/fog/aws/cloud_formation.rb', line 78 def reload @connection.reset end |
#update_stack(stack_name, options = {}) ⇒ Object
Update a stack
Parameters
-
stack_name<~String>: name of the stack to update
-
options<~Hash>:
-
TemplateBody<~String>: structure containing the template body
or (one of the two Template parameters is required)
-
TemplateURL<~String>: URL of file containing the template body
-
Parameters<~Hash>: Hash of providers to supply to template
-
Capabilities<~Array>: List of capabilties the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘StackId’<~String> - Id of the stack being updated
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fog/aws/requests/cloud_formation/update_stack.rb', line 28 def update_stack(stack_name, = {}) params = { 'StackName' => stack_name, } if ['Parameters'] ['Parameters'].keys.each_with_index do |key, index| index += 1 # params are 1-indexed params.merge!({ "Parameters.member.#{index}.ParameterKey" => key, "Parameters.member.#{index}.ParameterValue" => ['Parameters'][key] }) end end if ['TemplateBody'] params['TemplateBody'] = ['TemplateBody'] elsif ['TemplateURL'] params['TemplateURL'] = ['TemplateURL'] end if ['Capabilities'] params.merge!(Fog::AWS.indexed_param("Capabilities.member", [*['Capabilities']])) end request({ 'Action' => 'UpdateStack', :parser => Fog::Parsers::AWS::CloudFormation::UpdateStack.new }.merge!(params)) end |
#validate_template(options = {}) ⇒ Object
Describe stacks
Parameters
-
options<~Hash>:
-
‘TemplateBody’<~String> - template structure
-
‘TemplateURL’<~String> - template url
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Description’<~String> - description found within the template
-
‘Parameters’<~String> - list of template parameter structures
-
-
See Also
docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_ValidateTemplate.html
24 25 26 27 28 29 |
# File 'lib/fog/aws/requests/cloud_formation/validate_template.rb', line 24 def validate_template( = {}) request({ 'Action' => 'ValidateTemplate', :parser => Fog::Parsers::AWS::CloudFormation::ValidateTemplate.new }.merge!()) end |