autostacker24 1.0.14 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/autostacker24/stacker.rb +16 -14
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3161e39064025693f122bd4d716d9e3bdb01fed3
4
- data.tar.gz: 9986697604f698c6f22fa338b195984cda2d6ece
3
+ metadata.gz: 40dc0a732bdb09dd60231d5eaa1b0f0514205b2b
4
+ data.tar.gz: 4a2a006c5b28fd818b299695a197070513081d44
5
5
  SHA512:
6
- metadata.gz: a806aff986dddedd3e53d94a5246069672d37355b494b452a6162110b2d95c9c624e0ca2429c6d97fdf6626a28e172f25adbf07ff6856939702eabedfcdd595d
7
- data.tar.gz: 6ad8608d03e7e405702a6fe3362433d87d81aaec496552b241128eb75f601f1a8f6f6bf49900f6f5dad75c37340aa8989b5578f94dd4bd987077f82e16bbe58b
6
+ metadata.gz: b025a2e4ac47f0b19b514c7b765e6b72bfa43372def9e0278253f6cb7ceb68168251d8a89a9b105b19baf0bb4e95813d038eeff65449ddbd5a5d6e8e79978d8b
7
+ data.tar.gz: ba2938c9022c9120ae6e22f4fc2c41445422c15092ca0e5163dfb864a8c681081be759e7263c5480c6bc7f132aedc67fbe3a4a6fdae0c63f6c85146dab7d2582
@@ -1,9 +1,9 @@
1
- require 'aws-sdk'
1
+ require 'aws-sdk-core'
2
2
  require 'json'
3
3
 
4
4
  module Stacker
5
5
 
6
- def self.create_or_update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
6
+ def create_or_update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
7
7
  if find_stack(stack_name).nil?
8
8
  create_stack(stack_name, template_body, parameters, parent_stack_name)
9
9
  else
@@ -11,7 +11,7 @@ module Stacker
11
11
  end
12
12
  end
13
13
 
14
- def self.create_stack(stack_name, template_body, parameters, parent_stack_name = nil)
14
+ def create_stack(stack_name, template_body, parameters, parent_stack_name = nil)
15
15
  merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
16
16
  cloud_formation.create_stack(stack_name: stack_name,
17
17
  template_body: template_body,
@@ -21,7 +21,7 @@ module Stacker
21
21
  wait_for_stack(stack_name, :create)
22
22
  end
23
23
 
24
- def self.update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
24
+ def update_stack(stack_name, template_body, parameters, parent_stack_name = nil)
25
25
  merge_output_parameters(parent_stack_name, template_body, parameters) if parent_stack_name
26
26
  begin
27
27
  cloud_formation.update_stack(stack_name: stack_name,
@@ -36,7 +36,7 @@ module Stacker
36
36
  end
37
37
  end
38
38
 
39
- def self.merge_output_parameters(stack_name, template_body, parameters)
39
+ def merge_output_parameters(stack_name, template_body, parameters)
40
40
  expected_parameters = JSON(template_body)['Parameters']
41
41
  get_stack_outputs(stack_name).each do |k, v|
42
42
  parameters[k.to_sym] = v if expected_parameters.has_key?(k.to_s)
@@ -44,12 +44,12 @@ module Stacker
44
44
  parameters
45
45
  end
46
46
 
47
- def self.delete_stack(stack_name)
47
+ def delete_stack(stack_name)
48
48
  cloud_formation.delete_stack(stack_name: stack_name)
49
49
  wait_for_stack(stack_name, :delete)
50
50
  end
51
51
 
52
- def self.wait_for_stack(stack_name, operation, timeout_in_minutes = 15)
52
+ def wait_for_stack(stack_name, operation, timeout_in_minutes = 15)
53
53
  stop_time = Time.now + timeout_in_minutes * 60
54
54
  finished = /(CREATE_COMPLETE|UPDATE_COMPLETE|DELETE_COMPLETE|ROLLBACK_COMPLETE|ROLLBACK_FAILED|CREATE_FAILED|DELETE_FAILED)$/
55
55
  while Time.now < stop_time
@@ -68,40 +68,42 @@ module Stacker
68
68
  fail "waiting for stack timeout after #{timeout_in_minutes} minutes"
69
69
  end
70
70
 
71
- def self.find_stack(stack_name)
71
+ def find_stack(stack_name)
72
72
  cloud_formation.describe_stacks(stack_name: stack_name).stacks.first
73
73
  rescue Aws::CloudFormation::Errors::ValidationError => error
74
74
  raise error unless error.message =~ /does not exist/i # may be flaky, do more research in API
75
75
  nil
76
76
  end
77
77
 
78
- def self.estimate_template_cost(template_body, parameters)
78
+ def estimate_template_cost(template_body, parameters)
79
79
  cloud_formation.estimate_template_cost(:template_body => template_body, :parameters => transform_parameters(parameters))
80
80
  end
81
81
 
82
- def self.get_stack_outputs(stack_name)
82
+ def get_stack_outputs(stack_name)
83
83
  stack = find_stack(stack_name)
84
84
  fail "stack #{stack_name} not found" unless stack
85
85
  transform_outputs(stack.outputs).freeze
86
86
  end
87
87
 
88
- def self.transform_outputs(outputs)
88
+ def transform_outputs(outputs)
89
89
  outputs.inject({}) { |m, o| m.merge(o.output_key.to_sym => o.output_value) }
90
90
  end
91
91
 
92
- def self.transform_parameters(parameters)
92
+ def transform_parameters(parameters)
93
93
  parameters.inject([]) { |m, kv| m << {parameter_key: kv[0].to_s, parameter_value: kv[1].to_s} }
94
94
  end
95
95
 
96
- def self.get_stack_resources(stack_name)
96
+ def get_stack_resources(stack_name)
97
97
  resources = cloud_formation.describe_stack_resources(stack_name: stack_name).data.stack_resources
98
98
  resources.inject({}){|map, resource| map.merge(resource.logical_resource_id.to_sym => resource)}.freeze
99
99
  end
100
100
 
101
- def self.cloud_formation # lazy CloudFormation client
101
+ def cloud_formation # lazy CloudFormation client
102
102
  @lazy_cloud_formation ||= Aws::CloudFormation::Client.new(region: ENV['AWS_DEFAULT_REGION'] || 'eu-west-1')
103
103
  end
104
104
 
105
+ extend self
106
+
105
107
  end
106
108
 
107
109
  if $0 ==__FILE__ # placeholder for interactive testing
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autostacker24
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.14
4
+ version: 1.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Mueller
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-09 00:00:00.000000000 Z
12
+ date: 2015-01-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: aws-sdk
15
+ name: aws-sdk-core
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 2.0.pre
20
+ version: '2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 2.0.pre
27
+ version: '2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: json
30
30
  requirement: !ruby/object:Gem::Requirement