test-kitchen 1.23.2 → 1.23.3
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/.gitignore +7 -0
- data/.gitmodules +0 -0
- data/.travis.yml +0 -4
- data/CHANGELOG.md +40 -0
- data/MAINTAINERS.md +2 -1
- data/Rakefile +9 -0
- data/docs/CONTRIBUTING.md +8 -0
- data/docs/LICENSE +22 -0
- data/docs/README.md +78 -0
- data/docs/archetypes/default.md +6 -0
- data/docs/config.toml +36 -0
- data/docs/content/docs/_index.md +5 -0
- data/docs/content/docs/drivers/_index.md +27 -0
- data/docs/content/docs/drivers/azurerm.md +44 -0
- data/docs/content/docs/drivers/vagrant.md +39 -0
- data/docs/content/docs/getting-started/00-introduction.md +14 -0
- data/docs/content/docs/getting-started/01-installing.md +64 -0
- data/docs/content/docs/getting-started/02-getting-help.md +59 -0
- data/docs/content/docs/getting-started/03-creating-cookbook.md +46 -0
- data/docs/content/docs/getting-started/04-kitchen-yml.md +56 -0
- data/docs/content/docs/getting-started/05-instances.md +79 -0
- data/docs/content/docs/getting-started/06-writing-recipe.md +21 -0
- data/docs/content/docs/getting-started/07-running-converge.md +134 -0
- data/docs/content/docs/getting-started/08-manually-verifying.md +55 -0
- data/docs/content/docs/getting-started/09-writing-test.md +49 -0
- data/docs/content/docs/getting-started/10-running-verify.md +120 -0
- data/docs/content/docs/getting-started/11-running-test.md +168 -0
- data/docs/content/docs/getting-started/12-adding-platform.md +206 -0
- data/docs/content/docs/getting-started/13-adding-feature.md +30 -0
- data/docs/content/docs/getting-started/14-adding-suite.md +60 -0
- data/docs/content/docs/getting-started/15-adding-test.md +66 -0
- data/docs/content/docs/getting-started/16-adding-recipe.md +53 -0
- data/docs/content/docs/getting-started/17-excluding-platforms.md +101 -0
- data/docs/content/docs/getting-started/18-next-steps.md +23 -0
- data/docs/content/docs/getting-started/_index.md +5 -0
- data/docs/content/docs/provisioners/_index.md +36 -0
- data/docs/content/docs/provisioners/chef.md +69 -0
- data/docs/content/docs/provisioners/shell.md +31 -0
- data/docs/content/docs/reference/_index.md +5 -0
- data/docs/content/docs/reference/configuration.md +53 -0
- data/docs/content/docs/reference/examples.md +97 -0
- data/docs/content/docs/reference/faq.md +58 -0
- data/docs/content/docs/reference/fixtures.md +32 -0
- data/docs/content/docs/reference/glossary.md +34 -0
- data/docs/content/docs/reference/lifecycle-hooks.md +68 -0
- data/docs/content/docs/reference/reboots.md +24 -0
- data/docs/content/docs/verifiers/_index.md +14 -0
- data/docs/content/docs/verifiers/inspec.md +44 -0
- data/docs/content/docs/verifiers/serverspec.md +20 -0
- data/docs/static/images/chef-logo.png +0 -0
- data/docs/static/images/chef-logo.svg +1 -0
- data/docs/static/images/github-banner.png +0 -0
- data/docs/static/images/github-banner.svg +71 -0
- data/docs/static/images/kitchen-logo.png +0 -0
- data/docs/static/images/logo-block.svg +222 -0
- data/docs/static/images/logo.png +0 -0
- data/docs/static/images/logos-group.png +0 -0
- data/docs/static/images/terminal-1.png +0 -0
- data/docs/static/images/terminal-1.svg +589 -0
- data/docs/static/images/terminal-2.png +0 -0
- data/docs/static/images/terminal-2.svg +235 -0
- data/docs/static/images/terminal-3.png +0 -0
- data/docs/static/images/terminal-3.svg +439 -0
- data/docs/static/index.html +59 -0
- data/docs/static/javascripts/all.js +348 -0
- data/docs/static/javascripts/vendor/foundation.min.js +4 -0
- data/docs/static/javascripts/vendor/jquery.min.js +5 -0
- data/docs/static/javascripts/vendor/what-input.js +336 -0
- data/docs/static/stylesheets/site.css +4667 -0
- data/docs/themes/kitchen/layouts/_default/baseof.html +53 -0
- data/docs/themes/kitchen/layouts/_default/list.html +4 -0
- data/docs/themes/kitchen/layouts/_default/redirect.html +10 -0
- data/docs/themes/kitchen/layouts/_default/single.html +6 -0
- data/docs/themes/kitchen/layouts/partials/core/head.html +6 -0
- data/docs/themes/kitchen/layouts/partials/kitchen/footer.html +18 -0
- data/docs/themes/kitchen/layouts/partials/kitchen/head.html +4 -0
- data/docs/themes/kitchen/layouts/partials/kitchen/header.html +26 -0
- data/docs/themes/kitchen/layouts/partials/search-docs.html +3 -0
- data/docs/themes/kitchen/layouts/partials/sidebar.html +33 -0
- data/docs/themes/kitchen/layouts/shortcodes/button.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/codeblock.html +8 -0
- data/docs/themes/kitchen/layouts/shortcodes/cta.html +5 -0
- data/docs/themes/kitchen/layouts/shortcodes/danger.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/example_fqdn.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/info.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/ol-styled.html +3 -0
- data/docs/themes/kitchen/layouts/shortcodes/success.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/tip.html +1 -0
- data/docs/themes/kitchen/layouts/shortcodes/warning.html +1 -0
- data/docs/themes/kitchen/static/css/kitchen.css +10 -0
- data/docs/themes/kitchen/static/css/kitchen.css.map +7 -0
- data/docs/themes/kitchen/static/fonts/Muli-Bold.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/Muli-Regular.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/Muli-SemiBold.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.eot +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.svg +1104 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff2 +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.eot +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.svg +372 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff2 +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.eot +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.svg +1896 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.ttf +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff +0 -0
- data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff2 +0 -0
- data/docs/themes/kitchen/static/images/chef-logo-light.svg +36 -0
- data/docs/themes/kitchen/static/images/chef-logo-white.svg +38 -0
- data/docs/themes/kitchen/static/images/chef-logo.svg +37 -0
- data/docs/themes/kitchen/static/images/favicon.ico +0 -0
- data/docs/themes/kitchen/static/js/scripts-all.js +7 -0
- data/docs/themes/kitchen/static/js/source/chef-hugo.js +116 -0
- data/docs/themes/kitchen/static/js/source/omnitruck.js +82 -0
- data/docs/themes/kitchen/static/js/source/segment.js +52 -0
- data/docs/themes/kitchen/static/sass/_buttons.scss +161 -0
- data/docs/themes/kitchen/static/sass/_core.scss +24 -0
- data/docs/themes/kitchen/static/sass/_forms.scss +14 -0
- data/docs/themes/kitchen/static/sass/_mixins.scss +133 -0
- data/docs/themes/kitchen/static/sass/_typography.scss +34 -0
- data/docs/themes/kitchen/static/sass/_variables.scss +82 -0
- data/docs/themes/kitchen/static/sass/kitchen.scss +7 -0
- data/docs/themes/kitchen/static/sass/kitchen/_footer.scss +50 -0
- data/docs/themes/kitchen/static/sass/kitchen/_header.scss +187 -0
- data/docs/themes/kitchen/static/sass/kitchen/_homepage.scss +27 -0
- data/docs/themes/kitchen/static/sass/kitchen/_utility-bar.scss +173 -0
- data/docs/themes/kitchen/static/sass/partials/_alerts.scss +32 -0
- data/docs/themes/kitchen/static/sass/partials/_bg.scss +19 -0
- data/docs/themes/kitchen/static/sass/partials/_blurbs.scss +25 -0
- data/docs/themes/kitchen/static/sass/partials/_callout.scss +15 -0
- data/docs/themes/kitchen/static/sass/partials/_cards.scss +54 -0
- data/docs/themes/kitchen/static/sass/partials/_dropdown.scss +77 -0
- data/docs/themes/kitchen/static/sass/partials/_grid.scss +87 -0
- data/docs/themes/kitchen/static/sass/partials/_padding.scss +73 -0
- data/docs/themes/kitchen/static/sass/partials/_sidebar.scss +71 -0
- data/docs/themes/kitchen/static/sass/partials/_tabs.scss +125 -0
- data/docs/themes/kitchen/static/sass/typography/_chroma.scss +366 -0
- data/docs/themes/kitchen/static/sass/typography/_code.scss +72 -0
- data/docs/themes/kitchen/static/sass/typography/_headers.scss +90 -0
- data/docs/themes/kitchen/static/sass/typography/_links.scss +127 -0
- data/docs/themes/kitchen/static/sass/typography/_lists.scss +155 -0
- data/docs/themes/kitchen/static/sass/typography/_prose.scss +29 -0
- data/docs/themes/kitchen/static/sass/typography/_text.scss +221 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_animated.scss +20 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_bordered-pulled.scss +20 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_core.scss +16 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_fixed-width.scss +6 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_icons.scss +992 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_larger.scss +23 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_list.scss +18 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_mixins.scss +57 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_rotated-flipped.scss +23 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_screen-reader.scss +5 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_stacked.scss +31 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/_variables.scss +1005 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-brands.scss +21 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-regular.scss +22 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-solid.scss +23 -0
- data/docs/themes/kitchen/static/sass/vendor/fontawesome/fontawesome.scss +16 -0
- data/docs/themes/kitchen/theme.toml +8 -0
- data/lib/kitchen/provisioner/chef_base.rb +6 -6
- data/lib/kitchen/transport/ssh.rb +2 -2
- data/lib/kitchen/transport/winrm.rb +32 -9
- data/lib/kitchen/version.rb +1 -1
- data/spec/kitchen/data_munger_spec.rb +13 -13
- data/spec/kitchen/driver/exec_spec.rb +1 -1
- data/spec/kitchen/lifecycle_hooks_spec.rb +6 -6
- data/spec/kitchen/provisioner/chef_base_spec.rb +26 -26
- data/spec/kitchen/transport/winrm_spec.rb +46 -10
- metadata +160 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
|
|
3
|
+
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
|
4
|
+
*/
|
|
5
|
+
@import 'variables';
|
|
6
|
+
|
|
7
|
+
@font-face {
|
|
8
|
+
font-family: 'Font Awesome 5 Brands';
|
|
9
|
+
font-style: normal;
|
|
10
|
+
font-weight: normal;
|
|
11
|
+
src: url('#{$fa-font-path}/fa-brands-400.eot');
|
|
12
|
+
src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
|
|
13
|
+
url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
|
|
14
|
+
url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
|
|
15
|
+
url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
|
|
16
|
+
url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.fab {
|
|
20
|
+
font-family: 'Font Awesome 5 Brands';
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
|
|
3
|
+
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
|
4
|
+
*/
|
|
5
|
+
@import 'variables';
|
|
6
|
+
|
|
7
|
+
@font-face {
|
|
8
|
+
font-family: 'Font Awesome 5 Free';
|
|
9
|
+
font-style: normal;
|
|
10
|
+
font-weight: 400;
|
|
11
|
+
src: url('#{$fa-font-path}/fa-regular-400.eot');
|
|
12
|
+
src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
|
|
13
|
+
url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
|
|
14
|
+
url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
|
|
15
|
+
url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
|
|
16
|
+
url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.far {
|
|
20
|
+
font-family: 'Font Awesome 5 Free';
|
|
21
|
+
font-weight: 400;
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
|
|
3
|
+
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
|
4
|
+
*/
|
|
5
|
+
@import 'variables';
|
|
6
|
+
|
|
7
|
+
@font-face {
|
|
8
|
+
font-family: 'Font Awesome 5 Free';
|
|
9
|
+
font-style: normal;
|
|
10
|
+
font-weight: 900;
|
|
11
|
+
src: url('#{$fa-font-path}/fa-solid-900.eot');
|
|
12
|
+
src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
|
|
13
|
+
url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
|
|
14
|
+
url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
|
|
15
|
+
url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
|
|
16
|
+
url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.fa,
|
|
20
|
+
.fas {
|
|
21
|
+
font-family: 'Font Awesome 5 Free';
|
|
22
|
+
font-weight: 900;
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
|
|
3
|
+
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
|
4
|
+
*/
|
|
5
|
+
@import 'variables';
|
|
6
|
+
@import 'mixins';
|
|
7
|
+
@import 'core';
|
|
8
|
+
@import 'larger';
|
|
9
|
+
@import 'fixed-width';
|
|
10
|
+
@import 'list';
|
|
11
|
+
@import 'bordered-pulled';
|
|
12
|
+
@import 'animated';
|
|
13
|
+
@import 'rotated-flipped';
|
|
14
|
+
@import 'stacked';
|
|
15
|
+
@import 'icons';
|
|
16
|
+
@import 'screen-reader';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
name = "kitchen"
|
|
2
|
+
license = "Apache-2"
|
|
3
|
+
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE.md"
|
|
4
|
+
description = "The theme used for KitchenCI"
|
|
5
|
+
homepage = "http://github.com/chef/chef-hugo-theme"
|
|
6
|
+
tags = []
|
|
7
|
+
features = []
|
|
8
|
+
min_version = "0.38"
|
|
@@ -62,7 +62,7 @@ module Kitchen
|
|
|
62
62
|
# backend cookbook downloader on every kitchen run.
|
|
63
63
|
default_config :always_update_cookbooks, false
|
|
64
64
|
default_config :cookbook_files_glob, %w(
|
|
65
|
-
README.* metadata.{json,rb}
|
|
65
|
+
README.* VERSION metadata.{json,rb} attributes.rb recipe.rb
|
|
66
66
|
attributes/**/* definitions/**/* files/**/* libraries/**/*
|
|
67
67
|
providers/**/* recipes/**/* resources/**/* templates/**/*
|
|
68
68
|
).join(",")
|
|
@@ -551,7 +551,7 @@ module Kitchen
|
|
|
551
551
|
# @api private
|
|
552
552
|
def prepare_config_rb
|
|
553
553
|
data = default_config_rb.merge(config[config_filename.tr(".", "_").to_sym])
|
|
554
|
-
data = data.merge(:
|
|
554
|
+
data = data.merge(named_run_list: config[:named_run_list]) if config[:named_run_list]
|
|
555
555
|
|
|
556
556
|
info("Preparing #{config_filename}")
|
|
557
557
|
debug("Creating #{config_filename} from #{data.inspect}")
|
|
@@ -615,16 +615,16 @@ module Kitchen
|
|
|
615
615
|
# @api private
|
|
616
616
|
def chef_cmds(base_cmd)
|
|
617
617
|
cmd = prefix_command(wrap_shell_code(
|
|
618
|
-
[base_cmd, *chef_args(config_filename), last_exit_code].join(" ")
|
|
619
|
-
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
618
|
+
[base_cmd, *chef_args(config_filename), last_exit_code].join(" ")
|
|
619
|
+
.tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
620
620
|
))
|
|
621
621
|
|
|
622
622
|
cmds = [cmd].cycle(config[:multiple_converge].to_i).to_a
|
|
623
623
|
|
|
624
624
|
if config[:enforce_idempotency]
|
|
625
625
|
idempotent_cmd = prefix_command(wrap_shell_code(
|
|
626
|
-
[base_cmd, *chef_args("client_no_updated_resources.rb"), last_exit_code].join(" ")
|
|
627
|
-
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
626
|
+
[base_cmd, *chef_args("client_no_updated_resources.rb"), last_exit_code].join(" ")
|
|
627
|
+
.tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
|
628
628
|
))
|
|
629
629
|
cmds[-1] = idempotent_cmd
|
|
630
630
|
end
|
|
@@ -314,7 +314,7 @@ module Kitchen
|
|
|
314
314
|
# @api private
|
|
315
315
|
def establish_connection_via_gateway(opts)
|
|
316
316
|
retry_connection(opts) do
|
|
317
|
-
gateway_options = options.merge(:
|
|
317
|
+
gateway_options = options.merge(port: ssh_gateway_port)
|
|
318
318
|
Net::SSH::Gateway.new(ssh_gateway,
|
|
319
319
|
ssh_gateway_username, gateway_options).ssh(hostname, username, options)
|
|
320
320
|
end
|
|
@@ -337,7 +337,7 @@ module Kitchen
|
|
|
337
337
|
end
|
|
338
338
|
end
|
|
339
339
|
|
|
340
|
-
#
|
|
340
|
+
# Connect to a host executing passed block and properly handling retries.
|
|
341
341
|
#
|
|
342
342
|
# @param opts [Hash] retry options
|
|
343
343
|
# @option opts [Integer] :retries the number of times to retry before
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
|
|
21
21
|
require "rbconfig"
|
|
22
22
|
require "uri"
|
|
23
|
-
|
|
24
23
|
require "kitchen"
|
|
24
|
+
require "winrm"
|
|
25
25
|
|
|
26
26
|
module Kitchen
|
|
27
27
|
module Transport
|
|
@@ -46,6 +46,8 @@ module Kitchen
|
|
|
46
46
|
default_config :rdp_port, 3389
|
|
47
47
|
default_config :connection_retries, 5
|
|
48
48
|
default_config :connection_retry_sleep, 1
|
|
49
|
+
default_config :operation_timeout, 60
|
|
50
|
+
default_config :receive_timeout, 70
|
|
49
51
|
default_config :max_wait_until_ready, 600
|
|
50
52
|
default_config :winrm_transport, :negotiate
|
|
51
53
|
default_config :scheme do |transport|
|
|
@@ -160,12 +162,25 @@ module Kitchen
|
|
|
160
162
|
retry_delay: delay
|
|
161
163
|
)
|
|
162
164
|
execute(PING_COMMAND.dup)
|
|
165
|
+
rescue *RESCUE_EXCEPTIONS_ON_ESTABLISH => e
|
|
166
|
+
retries ||= connection_retries.to_i
|
|
167
|
+
raise e if (retries -= 1) < 0
|
|
168
|
+
logger.debug("[WinRM] PING_COMMAND failed. Retrying...")
|
|
169
|
+
logger.debug("#{e.class}::#{e.message}")
|
|
170
|
+
sleep(connection_retry_sleep.to_i)
|
|
171
|
+
retry
|
|
163
172
|
end
|
|
164
173
|
|
|
165
174
|
private
|
|
166
175
|
|
|
167
176
|
PING_COMMAND = "Write-Host '[WinRM] Established\n'".freeze
|
|
168
177
|
|
|
178
|
+
RESCUE_EXCEPTIONS_ON_ESTABLISH = [
|
|
179
|
+
Errno::EACCES, Errno::EALREADY, Errno::EADDRINUSE, Errno::ECONNREFUSED, Errno::ETIMEDOUT,
|
|
180
|
+
Errno::ECONNRESET, Errno::ENETUNREACH, Errno::EHOSTUNREACH, Errno::EPIPE,
|
|
181
|
+
OpenSSL::SSL::SSLError, WinRM::WinRMHTTPTransportError
|
|
182
|
+
].freeze
|
|
183
|
+
|
|
169
184
|
# @return [Integer] how many times to retry when failing to execute
|
|
170
185
|
# a command or transfer files
|
|
171
186
|
# @api private
|
|
@@ -237,10 +252,14 @@ module Kitchen
|
|
|
237
252
|
session = unelevated_session
|
|
238
253
|
end
|
|
239
254
|
|
|
240
|
-
|
|
241
|
-
|
|
255
|
+
begin
|
|
256
|
+
response = session.run(command) do |stdout, _|
|
|
257
|
+
logger << stdout if stdout
|
|
258
|
+
end
|
|
259
|
+
[response.exitcode, response.stderr]
|
|
260
|
+
ensure
|
|
261
|
+
close
|
|
242
262
|
end
|
|
243
|
-
[response.exitcode, response.stderr]
|
|
244
263
|
end
|
|
245
264
|
|
|
246
265
|
def unelevated_temp_dir
|
|
@@ -256,13 +275,15 @@ module Kitchen
|
|
|
256
275
|
# (see Base#init_options)
|
|
257
276
|
def init_options(options)
|
|
258
277
|
super
|
|
259
|
-
@instance_name
|
|
260
|
-
@kitchen_root
|
|
261
|
-
@rdp_port
|
|
278
|
+
@instance_name = @options.delete(:instance_name)
|
|
279
|
+
@kitchen_root = @options.delete(:kitchen_root)
|
|
280
|
+
@rdp_port = @options.delete(:rdp_port)
|
|
262
281
|
@connection_retries = @options.delete(:connection_retries)
|
|
263
282
|
@connection_retry_sleep = @options.delete(:connection_retry_sleep)
|
|
264
|
-
@
|
|
265
|
-
@
|
|
283
|
+
@operation_timeout = @options.delete(:operation_timeout)
|
|
284
|
+
@receive_timeout = @options.delete(:receive_timeout)
|
|
285
|
+
@max_wait_until_ready = @options.delete(:max_wait_until_ready)
|
|
286
|
+
@elevated = @options.delete(:elevated)
|
|
266
287
|
end
|
|
267
288
|
|
|
268
289
|
# Logs formatted standard error output at the warning level.
|
|
@@ -407,6 +428,8 @@ module Kitchen
|
|
|
407
428
|
rdp_port: data[:rdp_port],
|
|
408
429
|
connection_retries: data[:connection_retries],
|
|
409
430
|
connection_retry_sleep: data[:connection_retry_sleep],
|
|
431
|
+
operation_timeout: data[:operation_timeout],
|
|
432
|
+
receive_timeout: data[:receive_timeout],
|
|
410
433
|
max_wait_until_ready: data[:max_wait_until_ready],
|
|
411
434
|
transport: data[:winrm_transport],
|
|
412
435
|
elevated: data[:elevated],
|
data/lib/kitchen/version.rb
CHANGED
|
@@ -2695,7 +2695,7 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2695
2695
|
DataMunger.new(
|
|
2696
2696
|
{
|
|
2697
2697
|
lifecycle: {
|
|
2698
|
-
pre_create: "echo foo"
|
|
2698
|
+
pre_create: "echo foo",
|
|
2699
2699
|
},
|
|
2700
2700
|
platforms: [{ name: "plat" }],
|
|
2701
2701
|
suites: [{ name: "sweet" }],
|
|
@@ -2730,19 +2730,19 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2730
2730
|
{
|
|
2731
2731
|
lifecycle: {
|
|
2732
2732
|
pre_create: "echo foo",
|
|
2733
|
-
post_create: "echo post"
|
|
2733
|
+
post_create: "echo post",
|
|
2734
2734
|
},
|
|
2735
2735
|
platforms: [{
|
|
2736
2736
|
name: "plat",
|
|
2737
2737
|
lifecycle: {
|
|
2738
|
-
pre_create: "echo bar"
|
|
2739
|
-
}
|
|
2738
|
+
pre_create: "echo bar",
|
|
2739
|
+
},
|
|
2740
2740
|
}],
|
|
2741
2741
|
suites: [{
|
|
2742
2742
|
name: "sweet",
|
|
2743
2743
|
lifecycle: {
|
|
2744
|
-
pre_create: "echo baz"
|
|
2745
|
-
}
|
|
2744
|
+
pre_create: "echo baz",
|
|
2745
|
+
},
|
|
2746
2746
|
}],
|
|
2747
2747
|
},
|
|
2748
2748
|
{}
|
|
@@ -2756,10 +2756,10 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2756
2756
|
DataMunger.new(
|
|
2757
2757
|
{
|
|
2758
2758
|
driver: {
|
|
2759
|
-
pre_create_command: "echo bar"
|
|
2759
|
+
pre_create_command: "echo bar",
|
|
2760
2760
|
},
|
|
2761
2761
|
lifecycle: {
|
|
2762
|
-
pre_create: "echo foo"
|
|
2762
|
+
pre_create: "echo foo",
|
|
2763
2763
|
},
|
|
2764
2764
|
platforms: [{ name: "plat" }],
|
|
2765
2765
|
suites: [{ name: "sweet" }],
|
|
@@ -2774,19 +2774,19 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2774
2774
|
DataMunger.new(
|
|
2775
2775
|
{
|
|
2776
2776
|
lifecycle: {
|
|
2777
|
-
pre_create: "echo foo"
|
|
2777
|
+
pre_create: "echo foo",
|
|
2778
2778
|
},
|
|
2779
2779
|
platforms: [{
|
|
2780
2780
|
name: "plat",
|
|
2781
2781
|
driver: {
|
|
2782
|
-
pre_create_command: "echo bar"
|
|
2783
|
-
}
|
|
2782
|
+
pre_create_command: "echo bar",
|
|
2783
|
+
},
|
|
2784
2784
|
}],
|
|
2785
2785
|
suites: [{
|
|
2786
2786
|
name: "sweet",
|
|
2787
2787
|
driver: {
|
|
2788
|
-
pre_create_command: "echo baz"
|
|
2789
|
-
}
|
|
2788
|
+
pre_create_command: "echo baz",
|
|
2789
|
+
},
|
|
2790
2790
|
}],
|
|
2791
2791
|
},
|
|
2792
2792
|
{}
|
|
@@ -26,7 +26,7 @@ describe Kitchen::Driver::Exec do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
let(:instance) do
|
|
29
|
-
stub(name: "coolbeans", logger: logger, to_str: "instance",
|
|
29
|
+
stub(name: "coolbeans", logger: logger, to_str: "instance", "transport=": nil)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
let(:driver) do
|
|
@@ -44,8 +44,8 @@ describe Kitchen::LifecycleHooks do
|
|
|
44
44
|
"KITCHEN_SUITE_NAME" => "default",
|
|
45
45
|
"KITCHEN_PLATFORM_NAME" => "toaster-1.0",
|
|
46
46
|
"KITCHEN_INSTANCE_HOSTNAME" => "localhost",
|
|
47
|
-
}
|
|
48
|
-
}
|
|
47
|
+
},
|
|
48
|
+
}.freeze
|
|
49
49
|
|
|
50
50
|
it "runs a single local command" do
|
|
51
51
|
config.update(post_create: ["echo foo"])
|
|
@@ -77,7 +77,7 @@ describe Kitchen::LifecycleHooks do
|
|
|
77
77
|
"KITCHEN_SUITE_NAME" => "default",
|
|
78
78
|
"KITCHEN_PLATFORM_NAME" => "toaster-1.0",
|
|
79
79
|
"KITCHEN_INSTANCE_HOSTNAME" => "localhost",
|
|
80
|
-
}
|
|
80
|
+
},
|
|
81
81
|
})
|
|
82
82
|
run_lifecycle_hooks
|
|
83
83
|
end
|
|
@@ -93,7 +93,7 @@ describe Kitchen::LifecycleHooks do
|
|
|
93
93
|
"KITCHEN_SUITE_NAME" => "default",
|
|
94
94
|
"KITCHEN_PLATFORM_NAME" => "toaster-1.0",
|
|
95
95
|
"KITCHEN_INSTANCE_HOSTNAME" => "localhost",
|
|
96
|
-
}
|
|
96
|
+
},
|
|
97
97
|
})
|
|
98
98
|
run_lifecycle_hooks
|
|
99
99
|
end
|
|
@@ -107,7 +107,7 @@ describe Kitchen::LifecycleHooks do
|
|
|
107
107
|
"KITCHEN_SUITE_NAME" => "default",
|
|
108
108
|
"KITCHEN_PLATFORM_NAME" => "toaster-1.0",
|
|
109
109
|
"KITCHEN_INSTANCE_HOSTNAME" => "localhost",
|
|
110
|
-
}
|
|
110
|
+
},
|
|
111
111
|
})
|
|
112
112
|
run_lifecycle_hooks
|
|
113
113
|
end
|
|
@@ -121,7 +121,7 @@ describe Kitchen::LifecycleHooks do
|
|
|
121
121
|
"KITCHEN_SUITE_NAME" => "default",
|
|
122
122
|
"KITCHEN_PLATFORM_NAME" => "toaster-1.0",
|
|
123
123
|
"KITCHEN_INSTANCE_HOSTNAME" => "localhost",
|
|
124
|
-
}
|
|
124
|
+
},
|
|
125
125
|
})
|
|
126
126
|
run_lifecycle_hooks
|
|
127
127
|
end
|
|
@@ -103,8 +103,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
|
103
103
|
provisioner[:log_file].must_be_nil
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
-
it ":cookbook_files_glob includes
|
|
107
|
-
provisioner[:cookbook_files_glob].must_match %r{,
|
|
106
|
+
it ":cookbook_files_glob includes a metadata file" do
|
|
107
|
+
provisioner[:cookbook_files_glob].must_match %r{,metadata.\{json,rb\}}
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
it ":data_path uses calculate_path and is expanded" do
|
|
@@ -1077,17 +1077,17 @@ describe Kitchen::Provisioner::ChefBase do
|
|
|
1077
1077
|
describe "with the default name `Policyfile.rb`" do
|
|
1078
1078
|
before do
|
|
1079
1079
|
File.open("#{kitchen_root}/Policyfile.rb", "wb") do |file|
|
|
1080
|
-
file.write(
|
|
1081
|
-
name 'wat'
|
|
1082
|
-
run_list 'wat'
|
|
1083
|
-
cookbook 'wat'
|
|
1080
|
+
file.write(<<~POLICYFILE)
|
|
1081
|
+
name 'wat'
|
|
1082
|
+
run_list 'wat'
|
|
1083
|
+
cookbook 'wat'
|
|
1084
1084
|
POLICYFILE
|
|
1085
1085
|
end
|
|
1086
1086
|
File.open("#{kitchen_root}/Policyfile.lock.json", "wb") do |file|
|
|
1087
|
-
file.write(
|
|
1088
|
-
{
|
|
1089
|
-
|
|
1090
|
-
}
|
|
1087
|
+
file.write(<<~POLICYFILE)
|
|
1088
|
+
{
|
|
1089
|
+
"name": "wat"
|
|
1090
|
+
}
|
|
1091
1091
|
POLICYFILE
|
|
1092
1092
|
end
|
|
1093
1093
|
Kitchen::Provisioner::Chef::Policyfile.stubs(:new).returns(resolver)
|
|
@@ -1172,17 +1172,17 @@ POLICYFILE
|
|
|
1172
1172
|
|
|
1173
1173
|
before do
|
|
1174
1174
|
File.open(policyfile_path, "wb") do |file|
|
|
1175
|
-
file.write(
|
|
1176
|
-
name 'wat'
|
|
1177
|
-
run_list 'wat'
|
|
1178
|
-
cookbook 'wat'
|
|
1175
|
+
file.write(<<~POLICYFILE)
|
|
1176
|
+
name 'wat'
|
|
1177
|
+
run_list 'wat'
|
|
1178
|
+
cookbook 'wat'
|
|
1179
1179
|
POLICYFILE
|
|
1180
1180
|
end
|
|
1181
1181
|
File.open(policyfile_lock_path, "wb") do |file|
|
|
1182
|
-
file.write(
|
|
1183
|
-
{
|
|
1184
|
-
|
|
1185
|
-
}
|
|
1182
|
+
file.write(<<~POLICYFILE)
|
|
1183
|
+
{
|
|
1184
|
+
"name": "wat"
|
|
1185
|
+
}
|
|
1186
1186
|
POLICYFILE
|
|
1187
1187
|
end
|
|
1188
1188
|
end
|
|
@@ -1251,17 +1251,17 @@ POLICYFILE
|
|
|
1251
1251
|
|
|
1252
1252
|
before do
|
|
1253
1253
|
File.open(policyfile_path, "wb") do |file|
|
|
1254
|
-
file.write(
|
|
1255
|
-
name 'wat'
|
|
1256
|
-
run_list 'wat'
|
|
1257
|
-
cookbook 'wat'
|
|
1254
|
+
file.write(<<~POLICYFILE)
|
|
1255
|
+
name 'wat'
|
|
1256
|
+
run_list 'wat'
|
|
1257
|
+
cookbook 'wat'
|
|
1258
1258
|
POLICYFILE
|
|
1259
1259
|
end
|
|
1260
1260
|
File.open(policyfile_lock_path, "wb") do |file|
|
|
1261
|
-
file.write(
|
|
1262
|
-
{
|
|
1263
|
-
|
|
1264
|
-
}
|
|
1261
|
+
file.write(<<~POLICYFILE)
|
|
1262
|
+
{
|
|
1263
|
+
"name": "wat"
|
|
1264
|
+
}
|
|
1265
1265
|
POLICYFILE
|
|
1266
1266
|
end
|
|
1267
1267
|
end
|