chef 16.1.16 → 16.18.30
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +32 -27
- data/README.md +5 -5
- data/Rakefile +35 -30
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +5 -5
- data/chef.gemspec +32 -10
- data/lib/chef/action_collection.rb +5 -1
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application/apply.rb +19 -13
- data/lib/chef/application/base.rb +27 -24
- data/lib/chef/application/client.rb +17 -6
- 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 +39 -39
- data/lib/chef/application/windows_service_manager.rb +7 -7
- data/lib/chef/application.rb +33 -19
- 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 +55 -55
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_pattern.rb +1 -1
- 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 +2 -2
- 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/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/client.rb +32 -59
- data/lib/chef/compliance/default_attributes.rb +97 -0
- data/lib/chef/compliance/fetcher/automate.rb +80 -0
- data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
- data/lib/chef/compliance/reporter/automate.rb +201 -0
- data/lib/chef/compliance/reporter/chef_server_automate.rb +94 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +20 -0
- data/lib/chef/compliance/reporter/json_file.rb +19 -0
- data/lib/chef/compliance/runner.rb +269 -0
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +6 -2
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/cookbook_manifest.rb +2 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +30 -11
- data/lib/chef/data_bag.rb +5 -6
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +15 -5
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/data_collector.rb +7 -6
- data/lib/chef/deprecated.rb +27 -5
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +4 -3
- 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 +10 -8
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- 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/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/environment.rb +6 -7
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +16 -6
- data/lib/chef/file_access_control/windows.rb +12 -11
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/file_cache.rb +4 -4
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +10 -10
- 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/compile_error_inspector.rb +3 -3
- 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 +8 -8
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_mapper.rb +2 -2
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
- data/lib/chef/handler/json_file.rb +1 -1
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +4 -2
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +8 -6
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +52 -15
- data/lib/chef/http.rb +38 -31
- data/lib/chef/json_compat.rb +4 -9
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +12 -12
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
- data/lib/chef/knife/bootstrap/train_connector.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +93 -40
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -96
- 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 -95
- 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 +12 -17
- data/lib/chef/knife/configure.rb +5 -3
- data/lib/chef/knife/cookbook_delete.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 +3 -3
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/formatting_options.rb +49 -0
- data/lib/chef/knife/core/gem_glob_loader.rb +2 -2
- 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/node_presenter.rb +0 -25
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -26
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +12 -3
- data/lib/chef/knife/core/windows_bootstrap_context.rb +51 -42
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +4 -4
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- 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 +2 -2
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +4 -3
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- 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 +2 -2
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +33 -12
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +10 -13
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- 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/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/knife.rb +9 -9
- 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/log.rb +8 -3
- data/lib/chef/mixin/checksum.rb +5 -0
- data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
- data/lib/chef/mixin/convert_to_class_name.rb +0 -56
- data/lib/chef/mixin/deep_merge.rb +35 -18
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/mixin/default_paths.rb} +11 -13
- data/lib/chef/mixin/openssl_helper.rb +32 -11
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/powershell_exec.rb +17 -22
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/properties.rb +2 -0
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +4 -3
- data/lib/chef/mixin/unformatter.rb +1 -1
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- 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/attribute.rb +22 -7
- data/lib/chef/node/attribute_collections.rb +2 -6
- data/lib/chef/node/mixin/deep_merge_cache.rb +4 -4
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node.rb +43 -18
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/query_helpers.rb +4 -4
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +8 -3
- data/lib/chef/powershell.rb +10 -4
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/cron.rb +9 -28
- data/lib/chef/provider/dsc_resource.rb +12 -24
- data/lib/chef/provider/dsc_script.rb +16 -20
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +5 -5
- data/lib/chef/provider/git.rb +22 -14
- data/lib/chef/provider/group/dscl.rb +3 -3
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/group/windows.rb +13 -2
- data/lib/chef/provider/group.rb +14 -8
- data/lib/chef/provider/ifconfig/debian.rb +38 -22
- data/lib/chef/provider/ifconfig/redhat.rb +54 -18
- data/lib/chef/provider/ifconfig.rb +16 -19
- data/lib/chef/provider/launchd.rb +3 -13
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/linux.rb +67 -0
- data/lib/chef/provider/mount/mount.rb +41 -43
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/mount.rb +23 -3
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/apt.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +6 -6
- data/lib/chef/provider/package/dnf/dnf_helper.py +23 -6
- data/lib/chef/provider/package/dnf/python_helper.rb +6 -6
- data/lib/chef/provider/package/dnf.rb +39 -12
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/freebsd/base.rb +3 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +4 -2
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/ips.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +10 -2
- data/lib/chef/provider/package/rubygems.rb +25 -22
- data/lib/chef/provider/package/snap.rb +99 -34
- data/lib/chef/provider/package/solaris.rb +0 -2
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
- data/lib/chef/provider/package/windows.rb +12 -7
- data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
- data/lib/chef/provider/package/yum/yum_helper.py +4 -10
- data/lib/chef/provider/package/zypper.rb +99 -73
- data/lib/chef/provider/package.rb +53 -18
- data/lib/chef/provider/powershell_script.rb +40 -17
- data/lib/chef/provider/registry_key.rb +4 -3
- 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/http.rb +4 -1
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +4 -8
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +5 -4
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +7 -7
- data/lib/chef/provider/service/openbsd.rb +5 -8
- data/lib/chef/provider/service/redhat.rb +4 -4
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +11 -11
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +2 -1
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +10 -10
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +29 -21
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/windows.rb +10 -3
- data/lib/chef/provider/user.rb +17 -9
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/yum_repository.rb +3 -3
- data/lib/chef/provider/zypper_repository.rb +33 -14
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -4
- data/lib/chef/pwsh.rb +71 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +7 -15
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +119 -2
- data/lib/chef/resource/batch.rb +5 -3
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +59 -2
- data/lib/chef/resource/build_essential.rb +7 -10
- 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 +36 -29
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +36 -21
- data/lib/chef/resource/chef_client_systemd_timer.rb +29 -22
- data/lib/chef/resource/chef_client_trusted_certificate.rb +102 -0
- data/lib/chef/resource/chef_gem.rb +58 -22
- 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 +14 -14
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +99 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +9 -89
- data/lib/chef/resource/cron_access.rb +13 -5
- data/lib/chef/resource/csh.rb +2 -3
- data/lib/chef/resource/dmg_package.rb +2 -2
- 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 +9 -2
- data/lib/chef/resource/execute.rb +486 -15
- data/lib/chef/resource/file.rb +5 -5
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +36 -3
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_cask.rb +16 -10
- data/lib/chef/resource/homebrew_package.rb +32 -3
- data/lib/chef/resource/homebrew_update.rb +110 -0
- data/lib/chef/resource/hostname.rb +27 -40
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/ifconfig.rb +52 -5
- data/lib/chef/resource/kernel_module.rb +15 -2
- data/lib/chef/resource/ksh.rb +3 -3
- data/lib/chef/resource/launchd.rb +18 -17
- data/lib/chef/resource/locale.rb +4 -4
- data/lib/chef/resource/lwrp_base.rb +4 -5
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/mdadm.rb +2 -2
- data/lib/chef/resource/mount.rb +9 -3
- 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 +29 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +49 -49
- data/lib/chef/resource/openssl_x509_crl.rb +22 -12
- data/lib/chef/resource/openssl_x509_request.rb +37 -36
- data/lib/chef/resource/osx_profile.rb +292 -6
- data/lib/chef/resource/perl.rb +2 -3
- data/lib/chef/resource/plist.rb +26 -11
- data/lib/chef/resource/powershell_package_source.rb +25 -24
- data/lib/chef/resource/powershell_script.rb +40 -41
- data/lib/chef/resource/python.rb +2 -3
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/registry_key.rb +93 -2
- data/lib/chef/resource/remote_directory.rb +1 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/rhsm_register.rb +39 -10
- data/lib/chef/resource/rhsm_subscription.rb +5 -5
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby.rb +1 -6
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/_scm.rb +2 -1
- data/lib/chef/resource/scm/git.rb +82 -1
- data/lib/chef/resource/scm/subversion.rb +14 -2
- data/lib/chef/resource/script.rb +2 -2
- data/lib/chef/resource/service.rb +5 -5
- data/lib/chef/resource/solaris_package.rb +0 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +18 -3
- data/lib/chef/resource/sudo.rb +32 -5
- data/lib/chef/resource/support/client.erb +68 -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/swap_file.rb +17 -0
- data/lib/chef/resource/sysctl.rb +6 -10
- data/lib/chef/resource/systemd_unit.rb +45 -4
- data/lib/chef/resource/template.rb +4 -4
- data/lib/chef/resource/timezone.rb +122 -68
- data/lib/chef/resource/user/windows_user.rb +5 -0
- data/lib/chef/resource/user_ulimit.rb +2 -1
- data/lib/chef/resource/windows_ad_join.rb +51 -13
- data/lib/chef/resource/windows_audit_policy.rb +232 -0
- data/lib/chef/resource/windows_auto_run.rb +13 -0
- data/lib/chef/resource/windows_certificate.rb +95 -39
- 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 +9 -4
- 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_env.rb +173 -0
- data/lib/chef/resource/windows_feature.rb +4 -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 +196 -0
- data/lib/chef/resource/windows_firewall_rule.rb +14 -14
- data/lib/chef/resource/windows_font.rb +7 -5
- data/lib/chef/resource/windows_package.rb +30 -6
- data/lib/chef/resource/windows_pagefile.rb +5 -1
- data/lib/chef/resource/windows_path.rb +38 -0
- data/lib/chef/resource/windows_printer.rb +22 -21
- data/lib/chef/resource/windows_printer_port.rb +20 -17
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +98 -49
- data/lib/chef/resource/windows_service.rb +108 -0
- data/lib/chef/resource/windows_share.rb +23 -21
- data/lib/chef/resource/windows_shortcut.rb +3 -2
- data/lib/chef/resource/windows_task.rb +633 -32
- data/lib/chef/resource/windows_uac.rb +5 -1
- data/lib/chef/resource/windows_user_privilege.rb +111 -77
- data/lib/chef/resource/windows_workgroup.rb +11 -10
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource/yum_repository.rb +15 -10
- data/lib/chef/resource.rb +60 -27
- data/lib/chef/resource_collection/resource_set.rb +2 -6
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +82 -70
- data/lib/chef/resource_reporter.rb +1 -3
- data/lib/chef/resources.rb +9 -3
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +21 -21
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_lock.rb +3 -3
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/search/query.rb +7 -6
- data/lib/chef/server_api.rb +0 -4
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell/ext.rb +15 -15
- data/lib/chef/shell/shell_session.rb +4 -2
- data/lib/chef/shell.rb +63 -27
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +2 -2
- data/lib/chef/util/diff.rb +16 -17
- data/lib/chef/util/dsc/configuration_generator.rb +53 -12
- data/lib/chef/util/dsc/lcm_output_parser.rb +4 -7
- data/lib/chef/util/dsc/local_configuration_manager.rb +18 -15
- data/lib/chef/util/dsc/resource_store.rb +5 -11
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/version_string.rb +1 -1
- data/lib/chef/win32/api/file.rb +4 -0
- data/lib/chef/win32/api.rb +9 -2
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/file.rb +4 -4
- data/lib/chef/win32/registry.rb +4 -6
- data/lib/chef/win32/security/sid.rb +1 -1
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/unicode.rb +1 -1
- data/lib/chef/win32/version.rb +4 -2
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/rubygems.org/latest_specs.4.8.gz +0 -0
- data/spec/data/rubygems.org/nonexistent_gem +0 -0
- data/spec/data/rubygems.org/sexp_processor +0 -0
- data/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz +0 -0
- data/spec/data/shef-config.rb +1 -1
- data/spec/data/ssl/binary/chef-rspec-der.cert +0 -0
- data/spec/data/ssl/binary/chef-rspec-der.key +0 -0
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/assets/yumrepo-empty/repodata/01a3b-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/401dc-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/5dc1e-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/6bf96-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/7c365-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/dabe2-primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo-empty/repodata/repomd.xml +55 -0
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/knife/configure_spec.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/mixin/powershell_out_spec.rb +11 -3
- data/spec/functional/resource/aix_service_spec.rb +11 -4
- data/spec/functional/resource/aixinit_service_spec.rb +9 -10
- data/spec/functional/resource/apt_package_spec.rb +4 -7
- 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 +11 -3
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +24 -6
- data/spec/functional/resource/dnf_package_spec.rb +323 -17
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +6 -10
- 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 +26 -10
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +8 -8
- data/spec/functional/resource/link_spec.rb +30 -25
- data/spec/functional/resource/mount_spec.rb +19 -3
- data/spec/functional/resource/msu_package_spec.rb +9 -3
- data/spec/functional/resource/ohai_spec.rb +2 -10
- data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
- data/spec/functional/resource/powershell_script_spec.rb +65 -22
- data/spec/functional/resource/remote_file_spec.rb +9 -15
- data/spec/functional/resource/rpm_spec.rb +3 -3
- data/spec/functional/resource/timezone_spec.rb +2 -0
- 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_certificate_spec.rb +206 -382
- data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
- data/spec/functional/resource/windows_font_spec.rb +50 -0
- data/spec/functional/resource/windows_package_spec.rb +36 -11
- 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_share_spec.rb +103 -0
- data/spec/functional/resource/windows_task_spec.rb +27 -27
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
- data/spec/functional/resource/yum_package_spec.rb +16 -1
- data/spec/functional/resource/zypper_package_spec.rb +15 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +10 -6
- data/spec/functional/version_spec.rb +4 -4
- 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/client/client_spec.rb +6 -5
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/fips_spec.rb +21 -0
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +82 -0
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_list_spec.rb +220 -0
- data/spec/integration/knife/config_show_spec.rb +192 -0
- data/spec/integration/knife/config_use_spec.rb +198 -0
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- 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/delete_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +5 -3
- data/spec/integration/knife/environment_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/node_environment_set_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
- data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
- data/spec/integration/knife/node_show_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 +8 -7
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- 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 +2 -2
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/provider_choice.rb +2 -2
- data/spec/integration/recipes/recipe_dsl_spec.rb +6 -1
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/recipes/resource_action_spec.rb +14 -0
- 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/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +30 -17
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +3 -22
- data/spec/support/lib/chef/resource/cat.rb +1 -1
- data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +24 -16
- data/spec/support/platform_helpers.rb +36 -41
- data/spec/support/platforms/win32/spec_service.rb +2 -2
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +2 -2
- data/spec/support/shared/functional/file_resource.rb +20 -21
- data/spec/support/shared/functional/securable_resource.rb +109 -29
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
- data/spec/support/shared/functional/win32_service.rb +2 -2
- 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 +5 -4
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/knife_shared.rb +1 -1
- data/spec/support/shared/unit/provider/file.rb +26 -8
- data/spec/support/shared/unit/script_resource.rb +10 -24
- data/spec/support/shared/unit/windows_script_resource.rb +16 -29
- 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/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +15 -8
- data/spec/unit/chef_fs/config_spec.rb +3 -3
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- 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} +6 -2
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/client_spec.rb +25 -5
- data/spec/unit/compliance/fetcher/automate_spec.rb +142 -0
- data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
- data/spec/unit/compliance/reporter/automate_spec.rb +427 -0
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +177 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +48 -0
- data/spec/unit/compliance/runner_spec.rb +215 -0
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +28 -26
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/cookbook_version_spec.rb +52 -0
- data/spec/unit/daemon_spec.rb +1 -5
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +100 -120
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/environment_spec.rb +12 -8
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +2 -2
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +20 -2
- data/spec/unit/http/ssl_policies_spec.rb +125 -66
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +69 -45
- data/spec/unit/knife/client_create_spec.rb +2 -2
- data/spec/unit/knife/configure_client_spec.rb +5 -5
- data/spec/unit/knife/configure_spec.rb +3 -3
- data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
- data/spec/unit/knife/cookbook_download_spec.rb +8 -8
- data/spec/unit/knife/cookbook_list_spec.rb +2 -2
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
- 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/node_editor_spec.rb +1 -1
- data/spec/unit/knife/core/status_presenter_spec.rb +54 -0
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +24 -15
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_download_spec.rb +8 -8
- data/spec/unit/knife/supermarket_list_spec.rb +3 -3
- data/spec/unit/knife/supermarket_search_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +6 -7
- data/spec/unit/knife/tag_create_spec.rb +1 -1
- data/spec/unit/knife/tag_delete_spec.rb +1 -1
- data/spec/unit/knife/user_create_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 +12 -9
- data/spec/unit/mixin/checksum_spec.rb +28 -0
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -8
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -6
- data/spec/unit/mixin/powershell_out_spec.rb +16 -4
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -3
- 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/user_context_spec.rb +1 -9
- data/spec/unit/mixin/which.rb +9 -1
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +8 -4
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/platform/query_helpers_spec.rb +13 -14
- data/spec/unit/policy_builder/policyfile_spec.rb +11 -1
- data/spec/unit/property_spec.rb +6 -6
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron/unix_spec.rb +1 -1
- data/spec/unit/provider/cron_spec.rb +43 -49
- data/spec/unit/provider/dsc_resource_spec.rb +30 -63
- data/spec/unit/provider/dsc_script_spec.rb +11 -11
- data/spec/unit/provider/execute_spec.rb +1 -8
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/windows_spec.rb +6 -0
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/mount/linux_spec.rb +107 -0
- data/spec/unit/provider/mount/mount_spec.rb +73 -10
- data/spec/unit/provider/mount/solaris_spec.rb +1 -1
- data/spec/unit/provider/mount/windows_spec.rb +1 -0
- data/spec/unit/provider/mount_spec.rb +31 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +8 -2
- data/spec/unit/provider/package/freebsd/pkgng_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/powershell_spec.rb +162 -99
- data/spec/unit/provider/package/rubygems_spec.rb +50 -20
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/snap_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/package/zypper_spec.rb +0 -25
- data/spec/unit/provider/package_spec.rb +2 -2
- data/spec/unit/provider/powershell_script_spec.rb +20 -44
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/script_spec.rb +20 -110
- 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 +6 -6
- 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/subversion_spec.rb +0 -3
- data/spec/unit/provider/systemd_unit_spec.rb +29 -25
- data/spec/unit/provider/user/dscl_spec.rb +2 -2
- data/spec/unit/provider/user_spec.rb +7 -1
- data/spec/unit/provider/windows_env_spec.rb +22 -37
- data/spec/unit/provider/windows_path_spec.rb +6 -11
- data/spec/unit/provider/windows_task_spec.rb +7 -6
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/archive_file_spec.rb +23 -2
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/build_essential_spec.rb +0 -12
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/chef_client_cron_spec.rb +51 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +43 -5
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +68 -0
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/file/verification_spec.rb +2 -1
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_cask_spec.rb +29 -11
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/ifconfig_spec.rb +2 -10
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/mount_spec.rb +28 -5
- data/spec/unit/resource/osx_profile_spec.rb +299 -0
- data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
- data/spec/unit/resource/powershell_script_spec.rb +15 -108
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/rhsm_subscription_spec.rb +50 -3
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/service_spec.rb +2 -2
- data/spec/unit/resource/solaris_package_spec.rb +8 -10
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/timezone_spec.rb +64 -1
- data/spec/unit/{log_spec.rb → resource/user/windows_user_spec.rb} +16 -4
- data/spec/unit/resource/user_ulimit_spec.rb +14 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_certificate_spec.rb +12 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- 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/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +3 -3
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_inspector_spec.rb +10 -5
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +137 -3
- 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 +6 -2
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- 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 +18 -21
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/util/dsc/configuration_generator_spec.rb +80 -1
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +27 -35
- data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
- data/spec/unit/util/selinux_spec.rb +4 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +2 -4
- metadata +172 -104
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/monkey_patches/net_http.rb +0 -22
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/lib/chef/provider/windows_env.rb +0 -210
- data/lib/chef/provider/windows_path.rb +0 -61
- data/lib/chef/provider/windows_task.rb +0 -635
- data/lib/chef/resource/cron.rb +0 -157
- data/lib/chef/util/powershell/cmdlet.rb +0 -173
- data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
- data/spec/data/trusted_certs_empty/.gitkeep +0 -0
- data/spec/data/trusted_certs_empty/README.md +0 -1
- data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
- data/spec/integration/knife/config_get_profile_spec.rb +0 -113
- data/spec/integration/knife/config_get_spec.rb +0 -191
- data/spec/integration/knife/config_list_profiles_spec.rb +0 -190
- data/spec/integration/knife/config_use_profile_spec.rb +0 -101
- data/spec/scripts/ssl-serve.rb +0 -47
- data/spec/support/mock/constant.rb +0 -52
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
- data/spec/unit/provider_resolver_spec.rb +0 -885
- data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
- data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
- data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
@@ -68,7 +68,7 @@ class Chef
|
|
68
68
|
# check. According to `man 5 launchd.plist`:
|
69
69
|
# StartCalendarInterval <dictionary of integers or array of dictionaries of integers>
|
70
70
|
# ... Missing arguments are considered to be wildcard.
|
71
|
-
# What the man page doesn't state, but what was observed (OSX 10.11.5,
|
71
|
+
# What the man page doesn't state, but what was observed (OSX 10.11.5, launchctl v3.4.0)
|
72
72
|
# Is that keys that are specified, but invalid, will also be treated as a wildcard
|
73
73
|
# this means that an entry like:
|
74
74
|
# { "Hour"=>0, "Weekday"=>"6-7"}
|
@@ -131,35 +131,35 @@ class Chef
|
|
131
131
|
description: "If a job dies, all remaining processes with the same process ID may be kept running. Set to true to kill all remaining processes."
|
132
132
|
|
133
133
|
property :debug, [ TrueClass, FalseClass ],
|
134
|
-
description: "Sets the log mask to LOG_DEBUG for this job."
|
134
|
+
description: "Sets the log mask to `LOG_DEBUG` for this job."
|
135
135
|
|
136
136
|
property :disabled, [ TrueClass, FalseClass ], default: false,
|
137
|
-
description: "Hints to launchctl to not submit this job to launchd."
|
137
|
+
description: "Hints to `launchctl` to not submit this job to launchd."
|
138
138
|
|
139
139
|
property :enable_globbing, [ TrueClass, FalseClass ],
|
140
140
|
description: "Update program arguments before invocation."
|
141
141
|
|
142
142
|
property :enable_transactions, [ TrueClass, FalseClass ],
|
143
|
-
description: "Track in-progress transactions; if none, then send the SIGKILL signal."
|
143
|
+
description: "Track in-progress transactions; if none, then send the `SIGKILL` signal."
|
144
144
|
|
145
145
|
property :environment_variables, Hash,
|
146
146
|
description: "Additional environment variables to set before running a job."
|
147
147
|
|
148
148
|
property :exit_timeout, Integer,
|
149
|
-
description: "The amount of time (in seconds) launchd waits before sending a SIGKILL signal."
|
149
|
+
description: "The amount of time (in seconds) launchd waits before sending a `SIGKILL` signal."
|
150
150
|
|
151
151
|
property :hard_resource_limits, Hash,
|
152
152
|
description: "A Hash of resource limits to be imposed on a job."
|
153
153
|
|
154
154
|
property :inetd_compatibility, Hash,
|
155
|
-
description: "Specifies if a daemon expects to be run as if it were launched from inetd. Set to wait => true to pass standard input, output, and error file descriptors. Set to wait => false to call the accept system call on behalf of the job, and then pass standard input, output, and error file descriptors."
|
155
|
+
description: "Specifies if a daemon expects to be run as if it were launched from inetd. Set to `wait => true` to pass standard input, output, and error file descriptors. Set to `wait => false` to call the accept system call on behalf of the job, and then pass standard input, output, and error file descriptors."
|
156
156
|
|
157
157
|
property :init_groups, [ TrueClass, FalseClass ],
|
158
|
-
description: "Specify if initgroups is called before running a job."
|
158
|
+
description: "Specify if `initgroups` is called before running a job."
|
159
159
|
|
160
160
|
property :keep_alive, [ TrueClass, FalseClass, Hash ],
|
161
161
|
introduced: "12.14",
|
162
|
-
description: "Keep a job running continuously (true) or allow demand and conditions on the node to determine if the job keeps running (false)."
|
162
|
+
description: "Keep a job running continuously (true) or allow demand and conditions on the node to determine if the job keeps running (`false`)."
|
163
163
|
|
164
164
|
property :launch_events, [ Hash ],
|
165
165
|
introduced: "15.1",
|
@@ -187,13 +187,14 @@ class Chef
|
|
187
187
|
description: "Specify services to be registered with the bootstrap subsystem."
|
188
188
|
|
189
189
|
property :nice, Integer,
|
190
|
-
description: "The program scheduling priority value in the range -20 to
|
190
|
+
description: "The program scheduling priority value in the range -20 to 19.",
|
191
|
+
callbacks: { "should be a Integer between -20 and 19" => proc { |v| v >= -20 && v <= 19 } }
|
191
192
|
|
192
193
|
property :on_demand, [ TrueClass, FalseClass ],
|
193
|
-
description: "Keep a job alive. Only applies to macOS version 10.4 (and earlier); use keep_alive instead for newer versions."
|
194
|
+
description: "Keep a job alive. Only applies to macOS version 10.4 (and earlier); use `keep_alive` instead for newer versions."
|
194
195
|
|
195
196
|
property :process_type, String,
|
196
|
-
description: "The intended purpose of the job: Adaptive
|
197
|
+
description: "The intended purpose of the job: `Adaptive`, `Background`, `Interactive`, or `Standard`."
|
197
198
|
|
198
199
|
property :program, String,
|
199
200
|
description: "The first argument of execvp, typically the file name associated with the file to be executed. This value must be specified if program_arguments is not specified, and vice-versa."
|
@@ -205,7 +206,7 @@ class Chef
|
|
205
206
|
description: "An array of non-empty directories which, if any are modified, will cause a job to be started."
|
206
207
|
|
207
208
|
property :root_directory, String,
|
208
|
-
description: "chroot to this directory, and then run the job."
|
209
|
+
description: "`chroot` to this directory, and then run the job."
|
209
210
|
|
210
211
|
property :run_at_load, [ TrueClass, FalseClass ],
|
211
212
|
description: "Launch a job once (at the time it is loaded)."
|
@@ -217,13 +218,13 @@ class Chef
|
|
217
218
|
description: "A Hash of resource limits to be imposed on a job."
|
218
219
|
|
219
220
|
property :standard_error_path, String,
|
220
|
-
description: "The file to which standard error (stderr) is sent."
|
221
|
+
description: "The file to which standard error (`stderr`) is sent."
|
221
222
|
|
222
223
|
property :standard_in_path, String,
|
223
|
-
description: "The file to which standard input (stdin) is sent."
|
224
|
+
description: "The file to which standard input (`stdin`) is sent."
|
224
225
|
|
225
226
|
property :standard_out_path, String,
|
226
|
-
description: "The file to which standard output (stdout) is sent."
|
227
|
+
description: "The file to which standard output (`stdout`) is sent."
|
227
228
|
|
228
229
|
property :start_interval, Integer,
|
229
230
|
description: "The frequency (in seconds) at which a job is started."
|
@@ -238,7 +239,7 @@ class Chef
|
|
238
239
|
description: "The amount of time (in seconds) a job may be idle before it times out. If no value is specified, the default timeout value for launchd will be used."
|
239
240
|
|
240
241
|
property :umask, Integer,
|
241
|
-
description: "A decimal value to pass to umask before running a job."
|
242
|
+
description: "A decimal value to pass to `umask` before running a job."
|
242
243
|
|
243
244
|
property :username, String,
|
244
245
|
description: "When launchd is run as the root user, the user to run the job as."
|
@@ -250,7 +251,7 @@ class Chef
|
|
250
251
|
description: "An array of paths which, if any are modified, will cause a job to be started."
|
251
252
|
|
252
253
|
property :working_directory, String,
|
253
|
-
description: "
|
254
|
+
description: "`chdir` to this directory, and then run the job."
|
254
255
|
end
|
255
256
|
end
|
256
257
|
end
|
data/lib/chef/resource/locale.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
-
|
19
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
20
20
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
@@ -71,7 +71,7 @@ class Chef
|
|
71
71
|
#
|
72
72
|
def lc_all(arg = nil)
|
73
73
|
unless arg.nil?
|
74
|
-
Chef.deprecated(:locale_lc_all, "Changing LC_ALL can break #{
|
74
|
+
Chef.deprecated(:locale_lc_all, "Changing LC_ALL can break #{ChefUtils::Dist::Infra::PRODUCT}'s parsing of command output in unexpected ways.\n Use one of the more specific LC_ properties as needed.")
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -115,7 +115,7 @@ class Chef
|
|
115
115
|
|
116
116
|
requirements.assert(:all_actions) do |a|
|
117
117
|
# RHEL/CentOS type platforms don't have locale-gen
|
118
|
-
a.assertion {
|
118
|
+
a.assertion { which("locale-gen") }
|
119
119
|
a.failure_message(Chef::Exceptions::ProviderNotFound, "The locale resource requires the locale-gen tool")
|
120
120
|
end
|
121
121
|
end
|
@@ -125,7 +125,7 @@ class Chef
|
|
125
125
|
# @raise [Mixlib::ShellOut::ShellCommandFailed] not a supported language or locale
|
126
126
|
#
|
127
127
|
def generate_locales
|
128
|
-
shell_out!("locale-gen #{unavailable_locales.join(" ")}")
|
128
|
+
shell_out!("locale-gen #{unavailable_locales.join(" ")}", timeout: 1800)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Sets the system locale for the current computer.
|
@@ -63,17 +63,15 @@ class Chef
|
|
63
63
|
|
64
64
|
Chef::Log.trace("Loaded contents of #{filename} into resource #{resource_name} (#{resource_class})")
|
65
65
|
|
66
|
-
LWRPBase.loaded_lwrps[filename] = true
|
67
|
-
|
68
66
|
# wire up the default resource name after the class is parsed only if we haven't declared one.
|
69
67
|
# (this ordering is important for MapCollision deprecation warnings)
|
70
68
|
resource_class.provides resource_name.to_sym unless Chef::ResourceResolver.includes_handler?(resource_name.to_sym, self)
|
71
69
|
|
70
|
+
LWRPBase.loaded_lwrps[filename] = resource_class
|
71
|
+
|
72
72
|
resource_class
|
73
73
|
end
|
74
74
|
|
75
|
-
alias :attribute :property
|
76
|
-
|
77
75
|
# Adds +action_names+ to the list of valid actions for this resource.
|
78
76
|
# Does not include superclass's action list when appending.
|
79
77
|
def actions(*action_names)
|
@@ -88,7 +86,7 @@ class Chef
|
|
88
86
|
|
89
87
|
# @deprecated
|
90
88
|
def valid_actions(*args)
|
91
|
-
Chef::Log.warn("`valid_actions
|
89
|
+
Chef::Log.warn("`valid_actions` is deprecated, please use `allowed_actions` instead!")
|
92
90
|
allowed_actions(*args)
|
93
91
|
end
|
94
92
|
|
@@ -103,6 +101,7 @@ class Chef
|
|
103
101
|
protected
|
104
102
|
|
105
103
|
attr_writer :loaded_lwrps
|
104
|
+
|
106
105
|
def loaded_lwrps
|
107
106
|
@loaded_lwrps ||= {}
|
108
107
|
end
|
@@ -16,6 +16,8 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
20
|
+
autoload :Plist, "plist"
|
19
21
|
|
20
22
|
class Chef
|
21
23
|
class Resource
|
@@ -28,99 +30,210 @@ class Chef
|
|
28
30
|
|
29
31
|
description "Use the **macos_userdefaults** resource to manage the macOS user defaults system. The properties of this resource are passed to the defaults command, and the parameters follow the convention of that command. See the defaults(1) man page for details on how the tool works."
|
30
32
|
introduced "14.0"
|
33
|
+
examples <<~DOC
|
34
|
+
**Specify a global domain value**
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
macos_userdefaults 'Full keyboard access to all controls' do
|
38
|
+
key 'AppleKeyboardUIMode'
|
39
|
+
value 2
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Setting a value on a specific domain**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
macos_userdefaults 'Enable macOS firewall' do
|
47
|
+
domain '/Library/Preferences/com.apple.alf'
|
48
|
+
key 'globalstate'
|
49
|
+
value 1
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
**Specifying the type of a key to skip automatic type detection**
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
macos_userdefaults 'Finder expanded save dialogs' do
|
57
|
+
key 'NSNavPanelExpandedStateForSaveMode'
|
58
|
+
value 'TRUE'
|
59
|
+
type 'bool'
|
60
|
+
end
|
61
|
+
```
|
62
|
+
DOC
|
31
63
|
|
32
64
|
property :domain, String,
|
33
65
|
description: "The domain that the user defaults belong to.",
|
34
|
-
|
66
|
+
default: "NSGlobalDomain",
|
67
|
+
default_description: "NSGlobalDomain: the global domain.",
|
68
|
+
desired_state: false
|
35
69
|
|
36
70
|
property :global, [TrueClass, FalseClass],
|
37
71
|
description: "Determines whether or not the domain is global.",
|
38
|
-
|
72
|
+
deprecated: true,
|
73
|
+
default: false,
|
74
|
+
desired_state: false
|
39
75
|
|
40
76
|
property :key, String,
|
41
|
-
description: "The preference key."
|
77
|
+
description: "The preference key.",
|
78
|
+
required: true
|
79
|
+
|
80
|
+
property :host, [String, Symbol],
|
81
|
+
description: "Set either :current or a hostname to set the user default at the host level.",
|
82
|
+
desired_state: false,
|
83
|
+
introduced: "16.3"
|
42
84
|
|
43
85
|
property :value, [Integer, Float, String, TrueClass, FalseClass, Hash, Array],
|
44
|
-
description: "The value of the key.",
|
45
|
-
required:
|
86
|
+
description: "The value of the key. Note: With the `type` property set to `bool`, `String` forms of Boolean true/false values that Apple accepts in the defaults command will be coerced: 0/1, 'TRUE'/'FALSE,' 'true'/false', 'YES'/'NO', or 'yes'/'no'.",
|
87
|
+
required: [:write],
|
88
|
+
coerce: proc { |v| v.is_a?(Hash) ? v.transform_keys(&:to_s) : v } # make sure keys are all strings for comparison
|
46
89
|
|
47
90
|
property :type, String,
|
48
91
|
description: "The value type of the preference key.",
|
49
|
-
|
92
|
+
equal_to: %w{bool string int float array dict},
|
93
|
+
desired_state: false
|
50
94
|
|
51
95
|
property :user, String,
|
52
|
-
description: "The system user that the default will be applied to."
|
96
|
+
description: "The system user that the default will be applied to.",
|
97
|
+
desired_state: false
|
53
98
|
|
54
99
|
property :sudo, [TrueClass, FalseClass],
|
55
|
-
description: "Set to true if the setting you wish to modify requires privileged access.",
|
100
|
+
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the '/usr/bin/defaults' command to be setup for the user running #{ChefUtils::Dist::Infra::PRODUCT}.",
|
56
101
|
default: false,
|
57
102
|
desired_state: false
|
58
103
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
desired_state: false,
|
63
|
-
skip_docs: true
|
104
|
+
load_current_value do |desired|
|
105
|
+
Chef::Log.debug "#load_current_value: shelling out \"#{defaults_export_cmd(desired).join(" ")}\" to determine state"
|
106
|
+
state = shell_out(defaults_export_cmd(desired), user: desired.user)
|
64
107
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
108
|
+
if state.error? || state.stdout.empty?
|
109
|
+
Chef::Log.debug "#load_current_value: #{defaults_export_cmd(desired).join(" ")} returned stdout: #{state.stdout} and stderr: #{state.stderr}"
|
110
|
+
current_value_does_not_exist!
|
111
|
+
end
|
112
|
+
|
113
|
+
plist_data = ::Plist.parse_xml(state.stdout)
|
114
|
+
|
115
|
+
# handle the situation where the key doesn't exist in the domain
|
116
|
+
if plist_data.key?(desired.key)
|
117
|
+
key desired.key
|
118
|
+
else
|
119
|
+
current_value_does_not_exist!
|
120
|
+
end
|
71
121
|
|
72
|
-
|
122
|
+
value plist_data[desired.key]
|
73
123
|
end
|
74
124
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
125
|
+
#
|
126
|
+
# The defaults command to export a domain
|
127
|
+
#
|
128
|
+
# @return [Array] defaults command
|
129
|
+
#
|
130
|
+
def defaults_export_cmd(resource)
|
131
|
+
state_cmd = ["/usr/bin/defaults"]
|
132
|
+
|
133
|
+
if resource.host == "current"
|
134
|
+
state_cmd.concat(["-currentHost"])
|
135
|
+
elsif resource.host # they specified a non-nil value, which is a hostname
|
136
|
+
state_cmd.concat(["-host", resource.host])
|
137
|
+
end
|
138
|
+
|
139
|
+
state_cmd.concat(["export", resource.domain, "-"])
|
140
|
+
state_cmd
|
88
141
|
end
|
89
142
|
|
90
143
|
action :write do
|
91
|
-
description "Write the
|
92
|
-
|
93
|
-
unless current_resource.is_set
|
94
|
-
cmd = ["defaults write"]
|
95
|
-
cmd.unshift("sudo") if new_resource.sudo
|
96
|
-
|
97
|
-
cmd << if new_resource.global
|
98
|
-
"NSGlobalDomain"
|
99
|
-
else
|
100
|
-
"'#{new_resource.domain}'"
|
101
|
-
end
|
102
|
-
|
103
|
-
cmd << "'#{new_resource.key}'" if new_resource.key
|
104
|
-
value = new_resource.value
|
105
|
-
type = new_resource.type.empty? ? value_type(value) : new_resource.type
|
106
|
-
# creates a string of Key1 Value1 Key2 Value2...
|
107
|
-
value = value.map { |k, v| "\"#{k}\" \"#{v}\"" }.join(" ") if type == "dict"
|
108
|
-
if type == "array"
|
109
|
-
value = value.join("' '")
|
110
|
-
value = "'#{value}'"
|
111
|
-
end
|
112
|
-
cmd << "-#{type}" if type
|
113
|
-
cmd << value
|
144
|
+
description "Write the value to the specified domain/key."
|
114
145
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
146
|
+
converge_if_changed do
|
147
|
+
cmd = defaults_modify_cmd
|
148
|
+
Chef::Log.debug("Updating defaults value by shelling out: #{cmd.join(" ")}")
|
149
|
+
|
150
|
+
shell_out!(cmd, user: new_resource.user)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
action :delete do
|
155
|
+
description "Delete a key from a domain."
|
156
|
+
|
157
|
+
# if it's not there there's nothing to remove
|
158
|
+
return unless current_resource
|
159
|
+
|
160
|
+
converge_by("delete domain:#{new_resource.domain} key:#{new_resource.key}") do
|
161
|
+
|
162
|
+
cmd = defaults_modify_cmd
|
163
|
+
Chef::Log.debug("Removing defaults key by shelling out: #{cmd.join(" ")}")
|
164
|
+
|
165
|
+
shell_out!(cmd, user: new_resource.user)
|
120
166
|
end
|
121
167
|
end
|
122
168
|
|
123
169
|
action_class do
|
170
|
+
#
|
171
|
+
# The command used to write or delete delete values from domains
|
172
|
+
#
|
173
|
+
# @return [Array] Array representation of defaults command to run
|
174
|
+
#
|
175
|
+
def defaults_modify_cmd
|
176
|
+
cmd = ["/usr/bin/defaults"]
|
177
|
+
|
178
|
+
if new_resource.host == :current
|
179
|
+
cmd.concat(["-currentHost"])
|
180
|
+
elsif new_resource.host # they specified a non-nil value, which is a hostname
|
181
|
+
cmd.concat(["-host", new_resource.host])
|
182
|
+
end
|
183
|
+
|
184
|
+
cmd.concat([action.to_s, new_resource.domain, new_resource.key])
|
185
|
+
cmd.concat(processed_value) if action == :write
|
186
|
+
cmd.prepend("sudo") if new_resource.sudo
|
187
|
+
cmd
|
188
|
+
end
|
189
|
+
|
190
|
+
#
|
191
|
+
# convert the provided value into the format defaults expects
|
192
|
+
#
|
193
|
+
# @return [array] array of values starting with the type if applicable
|
194
|
+
#
|
195
|
+
def processed_value
|
196
|
+
type = new_resource.type || value_type(new_resource.value)
|
197
|
+
|
198
|
+
# when dict this creates an array of values ["Key1", "Value1", "Key2", "Value2" ...]
|
199
|
+
cmd_values = ["-#{type}"]
|
200
|
+
|
201
|
+
case type
|
202
|
+
when "dict"
|
203
|
+
cmd_values.concat(new_resource.value.flatten)
|
204
|
+
when "array"
|
205
|
+
cmd_values.concat(new_resource.value)
|
206
|
+
when "bool"
|
207
|
+
cmd_values.concat(bool_to_defaults_bool(new_resource.value))
|
208
|
+
else
|
209
|
+
cmd_values.concat([new_resource.value])
|
210
|
+
end
|
211
|
+
|
212
|
+
cmd_values
|
213
|
+
end
|
214
|
+
|
215
|
+
#
|
216
|
+
# defaults booleans on the CLI must be 'TRUE' or 'FALSE' so convert various inputs to that
|
217
|
+
#
|
218
|
+
# @param [String, Integer, Boolean] input <description>
|
219
|
+
#
|
220
|
+
# @return [String] TRUE or FALSE
|
221
|
+
#
|
222
|
+
def bool_to_defaults_bool(input)
|
223
|
+
return ["TRUE"] if [true, "TRUE", "1", "true", "YES", "yes"].include?(input)
|
224
|
+
return ["FALSE"] if [false, "FALSE", "0", "false", "NO", "no"].include?(input)
|
225
|
+
|
226
|
+
# make sure it's very clear bad input was given
|
227
|
+
raise ArgumentError, "#{input} cannot be converted to a boolean value for use with Apple's defaults command. Acceptable values are: 'TRUE', 'YES', 'true, 'yes', '0', true, 'FALSE', 'false', 'NO', 'no', '1', or false."
|
228
|
+
end
|
229
|
+
|
230
|
+
#
|
231
|
+
# convert ruby type to defaults type
|
232
|
+
#
|
233
|
+
# @param [Integer, Float, String, TrueClass, FalseClass, Hash, Array] value The value being set
|
234
|
+
#
|
235
|
+
# @return [string, nil] the type value used by defaults or nil if not applicable
|
236
|
+
#
|
124
237
|
def value_type(value)
|
125
238
|
case value
|
126
239
|
when true, false
|
@@ -133,6 +246,8 @@ class Chef
|
|
133
246
|
"dict"
|
134
247
|
when Array
|
135
248
|
"array"
|
249
|
+
when String
|
250
|
+
"string"
|
136
251
|
end
|
137
252
|
end
|
138
253
|
end
|
data/lib/chef/resource/mdadm.rb
CHANGED
@@ -36,7 +36,7 @@ class Chef
|
|
36
36
|
|
37
37
|
property :chunk, Integer,
|
38
38
|
default: 16,
|
39
|
-
description: "The chunk size. This property should not be used for a RAID 1 mirrored pair (i.e. when the level property is set to 1)."
|
39
|
+
description: "The chunk size. This property should not be used for a RAID 1 mirrored pair (i.e. when the `level` property is set to `1`)."
|
40
40
|
|
41
41
|
property :devices, Array,
|
42
42
|
default: lazy { [] },
|
@@ -63,7 +63,7 @@ class Chef
|
|
63
63
|
description: "An optional property to specify the name of the RAID device if it differs from the resource block's name."
|
64
64
|
|
65
65
|
property :layout, String,
|
66
|
-
description: "The RAID5 parity algorithm. Possible values: left-asymmetric (or la), left-symmetric (or ls), right-asymmetric (or ra), or right-symmetric (or rs)."
|
66
|
+
description: "The RAID5 parity algorithm. Possible values: `left-asymmetric` (or `la`), `left-symmetric` (or ls), `right-asymmetric` (or `ra`), or `right-symmetric` (or `rs`)."
|
67
67
|
|
68
68
|
action_class do
|
69
69
|
def load_current_resource
|
data/lib/chef/resource/mount.rb
CHANGED
@@ -41,6 +41,7 @@ class Chef
|
|
41
41
|
sensitive: true
|
42
42
|
|
43
43
|
property :mount_point, String, name_property: true,
|
44
|
+
coerce: proc { |arg| (arg == "/" || arg.match?(":/$")) ? arg : arg.chomp("/") }, # Removed "/" from the end of str, because it was causing idempotency issue.
|
44
45
|
description: "The directory (or path) in which the device is to be mounted. Defaults to the name of the resource block if not provided."
|
45
46
|
|
46
47
|
property :device, String, identity: true,
|
@@ -50,7 +51,7 @@ class Chef
|
|
50
51
|
description: "The type of device: :device, :label, or :uuid",
|
51
52
|
coerce: proc { |arg| arg.is_a?(String) ? arg.to_sym : arg },
|
52
53
|
default: :device,
|
53
|
-
equal_to: RUBY_PLATFORM
|
54
|
+
equal_to: RUBY_PLATFORM.match?(/solaris/i) ? %i{ device } : %i{ device label uuid }
|
54
55
|
|
55
56
|
# @todo this should get refactored away: https://github.com/chef/chef/issues/7621
|
56
57
|
property :mounted, [TrueClass, FalseClass], default: false, skip_docs: true
|
@@ -65,7 +66,7 @@ class Chef
|
|
65
66
|
|
66
67
|
property :options, [Array, String, nil],
|
67
68
|
description: "An array or comma separated list of options for the mount.",
|
68
|
-
coerce: proc { |arg| arg
|
69
|
+
coerce: proc { |arg| mount_options(arg) }, # Please see #mount_options method.
|
69
70
|
default: %w{defaults}
|
70
71
|
|
71
72
|
property :dump, [Integer, FalseClass],
|
@@ -84,7 +85,7 @@ class Chef
|
|
84
85
|
description: "Windows only: Use to specify the user name."
|
85
86
|
|
86
87
|
property :domain, String,
|
87
|
-
description: "Windows only: Use to specify the domain in which the username and password are located."
|
88
|
+
description: "Windows only: Use to specify the domain in which the `username` and `password` are located."
|
88
89
|
|
89
90
|
private
|
90
91
|
|
@@ -94,6 +95,11 @@ class Chef
|
|
94
95
|
@fstype = nil
|
95
96
|
end
|
96
97
|
|
98
|
+
# Returns array of string without leading and trailing whitespace.
|
99
|
+
def mount_options(options)
|
100
|
+
(options.is_a?(String) ? options.split(",") : options).collect(&:strip)
|
101
|
+
end
|
102
|
+
|
97
103
|
end
|
98
104
|
end
|
99
105
|
end
|
data/lib/chef/resource/ohai.rb
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require_relative "../resource"
|
22
|
-
|
22
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
23
23
|
require "ohai" unless defined?(Ohai::System)
|
24
24
|
|
25
25
|
class Chef
|
@@ -29,10 +29,53 @@ class Chef
|
|
29
29
|
|
30
30
|
provides :ohai
|
31
31
|
|
32
|
-
description "Use the **ohai** resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{
|
32
|
+
description "Use the **ohai** resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{ChefUtils::Dist::Infra::PRODUCT} run."
|
33
|
+
|
34
|
+
examples <<~DOC
|
35
|
+
Reload All Ohai Plugins
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
ohai 'reload' do
|
39
|
+
action :reload
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
Reload A Single Ohai Plugin
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
ohai 'reload' do
|
47
|
+
plugin 'ipaddress'
|
48
|
+
action :reload
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
Reload Ohai after a new user is created
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
ohai 'reload_passwd' do
|
56
|
+
action :nothing
|
57
|
+
plugin 'etc'
|
58
|
+
end
|
59
|
+
|
60
|
+
user 'daemon_user' do
|
61
|
+
home '/dev/null'
|
62
|
+
shell '/sbin/nologin'
|
63
|
+
system true
|
64
|
+
notifies :reload, 'ohai[reload_passwd]', :immediately
|
65
|
+
end
|
66
|
+
|
67
|
+
ruby_block 'just an example' do
|
68
|
+
block do
|
69
|
+
# These variables will now have the new values
|
70
|
+
puts node['etc']['passwd']['daemon_user']['uid']
|
71
|
+
puts node['etc']['passwd']['daemon_user']['gid']
|
72
|
+
end
|
73
|
+
end
|
74
|
+
```
|
75
|
+
DOC
|
33
76
|
|
34
77
|
property :plugin, String,
|
35
|
-
description: "
|
78
|
+
description: "Specific Ohai attribute data to reload. This property behaves similar to specifying attributes when running Ohai on the command line and takes the attribute that you wish to reload instead of the actual plugin name. For instance, you can pass `ipaddress` to reload `node['ipaddress']` even though that data comes from the `Network` plugin. If this property is not specified, #{ChefUtils::Dist::Infra::PRODUCT} will reload all plugins."
|
36
79
|
|
37
80
|
def load_current_resource
|
38
81
|
true
|
@@ -26,6 +26,39 @@ class Chef
|
|
26
26
|
|
27
27
|
description "Use the **ohai_hint** resource to aid in configuration detection by passing hint data to Ohai."
|
28
28
|
introduced "14.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Create a hint file**
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
ohai_hint 'example' do
|
34
|
+
content a: 'test_content'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
**Create a hint file with a name that does not match the resource name**
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
ohai_hint 'example' do
|
42
|
+
hint_name 'custom'
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
46
|
+
**Create a hint file that is not loaded at compile time**
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
ohai_hint 'example' do
|
50
|
+
compile_time false
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
**Delete a hint file**
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
ohai_hint 'example' do
|
58
|
+
action :delete
|
59
|
+
end
|
60
|
+
```
|
61
|
+
DOC
|
29
62
|
|
30
63
|
property :hint_name, String,
|
31
64
|
description: "An optional property to set the hint name if it differs from the resource block's name.",
|