Class: EbDeployer::CloudFormationProvisioner

Inherits:
Object
  • Object
show all
Defined in:
lib/eb_deployer/cloud_formation_provisioner.rb

Constant Summary collapse

SUCCESS_STATS =
[:create_complete, :update_complete, :update_rollback_complete]
FAILED_STATS =
[:create_failed, :update_failed]

Instance Method Summary collapse

Constructor Details

#initialize(stack_name, cf_driver) ⇒ CloudFormationProvisioner

Returns a new instance of CloudFormationProvisioner.



9
10
11
12
# File 'lib/eb_deployer/cloud_formation_provisioner.rb', line 9

def initialize(stack_name, cf_driver)
  @stack_name = stack_name
  @cf_driver = cf_driver
end

Instance Method Details

#output(key) ⇒ Object



30
31
32
33
34
# File 'lib/eb_deployer/cloud_formation_provisioner.rb', line 30

def output(key)
  @cf_driver.query_output(@stack_name, key)
rescue AWS::CloudFormation::Errors::ValidationError => e
  raise ResourceNotInReadyState.new("Resource stack not in ready state yet, perhaps you should provision it first?")
end

#provision(resources) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/eb_deployer/cloud_formation_provisioner.rb', line 14

def provision(resources)
  resources = symbolize_keys(resources)
  template = File.read(resources[:template])
  capabilities = resources[:capabilities] || []
  params = resources[:inputs] || resources[:parameters] || {}
  stack_exists? ? update_stack(template, params, capabilities) : create_stack(template, params, capabilities)
  wait_for_stack_op_terminate
end

#transform_outputs(resources) ⇒ Object



23
24
25
26
27
28
# File 'lib/eb_deployer/cloud_formation_provisioner.rb', line 23

def transform_outputs(resources)
  resources = symbolize_keys(resources)
  outputs = resources[:outputs] || {}
  transforms = resources[:transforms] || {}
  transform_output_to_settings(convert_to_transforms(outputs).merge(transforms))
end