test-kitchen 2.5.1 → 2.7.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 +0 -11
- data/Rakefile +1 -3
- data/bin/kitchen +1 -3
- data/lib/kitchen.rb +1 -2
- data/lib/kitchen/base64_stream.rb +0 -1
- data/lib/kitchen/cli.rb +2 -2
- data/lib/kitchen/collection.rb +0 -1
- data/lib/kitchen/color.rb +0 -1
- data/lib/kitchen/command.rb +0 -1
- data/lib/kitchen/command/action.rb +1 -2
- data/lib/kitchen/command/console.rb +0 -1
- data/lib/kitchen/command/diagnose.rb +1 -2
- data/lib/kitchen/command/doctor.rb +0 -1
- data/lib/kitchen/command/exec.rb +0 -1
- data/lib/kitchen/command/list.rb +1 -2
- data/lib/kitchen/command/login.rb +0 -1
- data/lib/kitchen/command/package.rb +0 -1
- data/lib/kitchen/command/sink.rb +0 -1
- data/lib/kitchen/command/test.rb +1 -2
- data/lib/kitchen/config.rb +0 -1
- data/lib/kitchen/configurable.rb +0 -1
- data/lib/kitchen/data_munger.rb +0 -1
- data/lib/kitchen/diagnostic.rb +0 -1
- data/lib/kitchen/driver.rb +0 -1
- data/lib/kitchen/driver/base.rb +2 -39
- data/lib/kitchen/driver/dummy.rb +0 -1
- data/lib/kitchen/driver/exec.rb +0 -1
- data/lib/kitchen/driver/proxy.rb +0 -1
- data/lib/kitchen/driver/ssh_base.rb +3 -40
- data/lib/kitchen/errors.rb +0 -1
- data/lib/kitchen/generator/init.rb +0 -1
- data/lib/kitchen/instance.rb +41 -15
- data/lib/kitchen/lazy_hash.rb +0 -1
- data/lib/kitchen/lifecycle_hooks.rb +0 -1
- data/lib/kitchen/loader/yaml.rb +2 -3
- data/lib/kitchen/logger.rb +1 -2
- data/lib/kitchen/logging.rb +0 -1
- data/lib/kitchen/login_command.rb +0 -1
- data/lib/kitchen/metadata_chopper.rb +0 -1
- data/lib/kitchen/platform.rb +0 -1
- data/lib/kitchen/plugin.rb +0 -1
- data/lib/kitchen/plugin_base.rb +60 -0
- data/lib/kitchen/provisioner.rb +0 -1
- data/lib/kitchen/provisioner/base.rb +2 -2
- data/lib/kitchen/provisioner/chef/berkshelf.rb +0 -1
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +1 -2
- data/lib/kitchen/provisioner/chef/policyfile.rb +2 -3
- data/lib/kitchen/provisioner/chef_apply.rb +2 -3
- data/lib/kitchen/provisioner/chef_base.rb +29 -19
- data/lib/kitchen/provisioner/chef_solo.rb +0 -1
- data/lib/kitchen/provisioner/chef_zero.rb +0 -1
- data/lib/kitchen/provisioner/dummy.rb +0 -1
- data/lib/kitchen/provisioner/shell.rb +1 -2
- data/lib/kitchen/rake_tasks.rb +0 -1
- data/lib/kitchen/shell_out.rb +1 -2
- data/lib/kitchen/ssh.rb +2 -3
- data/lib/kitchen/state_file.rb +1 -2
- data/lib/kitchen/suite.rb +0 -1
- data/lib/kitchen/thor_tasks.rb +1 -2
- data/lib/kitchen/transport.rb +0 -1
- data/lib/kitchen/transport/base.rb +2 -2
- data/lib/kitchen/transport/dummy.rb +0 -1
- data/lib/kitchen/transport/exec.rb +1 -2
- data/lib/kitchen/transport/ssh.rb +4 -5
- data/lib/kitchen/transport/winrm.rb +3 -4
- data/lib/kitchen/util.rb +0 -1
- data/lib/kitchen/verifier.rb +0 -1
- data/lib/kitchen/verifier/base.rb +2 -2
- data/lib/kitchen/verifier/busser.rb +2 -3
- data/lib/kitchen/verifier/dummy.rb +0 -1
- data/lib/kitchen/verifier/shell.rb +1 -2
- data/lib/kitchen/version.rb +1 -2
- data/lib/vendor/hash_recursive_merge.rb +0 -1
- data/templates/init/kitchen.yml.erb +2 -2
- data/test-kitchen.gemspec +4 -5
- metadata +21 -14
data/lib/kitchen/lazy_hash.rb
CHANGED
data/lib/kitchen/loader/yaml.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,9 +15,9 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "erb"
|
18
|
+
require "erb" unless defined?(Erb)
|
20
19
|
require_relative "../../vendor/hash_recursive_merge"
|
21
|
-
require "yaml"
|
20
|
+
require "yaml" unless defined?(YAML)
|
22
21
|
|
23
22
|
module Kitchen
|
24
23
|
module Loader
|
data/lib/kitchen/logger.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "fileutils"
|
18
|
+
require "fileutils" unless defined?(FileUtils)
|
20
19
|
require "logger"
|
21
20
|
|
22
21
|
module Kitchen
|
data/lib/kitchen/logging.rb
CHANGED
data/lib/kitchen/platform.rb
CHANGED
data/lib/kitchen/plugin.rb
CHANGED
@@ -0,0 +1,60 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
3
|
+
#
|
4
|
+
# Copyright (C) 2014, Fletcher Nichol
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
module Kitchen
|
19
|
+
module Plugin
|
20
|
+
class Base
|
21
|
+
class << self
|
22
|
+
# @return [Array<Symbol>] an array of action method names that cannot
|
23
|
+
# be run concurrently and must be run in serial via a shared mutex
|
24
|
+
attr_reader :serial_actions
|
25
|
+
end
|
26
|
+
|
27
|
+
# Registers certain driver actions that cannot be safely run concurrently
|
28
|
+
# in threads across multiple instances. Typically this might be used
|
29
|
+
# for create or destroy actions that use an underlying resource that
|
30
|
+
# cannot be used at the same time.
|
31
|
+
#
|
32
|
+
# A shared mutex for this driver object will be used to synchronize all
|
33
|
+
# registered methods.
|
34
|
+
#
|
35
|
+
# @example a single action method that cannot be run concurrently
|
36
|
+
#
|
37
|
+
# no_parallel_for :create
|
38
|
+
#
|
39
|
+
# @example multiple action methods that cannot be run concurrently
|
40
|
+
#
|
41
|
+
# no_parallel_for :create, :destroy
|
42
|
+
#
|
43
|
+
# @param methods [Array<Symbol>] one or more actions as symbols
|
44
|
+
# @raise [ClientError] if any method is not a valid action method name
|
45
|
+
def self.no_parallel_for(*methods)
|
46
|
+
action_methods = %i{create setup converge verify destroy}
|
47
|
+
|
48
|
+
Array(methods).each do |meth|
|
49
|
+
next if action_methods.include?(meth)
|
50
|
+
|
51
|
+
raise ClientError, "##{meth} is not a valid no_parallel_for method"
|
52
|
+
end
|
53
|
+
|
54
|
+
@serial_actions ||= []
|
55
|
+
@serial_actions += methods
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/kitchen/provisioner.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -19,13 +18,14 @@
|
|
19
18
|
require_relative "../configurable"
|
20
19
|
require_relative "../errors"
|
21
20
|
require_relative "../logging"
|
21
|
+
require_relative "../plugin_base"
|
22
22
|
|
23
23
|
module Kitchen
|
24
24
|
module Provisioner
|
25
25
|
# Base class for a provisioner.
|
26
26
|
#
|
27
27
|
# @author Fletcher Nichol <fnichol@nichol.ca>
|
28
|
-
class Base
|
28
|
+
class Base < Kitchen::Plugin::Base
|
29
29
|
include Configurable
|
30
30
|
include Logging
|
31
31
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "json"
|
18
|
+
require "json" unless defined?(JSON)
|
20
19
|
|
21
20
|
module Kitchen
|
22
21
|
module Provisioner
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,8 +15,8 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "shellwords"
|
20
|
-
require "rbconfig"
|
18
|
+
require "shellwords" unless defined?(Shellwords)
|
19
|
+
require "rbconfig" unless defined?(RbConfig)
|
21
20
|
|
22
21
|
require_relative "../../errors"
|
23
22
|
require_relative "../../logging"
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: SAWANOBORI Yukihiko <sawanoboriyu@higanworks.com>)
|
4
3
|
#
|
@@ -30,8 +29,8 @@
|
|
30
29
|
# name: chef_apply
|
31
30
|
#
|
32
31
|
# platforms:
|
33
|
-
# - name: ubuntu-
|
34
|
-
# - name: centos-
|
32
|
+
# - name: ubuntu-20.04
|
33
|
+
# - name: centos-8
|
35
34
|
#
|
36
35
|
# suites:
|
37
36
|
# - name: default
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,10 +15,10 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "fileutils"
|
20
|
-
require "pathname"
|
21
|
-
require "json"
|
22
|
-
require "cgi"
|
18
|
+
require "fileutils" unless defined?(FileUtils)
|
19
|
+
require "pathname" unless defined?(Pathname)
|
20
|
+
require "json" unless defined?(JSON)
|
21
|
+
require "cgi" unless defined?(CGI)
|
23
22
|
|
24
23
|
require_relative "chef/policyfile"
|
25
24
|
require_relative "chef/berkshelf"
|
@@ -154,7 +153,7 @@ module Kitchen
|
|
154
153
|
|
155
154
|
# New Usage #
|
156
155
|
provisioner:
|
157
|
-
product_name: <chef or
|
156
|
+
product_name: <chef or chef-workstation>
|
158
157
|
install_strategy: skip
|
159
158
|
MSG
|
160
159
|
when provisioner[:require_chef_omnibus].to_s.match(/\d/)
|
@@ -167,7 +166,7 @@ module Kitchen
|
|
167
166
|
|
168
167
|
# New Usage #
|
169
168
|
provisioner:
|
170
|
-
product_name: <chef or
|
169
|
+
product_name: <chef or chef-workstation>
|
171
170
|
product_version: #{provisioner[:require_chef_omnibus]}
|
172
171
|
MSG
|
173
172
|
when provisioner[:require_chef_omnibus] == "latest"
|
@@ -180,7 +179,7 @@ module Kitchen
|
|
180
179
|
|
181
180
|
# New Usage #
|
182
181
|
provisioner:
|
183
|
-
product_name: <chef or
|
182
|
+
product_name: <chef or chef-workstation>
|
184
183
|
install_strategy: always
|
185
184
|
MSG
|
186
185
|
end
|
@@ -200,11 +199,11 @@ module Kitchen
|
|
200
199
|
|
201
200
|
# Deprecated Example #
|
202
201
|
provisioner:
|
203
|
-
chef_omnibus_install_options: -P
|
202
|
+
chef_omnibus_install_options: -P chef-workstation -c current
|
204
203
|
|
205
204
|
# New Usage #
|
206
205
|
provisioner:
|
207
|
-
product_name:
|
206
|
+
product_name: chef-workstation
|
208
207
|
channel: current
|
209
208
|
MSG
|
210
209
|
|
@@ -217,7 +216,7 @@ module Kitchen
|
|
217
216
|
|
218
217
|
# New Usage #
|
219
218
|
provisioner:
|
220
|
-
product_name: <chef or
|
219
|
+
product_name: <chef or chef-workstation>
|
221
220
|
download_url: http://direct-download-url
|
222
221
|
MSG
|
223
222
|
|
@@ -226,9 +225,9 @@ module Kitchen
|
|
226
225
|
fully managed by using attribute settings.
|
227
226
|
MSG
|
228
227
|
|
229
|
-
# Reads the local Chef::Config object (if present).
|
230
|
-
# we want to start bring Chef config and
|
231
|
-
# together.
|
228
|
+
# Reads the local Chef::Config object (if present). We do this because
|
229
|
+
# we want to start bring Chef config and Chef Workstation config closer
|
230
|
+
# together. For example, we want to configure proxy settings in 1
|
232
231
|
# location instead of 3 configuration files.
|
233
232
|
#
|
234
233
|
# @param config [Hash] initial provided configuration
|
@@ -329,7 +328,7 @@ module Kitchen
|
|
329
328
|
return unless config[:require_chef_omnibus] || config[:product_name]
|
330
329
|
return if config[:product_name] && config[:install_strategy] == "skip"
|
331
330
|
|
332
|
-
prefix_command(
|
331
|
+
prefix_command(install_script_contents)
|
333
332
|
end
|
334
333
|
|
335
334
|
private
|
@@ -517,6 +516,12 @@ module Kitchen
|
|
517
516
|
opts[key] = config[key] if config[key]
|
518
517
|
end
|
519
518
|
|
519
|
+
unless windows_os?
|
520
|
+
# omnitruck installer does not currently support a tmp dir option on windows
|
521
|
+
opts[:install_command_options][:tmp_dir] = config[:root_path]
|
522
|
+
opts[:install_command_options]["TMPDIR"] = config[:root_path]
|
523
|
+
end
|
524
|
+
|
520
525
|
if config[:download_url]
|
521
526
|
opts[:install_command_options][:download_url_override] = config[:download_url]
|
522
527
|
opts[:install_command_options][:checksum] = config[:checksum] if config[:checksum]
|
@@ -535,7 +540,6 @@ module Kitchen
|
|
535
540
|
# install.ps1 only supports http_proxy
|
536
541
|
prox.delete_if { |p| %i{https_proxy ftp_proxy no_proxy}.include?(p) } if powershell_shell?
|
537
542
|
end
|
538
|
-
|
539
543
|
opts[:install_command_options].merge!(proxies)
|
540
544
|
end)
|
541
545
|
config[:chef_omnibus_root] = installer.root
|
@@ -554,8 +558,14 @@ module Kitchen
|
|
554
558
|
end
|
555
559
|
|
556
560
|
def install_from_file(command)
|
557
|
-
install_file = "/
|
558
|
-
script = [
|
561
|
+
install_file = "#{config[:root_path]}/chef-installer.sh"
|
562
|
+
script = []
|
563
|
+
script << "mkdir -p #{config[:root_path]}"
|
564
|
+
script << "if [ $? -ne 0 ]; then"
|
565
|
+
script << " echo Kitchen config setting root_path: '#{config[:root_path]}' not creatable by regular user "
|
566
|
+
script << " exit 1"
|
567
|
+
script << "fi"
|
568
|
+
script << "cat > #{install_file} <<\"EOL\""
|
559
569
|
script << command
|
560
570
|
script << "EOL"
|
561
571
|
script << "chmod +x #{install_file}"
|
@@ -570,7 +580,7 @@ module Kitchen
|
|
570
580
|
config[:require_chef_omnibus], powershell_shell?, install_options
|
571
581
|
)
|
572
582
|
config[:chef_omnibus_root] = installer.root
|
573
|
-
installer.install_command
|
583
|
+
sudo(installer.install_command)
|
574
584
|
end
|
575
585
|
|
576
586
|
# Hook used in subclasses to indicate support for policyfiles.
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Chris Lundquist (<chris.lundquist@github.com>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "shellwords"
|
18
|
+
require "shellwords" unless defined?(Shellwords)
|
20
19
|
|
21
20
|
require_relative "base"
|
22
21
|
require_relative "../version"
|
data/lib/kitchen/rake_tasks.rb
CHANGED
data/lib/kitchen/shell_out.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "mixlib/shellout"
|
18
|
+
require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
|
20
19
|
|
21
20
|
module Kitchen
|
22
21
|
# Mixin that wraps a command shell out invocation, providing a #run_command
|
data/lib/kitchen/ssh.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -17,9 +16,9 @@
|
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
18
|
require "logger"
|
20
|
-
require "net/ssh"
|
19
|
+
require "net/ssh" unless defined?(Net::SSH)
|
21
20
|
require "net/scp"
|
22
|
-
require "socket"
|
21
|
+
require "socket" unless defined?(Socket)
|
23
22
|
|
24
23
|
require_relative "errors"
|
25
24
|
require_relative "login_command"
|
data/lib/kitchen/state_file.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "yaml"
|
18
|
+
require "yaml" unless defined?(YAML)
|
20
19
|
|
21
20
|
module Kitchen
|
22
21
|
# Exception class for any exceptions raised when reading and parsing a state
|
data/lib/kitchen/suite.rb
CHANGED
data/lib/kitchen/thor_tasks.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
#
|
3
2
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
3
|
#
|
@@ -16,7 +15,7 @@
|
|
16
15
|
# See the License for the specific language governing permissions and
|
17
16
|
# limitations under the License.
|
18
17
|
|
19
|
-
require "thor"
|
18
|
+
require "thor" unless defined?(Thor)
|
20
19
|
|
21
20
|
require_relative "../kitchen"
|
22
21
|
|