kitchen-dokken 2.17.0 → 2.17.3

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: 0b2d590af89b1fde3cb1a0d5a5d681abbd377462aaa0cde0b2b7809802db21e1
4
- data.tar.gz: 92983e5510abd9b522fc7a046d62d56637f56c321504ad5d0691f21e8e2db4dd
3
+ metadata.gz: ca4a37e299f05169d18ddc09aaf05dac0690c0aaf6ae6d4d19833e4c52bea6da
4
+ data.tar.gz: fbe097fca4cce344f710a8b7821c55512e9c5dd576f7dcd472395a2479a90acb
5
5
  SHA512:
6
- metadata.gz: fa71281c52fc0e3004fd5a243e9c595a76648a5038d0fa8f2bb842a05d4b9ea34c2c7666b48d297882243241687d837eeae04fc8a75f33a98dfa50971e252f41
7
- data.tar.gz: 722f40d25fc652b26c353a81262d769ebfff3159317b38b7f7c1f8111fd8585d335970261646dd4092fad3aa6d860698f116ca5f71946f2ebaa1b97700bbffbc
6
+ metadata.gz: 042aa06968c356ef83782bfa36e1001e38a0aac60b0eb797345e0832b2648c1f56c1f8d734c27884cdd4a07f58145df656738e6b8d8a2afe2abe5d1957a90abd
7
+ data.tar.gz: 9a5ac2a2f805da0306c61edb2e31a7d5b402c83ce037973ac37a9c17d35cd7ca342c549f0406e58992e3382995d61385132b9a095fe3339ec710158d706ed552
@@ -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
@@ -67,6 +68,7 @@ module Kitchen
67
68
  default_config :volumes, nil
68
69
  default_config :write_timeout, 3600
69
70
  default_config :creds_file, nil
71
+ default_config :docker_config_creds, false
70
72
 
71
73
  # (see Base#create)
72
74
  def create(state)
@@ -429,6 +431,39 @@ module Kitchen
429
431
  end
430
432
  end
431
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
+ if ::File.exist?(config_file)
440
+ JSON.load_file!(config_file)["auths"].each do |k, v|
441
+ next if v["auth"].nil?
442
+
443
+ username, password = Base64.decode64(v["auth"]).split(":")
444
+ @docker_config_creds[k] = { serveraddress: k, username: username, password: password }
445
+ end
446
+ else
447
+ debug("~/.docker/config.json does not exist")
448
+ end
449
+
450
+ @docker_config_creds
451
+ end
452
+
453
+ def docker_creds_for_image(image)
454
+ return docker_creds if config[:creds_file]
455
+
456
+ image_registry = image.split("/").first
457
+
458
+ # NOTE: Try to use DockerHub auth if exact registry match isn't found
459
+ default_registry = "https://index.docker.io/v1/"
460
+ if docker_config_creds.key?(image_registry)
461
+ docker_config_creds[image_registry]
462
+ elsif docker_config_creds.key?(default_registry)
463
+ docker_config_creds[default_registry]
464
+ end
465
+ end
466
+
432
467
  def pull_platform_image
433
468
  debug "driver - pulling #{short_image_path(platform_image)}"
434
469
  config[:pull_platform_image] ? pull_image(platform_image) : pull_if_missing(platform_image)
@@ -621,7 +656,7 @@ module Kitchen
621
656
  original_image = Docker::Image.get(path, {}, docker_connection)
622
657
  end
623
658
 
624
- new_image = Docker::Image.create({ "fromImage" => path }, docker_creds, docker_connection)
659
+ new_image = Docker::Image.create({ "fromImage" => path }, docker_creds_for_image(image), docker_connection)
625
660
 
626
661
  !(original_image && original_image.id.start_with?(new_image.id))
627
662
  end
@@ -18,6 +18,6 @@
18
18
  module Kitchen
19
19
  module Driver
20
20
  # Version string for Dokken Kitchen driver
21
- DOKKEN_VERSION = "2.17.0".freeze
21
+ DOKKEN_VERSION = "2.17.3".freeze
22
22
  end
23
23
  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.17.0
4
+ version: 2.17.3
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-12-01 00:00:00.000000000 Z
11
+ date: 2022-07-20 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.32
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