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
@@ -76,6 +76,12 @@ class Chef::Application::Apply < Chef::Application
|
|
76
76
|
description: "Set the log level (trace, debug, info, warn, error, fatal).",
|
77
77
|
proc: lambda { |l| l.to_sym }
|
78
78
|
|
79
|
+
option :always_dump_stacktrace,
|
80
|
+
long: "--[no-]always-dump-stacktrace",
|
81
|
+
boolean: true,
|
82
|
+
default: false,
|
83
|
+
description: "Always dump the stacktrace regardless of the log_level setting."
|
84
|
+
|
79
85
|
option :help,
|
80
86
|
short: "-h",
|
81
87
|
long: "--help",
|
@@ -99,6 +105,12 @@ class Chef::Application::Apply < Chef::Application
|
|
99
105
|
description: "Enable whyrun mode.",
|
100
106
|
boolean: true
|
101
107
|
|
108
|
+
option :yaml,
|
109
|
+
long: "--yaml",
|
110
|
+
description: "Parse recipe as YAML",
|
111
|
+
boolean: true,
|
112
|
+
default: false
|
113
|
+
|
102
114
|
option :profile_ruby,
|
103
115
|
long: "--[no-]profile-ruby",
|
104
116
|
description: "Dump complete Ruby call graph stack of entire #{Chef::Dist::PRODUCT} run (expert only).",
|
@@ -192,7 +204,12 @@ class Chef::Application::Apply < Chef::Application
|
|
192
204
|
@recipe_text, @recipe_fh = read_recipe_file @recipe_filename
|
193
205
|
end
|
194
206
|
recipe, run_context = get_recipe_and_run_context
|
195
|
-
|
207
|
+
if config[:yaml] || File.extname(@recipe_filename) == ".yml"
|
208
|
+
logger.info "Parsing recipe as YAML"
|
209
|
+
recipe.from_yaml(@recipe_text)
|
210
|
+
else
|
211
|
+
recipe.instance_eval(@recipe_text, @recipe_filename, 1)
|
212
|
+
end
|
196
213
|
runner = Chef::Runner.new(run_context)
|
197
214
|
catch(:end_client_run_early) do
|
198
215
|
begin
|
@@ -215,8 +232,8 @@ class Chef::Application::Apply < Chef::Application
|
|
215
232
|
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
216
233
|
end
|
217
234
|
|
218
|
-
|
219
|
-
def run(enforce_license
|
235
|
+
# Get this party started
|
236
|
+
def run(enforce_license = false)
|
220
237
|
reconfigure
|
221
238
|
check_license_acceptance if enforce_license
|
222
239
|
run_application
|
@@ -94,11 +94,16 @@ class Chef::Application::Base < Chef::Application
|
|
94
94
|
description: "Set the log level (auto, trace, debug, info, warn, error, fatal).",
|
95
95
|
proc: lambda { |l| l.to_sym }
|
96
96
|
|
97
|
-
option :
|
97
|
+
option :log_location_cli,
|
98
98
|
short: "-L LOGLOCATION",
|
99
99
|
long: "--logfile LOGLOCATION",
|
100
|
-
description: "Set the log file location, defaults to STDOUT - recommended for daemonizing."
|
101
|
-
|
100
|
+
description: "Set the log file location, defaults to STDOUT - recommended for daemonizing."
|
101
|
+
|
102
|
+
option :always_dump_stacktrace,
|
103
|
+
long: "--[no-]always-dump-stacktrace",
|
104
|
+
boolean: true,
|
105
|
+
default: false,
|
106
|
+
description: "Always dump the stacktrace regardless of the log_level setting."
|
102
107
|
|
103
108
|
option :help,
|
104
109
|
short: "-h",
|
@@ -139,8 +139,8 @@ class Chef
|
|
139
139
|
def notify_on_deprecation(message)
|
140
140
|
Chef.deprecated(:exit_code, message)
|
141
141
|
rescue Chef::Exceptions::DeprecatedFeatureError
|
142
|
-
|
143
|
-
|
142
|
+
# Have to rescue this, otherwise this unhandled error preempts
|
143
|
+
# the current exit code assignment.
|
144
144
|
end
|
145
145
|
|
146
146
|
def non_standard_exit_code_warning(exit_code)
|
@@ -46,7 +46,7 @@ class Chef::Application::Knife < Chef::Application
|
|
46
46
|
option :verbosity,
|
47
47
|
short: "-V",
|
48
48
|
long: "--verbose",
|
49
|
-
description: "More verbose output. Use twice for
|
49
|
+
description: "More verbose output. Use twice (-VV) for additional verbosity and three times (-VVV) for maximum verbosity.",
|
50
50
|
proc: Proc.new { verbosity_level += 1 },
|
51
51
|
default: 0
|
52
52
|
|
data/lib/chef/chef_class.rb
CHANGED
@@ -97,8 +97,8 @@ class Chef
|
|
97
97
|
#
|
98
98
|
# @return [Array<Class>] Modified Priority Array of Provider Classes to use for the resource_name on the node
|
99
99
|
#
|
100
|
-
def set_provider_priority_array(resource_name, priority_array,
|
101
|
-
result = provider_priority_map.set_priority_array(resource_name.to_sym, priority_array,
|
100
|
+
def set_provider_priority_array(resource_name, priority_array, **filter, &block)
|
101
|
+
result = provider_priority_map.set_priority_array(resource_name.to_sym, priority_array, **filter, &block)
|
102
102
|
result = result.dup if result
|
103
103
|
result
|
104
104
|
end
|
@@ -112,8 +112,8 @@ class Chef
|
|
112
112
|
#
|
113
113
|
# @return [Array<Class>] Modified Priority Array of Resource Classes to use for the resource_name on the node
|
114
114
|
#
|
115
|
-
def set_resource_priority_array(resource_name, priority_array,
|
116
|
-
result = resource_priority_map.set_priority_array(resource_name.to_sym, priority_array,
|
115
|
+
def set_resource_priority_array(resource_name, priority_array, **filter, &block)
|
116
|
+
result = resource_priority_map.set_priority_array(resource_name.to_sym, priority_array, **filter, &block)
|
117
117
|
result = result.dup if result
|
118
118
|
result
|
119
119
|
end
|
@@ -204,7 +204,7 @@ class Chef
|
|
204
204
|
@memory_store.create(path, name, data, *options)
|
205
205
|
|
206
206
|
elsif path[0] == "cookbooks" && path.length == 2
|
207
|
-
|
207
|
+
# Do nothing. The entry gets created when the cookbook is created.
|
208
208
|
|
209
209
|
# /policy_groups/GROUP/policies/NAME
|
210
210
|
elsif path[0] == "policy_groups" && path[2] == "policies"
|
@@ -724,8 +724,8 @@ class Chef
|
|
724
724
|
path[-1] = "#{path[-1]}.json"
|
725
725
|
end
|
726
726
|
|
727
|
-
|
728
|
-
|
727
|
+
# /acls/containers|nodes|... do NOT drop into the next elsif, and do
|
728
|
+
# not get .json appended
|
729
729
|
|
730
730
|
# /nodes|clients|.../x.json
|
731
731
|
elsif path.length == 2
|
@@ -71,7 +71,7 @@ class Chef
|
|
71
71
|
# Children are foo.json and bar.json in this case.
|
72
72
|
#
|
73
73
|
def children
|
74
|
-
|
74
|
+
# Grab the names of the children, append json, and make child entries
|
75
75
|
@children ||= root.get_json(api_path).keys.sort.map do |key|
|
76
76
|
make_child_entry(key, true)
|
77
77
|
end
|
@@ -101,7 +101,7 @@ class Chef
|
|
101
101
|
|
102
102
|
def read
|
103
103
|
# Minimize the value (get rid of defaults) so the results don't look terrible
|
104
|
-
Chef::JSONCompat.to_json_pretty(
|
104
|
+
Chef::JSONCompat.to_json_pretty(normalize_value(_read_json))
|
105
105
|
end
|
106
106
|
|
107
107
|
def _read_json
|
@@ -122,7 +122,11 @@ class Chef
|
|
122
122
|
end
|
123
123
|
|
124
124
|
def minimize_value(value)
|
125
|
-
data_handler.minimize(
|
125
|
+
data_handler.minimize(normalize_value(value), self)
|
126
|
+
end
|
127
|
+
|
128
|
+
def normalize_value(value)
|
129
|
+
data_handler.normalize(value, self)
|
126
130
|
end
|
127
131
|
|
128
132
|
def compare_to(other)
|
@@ -19,7 +19,7 @@ class Chef
|
|
19
19
|
def children
|
20
20
|
result = []
|
21
21
|
seen = {}
|
22
|
-
|
22
|
+
# If multiple things have the same name, the first one wins.
|
23
23
|
multiplexed_dirs.each do |dir|
|
24
24
|
dir.children.each do |child|
|
25
25
|
if seen[child.name]
|
@@ -76,7 +76,7 @@ class Chef
|
|
76
76
|
|
77
77
|
# Write out .uploaded-cookbook-version.json
|
78
78
|
# cookbook_file_path = File.join(file_path, cookbook_name) <- this should be the same as self.file_path
|
79
|
-
unless File.
|
79
|
+
unless File.exists?(file_path)
|
80
80
|
FileUtils.mkdir_p(file_path)
|
81
81
|
end
|
82
82
|
uploaded_cookbook_version_path = File.join(file_path, Chef::Cookbook::CookbookVersionLoader::UPLOADED_COOKBOOK_VERSION_FILE)
|
@@ -132,7 +132,7 @@ class Chef
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def can_upload?
|
135
|
-
File.
|
135
|
+
File.exists?(uploaded_cookbook_version_path) || children.size > 0
|
136
136
|
end
|
137
137
|
|
138
138
|
protected
|
@@ -140,11 +140,11 @@ class Chef
|
|
140
140
|
# Used to print out a human-readable file system description
|
141
141
|
def fs_description
|
142
142
|
repo_paths = root_paths || [ File.dirname(child_paths["cookbooks"][0]) ]
|
143
|
-
result = "repository at #{repo_paths.join(", ")}
|
143
|
+
result = "repository at #{repo_paths.join(", ")}"
|
144
144
|
if versioned_cookbooks
|
145
|
-
result << "
|
145
|
+
result << " (Multiple versions per cookbook)"
|
146
146
|
else
|
147
|
-
result << "
|
147
|
+
result << " (One version per cookbook)"
|
148
148
|
end
|
149
149
|
child_paths.each_pair do |name, paths|
|
150
150
|
if paths.any? { |path| !repo_paths.include?(File.dirname(path)) }
|
@@ -161,7 +161,7 @@ class Chef
|
|
161
161
|
# members.json and org.json may be found.
|
162
162
|
#
|
163
163
|
def root_dir
|
164
|
-
existing_paths = root_paths.select { |path| File.
|
164
|
+
existing_paths = root_paths.select { |path| File.exists?(path) }
|
165
165
|
if existing_paths.size > 0
|
166
166
|
MultiplexedDir.new(existing_paths.map do |path|
|
167
167
|
dir = FileSystemEntry.new(name, parent, path)
|
@@ -184,7 +184,7 @@ class Chef
|
|
184
184
|
return root_dir.child(name)
|
185
185
|
end
|
186
186
|
|
187
|
-
paths = (child_paths[name] || []).select { |path| File.
|
187
|
+
paths = (child_paths[name] || []).select { |path| File.exists?(path) }
|
188
188
|
if paths.size == 0
|
189
189
|
return NonexistentFSObject.new(name, self)
|
190
190
|
end
|
@@ -71,9 +71,9 @@ class Chef
|
|
71
71
|
# part that actually exists. The paths operated on here are not Chef-FS paths.
|
72
72
|
# These are OS paths that may contain symlinks but may not also fully exist.
|
73
73
|
#
|
74
|
-
# If /x is a symlink to /
|
75
|
-
# PathUtils.realest_path('/x/y/z') == '/
|
76
|
-
# PathUtils.realest_path('/x/*/z') == '/
|
74
|
+
# If /x is a symlink to /blarghle, and has no subdirectories, then:
|
75
|
+
# PathUtils.realest_path('/x/y/z') == '/blarghle/y/z'
|
76
|
+
# PathUtils.realest_path('/x/*/z') == '/blarghle/*/z'
|
77
77
|
# PathUtils.realest_path('/*/y/z') == '/*/y/z'
|
78
78
|
#
|
79
79
|
# TODO: Move this to wherever util/path_helper is these days.
|
data/lib/chef/client.rb
CHANGED
@@ -327,8 +327,14 @@ class Chef
|
|
327
327
|
|
328
328
|
# @api private
|
329
329
|
def warn_if_eol
|
330
|
-
|
331
|
-
|
330
|
+
require_relative "version"
|
331
|
+
|
332
|
+
# We make a release every year so take the version you're on + 2006 and you get
|
333
|
+
# the year it goes EOL
|
334
|
+
eol_year = 2006 + Gem::Version.new(Chef::VERSION).segments.first
|
335
|
+
|
336
|
+
if Time.now > Time.new(eol_year, 5, 01)
|
337
|
+
logger.warn("This release of #{Chef::Dist::PRODUCT} became end of life (EOL) on May 1st #{eol_year}. Please update to a supported release to receive new features, bug fixes, and security updates.")
|
332
338
|
end
|
333
339
|
end
|
334
340
|
|
@@ -347,19 +353,15 @@ class Chef
|
|
347
353
|
|
348
354
|
# @api private
|
349
355
|
def formatters_for_run
|
350
|
-
|
351
|
-
[default_formatter]
|
352
|
-
else
|
353
|
-
Chef::Config.formatters
|
354
|
-
end
|
355
|
-
end
|
356
|
+
return Chef::Config.formatters unless Chef::Config.formatters.empty?
|
356
357
|
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
358
|
+
[ Chef::Config[:log_location] ].flatten.map do |log_location|
|
359
|
+
log_location = nil if log_location == STDOUT
|
360
|
+
if !Chef::Config[:force_logger] || Chef::Config[:force_formatter]
|
361
|
+
[:doc, log_location]
|
362
|
+
else
|
363
|
+
[:null]
|
364
|
+
end
|
363
365
|
end
|
364
366
|
end
|
365
367
|
|
data/lib/chef/config.rb
CHANGED
@@ -27,7 +27,7 @@ class Chef
|
|
27
27
|
# and throws the rest away then re-builds the list of files on the
|
28
28
|
# disk. This is due to the manifest not having the on-disk file
|
29
29
|
# locations, since in the chef-client case, that information is
|
30
|
-
#
|
30
|
+
# non-sensical.
|
31
31
|
class FileSystemFileVendor < FileVendor
|
32
32
|
|
33
33
|
attr_reader :cookbook_name
|
@@ -57,7 +57,7 @@ class Chef
|
|
57
57
|
begin
|
58
58
|
Dir.mktmpdir("chef-gem-bundle") do |dir|
|
59
59
|
File.open("#{dir}/Gemfile", "w+") do |tf|
|
60
|
-
Array(Chef::Config[:rubygems_url] || "https://
|
60
|
+
Array(Chef::Config[:rubygems_url] || "https://rubygems.org").each do |s|
|
61
61
|
tf.puts "source '#{s}'"
|
62
62
|
end
|
63
63
|
cookbook_gems.each do |gem_name, args|
|
@@ -52,11 +52,13 @@ class Chef
|
|
52
52
|
CHEF_VERSIONS = "chef_versions".freeze
|
53
53
|
OHAI_VERSIONS = "ohai_versions".freeze
|
54
54
|
GEMS = "gems".freeze
|
55
|
+
EAGER_LOAD_LIBRARIES = "eager_load_libraries".freeze
|
55
56
|
|
56
57
|
COMPARISON_FIELDS = %i{name description long_description maintainer
|
57
58
|
maintainer_email license platforms dependencies
|
58
59
|
providing recipes version source_url issues_url
|
59
|
-
privacy chef_versions ohai_versions gems
|
60
|
+
privacy chef_versions ohai_versions gems
|
61
|
+
eager_load_libraries}.freeze
|
60
62
|
|
61
63
|
VERSION_CONSTRAINTS = { depends: DEPENDENCIES,
|
62
64
|
provides: PROVIDING,
|
@@ -109,6 +111,7 @@ class Chef
|
|
109
111
|
@chef_versions = []
|
110
112
|
@ohai_versions = []
|
111
113
|
@gems = []
|
114
|
+
@eager_load_libraries = true
|
112
115
|
|
113
116
|
@errors = []
|
114
117
|
end
|
@@ -344,6 +347,25 @@ class Chef
|
|
344
347
|
@gems
|
345
348
|
end
|
346
349
|
|
350
|
+
# Metadata DSL to control the behavior of library loading.
|
351
|
+
#
|
352
|
+
# Can be set to:
|
353
|
+
#
|
354
|
+
# true - libraries are eagerly loaded in alphabetical order (backcompat)
|
355
|
+
# false - libraries are not eagerly loaded, the libraries dir is added to the LOAD_PATH
|
356
|
+
# String - a file or glob pattern to eagerly load, otherwise it is treated like `false`
|
357
|
+
# Array<String> - array of files or globs to eagerly load, otherwise it is treated like `false`
|
358
|
+
#
|
359
|
+
# @params arg [Array,String,TrueClass,FalseClass]
|
360
|
+
# @params [Array,TrueClass,FalseCalss]
|
361
|
+
def eager_load_libraries(arg = nil)
|
362
|
+
set_or_return(
|
363
|
+
:eager_load_libraries,
|
364
|
+
arg,
|
365
|
+
kind_of: [ Array, String, TrueClass, FalseClass ]
|
366
|
+
)
|
367
|
+
end
|
368
|
+
|
347
369
|
# Adds a description for a recipe.
|
348
370
|
#
|
349
371
|
# === Parameters
|
@@ -435,6 +457,7 @@ class Chef
|
|
435
457
|
CHEF_VERSIONS => gem_requirements_to_array(*chef_versions),
|
436
458
|
OHAI_VERSIONS => gem_requirements_to_array(*ohai_versions),
|
437
459
|
GEMS => gems,
|
460
|
+
EAGER_LOAD_LIBRARIES => eager_load_libraries,
|
438
461
|
}
|
439
462
|
end
|
440
463
|
|
@@ -458,7 +481,7 @@ class Chef
|
|
458
481
|
@maintainer_email = o[MAINTAINER_EMAIL] if o.key?(MAINTAINER_EMAIL)
|
459
482
|
@license = o[LICENSE] if o.key?(LICENSE)
|
460
483
|
@platforms = o[PLATFORMS] if o.key?(PLATFORMS)
|
461
|
-
@dependencies =
|
484
|
+
@dependencies = handle_incorrect_constraints(o[DEPENDENCIES]) if o.key?(DEPENDENCIES)
|
462
485
|
@providing = o[PROVIDING] if o.key?(PROVIDING)
|
463
486
|
@recipes = o[RECIPES] if o.key?(RECIPES)
|
464
487
|
@version = o[VERSION] if o.key?(VERSION)
|
@@ -468,6 +491,7 @@ class Chef
|
|
468
491
|
@chef_versions = gem_requirements_from_array("chef", o[CHEF_VERSIONS]) if o.key?(CHEF_VERSIONS)
|
469
492
|
@ohai_versions = gem_requirements_from_array("ohai", o[OHAI_VERSIONS]) if o.key?(OHAI_VERSIONS)
|
470
493
|
@gems = o[GEMS] if o.key?(GEMS)
|
494
|
+
@eager_load_libraries = o[EAGER_LOAD_LIBRARIES] if o.key?(EAGER_LOAD_LIBRARIES)
|
471
495
|
self
|
472
496
|
end
|
473
497
|
|
@@ -511,6 +535,25 @@ class Chef
|
|
511
535
|
)
|
512
536
|
end
|
513
537
|
|
538
|
+
# This method translates version constraint strings from
|
539
|
+
# cookbooks with the old format.
|
540
|
+
#
|
541
|
+
# Before we began respecting version constraints, we allowed
|
542
|
+
# multiple constraints to be placed on cookbooks, as well as the
|
543
|
+
# << and >> operators, which are now just < and >. For
|
544
|
+
# specifications with more than one constraint, we return an
|
545
|
+
# empty array (otherwise, we're silently abiding only part of
|
546
|
+
# the contract they have specified to us). If there is only one
|
547
|
+
# constraint, we are replacing the old << and >> with the new <
|
548
|
+
# and >.
|
549
|
+
def handle_incorrect_constraints(specification)
|
550
|
+
specification.inject(Mash.new) do |acc, (cb, constraints)|
|
551
|
+
constraints = Array(constraints)
|
552
|
+
acc[cb] = (constraints.empty? || constraints.size > 1) ? [] : constraints.first
|
553
|
+
acc
|
554
|
+
end
|
555
|
+
end
|
556
|
+
|
514
557
|
# Sets the cookbook's issues URL, or returns it.
|
515
558
|
#
|
516
559
|
# === Parameters
|
@@ -714,26 +757,6 @@ class Chef
|
|
714
757
|
end
|
715
758
|
end
|
716
759
|
end
|
717
|
-
|
718
|
-
# This method translates version constraint strings from
|
719
|
-
# cookbooks with the old format.
|
720
|
-
#
|
721
|
-
# Before we began respecting version constraints, we allowed
|
722
|
-
# multiple constraints to be placed on cookbooks, as well as the
|
723
|
-
# << and >> operators, which are now just < and >. For
|
724
|
-
# specifications with more than one constraint, we return an
|
725
|
-
# empty array (otherwise, we're silently abiding only part of
|
726
|
-
# the contract they have specified to us). If there is only one
|
727
|
-
# constraint, we are replacing the old << and >> with the new <
|
728
|
-
# and >.
|
729
|
-
def handle_deprecated_constraints(specification)
|
730
|
-
specification.inject(Mash.new) do |acc, (cb, constraints)|
|
731
|
-
constraints = Array(constraints)
|
732
|
-
acc[cb] = (constraints.empty? || constraints.size > 1) ? [] : constraints.first.gsub(/>>/, ">").gsub(/<</, "<")
|
733
|
-
acc
|
734
|
-
end
|
735
|
-
end
|
736
|
-
|
737
760
|
end
|
738
761
|
|
739
762
|
#== Chef::Cookbook::MinimalMetadata
|