Parent

Class/Module Index [+]

Quicksearch

Fog::AWS::CloudFormation::Real

Public Class Methods

new(options={}) click to toggle source

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

# File lib/fog/aws/cloud_formation.rb, line 48
def initialize(options={})
  require 'fog/core/parser'

  @use_iam_profile = options[:use_iam_profile]
  setup_credentials(options)

  @connection_options = options[:connection_options] || {}
  options[:region] ||= 'us-east-1'
  @host = options[:host] || "cloudformation.#{options[:region]}.amazonaws.com"
  @path       = options[:path]        || '/'
  @persistent = options[:persistent]  || false
  @port       = options[:port]        || 443
  @scheme     = options[:scheme]      || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
end

Public Instance Methods

create_stack(stack_name, options = {}) click to toggle source

Create a stack.

  • 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

@return [Excon::Response]:

* body [Hash:
  * StackId [String] - Id of the new stack

@see docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html

# File lib/fog/aws/requests/cloud_formation/create_stack.rb, line 27
def create_stack(stack_name, options = {})
  params = {
    'StackName' => stack_name,
  }

  if options['DisableRollback']
    params['DisableRollback'] = options['DisableRollback']
  end

  if options['NotificationARNs']
    params.merge!(Fog::AWS.indexed_param("NotificationARNs.member", [*options['NotificationARNs']]))
  end

  if options['Parameters']
    options['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" => options['Parameters'][key]
      })
    end
  end

  num_tags = 0
  if options['Tags']
    options['Tags'].keys.each_with_index do |key, index|
      index += 1 # tags are 1-indexed
      num_tags += 1 # 10 tag max

      params.merge!({
        "Tags.member.#{index}.Key"   => key,
        "Tags.member.#{index}.Value" => options['Tags'][key]
      })
    end
  end

  if num_tags > 10
    raise ArgumentError.new("a maximum of 10 tags can be specified <#{num_tags}>")
  end

  if options['TemplateBody']
    params['TemplateBody'] = options['TemplateBody']
  elsif options['TemplateURL']
    params['TemplateURL'] = options['TemplateURL']
  end

  if options['TimeoutInMinutes']
    params['TimeoutInMinutes'] = options['TimeoutInMinutes']
  end
  
  if options['Capabilities']
    params.merge!(Fog::AWS.indexed_param("Capabilities.member", [*options['Capabilities']]))
  end

  request({
    'Action'    => 'CreateStack',
    :parser     => Fog::Parsers::AWS::CloudFormation::CreateStack.new
  }.merge!(params))
end
delete_stack(stack_name) click to toggle source

Delete a stack.

@param stack_name String] Name of the stack to create.

@return [Excon::Response]

@see docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html

# File lib/fog/aws/requests/cloud_formation/delete_stack.rb, line 16
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 = {}) click to toggle source

Describe stack events.

@param stack_name [String] stack name to return events for. @param options [Hash] @option options NextToken [String] Identifies the start of the next list of events, if there is one.

@return [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 docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html

# File lib/fog/aws/requests/cloud_formation/describe_stack_events.rb, line 30
def describe_stack_events(stack_name, options = {})
  request({
    'Action'    => 'DescribeStackEvents',
    'StackName' => stack_name,
    :parser     => Fog::Parsers::AWS::CloudFormation::DescribeStackEvents.new
  }.merge!(options))
end
describe_stack_resources(options = {}) click to toggle source

Describe stack resources.

@param 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

@return [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 docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResources.html

# File lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb, line 30
def describe_stack_resources(options = {})
  request({
    'Action'    => 'DescribeStackResources',
    :parser     => Fog::Parsers::AWS::CloudFormation::DescribeStackResources.new
  }.merge!(options))
end
describe_stacks(options = {}) click to toggle source

Describe stacks.

@param options [Hash] @option options StackName [String] Name of the stack to describe.

@return [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 docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStacks.html

# File lib/fog/aws/requests/cloud_formation/describe_stacks.rb, line 29
def describe_stacks(options = {})
  request({
    'Action'    => 'DescribeStacks',
    :parser     => Fog::Parsers::AWS::CloudFormation::DescribeStacks.new
  }.merge!(options))
end
get_template(stack_name) click to toggle source

Describe stacks.

@param stack_name [String] stack name to get template from

@return [Excon::Response]

* body [Hash]:
  * TemplateBody [String] - structure containing the template body (json)

@see docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_GetTemplate.html

# File lib/fog/aws/requests/cloud_formation/get_template.rb, line 18
def get_template(stack_name)
  request(
    'Action'    => 'GetTemplate',
    'StackName' => stack_name,
    :parser     => Fog::Parsers::AWS::CloudFormation::GetTemplate.new
  )
end
reload() click to toggle source
# File lib/fog/aws/cloud_formation.rb, line 64
def reload
  @connection.reset
end
update_stack(stack_name, options = {}) click to toggle source

Update a stack.

@param [String] stack_name Name of the stack to update. @param [Hash] options

* 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.

@return [Excon::Response]

* body [Hash]:
  * StackId [String] - Id of the stack being updated

@see docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html

# File lib/fog/aws/requests/cloud_formation/update_stack.rb, line 24
def update_stack(stack_name, options = {})
  params = {
    'StackName' => stack_name,
  }

  if options['Parameters']
    options['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" => options['Parameters'][key]
      })
    end
  end

  if options['TemplateBody']
    params['TemplateBody'] = options['TemplateBody']
  elsif options['TemplateURL']
    params['TemplateURL'] = options['TemplateURL']
  end

  if options['Capabilities']
    params.merge!(Fog::AWS.indexed_param("Capabilities.member", [*options['Capabilities']]))
  end

  request({
    'Action'    => 'UpdateStack',
    :parser     => Fog::Parsers::AWS::CloudFormation::UpdateStack.new
  }.merge!(params))
end
validate_template(options = {}) click to toggle source

Describe stacks.

@param [Hash] options @option options [String] TemplateBody template structure @option options [String] TemplateURL template url

@return [Excon::Response]

* body [Hash]:
  * Description [String] - description found within the template
  * Parameters [String] - list of template parameter structures

@see docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_ValidateTemplate.html

# File lib/fog/aws/requests/cloud_formation/validate_template.rb, line 21
def validate_template(options = {})
  request({
    'Action'    => 'ValidateTemplate',
    :parser     => Fog::Parsers::AWS::CloudFormation::ValidateTemplate.new
  }.merge!(options))
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.