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