kitchen-dokken 2.22.2 → 2.23.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34899c3cabcc8239f2d11817822a7fd1c29100684c52f4a6887561c9d84a0214
4
- data.tar.gz: 896b115bf9b9a93babfbe0e81f4ae54e01cd5c7f453d1bda55e1b8fa208aec85
3
+ metadata.gz: e4e69686630703b779bc03b578cdcf803d91ea59545aa541f11b6862eccef3ce
4
+ data.tar.gz: 30bc3ebd0d513f4a2db27a1c56fb7e6499be7af651b4362c4f8af7027b14b59b
5
5
  SHA512:
6
- metadata.gz: '08c0f94232f396629f6fb960c30bd602bb4b298228a8e9655453580805a5de91dc098d63233cd7f04417af4de9b8a039143474c3f817a7f3b4bec4041a6d965d'
7
- data.tar.gz: c0660187c2a0c3b4165c4e0269fd4ccee9588363e837896a6f5a42f201eb69390a5e013d364729a36d35b0d488d88402b92109660692319517a6ca3242c0ba38
6
+ metadata.gz: 181657bd8d4f7dacd20be693f0e3766da18c2bc0af5917deb58214aeeb2209386383e2972e1502db76ec37881db65aeeb79ed44ad72f929c2498da7b8f211cdc
7
+ data.tar.gz: 990b272f876dde5d523cf71768c0c3c60a4c70466d7efc2b219c039cac99e73ef3c22dfd106a4970fb99fca6b5287829460226390571a03a43d061959165fad9
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.0".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,29 @@ 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
+ def check_license
94
+ name = license_acceptance_id
95
+ version = product_version
96
+ debug("Checking if we need to prompt for license acceptance on product: #{name} version: #{version}.")
97
+
98
+ acceptor = LicenseAcceptance::Acceptor.new(logger: Kitchen.logger, provided: config[:chef_license])
99
+ return unless acceptor.license_required?(name, version)
100
+
101
+ debug("License acceptance required for #{name} version: #{version}. Prompting")
102
+ license_id = acceptor.id_from_mixlib(name)
103
+ begin
104
+ acceptor.check_and_persist(license_id, version.to_s)
105
+ rescue LicenseAcceptance::LicenseNotAcceptedError => e
106
+ error("Cannot converge without accepting the #{e.product.pretty_name} License. Set it in your kitchen.yml or using the CHEF_LICENSE environment variable")
107
+ raise
108
+ end
109
+ config[:chef_license] ||= acceptor.acceptance_value
110
+ end
111
+
82
112
  def validate_config
83
113
  # check if we have an space for the user provided options
84
114
  # 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.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: 2026-02-13 00:00:00.000000000 Z
11
+ date: 2026-05-19 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