chef 16.4.35 → 16.6.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef.gemspec +2 -1
- data/lib/chef/api_client/registration.rb +6 -6
- data/lib/chef/application.rb +19 -22
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +26 -25
- data/lib/chef/application/client.rb +16 -8
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +14 -14
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +12 -42
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +7 -6
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +4 -4
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -4
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +16 -14
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +18 -3
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +1 -4
- data/lib/chef/mixin/powershell_exec.rb +22 -10
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/powershell.rb +3 -2
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/ifconfig/debian.rb +33 -15
- data/lib/chef/provider/ifconfig/redhat.rb +51 -17
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +21 -18
- data/lib/chef/provider/package/snap.rb +0 -1
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +12 -1
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +5 -5
- data/lib/chef/provider/user/mac.rb +3 -3
- data/lib/chef/provider/windows_task.rb +1 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/pwsh.rb +64 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -5
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_config.rb +313 -0
- data/lib/chef/resource/chef_client_cron.rb +35 -28
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
- data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +3 -3
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +2 -3
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +6 -6
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +5 -5
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/kernel_module.rb +1 -1
- data/lib/chef/resource/launchd.rb +17 -16
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +27 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
- data/lib/chef/resource/openssl_x509_crl.rb +19 -10
- data/lib/chef/resource/openssl_x509_request.rb +14 -16
- data/lib/chef/resource/osx_profile.rb +77 -13
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +5 -5
- data/lib/chef/resource/powershell_script.rb +7 -1
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/support/client.erb +65 -0
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +1 -5
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +10 -3
- data/lib/chef/resource/windows_audit_policy.rb +26 -24
- data/lib/chef/resource/windows_certificate.rb +6 -4
- data/lib/chef/resource/windows_firewall_profile.rb +22 -20
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +3 -3
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +3 -1
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/mixin/powershell_out_spec.rb +9 -1
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/powershell_script_spec.rb +57 -14
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
- data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
- data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +8 -6
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +22 -35
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +6 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
- data/spec/unit/mixin/powershell_out_spec.rb +14 -0
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/powershell_script_spec.rb +11 -0
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +0 -2
- metadata +46 -18
- data/lib/chef/dist.rb +0 -68
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
data/spec/spec_helper.rb
CHANGED
@@ -68,7 +68,7 @@ end
|
|
68
68
|
|
69
69
|
# If you want to load anything into the testing environment
|
70
70
|
# without versioning it, add it to spec/support/local_gems.rb
|
71
|
-
require "spec/support/local_gems
|
71
|
+
require "spec/support/local_gems" if File.exist?(File.join(File.dirname(__FILE__), "support", "local_gems.rb"))
|
72
72
|
|
73
73
|
# Explicitly require spec helpers that need to load first
|
74
74
|
require "spec/support/platform_helpers"
|
@@ -141,9 +141,10 @@ RSpec.configure do |config|
|
|
141
141
|
|
142
142
|
config.filter_run_excluding windows_only: true unless windows?
|
143
143
|
config.filter_run_excluding not_supported_on_windows: true if windows?
|
144
|
-
config.filter_run_excluding not_supported_on_macos: true if
|
145
|
-
config.filter_run_excluding macos_only: true unless
|
146
|
-
config.filter_run_excluding
|
144
|
+
config.filter_run_excluding not_supported_on_macos: true if macos?
|
145
|
+
config.filter_run_excluding macos_only: true unless macos?
|
146
|
+
config.filter_run_excluding macos_1013: true unless macos_1013?
|
147
|
+
config.filter_run_excluding macos_gte_1014: true unless macos_gte_1014?
|
147
148
|
config.filter_run_excluding not_supported_on_aix: true if aix?
|
148
149
|
config.filter_run_excluding not_supported_on_solaris: true if solaris?
|
149
150
|
config.filter_run_excluding not_supported_on_gce: true if gce?
|
@@ -199,6 +200,7 @@ RSpec.configure do |config|
|
|
199
200
|
# check for particular binaries we need
|
200
201
|
config.filter_run_excluding choco_installed: true unless choco_installed?
|
201
202
|
config.filter_run_excluding requires_ifconfig: true unless ifconfig?
|
203
|
+
config.filter_run_excluding pwsh_installed: true unless pwsh_installed?
|
202
204
|
|
203
205
|
running_platform_arch = `uname -m`.strip unless windows?
|
204
206
|
|
@@ -242,6 +244,8 @@ RSpec.configure do |config|
|
|
242
244
|
|
243
245
|
Chef::Log.setup!
|
244
246
|
|
247
|
+
Chef::ServerAPIVersions.instance.reset!
|
248
|
+
|
245
249
|
Chef::Config[:log_level] = :fatal
|
246
250
|
Chef::Log.level(Chef::Config[:log_level])
|
247
251
|
|
@@ -306,8 +310,6 @@ RSpec.configure do |config|
|
|
306
310
|
end
|
307
311
|
|
308
312
|
require "webrick/utils"
|
309
|
-
require "thread"
|
310
|
-
|
311
313
|
# Webrick uses a centralized/synchronized timeout manager. It works by
|
312
314
|
# starting a thread to check for timeouts on an interval. The timeout
|
313
315
|
# checker thread cannot be stopped or canceled in any easy way, and it
|
@@ -21,7 +21,7 @@ require "chef/win32/file" if windows?
|
|
21
21
|
|
22
22
|
describe "Chef::ReservedNames::Win32::File", :windows_only do
|
23
23
|
before(:each) do
|
24
|
-
@path = File.expand_path(File.join(
|
24
|
+
@path = File.expand_path(File.join(__dir__, "..", "..", "data", "old_home_dir", "my-dot-emacs"))
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should not leak significant memory", :volatile do
|
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
CHEF_SPEC_DATA = File.expand_path(
|
18
|
-
CHEF_SPEC_ASSETS = File.expand_path(
|
17
|
+
CHEF_SPEC_DATA = File.expand_path(__dir__ + "/../data/")
|
18
|
+
CHEF_SPEC_ASSETS = File.expand_path(__dir__ + "/../functional/assets/")
|
19
19
|
CHEF_SPEC_BACKUP_PATH = File.join(Dir.tmpdir, "test-backup-path")
|
20
20
|
|
21
21
|
def sha256_checksum(path)
|
@@ -61,10 +61,10 @@ module Matchers
|
|
61
61
|
def profiler
|
62
62
|
@profiler ||= begin
|
63
63
|
if ChefUtils.windows?
|
64
|
-
require File.join(
|
64
|
+
require File.join(__dir__, "..", "platforms", "prof", "win32")
|
65
65
|
RSpec::Prof::Win32::Profiler.new
|
66
66
|
else
|
67
|
-
require File.join(
|
67
|
+
require File.join(__dir__, "..", "prof", "gc")
|
68
68
|
RSpec::Prof::GC::Profiler.new
|
69
69
|
end
|
70
70
|
end
|
@@ -3,7 +3,6 @@ require "chef/mixin/shell_out"
|
|
3
3
|
require "ohai/mixin/http_helper"
|
4
4
|
require "ohai/mixin/gce_metadata"
|
5
5
|
require "chef/mixin/powershell_out"
|
6
|
-
require "chef/version_class"
|
7
6
|
|
8
7
|
class ShellHelpers
|
9
8
|
extend Chef::Mixin::ShellOut
|
@@ -27,11 +26,11 @@ class DependencyProc < Proc
|
|
27
26
|
end
|
28
27
|
|
29
28
|
def ruby_64bit?
|
30
|
-
|
29
|
+
RbConfig::CONFIG["host_cpu"].include?("x86_64")
|
31
30
|
end
|
32
31
|
|
33
32
|
def ruby_32bit?
|
34
|
-
|
33
|
+
RbConfig::CONFIG["host_cpu"].include?("i686")
|
35
34
|
end
|
36
35
|
|
37
36
|
def windows?
|
@@ -58,17 +57,17 @@ end
|
|
58
57
|
def windows_2012r2?
|
59
58
|
return false unless windows?
|
60
59
|
|
61
|
-
(
|
60
|
+
(win32_os_version && win32_os_version.start_with?("6.3"))
|
62
61
|
end
|
63
62
|
|
64
63
|
def windows_gte_10?
|
65
64
|
return false unless windows?
|
66
65
|
|
67
|
-
Gem::Requirement.new(">= 10").satisfied_by?(Gem::Version.new(
|
66
|
+
Gem::Requirement.new(">= 10").satisfied_by?(Gem::Version.new(win32_os_version))
|
68
67
|
end
|
69
68
|
|
70
|
-
def
|
71
|
-
@
|
69
|
+
def win32_os_version
|
70
|
+
@win32_os_version ||= begin
|
72
71
|
wmi = WmiLite::Wmi.new
|
73
72
|
host = wmi.first_of("Win32_OperatingSystem")
|
74
73
|
host["version"]
|
@@ -95,26 +94,12 @@ def windows_user_right?(right)
|
|
95
94
|
Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
|
96
95
|
end
|
97
96
|
|
98
|
-
def
|
99
|
-
|
100
|
-
ver = Chef::Version.new(ohai[:platform_version])
|
101
|
-
return ver.major == 10 && ver.minor == 14
|
102
|
-
end
|
103
|
-
|
104
|
-
false
|
97
|
+
def macos_1013?
|
98
|
+
macos? && Gem::Requirement.new("~> 10.13.0").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
|
105
99
|
end
|
106
100
|
|
107
|
-
def
|
108
|
-
|
109
|
-
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
110
|
-
result.stdout.each_line do |line|
|
111
|
-
if /^ProductName:\sMac OS X.*$/.match?(line)
|
112
|
-
return true
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
false
|
101
|
+
def macos_gte_1014?
|
102
|
+
macos? && Gem::Requirement.new(">= 10.14").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
|
118
103
|
end
|
119
104
|
|
120
105
|
# detects if the hardware is 64-bit (evaluates to true in "WOW64" mode in a 32-bit app on a 64-bit system)
|
@@ -127,26 +112,24 @@ def windows32?
|
|
127
112
|
windows? && !windows64?
|
128
113
|
end
|
129
114
|
|
130
|
-
# def jruby?
|
131
|
-
|
132
115
|
def unix?
|
133
116
|
!windows?
|
134
117
|
end
|
135
118
|
|
136
119
|
def linux?
|
137
|
-
RUBY_PLATFORM.
|
120
|
+
RUBY_PLATFORM.include?("linux")
|
138
121
|
end
|
139
122
|
|
140
123
|
def macos?
|
141
|
-
RUBY_PLATFORM.
|
124
|
+
RUBY_PLATFORM.include?("darwin")
|
142
125
|
end
|
143
126
|
|
144
127
|
def solaris?
|
145
|
-
RUBY_PLATFORM.
|
128
|
+
RUBY_PLATFORM.include?("solaris")
|
146
129
|
end
|
147
130
|
|
148
131
|
def freebsd?
|
149
|
-
RUBY_PLATFORM.
|
132
|
+
RUBY_PLATFORM.include?("freebsd")
|
150
133
|
end
|
151
134
|
|
152
135
|
def intel_64bit?
|
@@ -182,7 +165,7 @@ def debian_family?
|
|
182
165
|
end
|
183
166
|
|
184
167
|
def aix?
|
185
|
-
RUBY_PLATFORM.
|
168
|
+
RUBY_PLATFORM.include?("aix")
|
186
169
|
end
|
187
170
|
|
188
171
|
def wpar?
|
@@ -216,8 +199,7 @@ def selinux_enabled?
|
|
216
199
|
end
|
217
200
|
|
218
201
|
def suse?
|
219
|
-
|
220
|
-
( ::File.exist?("/etc/os-release") && /sles|suse/.match?(File.read("/etc/os-release")) )
|
202
|
+
!!(ohai[:platform_family] == "suse")
|
221
203
|
end
|
222
204
|
|
223
205
|
def root?
|
@@ -261,5 +243,10 @@ end
|
|
261
243
|
|
262
244
|
def choco_installed?
|
263
245
|
result = ShellHelpers.powershell_out("choco --version")
|
264
|
-
result.stderr.empty?
|
246
|
+
result.stderr.empty?
|
247
|
+
end
|
248
|
+
|
249
|
+
def pwsh_installed?
|
250
|
+
result = ShellHelpers.powershell_out("pwsh.exe --version")
|
251
|
+
result.stderr.empty?
|
265
252
|
end
|
@@ -242,48 +242,100 @@ shared_examples_for "a securable resource with existing target" do
|
|
242
242
|
include_context "use Windows permissions"
|
243
243
|
|
244
244
|
describe "when setting owner" do
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
245
|
+
context "with user name" do
|
246
|
+
before do
|
247
|
+
resource.owner(SID.admin_account_name)
|
248
|
+
resource.run_action(:create)
|
249
|
+
end
|
249
250
|
|
250
|
-
|
251
|
-
|
251
|
+
it "should set the owner" do
|
252
|
+
expect(descriptor.owner).to eq(SID.Administrator)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "is marked as updated only if changes are made" do
|
256
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
257
|
+
end
|
252
258
|
end
|
253
259
|
|
254
|
-
|
255
|
-
|
260
|
+
context "with SID" do
|
261
|
+
before do
|
262
|
+
resource.owner(SID.Administrator.to_s)
|
263
|
+
resource.run_action(:create)
|
264
|
+
end
|
265
|
+
|
266
|
+
it "should set the owner" do
|
267
|
+
expect(descriptor.owner).to eq(SID.Administrator)
|
268
|
+
end
|
269
|
+
|
270
|
+
it "is marked as updated only if changes are made" do
|
271
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
272
|
+
end
|
256
273
|
end
|
257
274
|
end
|
258
275
|
|
259
276
|
describe "when setting group" do
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
277
|
+
context "with group name" do
|
278
|
+
before do
|
279
|
+
resource.group("Administrators")
|
280
|
+
resource.run_action(:create)
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should set the group" do
|
284
|
+
expect(descriptor.group).to eq(SID.Administrators)
|
285
|
+
end
|
264
286
|
|
265
|
-
|
266
|
-
|
287
|
+
it "is marked as updated only if changes are made" do
|
288
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
289
|
+
end
|
267
290
|
end
|
268
291
|
|
269
|
-
|
270
|
-
|
292
|
+
context "with group SID" do
|
293
|
+
before do
|
294
|
+
resource.group(SID.Administrators.to_s)
|
295
|
+
resource.run_action(:create)
|
296
|
+
end
|
297
|
+
|
298
|
+
it "should set the group" do
|
299
|
+
expect(descriptor.group).to eq(SID.Administrators)
|
300
|
+
end
|
301
|
+
|
302
|
+
it "is marked as updated only if changes are made" do
|
303
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
304
|
+
end
|
271
305
|
end
|
272
306
|
end
|
273
307
|
|
274
308
|
describe "when setting rights and deny_rights" do
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
309
|
+
context "with user name" do
|
310
|
+
before do
|
311
|
+
resource.deny_rights(:modify, "Guest")
|
312
|
+
resource.rights(:read, "Guest")
|
313
|
+
resource.run_action(:create)
|
314
|
+
end
|
280
315
|
|
281
|
-
|
282
|
-
|
316
|
+
it "should set the rights and deny_rights" do
|
317
|
+
expect(explicit_aces).to eq(denied_acl(SID.Guest, expected_modify_perms) + allowed_acl(SID.Guest, expected_read_perms))
|
318
|
+
end
|
319
|
+
|
320
|
+
it "is marked as updated only if changes are made" do
|
321
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
322
|
+
end
|
283
323
|
end
|
284
324
|
|
285
|
-
|
286
|
-
|
325
|
+
context "with SID" do
|
326
|
+
before do
|
327
|
+
resource.deny_rights(:modify, SID.Guest.to_s)
|
328
|
+
resource.rights(:read, SID.Guest.to_s)
|
329
|
+
resource.run_action(:create)
|
330
|
+
end
|
331
|
+
|
332
|
+
it "should set the rights and deny_rights" do
|
333
|
+
expect(explicit_aces).to eq(denied_acl(SID.Guest, expected_modify_perms) + allowed_acl(SID.Guest, expected_read_perms))
|
334
|
+
end
|
335
|
+
|
336
|
+
it "is marked as updated only if changes are made" do
|
337
|
+
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
338
|
+
end
|
287
339
|
end
|
288
340
|
end
|
289
341
|
end
|
@@ -302,12 +354,18 @@ shared_examples_for "a securable resource without existing target" do
|
|
302
354
|
expect(descriptor.owner).to eq(SID.default_security_object_owner)
|
303
355
|
end
|
304
356
|
|
305
|
-
it "sets owner when owner is specified" do
|
357
|
+
it "sets owner when owner is specified by name" do
|
306
358
|
resource.owner "Guest"
|
307
359
|
resource.run_action(:create)
|
308
360
|
expect(descriptor.owner).to eq(SID.Guest)
|
309
361
|
end
|
310
362
|
|
363
|
+
it "sets owner when owner is specified by SID" do
|
364
|
+
resource.owner SID.Guest.to_s
|
365
|
+
resource.run_action(:create)
|
366
|
+
expect(descriptor.owner).to eq(SID.Guest)
|
367
|
+
end
|
368
|
+
|
311
369
|
it "fails to set owner when owner has invalid characters" do
|
312
370
|
expect { resource.owner 'Lance "The Nose" Glindenberry III' }.to raise_error(Chef::Exceptions::ValidationFailed)
|
313
371
|
end
|
@@ -339,12 +397,18 @@ shared_examples_for "a securable resource without existing target" do
|
|
339
397
|
expect(descriptor.group).to eq(SID.default_security_object_group)
|
340
398
|
end
|
341
399
|
|
342
|
-
it "sets group when group is specified" do
|
400
|
+
it "sets group when group is specified by name" do
|
343
401
|
resource.group "Everyone"
|
344
402
|
resource.run_action(:create)
|
345
403
|
expect(descriptor.group).to eq(SID.Everyone)
|
346
404
|
end
|
347
405
|
|
406
|
+
it "sets group when group is specified by SID" do
|
407
|
+
resource.group SID.Everyone.to_s
|
408
|
+
resource.run_action(:create)
|
409
|
+
expect(descriptor.group).to eq(SID.Everyone)
|
410
|
+
end
|
411
|
+
|
348
412
|
it "fails to set group when group has invalid characters" do
|
349
413
|
expect { resource.group 'Lance "The Nose" Glindenberry III' }.to raise_error(Chef::Exceptions::ValidationFailed)
|
350
414
|
end
|
@@ -406,6 +470,17 @@ shared_examples_for "a securable resource without existing target" do
|
|
406
470
|
allowed_acl(SID.Guest, expected_modify_perms)
|
407
471
|
)
|
408
472
|
end
|
473
|
+
|
474
|
+
it "multiple rights with SID" do
|
475
|
+
resource.rights(:read, SID.Everyone.to_s)
|
476
|
+
resource.rights(:modify, SID.Guest.to_s)
|
477
|
+
resource.run_action(:create)
|
478
|
+
|
479
|
+
expect(explicit_aces).to eq(
|
480
|
+
allowed_acl(SID.Everyone, expected_read_perms) +
|
481
|
+
allowed_acl(SID.Guest, expected_modify_perms)
|
482
|
+
)
|
483
|
+
end
|
409
484
|
end
|
410
485
|
end
|
411
486
|
|
@@ -443,6 +518,12 @@ shared_examples_for "a securable resource without existing target" do
|
|
443
518
|
expect(explicit_aces).to eq(denied_acl(SID.Guest, expected_full_control_perms))
|
444
519
|
end
|
445
520
|
|
521
|
+
it "using SID" do
|
522
|
+
resource.deny_rights(:full_control, SID.Guest.to_s)
|
523
|
+
resource.run_action(:create)
|
524
|
+
expect(explicit_aces).to eq(denied_acl(SID.Guest, expected_full_control_perms))
|
525
|
+
end
|
526
|
+
|
446
527
|
it "deny_rights ahead of rights" do
|
447
528
|
resource.rights(:read, "Everyone")
|
448
529
|
resource.deny_rights(:modify, "Guest")
|
@@ -42,7 +42,7 @@ shared_context "using Win32::Service" do
|
|
42
42
|
service_name: "spec-service",
|
43
43
|
service_display_name: "Spec Test Service",
|
44
44
|
service_description: "Service for testing Chef::Application::WindowsServiceManager.",
|
45
|
-
service_file_path: File.expand_path(File.join(
|
45
|
+
service_file_path: File.expand_path(File.join(__dir__, "../../platforms/win32/spec_service.rb")),
|
46
46
|
delayed_start: true,
|
47
47
|
}
|
48
48
|
end
|
@@ -33,14 +33,16 @@ shared_examples_for "an application that loads a dot d" do
|
|
33
33
|
# make sure that we are correctly globbing.
|
34
34
|
let(:client_d_dir) do
|
35
35
|
Chef::Util::PathHelper.cleanpath(
|
36
|
-
File.join(
|
36
|
+
File.join(__dir__, "../../../data/client.d_00")
|
37
37
|
)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "loads the configuration in order" do
|
41
|
+
etc_chef_client_rb = Chef::Config.platform_specific_path("#{ChefConfig::Config.etc_chef_dir}/client.rb")
|
41
42
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_return("foo 0")
|
42
43
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_return("bar 0")
|
43
44
|
expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_return("strings 0")
|
45
|
+
allow(app).to receive(:apply_config).with("", etc_chef_client_rb) # for chef-client managed nodes running this spec
|
44
46
|
expect(app).to receive(:apply_config).with("foo 0", Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_call_original.ordered
|
45
47
|
expect(app).to receive(:apply_config).with("bar 0", Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_call_original.ordered
|
46
48
|
expect(app).to receive(:apply_config).with("strings 0", Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_call_original.ordered
|
@@ -51,7 +53,7 @@ shared_examples_for "an application that loads a dot d" do
|
|
51
53
|
context "when client_d_dir is set to a directory without configuration" do
|
52
54
|
let(:client_d_dir) do
|
53
55
|
Chef::Util::PathHelper.cleanpath(
|
54
|
-
File.join(
|
56
|
+
File.join(__dir__, "../../data/client.d_01")
|
55
57
|
)
|
56
58
|
end
|
57
59
|
|
@@ -69,7 +71,7 @@ shared_examples_for "an application that loads a dot d" do
|
|
69
71
|
# foo.rb as a directory should be ignored
|
70
72
|
let(:client_d_dir) do
|
71
73
|
Chef::Util::PathHelper.cleanpath(
|
72
|
-
File.join(
|
74
|
+
File.join(__dir__, "../../data/client.d_02")
|
73
75
|
)
|
74
76
|
end
|
75
77
|
|