cloudformer 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/cloudformer/stack.rb +18 -16
- data/lib/cloudformer/tasks.rb +8 -5
- data/lib/cloudformer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97c0ebd927bd0827047330b59ece651cca71605f
|
4
|
+
data.tar.gz: d28f7fddddf0bb0fc9a325ed13c963f3afb73f52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e99bd60c7d6f380cd3fbe0cb9234df3548575e4d59100e7005b7933c3aad0599dcbb2957f6d92805b98d50468dd9fc972aa0edc2c87a8d56e81f1039bb295eb8
|
7
|
+
data.tar.gz: 8b6fb6d5283446de6cbc4442f86f0953eabdf448b77663903a35f901c8a4ee1ad7d6b2fcf45ce153a22c865071a902239590a24f9e975a81a8315d5f3eecdcd2
|
data/Rakefile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/cloudformer/stack.rb
CHANGED
@@ -2,6 +2,12 @@ require 'aws-sdk'
|
|
2
2
|
|
3
3
|
class Stack
|
4
4
|
attr_accessor :stack, :name, :deployed
|
5
|
+
|
6
|
+
SUCESS_STATES = ["CREATE_COMPLETE", "UPDATE_COMPLETE"]
|
7
|
+
FAILURE_STATES = ["CREATE_FAILED", "DELETE_FAILED", "UPDATE_ROLLBACK_FAILED", "ROLLBACK_FAILED", "ROLLBACK_COMPLETE","ROLLBACK_FAILED","UPDATE_ROLLBACK_COMPLETE","UPDATE_ROLLBACK_FAILED"]
|
8
|
+
END_STATES = SUCESS_STATES + FAILURE_STATES
|
9
|
+
|
10
|
+
# WAITING_STATES = ["CREATE_IN_PROGRESS","DELETE_IN_PROGRESS","ROLLBACK_IN_PROGRESS","UPDATE_COMPLETE_CLEANUP_IN_PROGRESS","UPDATE_IN_PROGRESS","UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS","UPDATE_ROLLBACK_IN_PROGRESS"]
|
5
11
|
def initialize(stack_name)
|
6
12
|
@name = stack_name
|
7
13
|
@cf = AWS::CloudFormation.new
|
@@ -18,7 +24,7 @@ class Stack
|
|
18
24
|
validation = validate(template)
|
19
25
|
unless validation["valid"]
|
20
26
|
puts "Unable to update - #{validation["response"][:code]} - #{validation["response"][:message]}"
|
21
|
-
return
|
27
|
+
return false
|
22
28
|
end
|
23
29
|
pending_operations = false
|
24
30
|
if deployed
|
@@ -27,12 +33,13 @@ class Stack
|
|
27
33
|
pending_operations = create(template, parameters, disable_rollback, capabilities)
|
28
34
|
end
|
29
35
|
wait_until_end if pending_operations
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
+
return deploy_succeded?
|
37
|
+
end
|
38
|
+
|
39
|
+
def deploy_succeded?
|
40
|
+
return true unless FAILURE_STATES.include?(stack.status)
|
41
|
+
puts "Unable to deploy template. Check log for more information."
|
42
|
+
false
|
36
43
|
end
|
37
44
|
|
38
45
|
def stop_instances
|
@@ -48,6 +55,7 @@ class Stack
|
|
48
55
|
puts "Attempting to delete stack - #{name}"
|
49
56
|
stack.delete
|
50
57
|
wait_until_end
|
58
|
+
return deploy_succeded?
|
51
59
|
end
|
52
60
|
end
|
53
61
|
|
@@ -93,7 +101,7 @@ class Stack
|
|
93
101
|
"response" => response
|
94
102
|
}
|
95
103
|
end
|
96
|
-
|
104
|
+
|
97
105
|
private
|
98
106
|
def wait_until_end
|
99
107
|
printed = []
|
@@ -103,16 +111,10 @@ class Stack
|
|
103
111
|
return
|
104
112
|
end
|
105
113
|
loop do
|
106
|
-
exit_loop = false
|
107
114
|
printable_events = stack.events.sort_by {|a| a.timestamp}.reject {|a| a if printed.include?(a.event_id)}
|
108
|
-
printable_events.each
|
109
|
-
puts "#{event.timestamp} - #{event.resource_type} - #{event.resource_status} - #{event.resource_status_reason.to_s}"
|
110
|
-
if event.resource_type == "AWS::CloudFormation::Stack" && !event.resource_status.match(/_COMPLETE$/).nil?
|
111
|
-
exit_loop = true
|
112
|
-
end
|
113
|
-
end
|
115
|
+
printable_events.each { |event| puts "#{event.timestamp} - #{event.resource_type} - #{event.resource_status} - #{event.resource_status_reason.to_s}" }
|
114
116
|
printed.concat(printable_events.map(&:event_id))
|
115
|
-
break if
|
117
|
+
break if END_STATES.include?(stack.status)
|
116
118
|
sleep(30)
|
117
119
|
end
|
118
120
|
end
|
data/lib/cloudformer/tasks.rb
CHANGED
@@ -35,14 +35,15 @@ module Cloudformer
|
|
35
35
|
if retry_delete
|
36
36
|
@stack.delete
|
37
37
|
end
|
38
|
-
exit @stack.apply(template, parameters, disable_rollback, capabilities)
|
38
|
+
exit 1 unless @stack.apply(template, parameters, disable_rollback, capabilities)
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
41
42
|
def define_delete_task
|
42
43
|
desc "Delete stack from CloudFormation"
|
43
44
|
task :delete do
|
44
45
|
begin
|
45
|
-
@stack.delete
|
46
|
+
exit 1 unless @stack.delete
|
46
47
|
rescue
|
47
48
|
puts "Stack deleted successfully."
|
48
49
|
end
|
@@ -54,25 +55,27 @@ module Cloudformer
|
|
54
55
|
task :force_delete do
|
55
56
|
begin
|
56
57
|
@stack.stop_instances
|
57
|
-
@stack.delete
|
58
|
+
exit 1 unless @stack.delete
|
58
59
|
rescue => e
|
59
60
|
puts "Stack delete message - #{e.message}"
|
60
61
|
end
|
61
62
|
end
|
62
63
|
end
|
63
|
-
|
64
|
+
|
64
65
|
def define_status_task
|
65
66
|
desc "Get the deployed app status."
|
66
67
|
task :status do
|
67
|
-
|
68
|
+
@stack.status
|
68
69
|
end
|
69
70
|
end
|
71
|
+
|
70
72
|
def define_events_task
|
71
73
|
desc "Get the recent events from the stack."
|
72
74
|
task :events do
|
73
75
|
@stack.events
|
74
76
|
end
|
75
77
|
end
|
78
|
+
|
76
79
|
def define_outputs_task
|
77
80
|
desc "Get the outputs of stack."
|
78
81
|
task :outputs do
|
data/lib/cloudformer/version.rb
CHANGED
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.11
|
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-
|
11
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|