kitchen-dokken 2.13.0 → 2.17.0
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 +23 -2
- data/lib/kitchen/driver/dokken_version.rb +1 -1
- data/lib/kitchen/helpers.rb +16 -0
- data/lib/kitchen/transport/dokken.rb +4 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0b2d590af89b1fde3cb1a0d5a5d681abbd377462aaa0cde0b2b7809802db21e1
|
|
4
|
+
data.tar.gz: 92983e5510abd9b522fc7a046d62d56637f56c321504ad5d0691f21e8e2db4dd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fa71281c52fc0e3004fd5a243e9c595a76648a5038d0fa8f2bb842a05d4b9ea34c2c7666b48d297882243241687d837eeae04fc8a75f33a98dfa50971e252f41
|
|
7
|
+
data.tar.gz: 722f40d25fc652b26c353a81262d769ebfff3159317b38b7f7c1f8111fd8585d335970261646dd4092fad3aa6d860698f116ca5f71946f2ebaa1b97700bbffbc
|
|
@@ -50,6 +50,8 @@ module Kitchen
|
|
|
50
50
|
default_config :hostname, "dokken"
|
|
51
51
|
default_config :hostname_aliases, nil
|
|
52
52
|
default_config :image_prefix, nil
|
|
53
|
+
default_config :ipv6, false
|
|
54
|
+
default_config :ipv6_subnet, "2001:db8:1::/64" # "2001:db8::/32 Range reserved for documentation"
|
|
53
55
|
default_config :links, nil
|
|
54
56
|
default_config :memory_limit, 0
|
|
55
57
|
default_config :network_mode, "dokken"
|
|
@@ -64,9 +66,13 @@ module Kitchen
|
|
|
64
66
|
default_config :userns_host, false
|
|
65
67
|
default_config :volumes, nil
|
|
66
68
|
default_config :write_timeout, 3600
|
|
69
|
+
default_config :creds_file, nil
|
|
67
70
|
|
|
68
71
|
# (see Base#create)
|
|
69
72
|
def create(state)
|
|
73
|
+
# Authenticate the private registry
|
|
74
|
+
authenticate!
|
|
75
|
+
|
|
70
76
|
# image to config
|
|
71
77
|
pull_platform_image
|
|
72
78
|
|
|
@@ -359,7 +365,7 @@ module Kitchen
|
|
|
359
365
|
with_retries { ::Docker::Network.get("dokken", {}, docker_connection) }
|
|
360
366
|
rescue ::Docker::Error::NotFoundError
|
|
361
367
|
begin
|
|
362
|
-
with_retries { ::Docker::Network.create("dokken",
|
|
368
|
+
with_retries { ::Docker::Network.create("dokken", network_settings) }
|
|
363
369
|
rescue ::Docker::Error => e
|
|
364
370
|
debug "driver - error :#{e}:"
|
|
365
371
|
end
|
|
@@ -408,6 +414,21 @@ module Kitchen
|
|
|
408
414
|
end
|
|
409
415
|
end
|
|
410
416
|
|
|
417
|
+
def authenticate!
|
|
418
|
+
# No need to authenticate if the credentials are empty
|
|
419
|
+
return if docker_creds.empty?
|
|
420
|
+
|
|
421
|
+
::Docker.authenticate! docker_creds
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def docker_creds
|
|
425
|
+
@docker_creds ||= if config[:creds_file]
|
|
426
|
+
JSON.parse(IO.read(config[:creds_file]))
|
|
427
|
+
else
|
|
428
|
+
{}
|
|
429
|
+
end
|
|
430
|
+
end
|
|
431
|
+
|
|
411
432
|
def pull_platform_image
|
|
412
433
|
debug "driver - pulling #{short_image_path(platform_image)}"
|
|
413
434
|
config[:pull_platform_image] ? pull_image(platform_image) : pull_if_missing(platform_image)
|
|
@@ -600,7 +621,7 @@ module Kitchen
|
|
|
600
621
|
original_image = Docker::Image.get(path, {}, docker_connection)
|
|
601
622
|
end
|
|
602
623
|
|
|
603
|
-
new_image = Docker::Image.create({ "fromImage" => path },
|
|
624
|
+
new_image = Docker::Image.create({ "fromImage" => path }, docker_creds, docker_connection)
|
|
604
625
|
|
|
605
626
|
!(original_image && original_image.id.start_with?(new_image.id))
|
|
606
627
|
end
|
data/lib/kitchen/helpers.rb
CHANGED
|
@@ -177,6 +177,21 @@ VOLUME /opt/verifier
|
|
|
177
177
|
coerce_exposed_ports(config[:ports])
|
|
178
178
|
end
|
|
179
179
|
|
|
180
|
+
def network_settings
|
|
181
|
+
if self[:ipv6]
|
|
182
|
+
{
|
|
183
|
+
"EnableIPv6" => true,
|
|
184
|
+
"IPAM" => {
|
|
185
|
+
"Config" => [{
|
|
186
|
+
"Subnet" => self[:ipv6_subnet],
|
|
187
|
+
}],
|
|
188
|
+
},
|
|
189
|
+
}
|
|
190
|
+
else
|
|
191
|
+
{}
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
180
195
|
def port_bindings
|
|
181
196
|
coerce_port_bindings(config[:ports])
|
|
182
197
|
end
|
|
@@ -246,6 +261,7 @@ VOLUME /opt/verifier
|
|
|
246
261
|
end
|
|
247
262
|
|
|
248
263
|
def remote_docker_host?
|
|
264
|
+
return false if config[:docker_info]["OperatingSystem"].include?("Docker Desktop")
|
|
249
265
|
return false if config[:docker_info]["OperatingSystem"].include?("Boot2Docker")
|
|
250
266
|
return true if /^tcp:/.match?(config[:docker_host_url])
|
|
251
267
|
|
|
@@ -69,7 +69,9 @@ module Kitchen
|
|
|
69
69
|
|
|
70
70
|
with_retries { @runner = ::Docker::Container.get(instance_name, {}, docker_connection) }
|
|
71
71
|
with_retries do
|
|
72
|
-
o = @runner.exec(Shellwords.shellwords(command), wait: options[:timeout], "e" => { "TERM" => "xterm" })
|
|
72
|
+
o = @runner.exec(Shellwords.shellwords(command), wait: options[:timeout], "e" => { "TERM" => "xterm" }) do |_stream, chunk|
|
|
73
|
+
logger << chunk
|
|
74
|
+
end
|
|
73
75
|
@exit_code = o[2]
|
|
74
76
|
end
|
|
75
77
|
|
|
@@ -224,6 +226,7 @@ module Kitchen
|
|
|
224
226
|
# @api private
|
|
225
227
|
def connection_options(data)
|
|
226
228
|
opts = {}
|
|
229
|
+
opts[:logger] = logger
|
|
227
230
|
opts[:host_ip_override] = config[:host_ip_override]
|
|
228
231
|
opts[:docker_host_url] = config[:docker_host_url]
|
|
229
232
|
opts[:docker_host_options] = ::Docker.options
|
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.0
|
|
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-12-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: docker-api
|
|
@@ -53,7 +53,7 @@ dependencies:
|
|
|
53
53
|
version: '1.15'
|
|
54
54
|
- - "<"
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
56
|
+
version: '4'
|
|
57
57
|
type: :runtime
|
|
58
58
|
prerelease: false
|
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -63,7 +63,7 @@ dependencies:
|
|
|
63
63
|
version: '1.15'
|
|
64
64
|
- - "<"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: '
|
|
66
|
+
version: '4'
|
|
67
67
|
description: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
|
|
68
68
|
using Chef Infra docker images
|
|
69
69
|
email:
|
|
@@ -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.32
|
|
101
101
|
signing_key:
|
|
102
102
|
specification_version: 4
|
|
103
103
|
summary: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
|