cloudformer 0.0.12 → 0.0.13

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: 1a3ea4d7e5a5d60b004184dea02fa6f7b59647a5
4
- data.tar.gz: a8a98dabb72b72f68f4fdb2cd0596acd8472af97
3
+ metadata.gz: b9c98549041a2396decdcfb5088092fb9247d240
4
+ data.tar.gz: 2a77a8e0d924a973f71b2e94199868154bbf0af8
5
5
  SHA512:
6
- metadata.gz: e612cfe8276f8a1a7e50a73bc900a7801de0a35f35341d57806bc566efcd497feca88ffbc3e0a43ad5bae5e5aab12c28f41080057d69629a6a4d98c375936b34
7
- data.tar.gz: 7678c2787bcc2c423285c0261a9293f8bc4f368a4e78a57b96697cea5eefb4d8e27832a018e717e6f8e5f1b475ddf52b1627278ab2f7e2be3e605c6e6f2736fa
6
+ metadata.gz: dbafea82432445daebcdff073bd747265cee7505dd5b7db7fbbf72b6e6f64f22d6d997256dee25ad9a1bfe5c6952965d84233212f74c2095b780304da7d678b8
7
+ data.tar.gz: 398746d059addfd5bb3f5b8c3b3aa906176dd4d014b4b169d2ca5c320a48ba7cfdcc45e70a0c95c5a30720d83438fd7b339a653407f93903b6418e63fdd3321d
data/cloudformer.gemspec CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "debugger"
23
22
  spec.add_development_dependency "rspec"
24
23
  spec.add_dependency "rake"
25
24
  spec.add_dependency "aws-sdk"
@@ -19,27 +19,36 @@ class Stack
19
19
  return stack.exists?
20
20
  end
21
21
 
22
- def apply(template_file, parameters, disable_rollback=false, capabilities=[])
23
- template = File.read(template_file)
22
+ def apply(template_file, parameters, disable_rollback=false, capabilities=[], notify=[])
23
+ if ( template_file =~ /^https:\/\/s3\S+\.amazonaws\.com\/(.*)/ )
24
+ template = template_file
25
+ else
26
+ template = File.read(template_file)
27
+ end
24
28
  validation = validate(template)
25
29
  unless validation["valid"]
26
30
  puts "Unable to update - #{validation["response"][:code]} - #{validation["response"][:message]}"
27
- return false
31
+ return false
28
32
  end
29
33
  pending_operations = false
30
- if deployed
31
- pending_operations = update(template, parameters, capabilities)
32
- else
33
- pending_operations = create(template, parameters, disable_rollback, capabilities)
34
+ begin
35
+ if deployed
36
+ pending_operations = update(template, parameters, capabilities)
37
+ else
38
+ pending_operations = create(template, parameters, disable_rollback, capabilities, notify)
39
+ end
40
+ rescue ::AWS::CloudFormation::Errors::ValidationError => e
41
+ puts e.message
42
+ return false
34
43
  end
35
44
  wait_until_end if pending_operations
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
45
+ return deploy_succeded?
46
+ end
47
+
48
+ def deploy_succeded?
49
+ return true unless FAILURE_STATES.include?(stack.status)
50
+ puts "Unable to deploy template. Check log for more information."
51
+ false
43
52
  end
44
53
 
45
54
  def stop_instances
@@ -143,19 +152,13 @@ class Stack
143
152
  :capabilities => capabilities
144
153
  })
145
154
  return true
146
- rescue ::AWS::CloudFormation::Errors::ValidationError => e
147
- puts e.message
148
- return false
149
155
  end
150
156
 
151
- def create(template, parameters, disable_rollback, capabilities)
157
+ def create(template, parameters, disable_rollback, capabilities, notify)
152
158
  puts "Initializing stack creation..."
153
- @cf.stacks.create(name, template, :parameters => parameters, :disable_rollback => disable_rollback, :capabilities => capabilities)
159
+ @cf.stacks.create(name, template, :parameters => parameters, :disable_rollback => disable_rollback, :capabilities => capabilities, :notify => notify)
154
160
  sleep 10
155
161
  return true
156
- rescue ::AWS::CloudFormation::Errors::ValidationError => e
157
- puts e.message
158
- return false
159
162
  end
160
163
 
161
164
  def update_instances(action)
@@ -175,3 +178,4 @@ class Stack
175
178
  end
176
179
  end
177
180
  end
181
+
@@ -13,7 +13,7 @@ module Cloudformer
13
13
  end
14
14
  end
15
15
 
16
- attr_accessor :template, :parameters, :disable_rollback, :retry_delete, :capabilities
16
+ attr_accessor :template, :parameters, :disable_rollback, :retry_delete, :capabilities, :notify
17
17
 
18
18
  private
19
19
  def define_tasks
@@ -35,15 +35,15 @@ module Cloudformer
35
35
  if retry_delete
36
36
  @stack.delete
37
37
  end
38
- exit 1 unless @stack.apply(template, parameters, disable_rollback, capabilities)
38
+ exit 1 unless @stack.apply(template, parameters, disable_rollback, capabilities, notify)
39
39
  end
40
40
  end
41
-
41
+
42
42
  def define_delete_task
43
43
  desc "Delete stack from CloudFormation"
44
44
  task :delete do
45
45
  begin
46
- exit 1 unless @stack.delete
46
+ exit 1 unless @stack.delete
47
47
  rescue
48
48
  puts "Stack deleted successfully."
49
49
  end
@@ -55,27 +55,27 @@ module Cloudformer
55
55
  task :force_delete do
56
56
  begin
57
57
  @stack.stop_instances
58
- exit 1 unless @stack.delete
58
+ exit 1 unless @stack.delete
59
59
  rescue => e
60
60
  puts "Stack delete message - #{e.message}"
61
61
  end
62
62
  end
63
63
  end
64
-
64
+
65
65
  def define_status_task
66
66
  desc "Get the deployed app status."
67
67
  task :status do
68
- @stack.status
68
+ @stack.status
69
69
  end
70
70
  end
71
-
71
+
72
72
  def define_events_task
73
73
  desc "Get the recent events from the stack."
74
74
  task :events do
75
75
  @stack.events
76
76
  end
77
77
  end
78
-
78
+
79
79
  def define_outputs_task
80
80
  desc "Get the outputs of stack."
81
81
  task :outputs do
@@ -1,3 +1,3 @@
1
1
  module Cloudformer
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
data/spec/stack_spec.rb CHANGED
@@ -39,4 +39,18 @@ describe Stack do
39
39
  @stack.deployed.should_not be
40
40
  end
41
41
  end
42
+
43
+ describe "when stack operation throws ValidationError" do
44
+ before :each do
45
+ @stack = Stack.new("stack")
46
+ @cf_stack.should_receive(:exists?).and_return(true)
47
+ File.should_receive(:read).and_return("template")
48
+ @cf.should_receive(:validate_template).and_return({"valid" => true})
49
+ @cf_stack.should_receive(:update).and_raise(AWS::CloudFormation::Errors::ValidationError)
50
+ end
51
+
52
+ it "apply should return false to signal the error" do
53
+ @stack.apply(nil, nil).should be_false
54
+ end
55
+ end
42
56
  end
metadata CHANGED
@@ -1,83 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudformer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arvind Kunday
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-16 00:00:00.000000000 Z
11
+ date: 2014-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
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'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rspec
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - '>='
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - '>='
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - '>='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '>='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: aws-sdk
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '>='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
61
  version: '0'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '>='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  description: Cloudformation tasks for apply(create/update), delete, recreate on stack
@@ -88,7 +74,7 @@ executables: []
88
74
  extensions: []
89
75
  extra_rdoc_files: []
90
76
  files:
91
- - .gitignore
77
+ - ".gitignore"
92
78
  - Gemfile
93
79
  - LICENSE.txt
94
80
  - README.md
@@ -111,12 +97,12 @@ require_paths:
111
97
  - lib
112
98
  required_ruby_version: !ruby/object:Gem::Requirement
113
99
  requirements:
114
- - - '>='
100
+ - - ">="
115
101
  - !ruby/object:Gem::Version
116
102
  version: '0'
117
103
  required_rubygems_version: !ruby/object:Gem::Requirement
118
104
  requirements:
119
- - - '>='
105
+ - - ">="
120
106
  - !ruby/object:Gem::Version
121
107
  version: '0'
122
108
  requirements: []