kitchen-dokken 2.17.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 439fb37e48ca255580cdd6030a23c4c1b4e7934f068673dab400580f74220a36
4
- data.tar.gz: 30bf493770664d64183dda32f620e28c8ce52a101c9a0dff102722bfb9e22f1c
3
+ metadata.gz: f67251f6bccb051c90cfdc31f414a7319d9c915c2cca6a512cb73583488581e1
4
+ data.tar.gz: 3b1a1a6548831088fa4f775ccbb01d3f98e8d357f3495799fc841048668a8eb7
5
5
  SHA512:
6
- metadata.gz: 167d8f6dcee24404a402a7e7949f80acbb8cf6e1ee12cdfe523913dadf5ef17f384b88a49670c8012e471ea2599b8095e13485423cfe67c55d9261cb0fe7191c
7
- data.tar.gz: ea8a6a0462740bab02bdcd0ef0ab2bf2810a3f097523c5f6cb824e8b25cf31a023aefbb3b3fda796b68fa4ea560b3b92281a0f178f882047c86e39b1aad6e8c0
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
@@ -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,35 @@ 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
+ 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
+
432
463
  def pull_platform_image
433
464
  debug "driver - pulling #{short_image_path(platform_image)}"
434
465
  config[:pull_platform_image] ? pull_image(platform_image) : pull_if_missing(platform_image)
@@ -621,7 +652,7 @@ module Kitchen
621
652
  original_image = Docker::Image.get(path, {}, docker_connection)
622
653
  end
623
654
 
624
- new_image = Docker::Image.create({ "fromImage" => path }, docker_creds, docker_connection)
655
+ new_image = Docker::Image.create({ "fromImage" => path }, docker_creds_for_image(image), docker_connection)
625
656
 
626
657
  !(original_image && original_image.id.start_with?(new_image.id))
627
658
  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.1".freeze
21
+ DOKKEN_VERSION = "2.17.2".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.1
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: 2022-06-14 00:00:00.000000000 Z
11
+ date: 2022-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api