kitchen-dokken 2.16.0 → 2.17.2
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 +4 -4
- data/lib/kitchen/driver/dokken.rb +51 -1
- data/lib/kitchen/driver/dokken_version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f67251f6bccb051c90cfdc31f414a7319d9c915c2cca6a512cb73583488581e1
|
|
4
|
+
data.tar.gz: 3b1a1a6548831088fa4f775ccbb01d3f98e8d357f3495799fc841048668a8eb7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8cd2b0ad664f9cb28fd2788bb7cd41e0ae3316c7b67283be934b37b94d8d85e617bb171d67f1b595183cf533b4820e88ca72fabdb530343c5ba7bfb9b693193d
|
|
7
|
+
data.tar.gz: 1dc14374c7abf5a99de55559ded7537ab5e6e1b97c5f8d69f9724714b90f02f5536991c63da3368c31bfb7aa772609aab6adc48aa3ba09939408805e7321ab97
|
|
@@ -20,6 +20,7 @@ require "kitchen"
|
|
|
20
20
|
require "tmpdir" unless defined?(Dir.mktmpdir)
|
|
21
21
|
require "docker"
|
|
22
22
|
require "lockfile"
|
|
23
|
+
require "base64" unless defined?(Base64)
|
|
23
24
|
require_relative "../helpers"
|
|
24
25
|
|
|
25
26
|
include Dokken::Helpers
|
|
@@ -66,9 +67,14 @@ module Kitchen
|
|
|
66
67
|
default_config :userns_host, false
|
|
67
68
|
default_config :volumes, nil
|
|
68
69
|
default_config :write_timeout, 3600
|
|
70
|
+
default_config :creds_file, nil
|
|
71
|
+
default_config :docker_config_creds, false
|
|
69
72
|
|
|
70
73
|
# (see Base#create)
|
|
71
74
|
def create(state)
|
|
75
|
+
# Authenticate the private registry
|
|
76
|
+
authenticate!
|
|
77
|
+
|
|
72
78
|
# image to config
|
|
73
79
|
pull_platform_image
|
|
74
80
|
|
|
@@ -410,6 +416,50 @@ module Kitchen
|
|
|
410
416
|
end
|
|
411
417
|
end
|
|
412
418
|
|
|
419
|
+
def authenticate!
|
|
420
|
+
# No need to authenticate if the credentials are empty
|
|
421
|
+
return if docker_creds.empty?
|
|
422
|
+
|
|
423
|
+
::Docker.authenticate! docker_creds
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
def docker_creds
|
|
427
|
+
@docker_creds ||= if config[:creds_file]
|
|
428
|
+
JSON.parse(IO.read(config[:creds_file]))
|
|
429
|
+
else
|
|
430
|
+
{}
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
def docker_config_creds
|
|
435
|
+
return @docker_config_creds if @docker_config_creds
|
|
436
|
+
|
|
437
|
+
@docker_config_creds = {}
|
|
438
|
+
config_file = ::File.join(::Dir.home, ".docker", "config.json")
|
|
439
|
+
JSON.load_file!(config_file)["auths"].each do |k, v|
|
|
440
|
+
next if v["auth"].nil?
|
|
441
|
+
|
|
442
|
+
username, password = Base64.decode64(v["auth"]).split(":")
|
|
443
|
+
@docker_config_creds[k] = { serveraddress: k, username: username, password: password }
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
@docker_config_creds
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
def docker_creds_for_image(image)
|
|
450
|
+
return docker_creds if config[:creds_file]
|
|
451
|
+
|
|
452
|
+
image_registry = image.split("/").first
|
|
453
|
+
|
|
454
|
+
# NOTE: Try to use DockerHub auth if exact registry match isn't found
|
|
455
|
+
default_registry = "https://index.docker.io/v1/"
|
|
456
|
+
if docker_config_creds.key?(image_registry)
|
|
457
|
+
docker_config_creds[image_registry]
|
|
458
|
+
elsif docker_config_creds.key?(default_registry)
|
|
459
|
+
docker_config_creds[default_registry]
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
|
|
413
463
|
def pull_platform_image
|
|
414
464
|
debug "driver - pulling #{short_image_path(platform_image)}"
|
|
415
465
|
config[:pull_platform_image] ? pull_image(platform_image) : pull_if_missing(platform_image)
|
|
@@ -602,7 +652,7 @@ module Kitchen
|
|
|
602
652
|
original_image = Docker::Image.get(path, {}, docker_connection)
|
|
603
653
|
end
|
|
604
654
|
|
|
605
|
-
new_image = Docker::Image.create({ "fromImage" => path },
|
|
655
|
+
new_image = Docker::Image.create({ "fromImage" => path }, docker_creds_for_image(image), docker_connection)
|
|
606
656
|
|
|
607
657
|
!(original_image && original_image.id.start_with?(new_image.id))
|
|
608
658
|
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.
|
|
4
|
+
version: 2.17.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sean OMeara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-06-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: docker-api
|
|
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
97
97
|
- !ruby/object:Gem::Version
|
|
98
98
|
version: '0'
|
|
99
99
|
requirements: []
|
|
100
|
-
rubygems_version: 3.2.
|
|
100
|
+
rubygems_version: 3.2.3
|
|
101
101
|
signing_key:
|
|
102
102
|
specification_version: 4
|
|
103
103
|
summary: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
|