cloudformer 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 +4 -4
- data/Gemfile +1 -1
- data/cloudformer.gemspec +1 -0
- data/lib/cloudformer.rb +1 -1
- data/lib/cloudformer/stack.rb +27 -5
- data/lib/cloudformer/tasks.rb +17 -1
- data/lib/cloudformer/version.rb +1 -1
- data/samples/Rakefile +2 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 72891aa253cab195a8218bc53d2f1ba270d96a1a
|
|
4
|
+
data.tar.gz: 5afcd141f49cb2dcaea0696de3adb4ead21759d3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9b053008ac557b3114e372866f67755399f7aac24fb0e65e427916a9a1d09ae7a7f0e5504c1f5c79e04562178aed6ecabf27a6609162352fe9ed4ccd6d9af5c2
|
|
7
|
+
data.tar.gz: 1883bac591b8e05cd3d25f86530c16306522867bdc615005a98fd097174bb38a8d17bf546a9cef9ef295569f1838946d5d45cff4aaf370eb93e523c62aba89d9
|
data/Gemfile
CHANGED
data/cloudformer.gemspec
CHANGED
data/lib/cloudformer.rb
CHANGED
data/lib/cloudformer/stack.rb
CHANGED
|
@@ -6,13 +6,14 @@ class Stack
|
|
|
6
6
|
@name = stack_name
|
|
7
7
|
@cf = AWS::CloudFormation.new
|
|
8
8
|
@stack = @cf.stacks[name]
|
|
9
|
+
@ec2 = AWS::EC2.new
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def deployed
|
|
12
13
|
return stack.exists?
|
|
13
14
|
end
|
|
14
15
|
|
|
15
|
-
def apply(template_file, parameters)
|
|
16
|
+
def apply(template_file, parameters, disable_rollback=false)
|
|
16
17
|
template = File.read(template_file)
|
|
17
18
|
validation = validate(template)
|
|
18
19
|
unless validation["valid"]
|
|
@@ -23,7 +24,7 @@ class Stack
|
|
|
23
24
|
if deployed
|
|
24
25
|
pending_operations = update(template, parameters)
|
|
25
26
|
else
|
|
26
|
-
pending_operations = create(template, parameters)
|
|
27
|
+
pending_operations = create(template, parameters, disable_rollback)
|
|
27
28
|
end
|
|
28
29
|
wait_until_end if pending_operations
|
|
29
30
|
if stack.status == "ROLLBACK_COMPLETE"
|
|
@@ -34,6 +35,14 @@ class Stack
|
|
|
34
35
|
end
|
|
35
36
|
end
|
|
36
37
|
|
|
38
|
+
def stop_instances
|
|
39
|
+
update_instances("stop")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def start_instances
|
|
43
|
+
update_instances("start")
|
|
44
|
+
end
|
|
45
|
+
|
|
37
46
|
def delete
|
|
38
47
|
with_highlight do
|
|
39
48
|
puts "Attempting to delete stack - #{name}"
|
|
@@ -59,7 +68,7 @@ class Stack
|
|
|
59
68
|
return
|
|
60
69
|
end
|
|
61
70
|
stack.events.sort_by {|a| a.timestamp}.each do |event|
|
|
62
|
-
puts "#{event.timestamp} - #{event.resource_type} - #{event.resource_status} - #{event.resource_status_reason.to_s}"
|
|
71
|
+
puts "#{event.timestamp} - #{event.logical_resource_id} - #{event.resource_type} - #{event.resource_status} - #{event.resource_status_reason.to_s}"
|
|
63
72
|
end
|
|
64
73
|
end
|
|
65
74
|
end
|
|
@@ -127,13 +136,26 @@ class Stack
|
|
|
127
136
|
return false
|
|
128
137
|
end
|
|
129
138
|
|
|
130
|
-
def create(template, parameters)
|
|
139
|
+
def create(template, parameters, disable_rollback)
|
|
131
140
|
puts "Initializing stack creation..."
|
|
132
|
-
@cf.stacks.create(name, template, :parameters => parameters)
|
|
141
|
+
@cf.stacks.create(name, template, :parameters => parameters, :disable_rollback => disable_rollback)
|
|
133
142
|
sleep 10
|
|
134
143
|
return true
|
|
135
144
|
rescue ::AWS::CloudFormation::Errors::ValidationError => e
|
|
136
145
|
puts e.message
|
|
137
146
|
return false
|
|
138
147
|
end
|
|
148
|
+
|
|
149
|
+
def update_instances(action)
|
|
150
|
+
with_highlight do
|
|
151
|
+
puts "Attempting to #{action} all ec2 instances in the stack #{stack.name}"
|
|
152
|
+
return "Stack not up" if !deployed
|
|
153
|
+
stack.resources.each do |resource|
|
|
154
|
+
next if resource.resource_type != "AWS::EC2::Instance"
|
|
155
|
+
physical_resource_id = resource.physical_resource_id
|
|
156
|
+
puts "Attempting to #{action} Instance with physical_resource_id: #{physical_resource_id}"
|
|
157
|
+
@ec2.instances[physical_resource_id].send(action)
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
139
161
|
end
|
data/lib/cloudformer/tasks.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Cloudformer
|
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
attr_accessor :template, :parameters
|
|
16
|
+
attr_accessor :template, :parameters, :disable_rollback
|
|
17
17
|
|
|
18
18
|
private
|
|
19
19
|
def define_tasks
|
|
@@ -23,6 +23,8 @@ module Cloudformer
|
|
|
23
23
|
define_status_task
|
|
24
24
|
define_outputs_task
|
|
25
25
|
define_recreate_task
|
|
26
|
+
define_stop_task
|
|
27
|
+
define_start_task
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def define_create_task
|
|
@@ -63,5 +65,19 @@ module Cloudformer
|
|
|
63
65
|
desc "Recreate stack."
|
|
64
66
|
task :recreate => [:delete, :apply, :outputs]
|
|
65
67
|
end
|
|
68
|
+
|
|
69
|
+
def define_stop_task
|
|
70
|
+
desc "Stop EC2 instances in stack."
|
|
71
|
+
task :stop do
|
|
72
|
+
@stack.stop_instances
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def define_start_task
|
|
77
|
+
desc "Start EC2 instances in stack."
|
|
78
|
+
task :start do
|
|
79
|
+
@stack.start_instances
|
|
80
|
+
end
|
|
81
|
+
end
|
|
66
82
|
end
|
|
67
83
|
end
|
data/lib/cloudformer/version.rb
CHANGED
data/samples/Rakefile
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
require 'cloudformer'
|
|
2
2
|
|
|
3
|
-
Cloudformer::Tasks.new("
|
|
3
|
+
Cloudformer::Tasks.new("arvind-test") do |t|
|
|
4
4
|
t.template = "basic_template.json"
|
|
5
5
|
#AMI Works in Sydney region only, ensure you supply the right AMI.
|
|
6
6
|
t.parameters = {"AmiId" => "ami-8da439b7"}
|
|
7
|
+
t.disable_rollback = true
|
|
7
8
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cloudformer
|
|
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
|
- Arvind Kunday
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - ~>
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: debugger
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: rake
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|