cloudformer 0.0.10 → 0.0.11
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/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
|