test-kitchen 2.1.0 → 2.2.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: 63a2ed29a7b97053ca99c64d49da1b8fdcce272c815b8dc2eca67b19fce036cf
4
- data.tar.gz: 6556c59e7fd4b3aff0a59f47e33bead60693b7b8d5eeca3fc0423878a0a25c3b
3
+ metadata.gz: 2e0456b45cb33179d229ccb9ee34371fdbace78b49ec713848091ef9122310c7
4
+ data.tar.gz: c9bc3d72ca6f8a516b74a8a679a6a37e11e22aec43e3b314a69f77bfe76afc37
5
5
  SHA512:
6
- metadata.gz: 1ccc3660f32de45e297fc5aafacb527b847910bd160f4d5a4f8a67a5067a24cf9db414627a5e745a2a5240f36dde23e14a08b5882c9977cea3bb7f3e573390c6
7
- data.tar.gz: 9c6aae12a10b77808dfcdc9a73ea041fd0bc4f9138cd9a1843e7af92222418dd3ab0bb9ab9187de863a4503bae819f626dcc1885ee48916e662c71e2b4aedd63
6
+ metadata.gz: 3a04ad019828982de7f398baa04af63111131955ce1373761ce9d787590b149a8cc8a0a251255798930541904501737d9d35b6f1fbb057ac13963608826b509c
7
+ data.tar.gz: c6b4e203f029a53295dcc5734d1fbd432ff5bd0817707a674645189bc08e70d83dbb2cc593ea8b0a1dc30fd3f24938cfa4295c539ece0ac4f4031f1e9bb16e88
@@ -70,6 +70,7 @@ module Kitchen
70
70
  def call(state)
71
71
  create_sandbox
72
72
  sandbox_dirs = Util.list_directory(sandbox_path)
73
+ check_license
73
74
 
74
75
  instance.transport.connection(state) do |conn|
75
76
  conn.execute(install_command)
@@ -105,6 +106,12 @@ module Kitchen
105
106
  false
106
107
  end
107
108
 
109
+ # Certain products that Test Kitchen uses to provision require accepting
110
+ # a license to use. Overwrite this method in the specific provisioner
111
+ # to implement this check.
112
+ def check_license
113
+ end
114
+
108
115
  # Generates a command string which will install and configure the
109
116
  # provisioner software on an instance. If no work is required, then `nil`
110
117
  # will be returned.
@@ -107,6 +107,7 @@ module Kitchen
107
107
  "--no-color",
108
108
  ]
109
109
  args << "--logfile #{config[:log_file]}" if config[:log_file]
110
+ args << "--chef-license #{config[:chef_license]}" if config[:chef_license]
110
111
 
111
112
  lines << wrap_shell_code(
112
113
  [cmd, *args].join(" ")
@@ -27,6 +27,7 @@ require "kitchen/provisioner/chef/common_sandbox"
27
27
  require "kitchen/util"
28
28
  require "mixlib/install"
29
29
  require "mixlib/install/script_generator"
30
+ require "license_acceptance/acceptor"
30
31
 
31
32
  begin
32
33
  require "chef-config/config"
@@ -44,6 +45,7 @@ module Kitchen
44
45
  default_config :require_chef_omnibus, true
45
46
  default_config :chef_omnibus_url, "https://omnitruck.chef.io/install.sh"
46
47
  default_config :chef_omnibus_install_options, nil
48
+ default_config :chef_license, nil
47
49
  default_config :run_list, []
48
50
  default_config :attributes, {}
49
51
  default_config :config_path, nil
@@ -243,6 +245,23 @@ module Kitchen
243
245
  end
244
246
  end
245
247
 
248
+ # (see Base#check_license)
249
+ def check_license
250
+ name = config[:product_name]
251
+ version = config[:product_version]
252
+ acceptor = LicenseAcceptance::Acceptor.new(logger: Kitchen.logger, provided: config[:chef_license])
253
+ if acceptor.license_required?(name, version)
254
+ license_name = acceptor.name_from_mixlib(name)
255
+ begin
256
+ acceptor.check_and_persist(license_name, version.to_s)
257
+ rescue LicenseAcceptance::LicenseNotAcceptedError
258
+ error("Cannot converge without accepting the Chef License. Set it in your kitchen.yml or using the CHEF_LICENSE environment variable")
259
+ raise
260
+ end
261
+ config[:chef_license] ||= acceptor.acceptance_value
262
+ end
263
+ end
264
+
246
265
  # (see Base#create_sandbox)
247
266
  def create_sandbox
248
267
  super
@@ -72,7 +72,7 @@ module Kitchen
72
72
  args << "--logfile #{config[:log_file]}" if config[:log_file]
73
73
  args << "--profile-ruby" if config[:profile_ruby]
74
74
  args << "--legacy-mode" if config[:legacy_mode]
75
-
75
+ args << "--chef-license #{config[:chef_license]}" if config[:chef_license]
76
76
  args
77
77
  end
78
78
  end
@@ -82,6 +82,9 @@ module Kitchen
82
82
  args << "--chef-zero-port #{config[:chef_zero_port]}"
83
83
  end
84
84
  args << "--profile-ruby" if config[:profile_ruby]
85
+ if config[:chef_license]
86
+ args << "--chef-license #{config[:chef_license]}"
87
+ end
85
88
  end
86
89
  # rubocop:enable Metrics/CyclomaticComplexity
87
90
 
@@ -17,5 +17,5 @@
17
17
  # limitations under the License.
18
18
 
19
19
  module Kitchen
20
- VERSION = "2.1.0".freeze
20
+ VERSION = "2.2.0".freeze
21
21
  end
data/test-kitchen.gemspec CHANGED
@@ -23,17 +23,20 @@ Gem::Specification.new do |gem|
23
23
 
24
24
  gem.required_ruby_version = ">= 2.3"
25
25
 
26
- gem.add_dependency "mixlib-shellout", ">= 1.2", "< 3.0"
27
- gem.add_dependency "net-scp", ">= 1.1", "< 3.0" # pinning until we can confirm 3+ works
28
- gem.add_dependency "net-ssh", ">= 2.9", "< 6.0" # pinning until we can confirm 6+ works
29
- gem.add_dependency "net-ssh-gateway", ">= 1.2", "< 3.0" # pinning until we can confirm 3+ works
30
- gem.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
31
- gem.add_dependency "bcrypt_pbkdf", "~> 1.0" # ed25519 ssh key support
32
- gem.add_dependency "thor", "~> 0.19"
33
- gem.add_dependency "mixlib-install", "~> 3.6"
34
- gem.add_dependency "winrm", "~> 2.0"
35
- gem.add_dependency "winrm-elevated", "~> 1.0"
36
- gem.add_dependency "winrm-fs", "~> 1.1"
26
+ gem.add_dependency "mixlib-shellout", ">= 1.2", "< 3.0"
27
+ gem.add_dependency "net-scp", ">= 1.1", "< 3.0" # pinning until we can confirm 3+ works
28
+ gem.add_dependency "net-ssh", ">= 2.9", "< 6.0" # pinning until we can confirm 6+ works
29
+ gem.add_dependency "net-ssh-gateway", ">= 1.2", "< 3.0" # pinning until we can confirm 3+ works
30
+ gem.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
31
+ gem.add_dependency "bcrypt_pbkdf", "~> 1.0" # ed25519 ssh key support
32
+ gem.add_dependency "thor", "~> 0.19"
33
+ gem.add_dependency "mixlib-install", "~> 3.6"
34
+ gem.add_dependency "winrm", "~> 2.0"
35
+ gem.add_dependency "winrm-elevated", "~> 1.0"
36
+ gem.add_dependency "winrm-fs", "~> 1.1"
37
+ # Required to run the Chef provisioner local license check for remote systems
38
+ # TK is not under Chef EULA
39
+ gem.add_dependency "license-acceptance", ">= 0.2.16", "< 2.0"
37
40
 
38
41
  gem.add_development_dependency "rb-readline"
39
42
  gem.add_development_dependency "bundler"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-kitchen
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Nichol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-18 00:00:00.000000000 Z
11
+ date: 2019-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout
@@ -188,6 +188,26 @@ dependencies:
188
188
  - - "~>"
189
189
  - !ruby/object:Gem::Version
190
190
  version: '1.1'
191
+ - !ruby/object:Gem::Dependency
192
+ name: license-acceptance
193
+ requirement: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: 0.2.16
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '2.0'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 0.2.16
208
+ - - "<"
209
+ - !ruby/object:Gem::Version
210
+ version: '2.0'
191
211
  - !ruby/object:Gem::Dependency
192
212
  name: rb-readline
193
213
  requirement: !ruby/object:Gem::Requirement