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/list_stacks.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/list_stack_resources.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 = {}) ⇒ Excon::Response
Create a stack.
-
#delete_stack(stack_name) ⇒ Excon::Response
Delete a stack.
-
#describe_stack_events(stack_name, options = {}) ⇒ Excon::Response
Describe stack events.
-
#describe_stack_resources(options = {}) ⇒ Excon::Response
Describe stack resources.
-
#describe_stacks(options = {}) ⇒ Excon::Response
Describe stacks.
-
#get_template(stack_name) ⇒ Excon::Response
Describe stacks.
-
#initialize(options = {}) ⇒ Real
constructor
Initialize connection to CloudFormation.
-
#list_stack_resources(options = {}) ⇒ Excon::Response
List stack resources.
-
#list_stacks(options = {}) ⇒ Excon::Response
List stacks.
- #reload ⇒ Object
-
#update_stack(stack_name, options = {}) ⇒ Excon::Response
Update a stack.
-
#validate_template(options = {}) ⇒ Excon::Response
Describe stacks.
Methods included from Fog::AWS::CredentialFetcher::ConnectionMethods
#refresh_credentials_if_expired
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.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fog/aws/cloud_formation.rb', line 50 def initialize(={}) require 'fog/core/parser' @use_iam_profile = [:use_iam_profile] setup_credentials() @connection_options = [:connection_options] || {} [:region] ||= 'us-east-1' @host = [:host] || "cloudformation.#{[:region]}.amazonaws.com" @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 = {}) ⇒ Excon::Response
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
27 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/fog/aws/requests/cloud_formation/create_stack.rb', line 27 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 = 0 if ['Tags'] ['Tags'].keys.each_with_index do |key, index| index += 1 # tags are 1-indexed += 1 # 10 tag max params.merge!({ "Tags.member.#{index}.Key" => key, "Tags.member.#{index}.Value" => ['Tags'][key] }) end end if > 10 raise ArgumentError.new("a maximum of 10 tags can be specified <#{}>") 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) ⇒ Excon::Response
Delete a stack.
16 17 18 19 20 21 22 |
# 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 = {}) ⇒ Excon::Response
Describe stack events.
30 31 32 33 34 35 36 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_events.rb', line 30 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 = {}) ⇒ Excon::Response
Describe stack resources.
30 31 32 33 34 35 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb', line 30 def describe_stack_resources( = {}) request({ 'Action' => 'DescribeStackResources', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackResources.new }.merge!()) end |
#describe_stacks(options = {}) ⇒ Excon::Response
Describe stacks.
29 30 31 32 33 34 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stacks.rb', line 29 def describe_stacks( = {}) request({ 'Action' => 'DescribeStacks', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStacks.new }.merge!()) end |
#get_template(stack_name) ⇒ Excon::Response
Describe stacks.
18 19 20 21 22 23 24 |
# 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 |
#list_stack_resources(options = {}) ⇒ Excon::Response
List stack resources.
26 27 28 29 30 31 |
# File 'lib/fog/aws/requests/cloud_formation/list_stack_resources.rb', line 26 def list_stack_resources( = {}) request({ 'Action' => 'ListStackResources', :parser => Fog::Parsers::AWS::CloudFormation::ListStackResources.new }.merge!()) end |
#list_stacks(options = {}) ⇒ Excon::Response
List stacks.
27 28 29 30 31 32 |
# File 'lib/fog/aws/requests/cloud_formation/list_stacks.rb', line 27 def list_stacks( = {}) request({ 'Action' => 'ListStacks', :parser => Fog::Parsers::AWS::CloudFormation::ListStacks.new }.merge!()) end |
#reload ⇒ Object
66 67 68 |
# File 'lib/fog/aws/cloud_formation.rb', line 66 def reload @connection.reset end |
#update_stack(stack_name, options = {}) ⇒ Excon::Response
Update a stack.
24 25 26 27 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 |
# File 'lib/fog/aws/requests/cloud_formation/update_stack.rb', line 24 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 = {}) ⇒ Excon::Response
Describe stacks.
21 22 23 24 25 26 |
# File 'lib/fog/aws/requests/cloud_formation/validate_template.rb', line 21 def validate_template( = {}) request({ 'Action' => 'ValidateTemplate', :parser => Fog::Parsers::AWS::CloudFormation::ValidateTemplate.new }.merge!()) end |