zergrush_cf 0.0.14 → 0.0.17
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 +74 -0
- data/lib/zergrush_cf/version.rb +1 -1
- data/zergrush_cf.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDU0MGY0MTA4MGVkNDAwNjEzNTg1YzlhZWZhMDFiOTg2ODBmMGZjNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmZiZDEwZjY0NmQwOWRiNDNjMTZhZTkxMDViMjYzMzdjNGNiYTg3MA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzFmYmM5MDJmODA4ZTY0ZWFmZjE4YTNhN2NmYzVjYmE0MjM4OWMzZjJjYTE3
|
10
|
+
ZDBmNGFjNTQ1ODQzMTIxZDA0YzM4OGVkMWE1YzZjMGYzOTAyZGYwNDIzZDZl
|
11
|
+
ODMyYTU3OGQ5NWM5M2ExOTM3ZDllOTI2ZDg4NDJlNDEyNjdkNWQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjZiMTE2NGZlNzQ5MWZjZDdiYzRjZjAxYTM0MDU0NDE4MWM2ZjFjMmM4ODRi
|
14
|
+
N2RiYjhlYmFhN2NkNzVlZGU1NWU2ZDI1NTcxNzY4MmNjMTE1NzUwOWI4MjE5
|
15
|
+
ZjVkZGRiYWUyZjJjYTM1ZGQ1NWQ1YmM5ZWJmM2IwOWY5NmVmZGE=
|
data/lib/zergrush_cf/init.rb
CHANGED
@@ -274,6 +274,80 @@ class CloudFormation < ZergGemPlugin::Plugin "/driver"
|
|
274
274
|
abort ("ERROR: AWS error: #{fog_cf_error.ai}")
|
275
275
|
end
|
276
276
|
|
277
|
+
def snapshot hive_location, task_name, task_hash, base
|
278
|
+
aws_key_id = task_hash["vm"]["driver"]["driveroptions"][0]["access_key_id"]
|
279
|
+
aws_secret = task_hash["vm"]["driver"]["driveroptions"][0]["secret_access_key"]
|
280
|
+
|
281
|
+
# eval possible environment variables
|
282
|
+
if aws_key_id =~ /^ENV\['.+'\]$/
|
283
|
+
aws_key_id = eval(aws_key_id)
|
284
|
+
end
|
285
|
+
|
286
|
+
if aws_secret =~ /^ENV\['.+'\]$/
|
287
|
+
aws_secret = eval(aws_secret)
|
288
|
+
end
|
289
|
+
|
290
|
+
abort("AWS key id is not specified in task") unless aws_key_id != nil
|
291
|
+
abort("AWS secret is not specified in task") unless aws_secret != nil
|
292
|
+
|
293
|
+
base_name = (base.nil?) ? "#{task_name}" : base
|
294
|
+
|
295
|
+
puts("creating AMI Snapshots of all EC2 instances. Will use base name of #{base_name}")
|
296
|
+
|
297
|
+
cf = Fog::AWS::CloudFormation.new(
|
298
|
+
:aws_access_key_id => aws_key_id,
|
299
|
+
:aws_secret_access_key => aws_secret
|
300
|
+
)
|
301
|
+
|
302
|
+
fogCompute = Fog::Compute.new(
|
303
|
+
:provider => 'AWS',
|
304
|
+
:aws_access_key_id => aws_key_id,
|
305
|
+
:aws_secret_access_key => aws_secret
|
306
|
+
)
|
307
|
+
|
308
|
+
rabbit_objects = initRabbitConnection(task_hash["vm"]["driver"]["driveroptions"][0]["rabbit"])
|
309
|
+
|
310
|
+
# create the cloudformation stack
|
311
|
+
stack_name = "#{task_name}"
|
312
|
+
processStack(stack_name, base_name, cf, fogCompute)
|
313
|
+
return 0
|
314
|
+
|
315
|
+
rescue Fog::Errors::Error => fog_cf_error
|
316
|
+
abort ("ERROR: AWS error: #{fog_cf_error.message}")
|
317
|
+
end
|
318
|
+
|
319
|
+
def processStack stack_name, base_name, fogCF, fogCompute
|
320
|
+
fogCF.describe_stack_resources({ 'StackName' => stack_name })[:body]['StackResources'].each { |stack_resource|
|
321
|
+
if stack_resource['ResourceType'] == 'AWS::EC2::Instance'
|
322
|
+
saveAmi(stack_resource, base_name, fogCompute)
|
323
|
+
elsif stack_resource['ResourceType'] == 'AWS::CloudFormation::Stack'
|
324
|
+
processStack(stack_resource['PhysicalResourceId'].split('/')[1], base_name, fogCF, fogCompute)
|
325
|
+
end
|
326
|
+
}
|
327
|
+
end
|
328
|
+
|
329
|
+
def saveAmi ec2res, base_name, fogCompute
|
330
|
+
liveInstance = fogCompute.describe_instances({ 'instance-id' => ec2res['PhysicalResourceId'] })[:body]
|
331
|
+
nameTag = liveInstance['reservationSet'][0]['instancesSet'][0]['tagSet']['Name'].split(':')[1].downcase
|
332
|
+
|
333
|
+
ap "Creating AMI #{base_name}-#{nameTag}. Stack resource:"
|
334
|
+
ap ec2res
|
335
|
+
|
336
|
+
imageSet = fogCompute.describe_images( { 'name' => "#{base_name}-#{nameTag}" } )[:body]
|
337
|
+
imageSet['imagesSet'].each { |image|
|
338
|
+
imageId = image['imageId']
|
339
|
+
ap "Deregistering old image #{imageId}..."
|
340
|
+
response = fogCompute.deregister_image(imageId)
|
341
|
+
abort("ERROR: deregistering #{imageId} failed!") unless response[:body]['return'] == 'true'
|
342
|
+
}
|
343
|
+
|
344
|
+
ap 'Saving new image...'
|
345
|
+
newId = fogCompute.create_image(ec2res['PhysicalResourceId'], "#{base_name}-#{nameTag}", "#{base_name}-#{nameTag} snapshot")[:body]['imageId']
|
346
|
+
ap "Created new AMI #{newId}"
|
347
|
+
ap "Tagging #{newId} with #{base_name}"
|
348
|
+
fogCompute.create_tags(newId, { base_name => base_name })
|
349
|
+
end
|
350
|
+
|
277
351
|
def logEvents events
|
278
352
|
events.each do |event|
|
279
353
|
puts "Timestamp: #{Time.parse(event['Timestamp'].to_s).iso8601}"
|
data/lib/zergrush_cf/version.rb
CHANGED
data/zergrush_cf.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
19
19
|
s.add_development_dependency "rake"
|
20
|
-
s.add_development_dependency "zergrush", ">= 0.0.
|
20
|
+
s.add_development_dependency "zergrush", ">= 0.0.24"
|
21
21
|
|
22
22
|
s.add_dependency "fog", ">=1.20.0"
|
23
23
|
s.add_dependency "bunny", ">=1.2.1"
|
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.17
|
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-
|
11
|
+
date: 2014-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0.
|
47
|
+
version: 0.0.24
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0.
|
54
|
+
version: 0.0.24
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: fog
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|