cloudformer 0.0.12 → 0.0.13

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 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: []