kitchen-dokken 2.12.0 → 2.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kitchen/driver/dokken.rb +53 -25
- data/lib/kitchen/driver/dokken_version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 517d0d0706aed8e8fc5889c874d6817fe65cfa571ba3a7a082d8256f707986cd
|
4
|
+
data.tar.gz: f5beb66dc47d9c4f58022c26af3ce8657c7fae40443eb2d3ee1b5ef2c01f5d0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd3d097a36e249e21f88ea3a1999207f9e45e464a9eb649d10c870d24d4a0705766dfb57df3ced2c82cda4e6cee04d5b53587b36743dbdd887da036d00c5d7c8
|
7
|
+
data.tar.gz: 755b9671c1aa2cbf14a90ddb9c730e3d50d5326a6244f2d8ece875b5bf5b5e9567c3c5f9661cd6cb6a00e6e4ec0594efcd5aa2fe0daf56e0fca7bf78c6a76d61
|
@@ -169,8 +169,10 @@ module Kitchen
|
|
169
169
|
end
|
170
170
|
|
171
171
|
def work_image_dockerfile
|
172
|
+
from = registry_image_path(platform_image)
|
173
|
+
debug("driver - Building work image from #{from}")
|
172
174
|
dockerfile_contents = [
|
173
|
-
"FROM #{
|
175
|
+
"FROM #{from}",
|
174
176
|
"LABEL X-Built-By=kitchen-dokken X-Built-From=#{platform_image}",
|
175
177
|
]
|
176
178
|
Array(config[:intermediate_instructions]).each do |c|
|
@@ -287,7 +289,8 @@ module Kitchen
|
|
287
289
|
config = {
|
288
290
|
"name" => runner_container_name,
|
289
291
|
"Cmd" => Shellwords.shellwords(self[:pid_one_command]),
|
290
|
-
|
292
|
+
# locally built image, must use short-name
|
293
|
+
"Image" => short_image_path(work_image),
|
291
294
|
"Hostname" => self[:hostname],
|
292
295
|
"Env" => self[:env],
|
293
296
|
"ExposedPorts" => exposed_ports,
|
@@ -329,7 +332,8 @@ module Kitchen
|
|
329
332
|
debug "driver - creating #{data_container_name}"
|
330
333
|
config = {
|
331
334
|
"name" => data_container_name,
|
332
|
-
|
335
|
+
# locally built image, must use short-name
|
336
|
+
"Image" => short_image_path(data_image),
|
333
337
|
"HostConfig" => {
|
334
338
|
"PortBindings" => port_bindings,
|
335
339
|
"PublishAllPorts" => true,
|
@@ -352,7 +356,7 @@ module Kitchen
|
|
352
356
|
begin
|
353
357
|
lockfile.lock
|
354
358
|
with_retries { ::Docker::Network.get("dokken", {}, docker_connection) }
|
355
|
-
rescue
|
359
|
+
rescue ::Docker::Error::NotFoundError
|
356
360
|
begin
|
357
361
|
with_retries { ::Docker::Network.create("dokken", {}) }
|
358
362
|
rescue ::Docker::Error => e
|
@@ -388,14 +392,14 @@ module Kitchen
|
|
388
392
|
config = {
|
389
393
|
"name" => chef_container_name,
|
390
394
|
"Cmd" => "true",
|
391
|
-
"Image" =>
|
395
|
+
"Image" => registry_image_path(chef_image),
|
392
396
|
"HostConfig" => {
|
393
397
|
"NetworkMode" => self[:network_mode],
|
394
398
|
},
|
395
399
|
}
|
396
400
|
chef_container = create_container(config)
|
397
401
|
state[:chef_container] = chef_container.json
|
398
|
-
rescue ::Docker::Error => e
|
402
|
+
rescue ::Docker::Error, StandardError => e
|
399
403
|
raise "driver - #{chef_container_name} failed to create #{e}"
|
400
404
|
end
|
401
405
|
ensure
|
@@ -404,12 +408,12 @@ module Kitchen
|
|
404
408
|
end
|
405
409
|
|
406
410
|
def pull_platform_image
|
407
|
-
debug "driver - pulling #{
|
411
|
+
debug "driver - pulling #{short_image_path(platform_image)}"
|
408
412
|
config[:pull_platform_image] ? pull_image(platform_image) : pull_if_missing(platform_image)
|
409
413
|
end
|
410
414
|
|
411
415
|
def pull_chef_image
|
412
|
-
debug "driver - pulling #{
|
416
|
+
debug "driver - pulling #{short_image_path(chef_image)}"
|
413
417
|
config[:pull_chef_image] ? pull_image(chef_image) : pull_if_missing(chef_image)
|
414
418
|
end
|
415
419
|
|
@@ -422,7 +426,7 @@ module Kitchen
|
|
422
426
|
|
423
427
|
def container_exist?(name)
|
424
428
|
return true if ::Docker::Container.get(name, {}, docker_connection)
|
425
|
-
rescue
|
429
|
+
rescue StandardError, ::Docker::Error::NotFoundError
|
426
430
|
false
|
427
431
|
end
|
428
432
|
|
@@ -440,10 +444,45 @@ module Kitchen
|
|
440
444
|
[repo, tag]
|
441
445
|
end
|
442
446
|
|
447
|
+
# Return the 'repo' half of a docker image path. Agnostic about if a
|
448
|
+
# registry is included, this effectively is just "before the colon"
|
449
|
+
#
|
450
|
+
# @param image [String] the docker image path to parse
|
451
|
+
# @return [String] the repo portion of `image`
|
443
452
|
def repo(image)
|
444
453
|
parse_image_name(image)[0]
|
445
454
|
end
|
446
455
|
|
456
|
+
# Return the 'tag' of a docker image path. Will be `latest` if there
|
457
|
+
# is no explicit tag in the image path.
|
458
|
+
#
|
459
|
+
# @param image [String] the docker image path to parse
|
460
|
+
# @return [String] the tag of `image`
|
461
|
+
def tag(image)
|
462
|
+
parse_image_name(image)[1]
|
463
|
+
end
|
464
|
+
|
465
|
+
# Ensures an explicit tag on an image path.
|
466
|
+
#
|
467
|
+
# @param image [String] the docker image path to parse
|
468
|
+
# @return [String] `repo`:`tag`
|
469
|
+
def short_image_path(image)
|
470
|
+
"#{repo(image)}:#{tag(image)}"
|
471
|
+
end
|
472
|
+
|
473
|
+
# Qualifies the results of `short_image_path` with any registry the
|
474
|
+
# user has requested
|
475
|
+
#
|
476
|
+
# @param image [String] the docker image path to parse
|
477
|
+
# @return [String] The most fully-qualified registry path we cn make
|
478
|
+
def registry_image_path(image)
|
479
|
+
if config[:docker_registry]
|
480
|
+
"#{config[:docker_registry]}/#{short_image_path(image)}"
|
481
|
+
else
|
482
|
+
short_image_path(image)
|
483
|
+
end
|
484
|
+
end
|
485
|
+
|
447
486
|
def create_container(args)
|
448
487
|
with_retries { @container = ::Docker::Container.get(args["name"], {}, docker_connection) }
|
449
488
|
rescue
|
@@ -511,10 +550,6 @@ module Kitchen
|
|
511
550
|
end
|
512
551
|
end
|
513
552
|
|
514
|
-
def tag(image)
|
515
|
-
parse_image_name(image)[1]
|
516
|
-
end
|
517
|
-
|
518
553
|
def chef_container_name
|
519
554
|
"chef-#{chef_version}"
|
520
555
|
end
|
@@ -547,7 +582,7 @@ module Kitchen
|
|
547
582
|
end
|
548
583
|
|
549
584
|
def pull_if_missing(image)
|
550
|
-
return if ::Docker::Image.exist?(
|
585
|
+
return if ::Docker::Image.exist?(registry_image_path(image), {}, docker_connection)
|
551
586
|
|
552
587
|
pull_image image
|
553
588
|
end
|
@@ -557,21 +592,14 @@ module Kitchen
|
|
557
592
|
val.sub(%r{https?://}, "").split("/").first
|
558
593
|
end
|
559
594
|
|
560
|
-
def image_path(image)
|
561
|
-
fqimage = "#{repo(image)}:#{tag(image)}"
|
562
|
-
if config[:docker_registry]
|
563
|
-
fqimage = "#{config[:docker_registry]}/#{fqimage}"
|
564
|
-
end
|
565
|
-
fqimage
|
566
|
-
end
|
567
|
-
|
568
595
|
def pull_image(image)
|
596
|
+
path = registry_image_path(image)
|
569
597
|
with_retries do
|
570
|
-
if Docker::Image.exist?(
|
571
|
-
original_image = Docker::Image.get(
|
598
|
+
if Docker::Image.exist?(path, {}, docker_connection)
|
599
|
+
original_image = Docker::Image.get(path, {}, docker_connection)
|
572
600
|
end
|
573
601
|
|
574
|
-
new_image = Docker::Image.create({ "fromImage" =>
|
602
|
+
new_image = Docker::Image.create({ "fromImage" => path }, docker_connection)
|
575
603
|
|
576
604
|
!(original_image && original_image.id.start_with?(new_image.id))
|
577
605
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-dokken
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.12.
|
4
|
+
version: 2.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean OMeara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docker-api
|