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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58d2ce781939b779dd804bf2ec33c8168cf62b1a
4
- data.tar.gz: 24689509a537bc7f1bd3c9e92fadb19135e9e834
3
+ metadata.gz: 97c0ebd927bd0827047330b59ece651cca71605f
4
+ data.tar.gz: d28f7fddddf0bb0fc9a325ed13c963f3afb73f52
5
5
  SHA512:
6
- metadata.gz: 885f731ad0b348038916ac5fb4c24b2c948aedb89e8d3d9a62b6b3d951508563c735b4e1e2d85f04b732875e445ac45c6be96fe0fc2abf3f6165eefd72a0ae1f
7
- data.tar.gz: 6c3a897daeab52367d18b7f80c42c600f710d4677c6bdca725a1292dabf95886e7adb169676db14250cc25697c3ab79a0523a7b0cfc86c7fc89d7f61aa9f53af
6
+ metadata.gz: e99bd60c7d6f380cd3fbe0cb9234df3548575e4d59100e7005b7933c3aad0599dcbb2957f6d92805b98d50468dd9fc972aa0edc2c87a8d56e81f1039bb295eb8
7
+ data.tar.gz: 8b6fb6d5283446de6cbc4442f86f0953eabdf448b77663903a35f901c8a4ee1ad7d6b2fcf45ce153a22c865071a902239590a24f9e975a81a8315d5f3eecdcd2
data/Rakefile CHANGED
@@ -1 +1 @@
1
- require "bundler/gem_tasks"
1
+ require "bundler/gem_tasks"
@@ -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 1
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
- if stack.status == "ROLLBACK_COMPLETE" || stack.status == "CREATE_FAILED"
31
- puts "Unable to update template. Check log for more information."
32
- return 1
33
- else
34
- return 0
35
- end
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 do |event|
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 !stack.status.match(/_COMPLETE$/).nil? || !stack.status.match(/DELETE_FAILED$/).nil? || !stack.status.match(/CREATE_FAILED$/).nil?
117
+ break if END_STATES.include?(stack.status)
116
118
  sleep(30)
117
119
  end
118
120
  end
@@ -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
- @stack.status
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
@@ -1,3 +1,3 @@
1
1
  module Cloudformer
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  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.10
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-25 00:00:00.000000000 Z
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler