cloudformer 0.0.7 → 0.0.8

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: 54a97187f9569ff0c9151731dfaa2940b3fda528
4
- data.tar.gz: 28e3801c1c731b9b77b953c965a85a6f91b991ff
3
+ metadata.gz: ed4bc831b5b95315110a8674510d4f4952cc6d44
4
+ data.tar.gz: df144baf972cc3cbd6b954ec7262d648ce36b3fd
5
5
  SHA512:
6
- metadata.gz: 844622f459138b36ad04dfb10eba5ebbf42ce7d6ce911c1d553ef118958dcb2d09ee65c7b30ee0c484847fdb8a7534c4542386d8f7d2d53399dce309b2f6bb90
7
- data.tar.gz: aedbf93029a6aa2e559929d213042c3ddca6dd6a856071b9ee5bfb30890883566bfe9af071b8d3cf020881b93280dc3eb06cb585af87978f4cdd0ef2ca91f84b
6
+ metadata.gz: d1e3d2008848a5da60cfeb1b8836b5f040e88368582ea036420acc7ca36f3390ea3db92d24c93a3de48ea7e0f6cefd68bafa634e9ae9e3e8f989f48d052713c7
7
+ data.tar.gz: 516e9d35bc3885f79ccc74e729294a21761f814dc8b940d483dd1c6a0e2ed423863f36c2494d1351e12d126600e5cf308ad8f6e1c344933c15093dc118d8d4ca
@@ -13,7 +13,7 @@ class Stack
13
13
  return stack.exists?
14
14
  end
15
15
 
16
- def apply(template_file, parameters, disable_rollback=false)
16
+ def apply(template_file, parameters, disable_rollback=false, capabilities=[])
17
17
  template = File.read(template_file)
18
18
  validation = validate(template)
19
19
  unless validation["valid"]
@@ -24,7 +24,7 @@ class Stack
24
24
  if deployed
25
25
  pending_operations = update(template, parameters)
26
26
  else
27
- pending_operations = create(template, parameters, disable_rollback)
27
+ pending_operations = create(template, parameters, disable_rollback, capabilities)
28
28
  end
29
29
  wait_until_end if pending_operations
30
30
  if stack.status == "ROLLBACK_COMPLETE"
@@ -86,6 +86,14 @@ class Stack
86
86
  return 0
87
87
  end
88
88
 
89
+ def validate(template)
90
+ response = @cf.validate_template(template)
91
+ return {
92
+ "valid" => response[:code].nil?,
93
+ "response" => response
94
+ }
95
+ end
96
+
89
97
  private
90
98
  def wait_until_end
91
99
  printed = []
@@ -104,7 +112,7 @@ class Stack
104
112
  end
105
113
  end
106
114
  printed.concat(printable_events.map(&:event_id))
107
- break if !stack.status.match(/_COMPLETE$/).nil?
115
+ break if !stack.status.match(/_COMPLETE$/).nil? || !stack.status.match(/DELETE_FAILED$/).nil? || !stack.status.match(/CREATE_FAILED$/).nil?
108
116
  sleep(30)
109
117
  end
110
118
  end
@@ -136,9 +144,9 @@ class Stack
136
144
  return false
137
145
  end
138
146
 
139
- def create(template, parameters, disable_rollback)
147
+ def create(template, parameters, disable_rollback, capabilities)
140
148
  puts "Initializing stack creation..."
141
- @cf.stacks.create(name, template, :parameters => parameters, :disable_rollback => disable_rollback)
149
+ @cf.stacks.create(name, template, :parameters => parameters, :disable_rollback => disable_rollback, :capabilities => capabilities)
142
150
  sleep 10
143
151
  return true
144
152
  rescue ::AWS::CloudFormation::Errors::ValidationError => e
@@ -13,11 +13,12 @@ module Cloudformer
13
13
  end
14
14
  end
15
15
 
16
- attr_accessor :template, :parameters, :disable_rollback
16
+ attr_accessor :template, :parameters, :disable_rollback, :retry_delete, :capabilities
17
17
 
18
18
  private
19
19
  def define_tasks
20
20
  define_create_task
21
+ define_validate_task
21
22
  define_delete_task
22
23
  define_events_task
23
24
  define_status_task
@@ -30,7 +31,10 @@ module Cloudformer
30
31
  def define_create_task
31
32
  desc "Apply Stack with Cloudformation script and parameters."
32
33
  task :apply do
33
- @stack.apply(template, parameters, disable_rollback)
34
+ if retry_delete
35
+ @stack.delete
36
+ end
37
+ @stack.apply(template, parameters, disable_rollback, capabilities)
34
38
  end
35
39
  end
36
40
  def define_delete_task
@@ -79,5 +83,12 @@ module Cloudformer
79
83
  @stack.start_instances
80
84
  end
81
85
  end
86
+
87
+ def define_validate_task
88
+ desc "Validate the Stack."
89
+ task :validate do
90
+ @stack.validate(template)
91
+ end
92
+ end
82
93
  end
83
94
  end
@@ -1,3 +1,3 @@
1
1
  module Cloudformer
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -5,4 +5,5 @@ Cloudformer::Tasks.new("arvind-test") do |t|
5
5
  #AMI Works in Sydney region only, ensure you supply the right AMI.
6
6
  t.parameters = {"AmiId" => "ami-8da439b7"}
7
7
  t.disable_rollback = true
8
+ t.capabilities=[]
8
9
  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.7
4
+ version: 0.0.8
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-12 00:00:00.000000000 Z
11
+ date: 2013-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler