zergrush_cf 0.0.4 → 0.0.5
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.
- checksums.yaml +8 -8
- data/lib/zergrush_cf/init.rb +66 -27
- data/lib/zergrush_cf/version.rb +1 -1
- data/zergrush_cf.gemspec +0 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTM1NGM0NDdlZjljZmViOTcyOTI3YjJkMTg0OTIyMzViYTVlYjhiOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Zjg3ZmIyODgxYzUyOTgzNmNjZDJkOGIyYWU5MTQ0OGJlYTJjMTI1NQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzJiODUyYmI5YWZhZDFmM2FjYjdlODkyZDYzZGFkOGI4YzVmMTEyY2M0ZDkx
|
10
|
+
MTU2ZjliMGExYmZhZDgwZTgwOWIzZDhiZDYzOGI2ZmZjNWVlZThmN2QwMjNk
|
11
|
+
N2UyZTZmNjQ4OGQ0NzA1MTQwODcwNTA3OTRhYTkxODAzODBkZTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDc1MzY5NzI1YmQ2ZmU2OTIzMWJjYzQ2MzMwZDExZjg3YjQ3MjJkYWJjYWYz
|
14
|
+
YzJhNWYwOTkyYzkyZmIyNjcyODlmMzRhMjI0MDU1MDYxYWY4Y2ZlNzExZGIz
|
15
|
+
MTk2Yjg4ZDE5MDNkYzA0OTJiMTQyZDQ0Nzc4OTIxOGMzZWI1YTU=
|
data/lib/zergrush_cf/init.rb
CHANGED
@@ -27,7 +27,6 @@ require 'excon'
|
|
27
27
|
require 'rbconfig'
|
28
28
|
require 'awesome_print'
|
29
29
|
require 'securerandom'
|
30
|
-
require 'ruby-progressbar'
|
31
30
|
require_relative 'renderer'
|
32
31
|
|
33
32
|
class CloudFormation < ZergGemPlugin::Plugin "/driver"
|
@@ -90,32 +89,45 @@ class CloudFormation < ZergGemPlugin::Plugin "/driver"
|
|
90
89
|
# create the cloudformation stack
|
91
90
|
stack_name = "#{task_name}"
|
92
91
|
|
93
|
-
progressbar = nil
|
94
92
|
params = eval_params(task_hash["vm"]["driver"]["driveroptions"][0]["template_parameters"])
|
95
93
|
stack_info = cf.create_stack(stack_name, { 'DisableRollback' => true, 'TemplateBody' => template_body.to_json, 'Parameters' => params, 'Capabilities' => [ "CAPABILITY_IAM" ] })
|
96
94
|
|
97
95
|
# grab the id of the stack
|
98
96
|
stack_id = stack_info.body["StackId"]
|
99
|
-
puts("Creating stack #{stack_name} with id #{stack_id}
|
100
|
-
progressbar = ProgressBar.create(:starting_at => 20, :total => nil)
|
97
|
+
puts("Creating stack #{stack_name} with id #{stack_id}")
|
101
98
|
|
102
|
-
|
99
|
+
|
100
|
+
# get the event collection and initial info
|
103
101
|
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
102
|
+
while outputs_info == nil do
|
103
|
+
sleep 1
|
104
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
105
|
+
end
|
104
106
|
|
105
|
-
|
106
|
-
|
107
|
-
sleep
|
107
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
108
|
+
while events == nil do
|
109
|
+
sleep 1
|
110
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
111
|
+
end
|
108
112
|
|
113
|
+
event_counter = 0
|
114
|
+
while outputs_info.body["Stacks"][0]["StackStatus"] == "CREATE_IN_PROGRESS" do
|
115
|
+
logEvents(events.first(events.length - event_counter))
|
116
|
+
event_counter = events.length
|
117
|
+
|
118
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
109
119
|
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
120
|
+
if outputs_info.body["Stacks"][0]["StackStatus"] == "CREATE_COMPLETE"
|
121
|
+
logEvents(events.first(events.length - event_counter))
|
122
|
+
puts("Stack outputs:")
|
123
|
+
ap outputs_info.body["Stacks"][0]["Outputs"]
|
124
|
+
return 0
|
125
|
+
end
|
110
126
|
end
|
111
|
-
progressbar.stop
|
112
|
-
abort "ERROR: Stack #{stack_name} creation failed. Refer to AWS CloudFormation console for further info." unless outputs_info.body["Stacks"][0]["StackStatus"] == "CREATE_COMPLETE"
|
113
|
-
|
114
|
-
puts("SUCCESS! Stack outputs:")
|
115
|
-
ap outputs_info.body["Stacks"][0]["Outputs"]
|
116
127
|
|
128
|
+
abort("ERROR: Failed with stack status: #{outputs_info.body["Stacks"][0]["StackStatus"]}")
|
129
|
+
|
117
130
|
rescue Fog::Errors::Error => fog_cf_error
|
118
|
-
progressbar.stop unless progressbar == nil
|
119
131
|
abort ("ERROR: AWS error: #{fog_cf_error.message}")
|
120
132
|
end
|
121
133
|
|
@@ -146,33 +158,60 @@ class CloudFormation < ZergGemPlugin::Plugin "/driver"
|
|
146
158
|
:aws_secret_access_key => aws_secret
|
147
159
|
)
|
148
160
|
|
149
|
-
progressbar = nil
|
150
|
-
|
151
161
|
stack_info = cf.delete_stack(stack_name)
|
152
162
|
puts("Deleting stack #{stack_name}")
|
153
|
-
progressbar = ProgressBar.create(:starting_at => 20, :total => nil)
|
154
|
-
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
155
163
|
|
156
|
-
|
157
|
-
|
158
|
-
|
164
|
+
# get the event collection and initial info
|
165
|
+
outputs_info = nil
|
166
|
+
while outputs_info == nil do
|
167
|
+
sleep 1
|
168
|
+
begin
|
169
|
+
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
170
|
+
rescue Fog::AWS::CloudFormation::NotFound
|
171
|
+
return 0
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
176
|
+
while events == nil do
|
177
|
+
sleep 1
|
178
|
+
begin
|
179
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
180
|
+
rescue Fog::AWS::CloudFormation::NotFound
|
181
|
+
return 0
|
182
|
+
end
|
183
|
+
end
|
159
184
|
|
185
|
+
event_counter = 0
|
186
|
+
while outputs_info.body["Stacks"][0]["StackStatus"] == "DELETE_IN_PROGRESS" do
|
187
|
+
logEvents(events.first(events.length - event_counter))
|
188
|
+
event_counter = events.length
|
160
189
|
begin
|
190
|
+
events = cf.describe_stack_events(stack_name).body['StackEvents']
|
161
191
|
outputs_info = cf.describe_stacks({ 'StackName' => stack_name })
|
162
192
|
rescue Fog::AWS::CloudFormation::NotFound
|
163
|
-
|
164
|
-
|
193
|
+
logEvents(events.first(events.length - event_counter))
|
194
|
+
return 0
|
165
195
|
end
|
166
196
|
end
|
167
197
|
|
168
|
-
|
169
|
-
|
170
|
-
abort ("ERROR: Stack #{stack_name} was not found in AWS.")
|
198
|
+
abort("ERROR: Failed with stack status: #{outputs_info.body["Stacks"][0]["StackStatus"]}")
|
199
|
+
|
171
200
|
rescue Fog::Errors::Error => fog_cf_error
|
172
|
-
progressbar.stop unless progressbar == nil
|
173
201
|
abort ("ERROR: AWS error: #{fog_cf_error.ai}")
|
174
202
|
end
|
175
203
|
|
204
|
+
def logEvents events
|
205
|
+
events.each do |event|
|
206
|
+
puts "Timestamp: #{event['Timestamp']}"
|
207
|
+
puts "LogicalResourceId: #{event['LogicalResourceId']}"
|
208
|
+
puts "ResourceType: #{event['ResourceType']}"
|
209
|
+
puts "ResourceStatus: #{event['ResourceStatus']}"
|
210
|
+
puts "ResourceStatusReason: #{event['ResourceStatusReason']}" if event['ResourceStatusReason']
|
211
|
+
puts "--"
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
176
215
|
def halt hive_location, task_name, task_hash, debug
|
177
216
|
puts("Halt is not implemented for CloudFormation.")
|
178
217
|
return
|
data/lib/zergrush_cf/version.rb
CHANGED
data/zergrush_cf.gemspec
CHANGED
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_development_dependency "zergrush", ">= 0.0.11"
|
21
21
|
|
22
22
|
s.add_dependency "fog", ">=1.20.0"
|
23
|
-
s.add_dependency "ruby-progressbar", "1.4.2"
|
24
23
|
|
25
24
|
s.files = `git ls-files`.split("\n")
|
26
25
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zergrush_cf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MTN Satellite Communications
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.20.0
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: ruby-progressbar
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.4.2
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.4.2
|
83
69
|
description: Amazon Cloud Formation driver for zergrush
|
84
70
|
email:
|
85
71
|
- Marat.Garafutdinov@mtnsat.com
|