chef 15.17.4-universal-mingw32 → 16.0.257-universal-mingw32
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 +14 -20
- data/README.md +6 -6
- data/Rakefile +18 -23
- data/chef-universal-mingw32.gemspec +4 -4
- data/chef.gemspec +10 -26
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +20 -3
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
- 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 +5 -5
- 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/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_version.rb +40 -5
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/deprecated.rb +1 -9
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +2 -3
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -2
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/knife.rb +1 -3
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +93 -97
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/environment_compare.rb +1 -1
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -50
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +1 -2
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_recind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +3 -26
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +13 -1
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/template.rb +0 -1
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +7 -36
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +22 -4
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +2 -2
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -8
- data/lib/chef/provider/file.rb +5 -5
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +36 -51
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/solaris.rb +1 -0
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +3 -4
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
- data/lib/chef/provider/package/homebrew.rb +106 -42
- data/lib/chef/provider/package/msu.rb +3 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/powershell.rb +2 -6
- data/lib/chef/provider/package/rubygems.rb +29 -2
- data/lib/chef/provider/package/snap.rb +27 -96
- data/lib/chef/provider/package/windows.rb +3 -2
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +0 -8
- data/lib/chef/provider/package/yum/yum_helper.py +0 -4
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +4 -10
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +3 -3
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +31 -29
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +7 -12
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +10 -9
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +7 -9
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +11 -31
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +41 -56
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +149 -0
- data/lib/chef/resource/apt_package.rb +2 -1
- data/lib/chef/resource/apt_preference.rb +69 -2
- data/lib/chef/resource/apt_repository.rb +337 -5
- data/lib/chef/resource/apt_update.rb +52 -1
- data/lib/chef/resource/archive_file.rb +9 -29
- data/lib/chef/resource/bash.rb +2 -0
- data/lib/chef/resource/bff_package.rb +9 -1
- data/lib/chef/resource/breakpoint.rb +0 -1
- data/lib/chef/resource/build_essential.rb +42 -48
- data/lib/chef/resource/cab_package.rb +8 -1
- data/lib/chef/resource/chef_client_cron.rb +225 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
- data/lib/chef/resource/chef_gem.rb +9 -16
- data/lib/chef/resource/chef_handler.rb +2 -1
- data/lib/chef/resource/chef_sleep.rb +0 -1
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +3 -1
- data/lib/chef/resource/chocolatey_feature.rb +2 -1
- data/lib/chef/resource/chocolatey_package.rb +2 -1
- data/lib/chef/resource/chocolatey_source.rb +2 -1
- data/lib/chef/resource/cookbook_file.rb +1 -1
- data/lib/chef/resource/cron.rb +22 -68
- data/lib/chef/resource/cron_access.rb +8 -15
- data/lib/chef/resource/cron_d.rb +9 -75
- data/lib/chef/resource/csh.rb +2 -0
- data/lib/chef/resource/directory.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +4 -4
- data/lib/chef/resource/dnf_package.rb +2 -3
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +13 -12
- data/lib/chef/resource/file.rb +3 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +14 -6
- data/lib/chef/resource/group.rb +4 -1
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +5 -4
- data/lib/chef/resource/homebrew_package.rb +4 -2
- data/lib/chef/resource/homebrew_tap.rb +2 -1
- data/lib/chef/resource/hostname.rb +41 -36
- data/lib/chef/resource/http_request.rb +0 -1
- data/lib/chef/resource/ifconfig.rb +1 -1
- data/lib/chef/resource/ips_package.rb +10 -2
- data/lib/chef/resource/kernel_module.rb +29 -29
- data/lib/chef/resource/ksh.rb +2 -0
- data/lib/chef/resource/launchd.rb +6 -6
- data/lib/chef/resource/link.rb +1 -23
- data/lib/chef/resource/locale.rb +58 -24
- data/lib/chef/resource/log.rb +12 -1
- data/lib/chef/resource/lwrp_base.rb +1 -8
- data/lib/chef/resource/macos_userdefaults.rb +9 -6
- data/lib/chef/resource/macosx_service.rb +2 -1
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +62 -2
- data/lib/chef/resource/mount.rb +3 -0
- data/lib/chef/resource/msu_package.rb +13 -1
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +19 -3
- data/lib/chef/resource/ohai_hint.rb +3 -12
- data/lib/chef/resource/openbsd_package.rb +9 -1
- data/lib/chef/resource/openssl_dhparam.rb +10 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
- data/lib/chef/resource/openssl_x509_crl.rb +12 -1
- data/lib/chef/resource/openssl_x509_request.rb +37 -1
- data/lib/chef/resource/osx_profile.rb +3 -2
- data/lib/chef/resource/package.rb +2 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +12 -3
- data/lib/chef/resource/perl.rb +2 -0
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +13 -3
- data/lib/chef/resource/powershell_package.rb +1 -3
- data/lib/chef/resource/powershell_package_source.rb +3 -1
- data/lib/chef/resource/powershell_script.rb +7 -17
- data/lib/chef/resource/python.rb +2 -0
- data/lib/chef/resource/reboot.rb +0 -1
- data/lib/chef/resource/registry_key.rb +1 -2
- data/lib/chef/resource/remote_directory.rb +2 -0
- data/lib/chef/resource/remote_file.rb +2 -0
- data/lib/chef/resource/rhsm_errata.rb +0 -1
- data/lib/chef/resource/rhsm_errata_level.rb +0 -1
- data/lib/chef/resource/rhsm_register.rb +2 -1
- data/lib/chef/resource/rhsm_repo.rb +3 -1
- data/lib/chef/resource/rhsm_subscription.rb +4 -1
- data/lib/chef/resource/route.rb +5 -1
- data/lib/chef/resource/rpm_package.rb +9 -2
- data/lib/chef/resource/ruby.rb +2 -0
- data/lib/chef/resource/ruby_block.rb +1 -1
- data/lib/chef/resource/scm/_scm.rb +48 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
- data/lib/chef/resource/script.rb +6 -3
- data/lib/chef/resource/service.rb +6 -7
- data/lib/chef/resource/smartos_package.rb +9 -1
- data/lib/chef/resource/snap_package.rb +3 -1
- data/lib/chef/resource/solaris_package.rb +9 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +9 -9
- 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 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +5 -3
- data/lib/chef/resource/sysctl.rb +2 -2
- data/lib/chef/resource/systemd_unit.rb +4 -2
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +7 -18
- data/lib/chef/resource/user.rb +1 -3
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +114 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +19 -6
- data/lib/chef/resource/windows_auto_run.rb +0 -1
- data/lib/chef/resource/windows_certificate.rb +1 -1
- data/lib/chef/resource/windows_dfs_folder.rb +0 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
- data/lib/chef/resource/windows_dfs_server.rb +0 -1
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +2 -3
- data/lib/chef/resource/windows_feature.rb +2 -2
- data/lib/chef/resource/windows_feature_dism.rb +9 -22
- data/lib/chef/resource/windows_feature_powershell.rb +17 -82
- data/lib/chef/resource/windows_firewall_rule.rb +119 -10
- data/lib/chef/resource/windows_font.rb +1 -3
- data/lib/chef/resource/windows_package.rb +13 -4
- data/lib/chef/resource/windows_pagefile.rb +0 -1
- data/lib/chef/resource/windows_path.rb +0 -1
- data/lib/chef/resource/windows_printer.rb +0 -1
- data/lib/chef/resource/windows_printer_port.rb +0 -1
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +90 -0
- data/lib/chef/resource/windows_service.rb +45 -31
- data/lib/chef/resource/windows_share.rb +3 -7
- data/lib/chef/resource/windows_shortcut.rb +0 -1
- data/lib/chef/resource/windows_task.rb +14 -15
- data/lib/chef/resource/windows_uac.rb +0 -1
- data/lib/chef/resource/windows_user_privilege.rb +157 -0
- data/lib/chef/resource/windows_workgroup.rb +0 -1
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource/yum_repository.rb +2 -1
- data/lib/chef/resource/zypper_package.rb +3 -2
- data/lib/chef/resource/zypper_repository.rb +2 -1
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +6 -6
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/shell.rb +23 -32
- data/lib/chef/shell/shell_session.rb +0 -2
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.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 +18 -18
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +3 -11
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/security.rb +40 -2
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +27 -23
- data/spec/functional/resource/aix_service_spec.rb +1 -0
- data/spec/functional/resource/aixinit_service_spec.rb +8 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -0
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +11 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +6 -5
- data/spec/functional/resource/link_spec.rb +17 -17
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +2 -2
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -2
- data/spec/functional/shell_spec.rb +6 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +30 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +50 -21
- data/spec/integration/recipes/notifying_block_spec.rb +9 -6
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
- data/spec/integration/recipes/resource_load_spec.rb +133 -13
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +11 -14
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +44 -19
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/recipe_dsl_helper.rb +83 -0
- 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 +3 -3
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -18
- data/spec/support/shared/integration/knife_support.rb +14 -8
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -9
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/data_collector_spec.rb +38 -17
- data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +36 -54
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/ssh_spec.rb +10 -113
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +3 -5
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/securable_spec.rb +1 -0
- data/spec/unit/mixin/user_context_spec.rb +9 -1
- data/spec/unit/node/attribute_spec.rb +2 -2
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +18 -15
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +9 -11
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +44 -4
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +221 -31
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +53 -30
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/arch_service_spec.rb +2 -3
- data/spec/unit/provider/service/debian_service_spec.rb +35 -14
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +6 -2
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/systemd_unit_spec.rb +24 -28
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +25 -75
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/provider_spec.rb +0 -1
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/archive_file_spec.rb +2 -11
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -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_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +4 -1
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_reporter_spec.rb +1 -5
- data/spec/unit/resource_spec.rb +11 -4
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
- data/spec/unit/win32/security_spec.rb +3 -4
- data/tasks/rspec.rb +1 -1
- metadata +116 -87
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/functional/resource/windows_font_spec.rb +0 -49
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -20,7 +20,7 @@ require_relative "../powershell"
|
|
20
20
|
# The powershell_exec mixin provides in-process access to PowerShell engine via
|
21
21
|
# a COM interop (installed by the Chef Client installer).
|
22
22
|
#
|
23
|
-
# powershell_exec returns a Chef::PowerShell object that provides
|
23
|
+
# powershell_exec returns a Chef::PowerShell object that provides 4 methods:
|
24
24
|
#
|
25
25
|
# .result - returns a hash representing the results returned by executing the
|
26
26
|
# PowerShell script block
|
@@ -28,6 +28,7 @@ require_relative "../powershell"
|
|
28
28
|
# PowerShell error stream during execution
|
29
29
|
# .error? - returns true if there were error messages written to the PowerShell
|
30
30
|
# error stream during execution
|
31
|
+
# .error! - raise Chef::PowerShell::CommandFailed if there was an error
|
31
32
|
#
|
32
33
|
# Some examples of usage:
|
33
34
|
#
|
@@ -100,6 +101,14 @@ class Chef
|
|
100
101
|
def powershell_exec(script)
|
101
102
|
Chef::PowerShell.new(script)
|
102
103
|
end
|
104
|
+
|
105
|
+
# The same as the #powershell_exec method except this will raise
|
106
|
+
# Chef::PowerShell::CommandFailed if the command fails
|
107
|
+
def powershell_exec!(script)
|
108
|
+
cmd = Chef::PowerShell.new(script)
|
109
|
+
cmd.error!
|
110
|
+
cmd
|
111
|
+
end
|
103
112
|
end
|
104
113
|
end
|
105
114
|
end
|
@@ -264,10 +264,22 @@ class Chef
|
|
264
264
|
end
|
265
265
|
|
266
266
|
result = properties.values.select(&:identity?)
|
267
|
-
|
267
|
+
# if there are no other identity properites set, then the name_property becomes the identity, or
|
268
|
+
# failing that we use the actual name.
|
269
|
+
if result.empty?
|
270
|
+
result = name_property ? [ properties[name_property] ] : [ properties[:name] ]
|
271
|
+
end
|
268
272
|
result
|
269
273
|
end
|
270
274
|
|
275
|
+
# Returns the name of the name property. Returns nil if there is no name property.
|
276
|
+
#
|
277
|
+
# @return [Symbol] the name property for this resource
|
278
|
+
def name_property
|
279
|
+
p = properties.find { |n, p| p.name_property? }
|
280
|
+
p ? p.first : nil
|
281
|
+
end
|
282
|
+
|
271
283
|
def included(other)
|
272
284
|
other.extend ClassMethods
|
273
285
|
end
|
data/lib/chef/mixin/shell_out.rb
CHANGED
@@ -26,10 +26,6 @@ class Chef
|
|
26
26
|
#
|
27
27
|
# all consumers should now call shell_out!/shell_out.
|
28
28
|
#
|
29
|
-
# on unix the shell_out API supports the clean_array() kind of syntax (below) so that
|
30
|
-
# array args are flat/compact/to_s'd. on windows, array args aren't supported to its
|
31
|
-
# up to the caller to join(" ") on arrays of strings.
|
32
|
-
#
|
33
29
|
# the shell_out_compacted/shell_out_compacted! APIs are private but are intended for use
|
34
30
|
# in rspec tests, and should ideally always be used to make code refactoring that do not
|
35
31
|
# change behavior easier:
|
data/lib/chef/mixin/template.rb
CHANGED
@@ -5,10 +5,6 @@ module ChefNetHTTPExceptionExtensions
|
|
5
5
|
attr_accessor :chef_rest_request
|
6
6
|
end
|
7
7
|
|
8
|
-
unless defined?(Net::HTTPClientException)
|
9
|
-
Net::HTTPClientException = Net::HTTPServerException
|
10
|
-
end
|
11
|
-
|
12
8
|
require "net/http" unless defined?(Net::HTTP)
|
13
9
|
module Net
|
14
10
|
class HTTPError
|
data/lib/chef/node.rb
CHANGED
@@ -351,28 +351,40 @@ class Chef
|
|
351
351
|
run_list.detect { |r| r == item } ? true : false
|
352
352
|
end
|
353
353
|
|
354
|
-
#
|
354
|
+
# Handles both the consumption of ohai data and possibly JSON attributes from the CLI
|
355
|
+
#
|
356
|
+
# @api private
|
355
357
|
def consume_external_attrs(ohai_data, json_cli_attrs)
|
356
358
|
# FIXME(log): should be trace
|
357
359
|
logger.debug("Extracting run list from JSON attributes provided on command line")
|
358
360
|
consume_attributes(json_cli_attrs)
|
359
361
|
|
360
362
|
self.automatic_attrs = ohai_data
|
363
|
+
fix_automatic_attributes
|
364
|
+
end
|
365
|
+
|
366
|
+
# This is for ohai plugins to consume ohai data and have it merged, it should probably be renamed
|
367
|
+
#
|
368
|
+
# @api private
|
369
|
+
def consume_ohai_data(ohai_data)
|
370
|
+
self.automatic_attrs = Chef::Mixin::DeepMerge.merge(automatic_attrs, ohai_data)
|
371
|
+
fix_automatic_attributes
|
372
|
+
end
|
361
373
|
|
374
|
+
# Always ensure that certain automatic attributes are populated and constructed correctly
|
375
|
+
#
|
376
|
+
# @api private
|
377
|
+
def fix_automatic_attributes
|
362
378
|
platform, version = Chef::Platform.find_platform_and_version(self)
|
363
379
|
# FIXME(log): should be trace
|
364
380
|
logger.debug("Platform is #{platform} version #{version}")
|
365
381
|
automatic[:platform] = platform
|
366
|
-
automatic[:platform_version] = version
|
382
|
+
automatic[:platform_version] = Chef::VersionString.new(version)
|
367
383
|
automatic[:chef_guid] = Chef::Config[:chef_guid] || ( Chef::Config[:chef_guid] = node_uuid )
|
368
384
|
automatic[:name] = name
|
369
385
|
automatic[:chef_environment] = chef_environment
|
370
386
|
end
|
371
387
|
|
372
|
-
def consume_ohai_data(ohai_data)
|
373
|
-
self.automatic_attrs = Chef::Mixin::DeepMerge.merge(automatic_attrs, ohai_data)
|
374
|
-
end
|
375
|
-
|
376
388
|
# Consumes the combined run_list and other attributes in +attrs+
|
377
389
|
def consume_attributes(attrs)
|
378
390
|
normal_attrs_to_merge = consume_run_list(attrs)
|
@@ -19,9 +19,9 @@ class Chef
|
|
19
19
|
class Node
|
20
20
|
module Mixin
|
21
21
|
module DeepMergeCache
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
# Cache of deep merged values by top-level key. This is a simple hash which has keys that are the
|
23
|
+
# top-level keys of the node object, and we save the computed deep-merge for that key here. There is
|
24
|
+
# no cache of subtrees.
|
25
25
|
attr_accessor :deep_merge_cache
|
26
26
|
|
27
27
|
def initialize
|
@@ -31,10 +31,10 @@ class Chef
|
|
31
31
|
@deep_merge_cache = {}
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
# Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
|
35
|
+
# the entire deep_merge cache. In the case of the user doing node.default['foo']['bar']['baz']=
|
36
|
+
# that eventually results in a call to reset_cache('foo') here. A node.default=hash_thing call
|
37
|
+
# must invalidate the entire cache and re-deep-merge the entire node object.
|
38
38
|
def reset_cache(path = nil)
|
39
39
|
if path.nil?
|
40
40
|
deep_merge_cache.clear
|
@@ -43,6 +43,7 @@ class Chef
|
|
43
43
|
compact
|
44
44
|
count
|
45
45
|
cycle
|
46
|
+
deconstruct
|
46
47
|
detect
|
47
48
|
difference
|
48
49
|
dig
|
@@ -59,6 +60,7 @@ class Chef
|
|
59
60
|
entries
|
60
61
|
fetch
|
61
62
|
filter
|
63
|
+
filter_map
|
62
64
|
find
|
63
65
|
find_all
|
64
66
|
find_index
|
@@ -71,6 +73,7 @@ class Chef
|
|
71
73
|
include?
|
72
74
|
index
|
73
75
|
inject
|
76
|
+
intersection
|
74
77
|
join
|
75
78
|
last
|
76
79
|
lazy
|
@@ -113,6 +116,7 @@ class Chef
|
|
113
116
|
sum
|
114
117
|
take
|
115
118
|
take_while
|
119
|
+
tally
|
116
120
|
to_a
|
117
121
|
to_ary
|
118
122
|
to_csv
|
@@ -40,6 +40,7 @@ class Chef
|
|
40
40
|
compare_by_identity?
|
41
41
|
count
|
42
42
|
cycle
|
43
|
+
deconstruct_keys
|
43
44
|
default
|
44
45
|
default_proc
|
45
46
|
detect
|
@@ -60,6 +61,7 @@ class Chef
|
|
60
61
|
fetch
|
61
62
|
fetch_values
|
62
63
|
filter
|
64
|
+
filter_map
|
63
65
|
find
|
64
66
|
find_all
|
65
67
|
find_index
|
@@ -109,6 +111,7 @@ class Chef
|
|
109
111
|
sum
|
110
112
|
take
|
111
113
|
take_while
|
114
|
+
tally
|
112
115
|
to_a
|
113
116
|
to_h
|
114
117
|
to_hash
|
data/lib/chef/node_map.rb
CHANGED
@@ -35,13 +35,10 @@
|
|
35
35
|
#
|
36
36
|
# XXX: confusingly, in the *_priority_map the :klass may be an array of Strings of class names
|
37
37
|
#
|
38
|
-
|
39
|
-
require_relative "dist"
|
40
|
-
|
41
38
|
class Chef
|
42
39
|
class NodeMap
|
43
40
|
COLLISION_WARNING = <<~EOH.gsub(/\s+/, " ").strip
|
44
|
-
%{type_caps} %{key}
|
41
|
+
%{type_caps} %{key} from the client is overriding the %{type} from a cookbook. Please upgrade your cookbook
|
45
42
|
or remove the cookbook from your run_list.
|
46
43
|
EOH
|
47
44
|
|
@@ -58,14 +55,13 @@ class Chef
|
|
58
55
|
#
|
59
56
|
# @return [NodeMap] Returns self for possible chaining
|
60
57
|
#
|
61
|
-
def set(key, klass, platform: nil, platform_version: nil, platform_family: nil, os: nil,
|
58
|
+
def set(key, klass, platform: nil, platform_version: nil, platform_family: nil, os: nil, override: nil, chef_version: nil, target_mode: nil, &block)
|
62
59
|
new_matcher = { klass: klass }
|
63
60
|
new_matcher[:platform] = platform if platform
|
64
61
|
new_matcher[:platform_version] = platform_version if platform_version
|
65
62
|
new_matcher[:platform_family] = platform_family if platform_family
|
66
63
|
new_matcher[:os] = os if os
|
67
64
|
new_matcher[:block] = block if block
|
68
|
-
new_matcher[:canonical] = canonical if canonical
|
69
65
|
new_matcher[:override] = override if override
|
70
66
|
new_matcher[:target_mode] = target_mode
|
71
67
|
|
@@ -87,7 +83,7 @@ class Chef
|
|
87
83
|
else
|
88
84
|
klass.superclass.to_s
|
89
85
|
end
|
90
|
-
Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize
|
86
|
+
Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize } )
|
91
87
|
end
|
92
88
|
|
93
89
|
# The map is sorted in order of preference already; we just need to find
|
@@ -116,16 +112,14 @@ class Chef
|
|
116
112
|
# @param node [Chef::Node] The Chef::Node object for the run, or `nil` to
|
117
113
|
# ignore all filters.
|
118
114
|
# @param key [Object] Key to look up
|
119
|
-
# @param canonical [Boolean] `true` or `false` to match canonical or
|
120
|
-
# non-canonical values only. `nil` to ignore canonicality. Default: `nil`
|
121
115
|
#
|
122
116
|
# @return [Object] Class
|
123
117
|
#
|
124
|
-
def get(node, key
|
118
|
+
def get(node, key)
|
125
119
|
return nil unless map.key?(key)
|
126
120
|
|
127
121
|
map[key].map do |matcher|
|
128
|
-
return matcher[:klass] if node_matches?(node, matcher)
|
122
|
+
return matcher[:klass] if node_matches?(node, matcher)
|
129
123
|
end
|
130
124
|
nil
|
131
125
|
end
|
@@ -137,16 +131,14 @@ class Chef
|
|
137
131
|
# @param node [Chef::Node] The Chef::Node object for the run, or `nil` to
|
138
132
|
# ignore all filters.
|
139
133
|
# @param key [Object] Key to look up
|
140
|
-
# @param canonical [Boolean] `true` or `false` to match canonical or
|
141
|
-
# non-canonical values only. `nil` to ignore canonicality. Default: `nil`
|
142
134
|
#
|
143
135
|
# @return [Object] Class
|
144
136
|
#
|
145
|
-
def list(node, key
|
137
|
+
def list(node, key)
|
146
138
|
return [] unless map.key?(key)
|
147
139
|
|
148
140
|
map[key].select do |matcher|
|
149
|
-
node_matches?(node, matcher)
|
141
|
+
node_matches?(node, matcher)
|
150
142
|
end.map { |matcher| matcher[:klass] }
|
151
143
|
end
|
152
144
|
|
@@ -177,21 +169,6 @@ class Chef
|
|
177
169
|
deleted
|
178
170
|
end
|
179
171
|
|
180
|
-
# Seriously, don't use this, it's nearly certain to change on you
|
181
|
-
# @return remaining
|
182
|
-
# @api private
|
183
|
-
def delete_canonical(key, klass)
|
184
|
-
remaining = map[key]
|
185
|
-
if remaining
|
186
|
-
remaining.delete_if { |matcher| matcher[:canonical] && Array(matcher[:klass]) == Array(klass) }
|
187
|
-
if remaining.empty?
|
188
|
-
map.delete(key)
|
189
|
-
remaining = nil
|
190
|
-
end
|
191
|
-
end
|
192
|
-
remaining
|
193
|
-
end
|
194
|
-
|
195
172
|
# Check if this map has been locked.
|
196
173
|
#
|
197
174
|
# @api internal
|
@@ -302,12 +279,6 @@ class Chef
|
|
302
279
|
filters_match?(node, matcher) && block_matches?(node, matcher[:block])
|
303
280
|
end
|
304
281
|
|
305
|
-
def canonical_matches?(canonical, matcher)
|
306
|
-
return true if canonical.nil?
|
307
|
-
|
308
|
-
!!canonical == !!matcher[:canonical]
|
309
|
-
end
|
310
|
-
|
311
282
|
#
|
312
283
|
# "provides" lines with identical filters sort by class name (ascending).
|
313
284
|
#
|
@@ -21,8 +21,8 @@ require_relative "../node_map"
|
|
21
21
|
class Chef
|
22
22
|
class Platform
|
23
23
|
class PriorityMap < Chef::NodeMap
|
24
|
-
def priority(resource_name, priority_array,
|
25
|
-
set_priority_array(resource_name.to_sym, priority_array,
|
24
|
+
def priority(resource_name, priority_array, **filter)
|
25
|
+
set_priority_array(resource_name.to_sym, priority_array, **filter)
|
26
26
|
end
|
27
27
|
|
28
28
|
# @api private
|
@@ -31,9 +31,9 @@ class Chef
|
|
31
31
|
end
|
32
32
|
|
33
33
|
# @api private
|
34
|
-
def set_priority_array(key, priority_array,
|
34
|
+
def set_priority_array(key, priority_array, **filter, &block)
|
35
35
|
priority_array = Array(priority_array)
|
36
|
-
set(key, priority_array,
|
36
|
+
set(key, priority_array, **filter, &block)
|
37
37
|
priority_array
|
38
38
|
end
|
39
39
|
end
|
@@ -26,49 +26,21 @@ class Chef
|
|
26
26
|
ChefUtils.windows?
|
27
27
|
end
|
28
28
|
|
29
|
+
# @deprecated Windows Nano is not a thing anymore so this check shouldn't be used
|
29
30
|
def windows_nano_server?
|
30
|
-
|
31
|
-
|
32
|
-
require "win32/registry" unless defined?(Win32::Registry)
|
33
|
-
|
34
|
-
# This method may be called before ohai runs (e.g., it may be used to
|
35
|
-
# determine settings in config.rb). Chef::Win32::Registry.new uses
|
36
|
-
# node attributes to verify the machine architecture which aren't
|
37
|
-
# accessible before ohai runs.
|
38
|
-
nano = nil
|
39
|
-
key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Server\\ServerLevels"
|
40
|
-
access = ::Win32::Registry::KEY_QUERY_VALUE | 0x0100 # nano is 64-bit only
|
41
|
-
begin
|
42
|
-
::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, access) do |reg|
|
43
|
-
nano = reg["NanoServer"]
|
44
|
-
end
|
45
|
-
rescue ::Win32::Registry::Error
|
46
|
-
# If accessing the registry key failed, then we're probably not on
|
47
|
-
# nano. Fail through.
|
48
|
-
end
|
49
|
-
nano == 1
|
31
|
+
false
|
50
32
|
end
|
51
33
|
|
34
|
+
# @deprecated we added this method due to Windows Server Nano, which is no longer a platform
|
52
35
|
def supports_msi?
|
53
36
|
return false unless windows?
|
54
37
|
|
55
|
-
|
56
|
-
|
57
|
-
key = "System\\CurrentControlSet\\Services\\msiserver"
|
58
|
-
access = ::Win32::Registry::KEY_QUERY_VALUE
|
59
|
-
|
60
|
-
begin
|
61
|
-
::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, access) do |reg|
|
62
|
-
true
|
63
|
-
end
|
64
|
-
rescue ::Win32::Registry::Error
|
65
|
-
false
|
66
|
-
end
|
38
|
+
true
|
67
39
|
end
|
68
40
|
|
41
|
+
# @deprecated we don't support any release of Windows that isn't PS 3+
|
69
42
|
def supports_powershell_execution_bypass?(node)
|
70
|
-
|
71
|
-
node[:languages][:powershell][:version].to_i >= 3
|
43
|
+
true
|
72
44
|
end
|
73
45
|
|
74
46
|
def supports_dsc?(node)
|
data/lib/chef/powershell.rb
CHANGED
@@ -39,12 +39,26 @@ class Chef
|
|
39
39
|
exec(script)
|
40
40
|
end
|
41
41
|
|
42
|
+
#
|
43
|
+
# Was there an error running the command
|
44
|
+
#
|
45
|
+
# @return [Boolean]
|
46
|
+
#
|
42
47
|
def error?
|
43
48
|
return true if errors.count > 0
|
44
49
|
|
45
50
|
false
|
46
51
|
end
|
47
52
|
|
53
|
+
class CommandFailed < RuntimeError; end
|
54
|
+
|
55
|
+
#
|
56
|
+
# @raise [Chef::PowerShell::CommandFailed] raise if the command failed
|
57
|
+
#
|
58
|
+
def error!
|
59
|
+
raise Chef::PowerShell::CommandFailed, "Unexpected exit in PowerShell command: #{@errors}" if error?
|
60
|
+
end
|
61
|
+
|
48
62
|
private
|
49
63
|
|
50
64
|
def exec(script)
|