kitchen-dokken 2.22.2 → 2.23.1

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: 34899c3cabcc8239f2d11817822a7fd1c29100684c52f4a6887561c9d84a0214
4
- data.tar.gz: 896b115bf9b9a93babfbe0e81f4ae54e01cd5c7f453d1bda55e1b8fa208aec85
3
+ metadata.gz: 2d17cea32434bc8b2b07ab6d5354b1f47462b369a75da4c5f590ea5f5584203f
4
+ data.tar.gz: d35e888e3d94ec39baae9a00bffb3c2d6fb4ec9ca119cff17f0813925bfedc2e
5
5
  SHA512:
6
- metadata.gz: '08c0f94232f396629f6fb960c30bd602bb4b298228a8e9655453580805a5de91dc098d63233cd7f04417af4de9b8a039143474c3f817a7f3b4bec4041a6d965d'
7
- data.tar.gz: c0660187c2a0c3b4165c4e0269fd4ccee9588363e837896a6f5a42f201eb69390a5e013d364729a36d35b0d488d88402b92109660692319517a6ca3242c0ba38
6
+ metadata.gz: 4b7537a361c7b640ba5387e7f2b96037f0ca1225e754743d7f15efcbfbb01ee7d437576d8aa739066e8a2b410d2f202c50ab375c50bd27c656399750681ff5ed
7
+ data.tar.gz: 59ddda252eec17939ef63a3decaaf396fa733eb8021d480d76809033af1480b80eeb681c7f9936fe5b3c0089f78b7fc98cc4e3457c2f57a1303537a119c44c48
data/Gemfile CHANGED
@@ -7,6 +7,8 @@ group :test do
7
7
  gem "csv" # this is a workaround for ruby 3.4 support in inspec-core 6.8.24 and can be removed when a new version of inspec-core is released
8
8
  gem "berkshelf"
9
9
  gem "kitchen-inspec"
10
+ gem "minitest"
11
+ gem "mocha"
10
12
  gem "rake", ">= 11.0"
11
13
  end
12
14
 
data/Rakefile CHANGED
@@ -1,5 +1,16 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
+ require "rake/testtask"
4
+ Rake::TestTask.new(:unit) do |t|
5
+ t.libs.push "lib"
6
+ t.test_files = FileList["spec/**/*_spec.rb"]
7
+ t.verbose = true
8
+ t.warning = false
9
+ end
10
+
11
+ desc "Run all unit tests"
12
+ task test: %i{unit}
13
+
3
14
  begin
4
15
  require "cookstyle/chefstyle"
5
16
  require "rubocop/rake_task"
@@ -10,4 +21,4 @@ rescue LoadError
10
21
  puts "cookstyle/chefstyle is not available. (sudo) gem install cookstyle to do style checking."
11
22
  end
12
23
 
13
- task default: %i{style}
24
+ task default: %i{style test}
@@ -19,6 +19,5 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency "docker-api", ">= 1.33", "< 3"
21
21
  spec.add_dependency "kitchen-omnibus-chef", ">= 1.0"
22
- spec.add_dependency "lockfile", "~> 2.1"
23
22
  spec.add_dependency "test-kitchen", ">= 1.15", "< 5"
24
23
  end
@@ -19,7 +19,6 @@ require "digest" unless defined?(Digest)
19
19
  require "kitchen"
20
20
  require "tmpdir" unless defined?(Dir.mktmpdir)
21
21
  require "docker"
22
- require "lockfile"
23
22
  require "base64" unless defined?(Base64)
24
23
  require_relative "../helpers"
25
24
 
@@ -39,7 +38,14 @@ module Kitchen
39
38
  default_config :cap_add, nil
40
39
  default_config :cap_drop, nil
41
40
  default_config :cgroupns_host, false
42
- default_config :chef_image, "chef/chef"
41
+ default_config :chef_image do |driver|
42
+ case driver.instance.provisioner[:product_name]
43
+ when "cinc"
44
+ "cincproject/cinc"
45
+ else
46
+ "chef/chef"
47
+ end
48
+ end
43
49
  default_config :chef_version, "latest"
44
50
  default_config :data_image, "dokken/kitchen-cache:latest"
45
51
  default_config :data_ssh_port, nil
@@ -398,9 +404,7 @@ module Kitchen
398
404
  def make_dokken_network
399
405
  return unless self[:network_mode] == "dokken"
400
406
 
401
- lockfile = Lockfile.new "#{home_dir}/.dokken-network.lock"
402
- begin
403
- lockfile.lock
407
+ with_file_lock("#{home_dir}/.dokken-network.lock") do
404
408
  with_retries { ::Docker::Network.get("dokken", {}, docker_connection) }
405
409
  rescue ::Docker::Error::NotFoundError
406
410
  begin
@@ -408,8 +412,6 @@ module Kitchen
408
412
  rescue ::Docker::Error => e
409
413
  debug "driver - error :#{e}:"
410
414
  end
411
- ensure
412
- lockfile.unlock
413
415
  end
414
416
  end
415
417
 
@@ -419,9 +421,7 @@ module Kitchen
419
421
  end
420
422
 
421
423
  def create_chef_container(state)
422
- lockfile = Lockfile.new "#{home_dir}/.dokken-#{chef_container_name}.lock"
423
- begin
424
- lockfile.lock
424
+ with_file_lock("#{home_dir}/.dokken-#{chef_container_name}.lock") do
425
425
  with_retries do
426
426
  # TEMPORARY FIX - docker-api 2.0.0 has a buggy Docker::Container.get - use .all instead
427
427
  # https://github.com/swipely/docker-api/issues/566
@@ -448,8 +448,13 @@ module Kitchen
448
448
  rescue ::Docker::Error, StandardError => e
449
449
  raise "driver - #{chef_container_name} failed to create #{e}"
450
450
  end
451
- ensure
452
- lockfile.unlock
451
+ end
452
+ end
453
+
454
+ def with_file_lock(path)
455
+ File.open(path, File::RDWR | File::CREAT, 0o644) do |f|
456
+ f.flock(File::LOCK_EX)
457
+ yield
453
458
  end
454
459
  end
455
460
 
@@ -658,7 +663,8 @@ module Kitchen
658
663
  end
659
664
 
660
665
  def chef_container_name
661
- config[:platform] != "" ? "chef-#{chef_version}-" + config[:platform].sub("/", "-") : "chef-#{chef_version}"
666
+ prefix = instance.provisioner[:product_name] == "cinc" ? "cinc" : "chef"
667
+ config[:platform] != "" ? "#{prefix}-#{chef_version}-" + config[:platform].sub("/", "-") : "#{prefix}-#{chef_version}"
662
668
  end
663
669
 
664
670
  def chef_image
@@ -18,6 +18,6 @@
18
18
  module Kitchen
19
19
  module Driver
20
20
  # Version string for Dokken Kitchen driver
21
- DOKKEN_VERSION = "2.22.2".freeze
21
+ DOKKEN_VERSION = "2.23.1".freeze
22
22
  end
23
23
  end
@@ -30,7 +30,14 @@ module Kitchen
30
30
  plugin_version Kitchen::VERSION
31
31
 
32
32
  default_config :root_path, "/opt/kitchen"
33
- default_config :chef_binary, "/opt/chef/bin/chef-client"
33
+ default_config :chef_binary do |provisioner|
34
+ case provisioner[:product_name]
35
+ when "cinc"
36
+ "/opt/cinc/bin/cinc-client"
37
+ else
38
+ "/opt/chef/bin/chef-client"
39
+ end
40
+ end
34
41
  default_config :chef_options, " -z"
35
42
  default_config :chef_log_level, "warn"
36
43
  default_config :chef_output_format, "doc"
@@ -79,6 +86,39 @@ module Kitchen
79
86
  cleanup_dokken_sandbox if config[:clean_dokken_sandbox] # rubocop: disable Lint/EnsureReturn
80
87
  end
81
88
 
89
+ # Override the parent's check_license to skip the kitchen-omnibus-chef
90
+ # deprecation warning. That warning concerns the omnibus *download*
91
+ # mechanism, which dokken does not use — the chef/cinc binary is
92
+ # mounted from a volume container, not downloaded via omnitruck.
93
+ #
94
+ # When the resolved parent is kitchen-cinc's CincInfra (which rebinds
95
+ # Kitchen::Provisioner::ChefInfra in Cinc Workstation 26+), there is no
96
+ # omnibus warning to suppress, license_acceptance_id is not defined,
97
+ # and the LicenseAcceptance constant is not autoloaded — delegate to
98
+ # super in that case so the parent's own check_license runs. We test
99
+ # for both because a partial drop-in shim may define
100
+ # license_acceptance_id without pulling in license-acceptance.
101
+ def check_license
102
+ return super unless respond_to?(:license_acceptance_id, true) && defined?(LicenseAcceptance)
103
+
104
+ name = license_acceptance_id
105
+ version = product_version
106
+ debug("Checking if we need to prompt for license acceptance on product: #{name} version: #{version}.")
107
+
108
+ acceptor = LicenseAcceptance::Acceptor.new(logger: Kitchen.logger, provided: config[:chef_license])
109
+ return unless acceptor.license_required?(name, version)
110
+
111
+ debug("License acceptance required for #{name} version: #{version}. Prompting")
112
+ license_id = acceptor.id_from_mixlib(name)
113
+ begin
114
+ acceptor.check_and_persist(license_id, version.to_s)
115
+ rescue LicenseAcceptance::LicenseNotAcceptedError => e
116
+ error("Cannot converge without accepting the #{e.product.pretty_name} License. Set it in your kitchen.yml or using the CHEF_LICENSE environment variable")
117
+ raise
118
+ end
119
+ config[:chef_license] ||= acceptor.acceptance_value
120
+ end
121
+
82
122
  def validate_config
83
123
  # check if we have an space for the user provided options
84
124
  # or add it if not to avoid issues
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.22.2
4
+ version: 2.23.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean OMeara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-13 00:00:00.000000000 Z
11
+ date: 2026-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
- - !ruby/object:Gem::Dependency
48
- name: lockfile
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '2.1'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '2.1'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: test-kitchen
63
49
  requirement: !ruby/object:Gem::Requirement