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.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/fog/aws/cloud_formation.rb', line 48 def initialize(={}) @use_iam_profile = [:use_iam_profile] @instrumentor = [:instrumentor] @instrumentor_name = [:instrumentor_name] || 'fog.aws.cloud_formation' @connection_options = [:connection_options] || {} [:region] ||= 'us-east-1' @region = [:region] @host = [:host] || "cloudformation.#{[:region]}.amazonaws.com" @path = [:path] || '/' @persistent = [:persistent] || false @port = [:port] || 443 @scheme = [:scheme] || 'https' @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options) setup_credentials() 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
-
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 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 |
# File 'lib/fog/aws/requests/cloud_formation/create_stack.rb', line 26 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.
15 16 17 18 19 20 21 |
# File 'lib/fog/aws/requests/cloud_formation/delete_stack.rb', line 15 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.
29 30 31 32 33 34 35 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_events.rb', line 29 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.
29 30 31 32 33 34 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb', line 29 def describe_stack_resources( = {}) request({ 'Action' => 'DescribeStackResources', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackResources.new }.merge!()) end |
#describe_stacks(options = {}) ⇒ Excon::Response
Describe stacks.
28 29 30 31 32 33 |
# File 'lib/fog/aws/requests/cloud_formation/describe_stacks.rb', line 28 def describe_stacks( = {}) request({ 'Action' => 'DescribeStacks', :parser => Fog::Parsers::AWS::CloudFormation::DescribeStacks.new }.merge!()) end |
#get_template(stack_name) ⇒ Excon::Response
Describe stacks.
17 18 19 20 21 22 23 |
# File 'lib/fog/aws/requests/cloud_formation/get_template.rb', line 17 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.
25 26 27 28 29 30 |
# File 'lib/fog/aws/requests/cloud_formation/list_stack_resources.rb', line 25 def list_stack_resources( = {}) request({ 'Action' => 'ListStackResources', :parser => Fog::Parsers::AWS::CloudFormation::ListStackResources.new }.merge!()) end |
#list_stacks(options = {}) ⇒ Excon::Response
List stacks.
26 27 28 29 30 31 |
# File 'lib/fog/aws/requests/cloud_formation/list_stacks.rb', line 26 def list_stacks( = {}) request({ 'Action' => 'ListStacks', :parser => Fog::Parsers::AWS::CloudFormation::ListStacks.new }.merge!()) end |
#reload ⇒ Object
67 68 69 |
# File 'lib/fog/aws/cloud_formation.rb', line 67 def reload @connection.reset end |
#update_stack(stack_name, options = {}) ⇒ Excon::Response
Update a stack.
23 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 |
# File 'lib/fog/aws/requests/cloud_formation/update_stack.rb', line 23 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.
20 21 22 23 24 25 |
# File 'lib/fog/aws/requests/cloud_formation/validate_template.rb', line 20 def validate_template( = {}) request({ 'Action' => 'ValidateTemplate', :parser => Fog::Parsers::AWS::CloudFormation::ValidateTemplate.new }.merge!()) end |