kitchen-dokken 2.17.1 → 2.17.2

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: 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