corl 0.4.20 → 0.4.21

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: a56639289fcbd5aa19501f8a112396ff3175027b
4
- data.tar.gz: 8d2305381ca5393fe3be2ff59dd29b3427cb2d9f
3
+ metadata.gz: e3bb80a650eb209623ead506dd69a51306c1fcf0
4
+ data.tar.gz: e41e127547eb7677cf335aa661301b11ffcb690e
5
5
  SHA512:
6
- metadata.gz: 344dac8b66397b59cc18de211635a4f3460b68286b192d57a14cdff8fd92642d2ac8fba3f96b32b77512e2058d293d5251156204da50410f4240711661f25133
7
- data.tar.gz: e2aec0396e8867739f808a52155598ce599204bf65001b6e749e4b21d09ef81d170faf487a199e41f9cdf165170825d4471e98d1e0ea1be0f73ef041c60d0423
6
+ metadata.gz: 2c37715b7116f293ab7d8d2f96610f0e17d7a8d136cce335d06a2b1f540047b7ed2b340643ed998ec02fca54122d8925ffe8af665933e7f177ddd363d554ccc6
7
+ data.tar.gz: a07956638bdcb9915e2152158417ef1b073b7eae676f57a2b87dc97a2fe0864b79f88c7337589dfbbdc219740ed570cbbc8baef51e13fbdf65ad31ad7790b840
data/Gemfile.lock CHANGED
@@ -36,7 +36,7 @@ GIT
36
36
  PATH
37
37
  remote: .
38
38
  specs:
39
- corl (0.4.19)
39
+ corl (0.4.20)
40
40
  facter (~> 1.7)
41
41
  fog (~> 1.20)
42
42
  hiera (~> 1.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.20
1
+ 0.4.21
data/corl.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: corl 0.4.20 ruby lib
5
+ # stub: corl 0.4.21 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "corl"
9
- s.version = "0.4.20"
9
+ s.version = "0.4.21"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Adrian Webb"]
14
- s.date = "2014-04-25"
14
+ s.date = "2014-04-28"
15
15
  s.description = "Framework that provides a simple foundation for growing organically in the cloud"
16
16
  s.email = "adrian.webb@coralnexus.com"
17
17
  s.executables = ["corl"]
@@ -83,6 +83,7 @@ Gem::Specification.new do |s|
83
83
  "lib/core/facade.rb",
84
84
  "lib/core/mixin/action/keypair.rb",
85
85
  "lib/core/mixin/lookup.rb",
86
+ "lib/core/mixin/machine/ssh.rb",
86
87
  "lib/core/mixin/macro/network_settings.rb",
87
88
  "lib/core/mod/facter_loader.rb",
88
89
  "lib/core/mod/fog_aws_server.rb",
@@ -3,6 +3,10 @@ module CORL
3
3
  module Machine
4
4
  class Vagrant < CORL.plugin_class(:machine)
5
5
 
6
+ include Mixin::Machine::SSH
7
+
8
+ #---
9
+
6
10
  @@lock = Mutex.new
7
11
 
8
12
  #-----------------------------------------------------------------------------
@@ -101,56 +105,25 @@ class Vagrant < CORL.plugin_class(:machine)
101
105
 
102
106
  #---
103
107
 
104
- def download(remote_path, local_path, options = {})
108
+ def download(remote_path, local_path, options = {}, &code)
105
109
  super do |config, success|
106
- begin
107
- if init_ssh_session
108
- Util::SSH.download(node.public_ip, node.user, remote_path, local_path, config.export) do |name, received, total|
109
- yield(name, received, total) if block_given?
110
- end
111
- true
112
- else
113
- false
114
- end
115
- rescue Exception => error
116
- ui.error(error.message)
117
- false
118
- end
110
+ ssh_download(remote_path, local_path, config, &code)
119
111
  end
120
112
  end
121
113
 
122
114
  #---
123
115
 
124
- def upload(local_path, remote_path, options = {})
116
+ def upload(local_path, remote_path, options = {}, &code)
125
117
  super do |config, success|
126
- begin
127
- if init_ssh_session
128
- Util::SSH.upload(node.public_ip, node.user, local_path, remote_path, config.export) do |name, sent, total|
129
- yield(name, sent, total) if block_given?
130
- end
131
- true
132
- else
133
- false
134
- end
135
- rescue Exception => error
136
- ui.error(error.message)
137
- false
138
- end
118
+ ssh_upload(local_path, remote_path, config, &code)
139
119
  end
140
120
  end
141
121
 
142
122
  #---
143
123
 
144
- def exec(commands, options = {})
145
- super do |config, results|
146
- if init_ssh_session
147
- results = Util::SSH.exec(node.public_ip, node.user, commands) do |type, command, data|
148
- yield(type, command, data) if block_given?
149
- end
150
- else
151
- results = nil
152
- end
153
- results
124
+ def exec(commands, options = {}, &code)
125
+ super do |config|
126
+ ssh_exec(commands, config, &code)
154
127
  end
155
128
  end
156
129
 
@@ -158,7 +131,7 @@ class Vagrant < CORL.plugin_class(:machine)
158
131
 
159
132
  def terminal(user, options = {})
160
133
  super do |config|
161
- Util::SSH.terminal(node.public_ip, user, config.export)
134
+ ssh_terminal(user, config)
162
135
  end
163
136
  end
164
137
 
@@ -203,7 +176,7 @@ class Vagrant < CORL.plugin_class(:machine)
203
176
  load
204
177
  end
205
178
 
206
- rescue Exception => error
179
+ rescue => error
207
180
  ui.error(error.message)
208
181
  success = false
209
182
  end
@@ -332,7 +305,7 @@ class Vagrant < CORL.plugin_class(:machine)
332
305
 
333
306
  server.send(:action, action.to_sym, params)
334
307
 
335
- rescue Exception => error
308
+ rescue => error
336
309
  ui.error(error)
337
310
  ui.error(Util::Data.to_yaml(error.backtrace))
338
311
  success = false
@@ -341,34 +314,6 @@ class Vagrant < CORL.plugin_class(:machine)
341
314
  success
342
315
  end
343
316
  protected :run
344
-
345
- #---
346
-
347
- def init_ssh_session(reset = false, tries = 5, sleep_secs = 5)
348
- success = true
349
-
350
- begin
351
- Util::SSH.session(node.public_ip, node.user, node.ssh_port, node.private_key, reset)
352
-
353
- rescue Exception => error
354
- if tries > 1
355
- sleep(sleep_secs)
356
-
357
- tries -= 1
358
- reset = true
359
- retry
360
- else
361
- success = false
362
- end
363
- end
364
- success
365
- end
366
-
367
- #---
368
-
369
- def close_ssh_session
370
- Util::SSH.close_session(node.public_ip, node.user)
371
- end
372
317
  end
373
318
  end
374
319
  end
data/lib/core/facade.rb CHANGED
@@ -22,9 +22,16 @@ module Facade
22
22
 
23
23
  #---
24
24
 
25
+ @@vagrant_config_loaded = false
26
+
27
+ def vagrant_config_loaded?
28
+ @@vagrant_config_loaded
29
+ end
30
+
25
31
  def vagrant_config(directory, config, &code)
26
32
  require File.join(File.dirname(__FILE__), 'vagrant', 'config.rb')
27
33
  Vagrant::Config.register(directory, config, &code)
34
+ @@vagrant_config_loaded = true
28
35
  end
29
36
 
30
37
  #-----------------------------------------------------------------------------
@@ -0,0 +1,118 @@
1
+ module CORL
2
+ module Mixin
3
+ module Machine
4
+ module SSH
5
+
6
+ #-----------------------------------------------------------------------------
7
+ # SSH Operations
8
+
9
+ def init_ssh_session(reset = false, tries = 5, sleep_secs = 5)
10
+ ssh_wait_for_ready
11
+
12
+ success = true
13
+
14
+ begin
15
+ Util::SSH.session(node.public_ip, node.user, node.ssh_port, node.private_key, reset)
16
+
17
+ rescue Net::SSH::HostKeyMismatch => error
18
+ error.remember_host!
19
+ sleep 0.2
20
+ reset = true
21
+ retry
22
+
23
+ rescue Net::SSH::ConnectionTimeout, Net::SSH::Disconnect => error
24
+ if tries > 1
25
+ sleep(sleep_secs)
26
+
27
+ tries -= 1
28
+ reset = true
29
+ retry
30
+ else
31
+ success = false
32
+ end
33
+
34
+ rescue => error
35
+ ui.warn(error)
36
+ success = false
37
+ end
38
+ success
39
+ end
40
+
41
+ #---
42
+
43
+ def ssh_download(remote_path, local_path, options = {}, &code)
44
+ config = Config.ensure(options)
45
+ success = false
46
+
47
+ begin
48
+ if init_ssh_session
49
+ Util::SSH.download(node.public_ip, node.user, remote_path, local_path, config.export) do |name, received, total|
50
+ code.call(name, received, total) if code
51
+ end
52
+ success = true
53
+ end
54
+ rescue => error
55
+ ui.error(error.message)
56
+ end
57
+
58
+ success
59
+ end
60
+
61
+ #---
62
+
63
+ def ssh_upload(local_path, remote_path, options = {}, &code)
64
+ config = Config.ensure(options)
65
+ success = false
66
+
67
+ begin
68
+ if init_ssh_session
69
+ Util::SSH.upload(node.public_ip, node.user, local_path, remote_path, config.export) do |name, sent, total|
70
+ code.call(name, sent, total) if code
71
+ end
72
+ success = true
73
+ end
74
+ rescue => error
75
+ ui.error(error.message)
76
+ end
77
+
78
+ success
79
+ end
80
+
81
+ #---
82
+
83
+ def ssh_exec(commands, options = {}, &code)
84
+ config = Config.ensure(options)
85
+ results = nil
86
+
87
+ if commands
88
+ if init_ssh_session
89
+ results = Util::SSH.exec(node.public_ip, node.user, commands) do |type, command, data|
90
+ code.call(type, command, data) if code
91
+ end
92
+ end
93
+ end
94
+ results
95
+ end
96
+
97
+ #---
98
+
99
+ def close_ssh_session
100
+ Util::SSH.close_session(node.public_ip, node.user)
101
+ end
102
+
103
+ #---
104
+
105
+ def ssh_terminal(user, options = {})
106
+ Util::SSH.terminal(node.public_ip, user, Config.ensure(options).export)
107
+ end
108
+
109
+ #-----------------------------------------------------------------------------
110
+ # Utilities
111
+
112
+ def ssh_wait_for_ready
113
+ # Override in class if needed (see Fog Machine provider)
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -22,13 +22,19 @@ class Server
22
22
  Nucleon::Util::SSH.session(ssh_ip_address, username, ssh_port, private_key_path, true)
23
23
  results = Nucleon::Util::SSH.exec(ssh_ip_address, username, commands)
24
24
 
25
- rescue Exception => error
25
+ rescue Net::SSH::HostKeyMismatch => error
26
+ error.remember_host!
27
+ sleep 0.2
28
+ reset = true
29
+ retry
30
+
31
+ rescue Net::SSH::ConnectionTimeout, Net::SSH::Disconnect => error
26
32
  if tries > 1
27
- sleep(sleep_secs)
33
+ sleep(sleep_secs)
34
+
28
35
  tries -= 1
36
+ reset = true
29
37
  retry
30
- else
31
- raise error
32
38
  end
33
39
  end
34
40
  end
@@ -18,6 +18,7 @@ class Server
18
18
  @password = nil if password_lock
19
19
 
20
20
  Fog::SSH.new(ssh_ip_address, username, credentials).run(commands)
21
+
21
22
  rescue Errno::ECONNREFUSED, Net::SSH::Disconnect
22
23
  sleep(1)
23
24
  retry
@@ -6,6 +6,8 @@ nucleon_require(File.dirname(__FILE__), :machine)
6
6
  module CORL
7
7
  module Machine
8
8
  class Fog < CORL.plugin_class(:machine)
9
+
10
+ include Mixin::Machine::SSH
9
11
 
10
12
  #-----------------------------------------------------------------------------
11
13
  # Checks
@@ -135,10 +137,10 @@ class Fog < CORL.plugin_class(:machine)
135
137
 
136
138
  #---
137
139
 
138
- def create(options = {})
140
+ def create(options = {}, &code)
139
141
  super do |config|
140
142
  if compute
141
- yield(config) if block_given?
143
+ code.call(config) if code
142
144
  myself.server = compute.servers.bootstrap(config.export)
143
145
  end
144
146
  myself.server ? true : false
@@ -147,64 +149,25 @@ class Fog < CORL.plugin_class(:machine)
147
149
 
148
150
  #---
149
151
 
150
- def download(remote_path, local_path, options = {})
152
+ def download(remote_path, local_path, options = {}, &code)
151
153
  super do |config, success|
152
- logger.debug("Executing SCP download to #{local_path} from #{remote_path} on machine #{plugin_name}")
153
-
154
- begin
155
- if init_ssh_session(server)
156
- Util::SSH.download(node.public_ip, node.user, remote_path, local_path, config.export) do |name, received, total|
157
- yield(name, received, total) if block_given?
158
- end
159
- true
160
- else
161
- false
162
- end
163
- rescue Exception => error
164
- ui.error(error.message)
165
- false
166
- end
154
+ ssh_download(remote_path, local_path, config, &code)
167
155
  end
168
156
  end
169
157
 
170
158
  #---
171
159
 
172
- def upload(local_path, remote_path, options = {})
160
+ def upload(local_path, remote_path, options = {}, &code)
173
161
  super do |config, success|
174
- logger.debug("Executing SCP upload from #{local_path} to #{remote_path} on machine #{plugin_name}")
175
-
176
- begin
177
- if init_ssh_session(server)
178
- Util::SSH.upload(node.public_ip, node.user, local_path, remote_path, config.export) do |name, sent, total|
179
- yield(name, sent, total) if block_given?
180
- end
181
- true
182
- else
183
- false
184
- end
185
- rescue Exception => error
186
- ui.error(error.message)
187
- false
188
- end
162
+ ssh_upload(local_path, remote_path, config, &code)
189
163
  end
190
164
  end
191
165
 
192
166
  #---
193
167
 
194
- def exec(commands, options = {})
195
- super do |config, results|
196
- if commands
197
- logger.debug("Executing SSH commands ( #{commands.inspect} ) on machine #{plugin_name}")
198
-
199
- if init_ssh_session(server)
200
- results = Util::SSH.exec(node.public_ip, node.user, commands) do |type, command, data|
201
- yield(type, command, data) if block_given?
202
- end
203
- else
204
- results = nil
205
- end
206
- end
207
- results
168
+ def exec(commands, options = {}, &code)
169
+ super do |config|
170
+ ssh_exec(commands, config, &code)
208
171
  end
209
172
  end
210
173
 
@@ -212,36 +175,27 @@ class Fog < CORL.plugin_class(:machine)
212
175
 
213
176
  def terminal(user, options = {})
214
177
  super do |config|
215
- Util::SSH.terminal(node.public_ip, user, config.export)
178
+ ssh_terminal(user, config)
216
179
  end
217
180
  end
218
181
 
219
182
  #---
220
183
 
221
- def reload(options = {})
184
+ def reload(options = {}, &code)
222
185
  super do |config|
223
- success = false
224
- if server
225
- success = block_given? ? yield(config) : true
226
- success = init_ssh_session(server, true, config.get(:tries, 5), config.get(:sleep_time, 5)) if success
227
- end
228
- success
186
+ success = code ? code.call(config) : true
187
+ success = init_ssh_session(true, config.get(:tries, 5), config.get(:sleep_time, 5)) if success
229
188
  end
230
189
  end
231
190
 
232
191
  #---
233
192
 
234
- def create_image(options = {})
193
+ def create_image(options = {}, &code)
235
194
  super do |config|
236
- success = false
237
- if server
238
- logger.debug("Imaging machine #{plugin_name}")
239
-
240
- image_name = sprintf("%s (%s)", node.plugin_name, Time.now.to_s)
241
- success = yield(image_name, config, success) if block_given? # Implement in sub classes
242
- success = init_ssh_session(server, true, config.get(:tries, 5), config.get(:sleep_time, 5)) if success
243
- end
244
- success
195
+ image_name = sprintf("%s (%s)", node.plugin_name, Time.now.to_s)
196
+
197
+ success = code ? code.call(image_name, config, success) : true
198
+ success = init_ssh_session(true, config.get(:tries, 5), config.get(:sleep_time, 5)) if success
245
199
  end
246
200
  end
247
201
 
@@ -249,27 +203,18 @@ class Fog < CORL.plugin_class(:machine)
249
203
 
250
204
  def stop(options = {})
251
205
  super do |config|
252
- success = true
253
- if server && create_image(config)
254
- logger.debug("Stopping machine #{plugin_name}")
255
- success = destroy(config.import({ :stop => true }))
256
- else
257
- success = false
258
- end
259
- success
206
+ success = false
207
+ success = destroy(config.import({ :stop => true })) if create_image(config)
260
208
  end
261
209
  end
262
210
 
263
211
  #---
264
212
 
265
- def destroy(options = {})
213
+ def destroy(options = {}, &code)
266
214
  super do |config|
267
- success = false
268
- if server
269
- logger.debug("Destroying machine #{plugin_name}")
270
- success = server.destroy
271
- success = yield(config) if success && block_given?
272
- end
215
+ success = server.destroy
216
+ success = code.call(config) if success && code
217
+
273
218
  close_ssh_session if success
274
219
  success
275
220
  end
@@ -278,32 +223,8 @@ class Fog < CORL.plugin_class(:machine)
278
223
  #-----------------------------------------------------------------------------
279
224
  # Utilities
280
225
 
281
- def init_ssh_session(server, reset = false, tries = 5, sleep_secs = 5)
226
+ def ssh_wait_for_ready
282
227
  server.wait_for { ready? }
283
-
284
- success = true
285
-
286
- begin
287
- Util::SSH.session(node.public_ip, node.user, node.ssh_port, node.private_key, reset)
288
-
289
- rescue Exception => error
290
- if tries > 1
291
- sleep(sleep_secs)
292
-
293
- tries -= 1
294
- reset = true
295
- retry
296
- else
297
- success = false
298
- end
299
- end
300
- success
301
- end
302
-
303
- #---
304
-
305
- def close_ssh_session
306
- Util::SSH.close_session(node.public_ip, node.user)
307
228
  end
308
229
  end
309
230
  end
@@ -151,7 +151,7 @@ class Machine < CORL.plugin_class(:base)
151
151
  results = []
152
152
 
153
153
  if running?
154
- logger.debug("Executing commands on #{plugin_provider} machine with: #{options.inspect}")
154
+ logger.info("Executing commands ( #{commands.inspect} ) on machine #{plugin_name}")
155
155
  config = Config.ensure(options)
156
156
  results = yield(config, results) if block_given?
157
157
  else
@@ -363,10 +363,10 @@ class Node < CORL.plugin_class(:base)
363
363
  end
364
364
  end
365
365
 
366
+ myself.build_time = Time.now.to_s if success
367
+
366
368
  if success && config.delete(:save, true)
367
- ui.success("Saving successful build")
368
-
369
- myself.build_time = Time.now.to_s
369
+ ui.success("Saving successful build")
370
370
 
371
371
  success = save(extended_config(:build, {
372
372
  :message => config.get(:message, "Built #{plugin_provider} node: #{plugin_name}"),
@@ -611,15 +611,21 @@ class Node < CORL.plugin_class(:base)
611
611
  end
612
612
 
613
613
  if commands = config.get(:commands, nil)
614
- results = active_machine.exec(commands, config.export) do |type, command, data|
615
- unless local?
616
- if type == :error
617
- alert(filter_output(type, data))
618
- else
619
- render(filter_output(type, data))
614
+ begin
615
+ test = active_machine.exec(commands, config.export) do |type, command, data|
616
+ unless local?
617
+ if type == :error
618
+ alert(filter_output(type, data))
619
+ else
620
+ render(filter_output(type, data))
621
+ end
620
622
  end
623
+ yield(:progress, { :type => type, :command => command, :data => data }) if block_given?
621
624
  end
622
- yield(:progress, { :type => type, :command => command, :data => data }) if block_given?
625
+ results = test if test
626
+
627
+ rescue Exception => error
628
+ default_error.append_errors(error.message)
623
629
  end
624
630
  else
625
631
  default_error.append_errors("No execution command")
@@ -884,7 +890,7 @@ class Node < CORL.plugin_class(:base)
884
890
  success = save(config) if success
885
891
 
886
892
  if success
887
- if bootstrap_script = myself[:bootstrap]
893
+ if config.get(:bootstrap, true) && bootstrap_script
888
894
  result = command("HOSTNAME='#{hostname}' #{bootstrap_script}", { :as_admin => true }) do |op, data|
889
895
  yield("bootstrap_#{op}".to_sym, data) if block_given?
890
896
  data
@@ -107,7 +107,7 @@ class Provisioner < CORL.plugin_class(:base)
107
107
  def build_locations(reset = false)
108
108
  locations = cache_setting(:build_locations, {}, :hash)
109
109
  build if reset || locations.empty?
110
- cache_setting(:build_locations, {}, :hash)
110
+ symbol_map(cache_setting(:build_locations, {}, :hash))
111
111
  end
112
112
 
113
113
  #---
@@ -115,7 +115,7 @@ class Provisioner < CORL.plugin_class(:base)
115
115
  def build_info(reset = false)
116
116
  info = cache_setting(:build_info, {}, :hash)
117
117
  build if reset || info.empty?
118
- cache_setting(:build_info, {}, :hash)
118
+ symbol_map(cache_setting(:build_info, {}, :hash))
119
119
  end
120
120
 
121
121
  #---
@@ -13,6 +13,17 @@ class BaseAction
13
13
  @network = nil
14
14
  @node = nil
15
15
  @vm = nil
16
+
17
+ if @corl_config_loaded = ::CORL.vagrant_config_loaded?
18
+ # Hackish solution to ensure our code has access to Vagrant machines.
19
+ # This serves as a Vagrant VM manager.
20
+ ::CORL::Vagrant.command = Command::Launcher.new([], @env)
21
+
22
+ if @network = ::CORL::Vagrant::Config.load_network(env[:root_path])
23
+ @vm = env[:machine]
24
+ @node = network.node(:vagrant, @vm.name) if @vm
25
+ end
26
+ end
16
27
  end
17
28
 
18
29
  #-----------------------------------------------------------------------------
@@ -24,15 +35,7 @@ class BaseAction
24
35
  # Action execution
25
36
 
26
37
  def call(env)
27
- # Hackish solution to ensure our code has access to Vagrant machines.
28
- # This serves as a Vagrant VM manager.
29
- ::CORL::Vagrant.command = Command::Launcher.new([], @env)
30
-
31
- if @network = ::CORL::Vagrant::Config.load_network(env[:root_path])
32
- @vm = env[:machine]
33
- @node = network.node(:vagrant, @vm.name) if @vm
34
- yield if block_given? && @node
35
- end
38
+ yield if block_given? && @corl_config_loaded && @network && @node
36
39
  end
37
40
  end
38
41
  end
@@ -19,17 +19,17 @@ class CORL < ::Vagrant.plugin("2", :config)
19
19
  @root_user = UNSET_VALUE
20
20
  @root_home = UNSET_VALUE
21
21
 
22
- @bootstrap = false
22
+ @bootstrap = UNSET_VALUE
23
23
  @bootstrap_path = UNSET_VALUE
24
24
  @bootstrap_glob = UNSET_VALUE
25
25
  @bootstrap_init = UNSET_VALUE
26
26
  @auth_files = UNSET_VALUE
27
27
 
28
- @seed = false
28
+ @seed = UNSET_VALUE
29
29
  @project_reference = UNSET_VALUE
30
30
  @project_branch = UNSET_VALUE
31
31
 
32
- @provision = true
32
+ @provision = UNSET_VALUE
33
33
  @dry_run = false
34
34
  end
35
35
 
@@ -43,13 +43,17 @@ class CORL < ::Vagrant.plugin("2", :config)
43
43
  @root_user = nil if @root_user == UNSET_VALUE
44
44
  @root_home = nil if @root_home == UNSET_VALUE
45
45
 
46
+ @bootstrap = nil if @bootstrap == UNSET_VALUE
46
47
  @bootstrap_path = nil if @bootstrap_path == UNSET_VALUE
47
48
  @bootstrap_glob = nil if @bootstrap_glob == UNSET_VALUE
48
49
  @bootstrap_init = nil if @bootstrap_init == UNSET_VALUE
49
50
  @auth_files = nil if @auth_files == UNSET_VALUE
50
51
 
52
+ @seed = nil if @seed == UNSET_VALUE
51
53
  @project_reference = nil if @project_reference == UNSET_VALUE
52
54
  @project_branch = nil if @project_branch == UNSET_VALUE
55
+
56
+ @provision = nil if @provision == UNSET_VALUE
53
57
  end
54
58
 
55
59
  #-----------------------------------------------------------------------------
@@ -32,7 +32,7 @@ class CORL < ::Vagrant.plugin("2", :provisioner)
32
32
 
33
33
  if network && node
34
34
  # Provision the server
35
- network.init_node(node, clean(::CORL.config(:vagrant_node_init, {
35
+ success = network.init_node(node, clean(::CORL.config(:vagrant_node_init, {
36
36
  :force => config.force_updates,
37
37
  :home => config.user_home,
38
38
  :home_env_var => config.user_home_env_var,
@@ -49,6 +49,8 @@ class CORL < ::Vagrant.plugin("2", :provisioner)
49
49
  :provision => config.provision,
50
50
  :dry_run => config.dry_run
51
51
  }).export))
52
+
53
+ node.ui.warn("CORL provisioner failed") unless success
52
54
  end
53
55
  end
54
56
  end
data/lib/corl.rb CHANGED
@@ -13,15 +13,16 @@
13
13
  #-------------------------------------------------------------------------------
14
14
  # Top level properties
15
15
 
16
- lib_dir = File.dirname(__FILE__)
17
- core_dir = File.join(lib_dir, 'core')
18
- mod_dir = File.join(core_dir, 'mod')
19
- mixin_dir = File.join(core_dir, 'mixin')
20
- mixin_action_dir = File.join(mixin_dir, 'action')
21
- macro_dir = File.join(mixin_dir, 'macro')
22
- util_dir = File.join(core_dir, 'util')
23
- mod_dir = File.join(core_dir, 'mod')
24
- vagrant_dir = File.join(core_dir, 'vagrant')
16
+ lib_dir = File.dirname(__FILE__)
17
+ core_dir = File.join(lib_dir, 'core')
18
+ mod_dir = File.join(core_dir, 'mod')
19
+ mixin_dir = File.join(core_dir, 'mixin')
20
+ mixin_action_dir = File.join(mixin_dir, 'action')
21
+ mixin_machine_dir = File.join(mixin_dir, 'machine')
22
+ macro_dir = File.join(mixin_dir, 'macro')
23
+ util_dir = File.join(core_dir, 'util')
24
+ mod_dir = File.join(core_dir, 'mod')
25
+ vagrant_dir = File.join(core_dir, 'vagrant')
25
26
 
26
27
  #-------------------------------------------------------------------------------
27
28
  # CORL requirements
@@ -59,6 +60,9 @@ end
59
60
  Dir.glob(File.join(mixin_action_dir, '*.rb')).each do |file|
60
61
  require file
61
62
  end
63
+ Dir.glob(File.join(mixin_machine_dir, '*.rb')).each do |file|
64
+ require file
65
+ end
62
66
  Dir.glob(File.join(macro_dir, '*.rb')).each do |file|
63
67
  require file
64
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.20
4
+ version: 0.4.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Webb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-25 00:00:00.000000000 Z
11
+ date: 2014-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nucleon
@@ -263,6 +263,7 @@ files:
263
263
  - lib/core/facade.rb
264
264
  - lib/core/mixin/action/keypair.rb
265
265
  - lib/core/mixin/lookup.rb
266
+ - lib/core/mixin/machine/ssh.rb
266
267
  - lib/core/mixin/macro/network_settings.rb
267
268
  - lib/core/mod/facter_loader.rb
268
269
  - lib/core/mod/fog_aws_server.rb