chef 16.2.44 → 16.4.35
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 +4 -4
- data/Rakefile +3 -16
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +4 -3
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +8 -8
- data/lib/chef/application.rb +18 -1
- data/lib/chef/application/apply.rb +6 -5
- data/lib/chef/application/base.rb +2 -0
- data/lib/chef/application/client.rb +3 -0
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/client.rb +14 -14
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/deprecated.rb +8 -0
- data/lib/chef/digester.rb +3 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +3 -4
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_access_control/windows.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +12 -12
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/config_get.rb +1 -0
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/configure.rb +1 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +29 -37
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/ssh.rb +11 -7
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/log.rb +7 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +30 -6
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +17 -9
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +3 -4
- data/lib/chef/provider/package/windows.rb +9 -4
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +1 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +9 -11
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +2 -2
- data/lib/chef/resource/execute.rb +4 -5
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +18 -18
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
- data/lib/chef/resource/openssl_x509_crl.rb +3 -2
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
- data/lib/chef/resource/sudo.rb +31 -4
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +25 -5
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +199 -0
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +52 -21
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +27 -2
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -12
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/knife/configure_spec.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +9 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -9
- data/spec/functional/resource/apt_package_spec.rb +0 -1
- data/spec/functional/resource/bash_spec.rb +3 -2
- data/spec/functional/resource/bff_spec.rb +3 -3
- data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -2
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/execute_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +21 -9
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +7 -7
- data/spec/functional/resource/link_spec.rb +22 -25
- data/spec/functional/resource/mount_spec.rb +9 -1
- data/spec/functional/resource/msu_package_spec.rb +9 -3
- data/spec/functional/resource/powershell_script_spec.rb +8 -8
- data/spec/functional/resource/remote_file_spec.rb +7 -13
- data/spec/functional/resource/rpm_spec.rb +3 -3
- data/spec/functional/resource/timezone_spec.rb +2 -0
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_package_spec.rb +0 -1
- data/spec/functional/resource/windows_path_spec.rb +4 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
- data/spec/functional/resource/windows_service_spec.rb +4 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -3
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
- data/spec/functional/resource/yum_package_spec.rb +4 -1
- data/spec/functional/resource/zypper_package_spec.rb +4 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +5 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/crypto_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
- data/spec/integration/knife/config_use_profile_spec.rb +115 -61
- data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
- data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/environment_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +1 -1
- data/spec/integration/knife/role_from_file_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +4 -2
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +16 -10
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +9 -11
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -21
- data/spec/support/shared/functional/securable_resource.rb +1 -2
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -5
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +12 -8
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/application/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +4 -2
- data/spec/unit/chef_fs/config_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +8 -8
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/client_spec.rb +4 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/data_collector_spec.rb +23 -1
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +12 -8
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +20 -2
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +17 -20
- data/spec/unit/knife/cookbook_download_spec.rb +6 -6
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +6 -7
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +9 -6
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/powershell_out_spec.rb +2 -4
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/unformatter_spec.rb +2 -2
- data/spec/unit/mixin/uris_spec.rb +1 -1
- data/spec/unit/mixin/which.rb +8 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/provider/batch_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +1 -1
- data/spec/unit/provider/dsc_resource_spec.rb +22 -38
- data/spec/unit/provider/dsc_script_spec.rb +10 -10
- data/spec/unit/provider/execute_spec.rb +1 -8
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/openbsd_spec.rb +1 -1
- data/spec/unit/provider/package/pacman_spec.rb +17 -20
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- data/spec/unit/provider/user/dscl_spec.rb +2 -2
- data/spec/unit/provider/windows_env_spec.rb +5 -4
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/file/verification_spec.rb +2 -1
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +25 -8
- data/spec/unit/role_spec.rb +30 -28
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
- data/spec/unit/util/selinux_spec.rb +2 -1
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +1 -1
- metadata +45 -24
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
|
@@ -31,21 +31,32 @@ class Chef
|
|
|
31
31
|
super()
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
# Set InputFormat to None as PowerShell will hang if STDIN is redirected
|
|
35
|
+
# http://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected
|
|
36
|
+
DEFAULT_FLAGS = "-NoLogo -NonInteractive -NoProfile -ExecutionPolicy Bypass -InputFormat None".freeze
|
|
37
37
|
|
|
38
|
+
def command
|
|
38
39
|
# Must use -File rather than -Command to launch the script
|
|
39
40
|
# file created by the base class that contains the script
|
|
40
41
|
# code -- otherwise, powershell.exe does not propagate the
|
|
41
42
|
# error status of a failed Windows process that ran at the
|
|
42
43
|
# end of the script, it gets changed to '1'.
|
|
43
44
|
#
|
|
44
|
-
|
|
45
|
+
[
|
|
46
|
+
%Q{"#{interpreter_path}"},
|
|
47
|
+
DEFAULT_FLAGS,
|
|
48
|
+
new_resource.flags,
|
|
49
|
+
%Q{-File "#{script_file_path}"},
|
|
50
|
+
].join(" ")
|
|
45
51
|
end
|
|
46
52
|
|
|
47
53
|
protected
|
|
48
54
|
|
|
55
|
+
def interpreter_path
|
|
56
|
+
# Powershell.exe is always in "v1.0" folder (for backwards compatibility)
|
|
57
|
+
Chef::Util::PathHelper.join(basepath, "WindowsPowerShell", "v1.0", interpreter)
|
|
58
|
+
end
|
|
59
|
+
|
|
49
60
|
def code
|
|
50
61
|
code = wrapper_script
|
|
51
62
|
logger.trace("powershell_script provider called with script code:\n\n#{new_resource.code}\n")
|
|
@@ -71,7 +82,12 @@ class Chef
|
|
|
71
82
|
# written to the file system at this point, which is required since
|
|
72
83
|
# the intent is to execute the code just written to it.
|
|
73
84
|
user_script_file.close
|
|
74
|
-
validation_command =
|
|
85
|
+
validation_command = [
|
|
86
|
+
%Q{"#{interpreter_path}"},
|
|
87
|
+
DEFAULT_FLAGS,
|
|
88
|
+
new_resource.flags,
|
|
89
|
+
%Q{-Command ". '#{user_script_file.path}'"},
|
|
90
|
+
].join(" ")
|
|
75
91
|
|
|
76
92
|
# Note that other script providers like bash allow syntax errors
|
|
77
93
|
# to be suppressed by setting 'returns' to a value that the
|
data/lib/chef/provider/route.rb
CHANGED
|
@@ -23,8 +23,8 @@ require "chef-utils" unless defined?(ChefUtils::CANARY)
|
|
|
23
23
|
class Chef
|
|
24
24
|
class Provider
|
|
25
25
|
class Service < Chef::Provider
|
|
26
|
-
include
|
|
27
|
-
extend
|
|
26
|
+
include Chef::Platform::ServiceHelpers
|
|
27
|
+
extend Chef::Platform::ServiceHelpers
|
|
28
28
|
|
|
29
29
|
def supports
|
|
30
30
|
@supports ||= new_resource.supports.dup
|
|
@@ -32,7 +32,7 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def load_current_resource
|
|
35
|
-
raise Chef::Exceptions::Service, "Could not find /etc/rc.conf" unless ::File.
|
|
35
|
+
raise Chef::Exceptions::Service, "Could not find /etc/rc.conf" unless ::File.exist?("/etc/rc.conf")
|
|
36
36
|
raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless /DAEMONS=\((.*)\)/m.match?(::File.read("/etc/rc.conf"))
|
|
37
37
|
|
|
38
38
|
super
|
|
@@ -45,7 +45,7 @@ class Chef
|
|
|
45
45
|
shared_resource_requirements
|
|
46
46
|
requirements.assert(:all_actions) do |a|
|
|
47
47
|
update_rcd = "/usr/sbin/update-rc.d"
|
|
48
|
-
a.assertion { ::File.
|
|
48
|
+
a.assertion { ::File.exist? update_rcd }
|
|
49
49
|
a.failure_message Chef::Exceptions::Service, "#{update_rcd} does not exist!"
|
|
50
50
|
# no whyrun recovery - this is a base system component of debian
|
|
51
51
|
# distros and must be present
|
|
@@ -34,7 +34,7 @@ class Chef::Provider::Service::Gentoo < Chef::Provider::Service::Init
|
|
|
34
34
|
@current_resource.enabled(
|
|
35
35
|
Dir.glob("/etc/runlevels/**/#{Chef::Util::PathHelper.escape_glob_dir(@current_resource.service_name)}").any? do |file|
|
|
36
36
|
@found_script = true
|
|
37
|
-
exists = ::File.
|
|
37
|
+
exists = ::File.exist? file
|
|
38
38
|
readable = ::File.readable? file
|
|
39
39
|
logger.trace "#{@new_resource} exists: #{exists}, readable: #{readable}"
|
|
40
40
|
exists && readable
|
|
@@ -47,7 +47,7 @@ class Chef::Provider::Service::Gentoo < Chef::Provider::Service::Init
|
|
|
47
47
|
|
|
48
48
|
def define_resource_requirements
|
|
49
49
|
requirements.assert(:all_actions) do |a|
|
|
50
|
-
a.assertion { ::File.
|
|
50
|
+
a.assertion { ::File.exist?("/sbin/rc-update") }
|
|
51
51
|
a.failure_message Chef::Exceptions::Service, "/sbin/rc-update does not exist"
|
|
52
52
|
# no whyrun recovery -t his is a core component whose presence is
|
|
53
53
|
# unlikely to be affected by what we do in the course of a chef run
|
|
@@ -81,7 +81,7 @@ class Chef
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
requirements.assert(:all_actions) do |a|
|
|
84
|
-
a.assertion { ::File.
|
|
84
|
+
a.assertion { ::File.exist?(@plist.to_s) }
|
|
85
85
|
a.failure_message Chef::Exceptions::Service,
|
|
86
86
|
"Could not find plist for #{@new_resource}"
|
|
87
87
|
end
|
|
@@ -221,7 +221,7 @@ class Chef
|
|
|
221
221
|
return nil if @plist.nil?
|
|
222
222
|
|
|
223
223
|
# Plist must exist by this point
|
|
224
|
-
raise Chef::Exceptions::FileNotFound, "Cannot find #{@plist}!" unless ::File.
|
|
224
|
+
raise Chef::Exceptions::FileNotFound, "Cannot find #{@plist}!" unless ::File.exist?(@plist)
|
|
225
225
|
|
|
226
226
|
# Most services have the same internal label as the name of the
|
|
227
227
|
# plist file. However, there is no rule saying that *has* to be
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
require_relative "../../mixin/shell_out"
|
|
20
19
|
require_relative "init"
|
|
21
20
|
require_relative "../../resource/service"
|
|
22
21
|
|
|
@@ -27,8 +26,6 @@ class Chef
|
|
|
27
26
|
|
|
28
27
|
provides :service, os: "openbsd"
|
|
29
28
|
|
|
30
|
-
include Chef::Mixin::ShellOut
|
|
31
|
-
|
|
32
29
|
attr_reader :init_command, :rc_conf, :rc_conf_local, :enabled_state_found
|
|
33
30
|
|
|
34
31
|
RC_CONF_PATH = "/etc/rc.conf".freeze
|
|
@@ -132,7 +129,7 @@ class Chef
|
|
|
132
129
|
end
|
|
133
130
|
|
|
134
131
|
def update_rcl(value)
|
|
135
|
-
FileUtils.touch RC_CONF_LOCAL_PATH unless ::File.
|
|
132
|
+
FileUtils.touch RC_CONF_LOCAL_PATH unless ::File.exist? RC_CONF_LOCAL_PATH
|
|
136
133
|
::File.write(RC_CONF_LOCAL_PATH, value)
|
|
137
134
|
@rc_conf_local = value
|
|
138
135
|
end
|
|
@@ -56,7 +56,7 @@ class Chef
|
|
|
56
56
|
|
|
57
57
|
requirements.assert(:all_actions) do |a|
|
|
58
58
|
chkconfig_file = "/sbin/chkconfig"
|
|
59
|
-
a.assertion { ::File.
|
|
59
|
+
a.assertion { ::File.exist? chkconfig_file }
|
|
60
60
|
a.failure_message Chef::Exceptions::Service, "#{chkconfig_file} does not exist!"
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -80,7 +80,7 @@ class Chef
|
|
|
80
80
|
|
|
81
81
|
super
|
|
82
82
|
|
|
83
|
-
if ::File.
|
|
83
|
+
if ::File.exist?("/sbin/chkconfig")
|
|
84
84
|
chkconfig = shell_out!("/sbin/chkconfig --list #{current_resource.service_name}", returns: [0, 1])
|
|
85
85
|
unless run_levels.nil? || run_levels.empty?
|
|
86
86
|
all_levels_match = true
|
|
@@ -135,7 +135,7 @@ class Chef
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
# Get enabled/disabled state by reading job configuration file
|
|
138
|
-
if ::File.
|
|
138
|
+
if ::File.exist?("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
139
139
|
logger.trace("#{@new_resource} found #{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
140
140
|
::File.open("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}", "r") do |file|
|
|
141
141
|
while line = file.gets
|
|
@@ -95,17 +95,17 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
|
95
95
|
shell_out!(@new_resource.start_command)
|
|
96
96
|
else
|
|
97
97
|
spawn_command_thread do
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
end
|
|
98
|
+
|
|
99
|
+
Win32::Service.start(@new_resource.service_name)
|
|
100
|
+
rescue SystemCallError => ex
|
|
101
|
+
if ex.errno == ERROR_SERVICE_LOGON_FAILED
|
|
102
|
+
logger.error ex.message
|
|
103
|
+
raise Chef::Exceptions::Service,
|
|
104
|
+
"Service #{@new_resource} did not start due to a logon failure (error #{ERROR_SERVICE_LOGON_FAILED}): possibly the specified user '#{@new_resource.run_as_user}' does not have the 'log on as a service' privilege, or the password is incorrect."
|
|
105
|
+
else
|
|
106
|
+
raise ex
|
|
108
107
|
end
|
|
108
|
+
|
|
109
109
|
end
|
|
110
110
|
wait_for_state(RUNNING)
|
|
111
111
|
end
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
require_relative "../provider"
|
|
20
20
|
require_relative "../mixin/which"
|
|
21
|
-
require_relative "../mixin/shell_out"
|
|
22
21
|
require_relative "../resource/file"
|
|
23
22
|
require_relative "../resource/file/verification/systemd_unit"
|
|
24
23
|
require "iniparse"
|
|
@@ -28,7 +27,6 @@ class Chef
|
|
|
28
27
|
class Provider
|
|
29
28
|
class SystemdUnit < Chef::Provider
|
|
30
29
|
include Chef::Mixin::Which
|
|
31
|
-
include Chef::Mixin::ShellOut
|
|
32
30
|
|
|
33
31
|
provides :systemd_unit
|
|
34
32
|
|
|
@@ -562,7 +562,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
|
562
562
|
# Sets a value in user information hash using Chef attributes as keys.
|
|
563
563
|
#
|
|
564
564
|
def dscl_set(user_hash, key, value)
|
|
565
|
-
raise "Unknown dscl key #{key}" unless DSCL_PROPERTY_MAP.
|
|
565
|
+
raise "Unknown dscl key #{key}" unless DSCL_PROPERTY_MAP.key?(key)
|
|
566
566
|
|
|
567
567
|
user_hash[DSCL_PROPERTY_MAP[key]] = [ value ]
|
|
568
568
|
user_hash
|
|
@@ -572,7 +572,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
|
572
572
|
# Gets a value from user information hash using Chef attributes as keys.
|
|
573
573
|
#
|
|
574
574
|
def dscl_get(user_hash, key)
|
|
575
|
-
raise "Unknown dscl key #{key}" unless DSCL_PROPERTY_MAP.
|
|
575
|
+
raise "Unknown dscl key #{key}" unless DSCL_PROPERTY_MAP.key?(key)
|
|
576
576
|
|
|
577
577
|
# DSCL values are set as arrays
|
|
578
578
|
value = user_hash[DSCL_PROPERTY_MAP[key]]
|
|
@@ -583,16 +583,16 @@ class Chef
|
|
|
583
583
|
timeout = Time.now + 5
|
|
584
584
|
|
|
585
585
|
loop do
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
end
|
|
586
|
+
|
|
587
|
+
run_dscl("read", "/Users/#{new_resource.username}", "ShadowHashData")
|
|
588
|
+
break
|
|
589
|
+
rescue Chef::Exceptions::DsclCommandFailed => e
|
|
590
|
+
if Time.now < timeout
|
|
591
|
+
sleep 0.1
|
|
592
|
+
else
|
|
593
|
+
raise Chef::Exceptions::User, e.message
|
|
595
594
|
end
|
|
595
|
+
|
|
596
596
|
end
|
|
597
597
|
end
|
|
598
598
|
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
require_relative "../mixin/shell_out"
|
|
20
19
|
require "rexml/document" unless defined?(REXML::Document)
|
|
21
20
|
require "iso8601" if ChefUtils.windows?
|
|
22
21
|
require_relative "../provider"
|
|
@@ -26,8 +25,6 @@ require "win32/taskscheduler" if ChefUtils.windows?
|
|
|
26
25
|
class Chef
|
|
27
26
|
class Provider
|
|
28
27
|
class WindowsTask < Chef::Provider
|
|
29
|
-
include Chef::Mixin::ShellOut
|
|
30
|
-
|
|
31
28
|
if ChefUtils.windows?
|
|
32
29
|
include Win32
|
|
33
30
|
|
|
@@ -37,7 +37,7 @@ class Chef
|
|
|
37
37
|
if template_available?(new_resource.source)
|
|
38
38
|
source new_resource.source
|
|
39
39
|
else
|
|
40
|
-
source ::File.expand_path("
|
|
40
|
+
source ::File.expand_path("support/yum_repo.erb", __dir__)
|
|
41
41
|
local true
|
|
42
42
|
end
|
|
43
43
|
sensitive new_resource.sensitive
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
require_relative "../resource"
|
|
20
20
|
require_relative "../dsl/declare_resource"
|
|
21
21
|
require_relative "noop"
|
|
22
|
-
require_relative "../mixin/shell_out"
|
|
23
22
|
require "shellwords" unless defined?(Shellwords)
|
|
24
23
|
require_relative "../dist"
|
|
25
24
|
|
|
@@ -41,7 +40,7 @@ class Chef
|
|
|
41
40
|
if template_available?(new_resource.source)
|
|
42
41
|
source new_resource.source
|
|
43
42
|
else
|
|
44
|
-
source ::File.expand_path("
|
|
43
|
+
source ::File.expand_path("support/zypper_repo.erb", __dir__)
|
|
45
44
|
local true
|
|
46
45
|
end
|
|
47
46
|
sensitive new_resource.sensitive
|
data/lib/chef/providers.rb
CHANGED
|
@@ -36,7 +36,6 @@ require_relative "provider/mount"
|
|
|
36
36
|
require_relative "provider/noop"
|
|
37
37
|
require_relative "provider/package"
|
|
38
38
|
require_relative "provider/powershell_script"
|
|
39
|
-
require_relative "provider/osx_profile"
|
|
40
39
|
require_relative "provider/remote_directory"
|
|
41
40
|
require_relative "provider/remote_file"
|
|
42
41
|
require_relative "provider/route"
|
data/lib/chef/recipe.rb
CHANGED
data/lib/chef/resource.rb
CHANGED
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
#
|
|
20
20
|
|
|
21
21
|
require_relative "exceptions"
|
|
22
|
-
require_relative "dsl/data_query"
|
|
23
|
-
require_relative "dsl/registry_helper"
|
|
24
22
|
require_relative "dsl/reboot_pending"
|
|
25
23
|
require_relative "dsl/resources"
|
|
26
24
|
require_relative "dsl/declare_resource"
|
|
@@ -53,8 +51,6 @@ class Chef
|
|
|
53
51
|
#
|
|
54
52
|
|
|
55
53
|
include Chef::DSL::DeclareResource
|
|
56
|
-
include Chef::DSL::DataQuery
|
|
57
|
-
include Chef::DSL::RegistryHelper
|
|
58
54
|
include Chef::DSL::RebootPending
|
|
59
55
|
extend Chef::Mixin::Provides
|
|
60
56
|
|
|
@@ -460,7 +456,7 @@ class Chef
|
|
|
460
456
|
property :umask, String,
|
|
461
457
|
desired_state: false,
|
|
462
458
|
introduced: "16.2",
|
|
463
|
-
description: "Set a umask to be used for the duration of converging the resource. Defaults to `nil`, which means to use the system umask."
|
|
459
|
+
description: "Set a umask to be used for the duration of converging the resource. Defaults to `nil`, which means to use the system umask. Unsupported on Windows because Windows lacks a direct equivalent to UNIX's umask."
|
|
464
460
|
|
|
465
461
|
# The time it took (in seconds) to run the most recently-run action. Not
|
|
466
462
|
# cumulative across actions. This is set to 0 as soon as a new action starts
|
|
@@ -638,6 +634,7 @@ class Chef
|
|
|
638
634
|
# Do NOT use this. It may be removed. It is for internal purposes only.
|
|
639
635
|
# @api private
|
|
640
636
|
attr_reader :resource_initializing
|
|
637
|
+
|
|
641
638
|
def resource_initializing=(value)
|
|
642
639
|
if value
|
|
643
640
|
@resource_initializing = true
|
|
@@ -662,17 +659,17 @@ class Chef
|
|
|
662
659
|
|
|
663
660
|
all_props = {}
|
|
664
661
|
self.class.state_properties.map do |p|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
662
|
+
|
|
663
|
+
all_props[p.name.to_s] = p.sensitive? ? '"*sensitive value suppressed*"' : value_to_text(p.get(self))
|
|
664
|
+
rescue Chef::Exceptions::ValidationFailed
|
|
665
|
+
# This space left intentionally blank, the property was probably required or had an invalid default.
|
|
666
|
+
|
|
670
667
|
end
|
|
671
668
|
|
|
672
669
|
ivars = instance_variables.map(&:to_sym) - HIDDEN_IVARS
|
|
673
670
|
ivars.each do |ivar|
|
|
674
671
|
iv = ivar.to_s.sub(/^@/, "")
|
|
675
|
-
if all_props.
|
|
672
|
+
if all_props.key?(iv)
|
|
676
673
|
text << " #{iv} #{all_props[iv]}\n"
|
|
677
674
|
elsif (value = instance_variable_get(ivar)) && !(value.respond_to?(:empty?) && value.empty?)
|
|
678
675
|
text << " #{iv} #{value_to_text(value)}\n"
|
|
@@ -888,6 +885,7 @@ class Chef
|
|
|
888
885
|
# have.
|
|
889
886
|
#
|
|
890
887
|
attr_writer :allowed_actions
|
|
888
|
+
|
|
891
889
|
def allowed_actions(value = NOT_PASSED)
|
|
892
890
|
if value != NOT_PASSED
|
|
893
891
|
self.allowed_actions = value
|
|
@@ -89,7 +89,7 @@ class Chef
|
|
|
89
89
|
description: "The path to the alternatives link."
|
|
90
90
|
|
|
91
91
|
property :path, String,
|
|
92
|
-
description: "The
|
|
92
|
+
description: "The absolute path to the original application binary such as `/usr/bin/ruby27`."
|
|
93
93
|
|
|
94
94
|
property :priority, [String, Integer],
|
|
95
95
|
coerce: proc { |n| n.to_i },
|
|
@@ -192,16 +192,7 @@ class Chef
|
|
|
192
192
|
#
|
|
193
193
|
# @return [Boolean] is the key valid or not
|
|
194
194
|
def key_is_valid?(key)
|
|
195
|
-
valid =
|
|
196
|
-
|
|
197
|
-
so = shell_out("apt-key", "list")
|
|
198
|
-
so.stdout.split(/\n/).map do |t|
|
|
199
|
-
if t =~ %r{^\/#{key}.*\[expired: .*\]$}
|
|
200
|
-
logger.debug "Found expired key: #{t}"
|
|
201
|
-
valid = false
|
|
202
|
-
break
|
|
203
|
-
end
|
|
204
|
-
end
|
|
195
|
+
valid = shell_out("apt-key", "list").stdout.each_line.none?(%r{^\/#{key}.*\[expired: .*\]$})
|
|
205
196
|
|
|
206
197
|
logger.debug "key #{key} #{valid ? "is valid" : "is not valid"}"
|
|
207
198
|
valid
|
|
@@ -146,8 +146,8 @@ class Chef
|
|
|
146
146
|
def install_xcode_cli_tools(label)
|
|
147
147
|
# This script was graciously borrowed and modified from Tim Sutton's
|
|
148
148
|
# osx-vm-templates at https://github.com/timsutton/osx-vm-templates/blob/b001475df54a9808d3d56d06e71b8fa3001fff42/scripts/xcode-cli-tools.sh
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
bash "install Xcode Command Line Tools" do
|
|
150
|
+
code <<-EOH
|
|
151
151
|
# create the placeholder file that's checked by CLI updates' .dist code
|
|
152
152
|
# in Apple's SUS catalog
|
|
153
153
|
touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
|