autostacker24 1.0.14 → 1.0.16

Sign up to get free protection for your applications and to get access to all the features.
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