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 +4 -4
- data/Gemfile +2 -0
- data/Rakefile +12 -1
- data/kitchen-dokken.gemspec +0 -1
- data/lib/kitchen/driver/dokken.rb +19 -13
- data/lib/kitchen/driver/dokken_version.rb +1 -1
- data/lib/kitchen/provisioner/dokken.rb +31 -1
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4e69686630703b779bc03b578cdcf803d91ea59545aa541f11b6862eccef3ce
|
|
4
|
+
data.tar.gz: 30bc3ebd0d513f4a2db27a1c56fb7e6499be7af651b4362c4f8af7027b14b59b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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}
|
data/kitchen-dokken.gemspec
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
452
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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
|
|
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.
|
|
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-
|
|
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
|