kitchen-dokken 2.20.0 → 2.20.1

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
  SHA256:
3
- metadata.gz: 7968068f2971454ab8aae38e6a448c513bb094b908fdbd98272b545ed4eb84ed
4
- data.tar.gz: cff7edf63103c4337eddd245b1ee8a247516c1cb67c45d14747e143b652d1522
3
+ metadata.gz: ac52c253c019253b9fe2cffdbf603ce33647e51aacb8376ae775b2158ed0ca5e
4
+ data.tar.gz: be18132016e30bae541416a33e88846d2e1a9cb72849fe3fb80d9a0b1c0941a6
5
5
  SHA512:
6
- metadata.gz: 3b82a6d24f3ceb8619c8ee4ac3b0f72156efa678dead489fbe812ae3bb8114a864a89ed794aa70dd0a5e7d0f94daf7cd7cdabbca69302c8df0f1ef9f9e4af2a3
7
- data.tar.gz: be4ebb93a209623830ec4333d82dd82d845ae1e5077c65a60a5bb771665eef897d97d8c84536e21c498a2ef6722357cacd40d0e7691ce9ba852a624a8edd774b
6
+ metadata.gz: 01f86365eecc3ad220c0ac09e561b76fd85d47de80447ef60234ab21e0ca00549fc88b13771a1328398953c47a87cab2ee5cfddcca32b0fb1e8186ee34ba1d7e
7
+ data.tar.gz: dab5b5621092142df080ed34ad3d73449964c067ed65600cc45efed62b527da41e40da3e13c20915d07d0e0cf7c96a4a602b3cfd6efaf2b06e47b100841f67be
@@ -236,22 +236,10 @@ module Kitchen
236
236
  [image_prefix, instance_name].compact.join("/").downcase
237
237
  end
238
238
 
239
- def dokken_binds
240
- ret = []
241
- ret << "#{dokken_kitchen_sandbox}:/opt/kitchen" unless dokken_kitchen_sandbox.nil? || remote_docker_host? || running_inside_docker?
242
- ret << "#{dokken_verifier_sandbox}:/opt/verifier" unless dokken_verifier_sandbox.nil? || remote_docker_host? || running_inside_docker?
243
- ret << Array(config[:binds]) unless config[:binds].nil?
244
- ret.flatten
245
- end
246
-
247
239
  def dokken_tmpfs
248
240
  coerce_tmpfs(config[:tmpfs])
249
241
  end
250
242
 
251
- def dokken_volumes
252
- coerce_volumes(config[:volumes])
253
- end
254
-
255
243
  def coerce_tmpfs(v)
256
244
  case v
257
245
  when Hash, nil
@@ -264,7 +252,14 @@ module Kitchen
264
252
  end
265
253
  end
266
254
 
267
- def coerce_volumes(v)
255
+ def dokken_volumes_from
256
+ ret = []
257
+ ret << chef_container_name
258
+ ret << data_container_name if remote_docker_host? || running_inside_docker?
259
+ ret
260
+ end
261
+
262
+ def coerce_volumes(v, binds)
268
263
  case v
269
264
  when PartialHash, nil
270
265
  v
@@ -272,29 +267,38 @@ module Kitchen
272
267
  PartialHash[v]
273
268
  else
274
269
  b = []
275
- v = Array(v).to_a # in case v.is_A?(Chef::Node::ImmutableArray)
276
270
  v.delete_if do |x|
277
271
  parts = x.split(":")
278
272
  b << x if parts.length > 1
279
273
  end
280
274
  b = nil if b.empty?
281
- config[:binds].push(b) unless config[:binds].include?(b) || b.nil?
275
+ binds.push(b) unless binds.include?(b) || b.nil?
282
276
  return PartialHash.new if v.empty?
283
277
 
284
278
  v.each_with_object(PartialHash.new) { |volume, h| h[volume] = {} }
285
279
  end
286
280
  end
287
281
 
288
- def dokken_volumes_from
289
- ret = []
290
- ret << chef_container_name
291
- ret << data_container_name if remote_docker_host? || running_inside_docker?
292
- ret
282
+ def calc_volumes_binds
283
+ volumes = Array.new(Array(config[:volumes]))
284
+ binds = Array.new(Array(config[:binds]))
285
+
286
+ # Binds is mutated in-place, volumes *may* be.
287
+ volumes = coerce_volumes(volumes, binds)
288
+
289
+ binds_ret = []
290
+ binds_ret << "#{dokken_kitchen_sandbox}:/opt/kitchen" unless dokken_kitchen_sandbox.nil? || remote_docker_host? || running_inside_docker?
291
+ binds_ret << "#{dokken_verifier_sandbox}:/opt/verifier" unless dokken_verifier_sandbox.nil? || remote_docker_host? || running_inside_docker?
292
+ binds_ret << binds unless binds.nil?
293
+
294
+ [volumes, binds_ret.flatten]
293
295
  end
294
296
 
295
297
  def start_runner_container(state)
296
298
  debug "driver - starting #{runner_container_name}"
297
299
 
300
+ volumes, binds = calc_volumes_binds
301
+
298
302
  config = {
299
303
  "name" => runner_container_name,
300
304
  "Cmd" => Shellwords.shellwords(self[:pid_one_command]),
@@ -303,11 +307,11 @@ module Kitchen
303
307
  "Hostname" => self[:hostname],
304
308
  "Env" => self[:env],
305
309
  "ExposedPorts" => exposed_ports,
306
- "Volumes" => dokken_volumes,
310
+ "Volumes" => volumes,
307
311
  "HostConfig" => {
308
312
  "Privileged" => self[:privileged],
309
313
  "VolumesFrom" => dokken_volumes_from,
310
- "Binds" => dokken_binds,
314
+ "Binds" => binds,
311
315
  "Dns" => self[:dns],
312
316
  "DnsSearch" => self[:dns_search],
313
317
  "Links" => Array(self[:links]),
@@ -319,14 +323,16 @@ module Kitchen
319
323
  "Tmpfs" => dokken_tmpfs,
320
324
  "Memory" => self[:memory_limit],
321
325
  },
322
- "NetworkingConfig" => {
326
+ }
327
+ unless %w{host bridge}.include?(self[:network_mode])
328
+ config["NetworkingConfig"] = {
323
329
  "EndpointsConfig" => {
324
330
  self[:network_mode] => {
325
331
  "Aliases" => Array(self[:hostname]).concat(Array(self[:hostname_aliases])),
326
332
  },
327
333
  },
328
- },
329
- }
334
+ }
335
+ end
330
336
  unless self[:entrypoint].to_s.empty?
331
337
  config["Entrypoint"] = self[:entrypoint]
332
338
  end
@@ -360,19 +366,23 @@ module Kitchen
360
366
  "PublishAllPorts" => true,
361
367
  "NetworkMode" => "bridge",
362
368
  },
363
- "NetworkingConfig" => {
369
+ }
370
+ unless %w{host bridge}.include?(self[:network_mode])
371
+ config["NetworkingConfig"] = {
364
372
  "EndpointsConfig" => {
365
373
  self[:network_mode] => {
366
374
  "Aliases" => Array(self[:hostname]),
367
375
  },
368
376
  },
369
- },
370
- }
377
+ }
378
+ end
371
379
  data_container = run_container(config)
372
380
  state[:data_container] = data_container.json
373
381
  end
374
382
 
375
383
  def make_dokken_network
384
+ return unless self[:network_mode] == "dokken"
385
+
376
386
  lockfile = Lockfile.new "#{home_dir}/.dokken-network.lock"
377
387
  begin
378
388
  lockfile.lock
@@ -18,6 +18,6 @@
18
18
  module Kitchen
19
19
  module Driver
20
20
  # Version string for Dokken Kitchen driver
21
- DOKKEN_VERSION = "2.20.0".freeze
21
+ DOKKEN_VERSION = "2.20.1".freeze
22
22
  end
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-dokken
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.20.0
4
+ version: 2.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean OMeara