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
@@ -137,6 +137,18 @@ class Chef
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
+
def recipe_yml_filenames_by_name
|
141
|
+
@recipe_ym_filenames_by_name ||= begin
|
142
|
+
name_map = yml_filenames_by_name(files_for("recipes"))
|
143
|
+
root_alias = cookbook_manifest.root_files.find { |record| record[:name] == "root_files/recipe.yml" }
|
144
|
+
if root_alias
|
145
|
+
Chef::Log.error("Cookbook #{name} contains both recipe.yml and and recipes/default.yml, ignoring recipes/default.yml") if name_map["default"]
|
146
|
+
name_map["default"] = root_alias[:full_path]
|
147
|
+
end
|
148
|
+
name_map
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
140
152
|
def recipe_filenames_by_name
|
141
153
|
@recipe_filenames_by_name ||= begin
|
142
154
|
name_map = filenames_by_name(files_for("recipes"))
|
@@ -184,10 +196,29 @@ class Chef
|
|
184
196
|
|
185
197
|
# called from DSL
|
186
198
|
def load_recipe(recipe_name, run_context)
|
187
|
-
|
199
|
+
if recipe_filenames_by_name.key?(recipe_name)
|
200
|
+
load_ruby_recipe(recipe_name, run_context)
|
201
|
+
elsif recipe_yml_filenames_by_name.key?(recipe_name)
|
202
|
+
load_yml_recipe(recipe_name, run_context)
|
203
|
+
else
|
188
204
|
raise Chef::Exceptions::RecipeNotFound, "could not find recipe #{recipe_name} for cookbook #{name}"
|
189
205
|
end
|
206
|
+
end
|
190
207
|
|
208
|
+
def load_yml_recipe(recipe_name, run_context)
|
209
|
+
Chef::Log.trace("Found recipe #{recipe_name} in cookbook #{name}")
|
210
|
+
recipe = Chef::Recipe.new(name, recipe_name, run_context)
|
211
|
+
recipe_filename = recipe_yml_filenames_by_name[recipe_name]
|
212
|
+
|
213
|
+
unless recipe_filename
|
214
|
+
raise Chef::Exceptions::RecipeNotFound, "could not find #{recipe_name} files for cookbook #{name}"
|
215
|
+
end
|
216
|
+
|
217
|
+
recipe.from_yaml_file(recipe_filename)
|
218
|
+
recipe
|
219
|
+
end
|
220
|
+
|
221
|
+
def load_ruby_recipe(recipe_name, run_context)
|
191
222
|
Chef::Log.trace("Found recipe #{recipe_name} in cookbook #{name}")
|
192
223
|
recipe = Chef::Recipe.new(name, recipe_name, run_context)
|
193
224
|
recipe_filename = recipe_filenames_by_name[recipe_name]
|
@@ -327,10 +358,10 @@ class Chef
|
|
327
358
|
|
328
359
|
# extract the preference part from the path.
|
329
360
|
if manifest_record_path =~ %r{(#{Regexp.escape(segment.to_s)}/[^/]+/#{Regexp.escape(dirname)})/.+$}
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
361
|
+
# Note the specificy_dirname includes the segment and
|
362
|
+
# dirname argument as above, which is what
|
363
|
+
# preferences_for_path returns. It could be
|
364
|
+
# "files/ubuntu-9.10/dirname", for example.
|
334
365
|
specificity_dirname = $1
|
335
366
|
|
336
367
|
# Record the specificity_dirname only if it's in the list of
|
@@ -551,6 +582,10 @@ class Chef
|
|
551
582
|
records.select { |record| record[:name] =~ /\.rb$/ }.inject({}) { |memo, record| memo[File.basename(record[:name], ".rb")] = record[:full_path]; memo }
|
552
583
|
end
|
553
584
|
|
585
|
+
def yml_filenames_by_name(records)
|
586
|
+
records.select { |record| record[:name] =~ /\.yml$/ }.inject({}) { |memo, record| memo[File.basename(record[:name], ".yml")] = record[:full_path]; memo }
|
587
|
+
end
|
588
|
+
|
554
589
|
def file_vendor
|
555
590
|
unless @file_vendor
|
556
591
|
@file_vendor = Chef::Cookbook::FileVendor.create_from_manifest(cookbook_manifest)
|
data/lib/chef/data_bag.rb
CHANGED
@@ -94,7 +94,7 @@ class Chef
|
|
94
94
|
names = []
|
95
95
|
paths.each do |path|
|
96
96
|
unless File.directory?(path)
|
97
|
-
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}'
|
97
|
+
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
|
98
98
|
end
|
99
99
|
|
100
100
|
names += Dir.glob(File.join(
|
@@ -122,7 +122,7 @@ class Chef
|
|
122
122
|
data_bag = {}
|
123
123
|
paths.each do |path|
|
124
124
|
unless File.directory?(path)
|
125
|
-
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}'
|
125
|
+
raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
|
126
126
|
end
|
127
127
|
|
128
128
|
Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(path, name.to_s), "*.json")).inject({}) do |bag, f|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
class Chef
|
19
19
|
class DataCollector
|
20
20
|
|
21
|
-
# This module isolates the handling of collecting error descriptions to insert into the
|
21
|
+
# This module isolates the handling of collecting error descriptions to insert into the data_colletor
|
22
22
|
# report output. For very early errors it is responsible for collecting the node_name for the report
|
23
23
|
# to use. For all failure conditions that have an ErrorMapper it collects the output.
|
24
24
|
#
|
@@ -106,12 +106,13 @@ class Chef
|
|
106
106
|
def action_record_for_json(action_record)
|
107
107
|
new_resource = action_record.new_resource
|
108
108
|
current_resource = action_record.current_resource
|
109
|
+
after_resource = action_record.after_resource
|
109
110
|
|
110
111
|
hash = {
|
111
112
|
"type" => new_resource.resource_name.to_sym,
|
112
113
|
"name" => new_resource.name.to_s,
|
113
114
|
"id" => safe_resource_identity(new_resource),
|
114
|
-
"after" => safe_state_for_resource_reporter(new_resource),
|
115
|
+
"after" => safe_state_for_resource_reporter(after_resource || new_resource),
|
115
116
|
"before" => safe_state_for_resource_reporter(current_resource),
|
116
117
|
"duration" => action_record.elapsed_time.nil? ? "" : (action_record.elapsed_time * 1000).to_i.to_s,
|
117
118
|
"delta" => new_resource.respond_to?(:diff) && updated_or_failed?(action_record) ? new_resource.diff : "",
|
@@ -120,6 +121,11 @@ class Chef
|
|
120
121
|
"status" => action_record_status_for_json(action_record),
|
121
122
|
}
|
122
123
|
|
124
|
+
# don't use the new_resource for the after_resource if it is skipped or failed
|
125
|
+
if action_record.status == :skipped || action_record.status == :failed || action_record.status == :unprocessed
|
126
|
+
hash["after"] = {}
|
127
|
+
end
|
128
|
+
|
123
129
|
if new_resource.cookbook_name
|
124
130
|
hash["cookbook_name"] = new_resource.cookbook_name
|
125
131
|
hash["cookbook_version"] = new_resource.cookbook_version.version
|
data/lib/chef/deprecated.rb
CHANGED
@@ -72,7 +72,7 @@ class Chef
|
|
72
72
|
# Just in case someone uses a symbol in the config by mistake.
|
73
73
|
silence_spec = silence_spec.to_s
|
74
74
|
end
|
75
|
-
|
75
|
+
# Check for a silence by deprecation name, or by location.
|
76
76
|
self.class.deprecation_key == silence_spec || self.class.deprecation_id.to_s == silence_spec || "chef-#{self.class.deprecation_id}" == silence_spec.downcase || location.include?(silence_spec)
|
77
77
|
end
|
78
78
|
# check if this warning has been silenced by inline comment.
|
@@ -237,14 +237,6 @@ class Chef
|
|
237
237
|
target 29
|
238
238
|
end
|
239
239
|
|
240
|
-
class ArchiveFileIntegerFileMode < Base
|
241
|
-
target 30
|
242
|
-
end
|
243
|
-
|
244
|
-
class ResourceNameWithoutProvides < Base
|
245
|
-
target 31
|
246
|
-
end
|
247
|
-
|
248
240
|
class Generic < Base
|
249
241
|
def url
|
250
242
|
"https://docs.chef.io/chef_deprecations_client/"
|
data/lib/chef/dist.rb
CHANGED
@@ -54,6 +54,14 @@ class Chef
|
|
54
54
|
# The user's configuration directory
|
55
55
|
USER_CONF_DIR = ChefConfig::Dist::USER_CONF_DIR.freeze
|
56
56
|
|
57
|
+
# The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
|
58
|
+
# "cinc" => /etc/cinc, /var/cinc, C:\\cinc
|
59
|
+
DIR_SUFFIX = ChefConfig::Dist::DIR_SUFFIX.freeze
|
60
|
+
|
61
|
+
# The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
|
62
|
+
# DIR_SUFFIX is appended to it in code where relevant
|
63
|
+
LEGACY_CONF_DIR = ChefConfig::Dist::LEGACY_CONF_DIR.freeze
|
64
|
+
|
57
65
|
# The server's configuration directory
|
58
66
|
SERVER_CONF_DIR = "/etc/chef-server".freeze
|
59
67
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#
|
2
|
+
# Author: Joshua Timberman <joshua@chef.io>
|
3
|
+
#
|
4
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
5
|
+
# Copyright:: 2014-2015 Bloomberg Finance L.P.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require "chef-vault"
|
21
|
+
require_relative "data_query"
|
22
|
+
|
23
|
+
class Chef
|
24
|
+
module DSL
|
25
|
+
module ChefVault
|
26
|
+
include Chef::DSL::DataQuery
|
27
|
+
|
28
|
+
# Helper method which provides a Recipe/Resource DSL for wrapping
|
29
|
+
# creation of {ChefVault::Item}.
|
30
|
+
# @note
|
31
|
+
# Falls back to normal data bag item loading if the item is not
|
32
|
+
# actually a Chef Vault item. This is controlled via
|
33
|
+
# +node['chef-vault']['databag_fallback']+.
|
34
|
+
# @example
|
35
|
+
# item = chef_vault_item('secrets', 'bacon')
|
36
|
+
# log 'Yeah buddy!' if item['_default']['type']
|
37
|
+
# @param [String] bag Name of the data bag to load from.
|
38
|
+
# @param [String] id Identifier of the data bag item to load.
|
39
|
+
def chef_vault_item(bag, id)
|
40
|
+
if ::ChefVault::Item.vault?(bag, id)
|
41
|
+
::ChefVault::Item.load(bag, id)
|
42
|
+
elsif node["chef-vault"]["databag_fallback"]
|
43
|
+
data_bag_item(bag, id)
|
44
|
+
else
|
45
|
+
raise "Trying to load a regular data bag item #{id} from #{bag}, and databag_fallback is disabled"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Helper method that allows for listing the ids of a vault in a recipe.
|
50
|
+
# This method is needed because data_bag() returns the keys along with
|
51
|
+
# the items, so this method strips out the keys for users so that they
|
52
|
+
# don't have to do it in their recipes.
|
53
|
+
# @example
|
54
|
+
# ids = chef_vault('secrets')
|
55
|
+
# log 'Yeah buddy!' if ids[0] == 'bacon'
|
56
|
+
# @param [String] bag Name of the data bag to load from.
|
57
|
+
# @return [Array]
|
58
|
+
def chef_vault(bag)
|
59
|
+
raise "'#{bag}' is not a vault" unless Chef::DataBag.list.include? bag
|
60
|
+
|
61
|
+
pattern = Regexp.new(/_keys$/).freeze
|
62
|
+
data_bag(bag).each_with_object([]) do |id, acc|
|
63
|
+
acc << id unless pattern.match?(id)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Helper method which provides an environment wrapper for a data bag.
|
68
|
+
# This allows for easy access to current environment secrets inside
|
69
|
+
# of an item.
|
70
|
+
# @example
|
71
|
+
# item = chef_vault_item_for_environment('secrets', 'bacon')
|
72
|
+
# log 'Yeah buddy!' if item['type'] == 'applewood_smoked'
|
73
|
+
# @param [String] bag Name of the data bag to load from.
|
74
|
+
# @param [String] id Identifier of the data bag item to load.
|
75
|
+
# @return [Hash]
|
76
|
+
def chef_vault_item_for_environment(bag, id)
|
77
|
+
item = chef_vault_item(bag, id)
|
78
|
+
return {} unless item[node.chef_environment]
|
79
|
+
|
80
|
+
item[node.chef_environment]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -151,7 +151,7 @@ class Chef
|
|
151
151
|
# source "y.txt.erb"
|
152
152
|
# variables {}
|
153
153
|
# end
|
154
|
-
# resource.variables.merge!({ home: "/home/
|
154
|
+
# resource.variables.merge!({ home: "/home/klowns" })
|
155
155
|
#
|
156
156
|
def edit_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
|
157
157
|
edit_resource!(type, name, created_at: created_at, run_context: run_context, &resource_attrs_block)
|
@@ -267,10 +267,10 @@ class Chef
|
|
267
267
|
# action :delete
|
268
268
|
# end
|
269
269
|
#
|
270
|
-
def declare_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
|
270
|
+
def declare_resource(type, name, created_at: nil, run_context: self.run_context, enclosing_provider: nil, &resource_attrs_block)
|
271
271
|
created_at ||= caller[0]
|
272
272
|
|
273
|
-
resource = build_resource(type, name, created_at: created_at, &resource_attrs_block)
|
273
|
+
resource = build_resource(type, name, created_at: created_at, enclosing_provider: enclosing_provider, &resource_attrs_block)
|
274
274
|
|
275
275
|
run_context.resource_collection.insert(resource, resource_type: resource.declared_type, instance_name: resource.name)
|
276
276
|
resource
|
@@ -297,13 +297,15 @@ class Chef
|
|
297
297
|
# action :delete
|
298
298
|
# end
|
299
299
|
#
|
300
|
-
def build_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
|
300
|
+
def build_resource(type, name, created_at: nil, run_context: self.run_context, enclosing_provider: nil, &resource_attrs_block)
|
301
301
|
created_at ||= caller[0]
|
302
302
|
|
303
303
|
# this needs to be lazy in order to avoid circular dependencies since ResourceBuilder
|
304
304
|
# will requires the entire provider+resolver universe
|
305
305
|
require_relative "../resource_builder" unless defined?(Chef::ResourceBuilder)
|
306
306
|
|
307
|
+
enclosing_provider ||= self if is_a?(Chef::Provider)
|
308
|
+
|
307
309
|
Chef::ResourceBuilder.new(
|
308
310
|
type: type,
|
309
311
|
name: name,
|
@@ -312,7 +314,7 @@ class Chef
|
|
312
314
|
run_context: run_context,
|
313
315
|
cookbook_name: cookbook_name,
|
314
316
|
recipe_name: recipe_name,
|
315
|
-
enclosing_provider:
|
317
|
+
enclosing_provider: enclosing_provider
|
316
318
|
).build(&resource_attrs_block)
|
317
319
|
end
|
318
320
|
|
@@ -168,7 +168,7 @@ class Chef
|
|
168
168
|
has_platform
|
169
169
|
end
|
170
170
|
|
171
|
-
|
171
|
+
# Implementation class for determining platform family dependent values
|
172
172
|
class PlatformFamilyDependentValue
|
173
173
|
|
174
174
|
# Create a platform family dependent value object.
|
@@ -252,13 +252,12 @@ class Chef
|
|
252
252
|
# @deprecated Windows releases before Windows 2012 and 8 are no longer supported
|
253
253
|
# @return [Boolean] Is the system older than Windows 8 / 2012
|
254
254
|
def older_than_win_2012_or_8?(node = run_context.nil? ? nil : run_context.node)
|
255
|
-
|
255
|
+
false # we don't support platforms that would be true
|
256
256
|
end
|
257
257
|
|
258
258
|
# ^^^^^^ NOTE: PLEASE DO NOT CONTINUE TO ADD THESE KINDS OF PLATFORM_VERSION APIS WITHOUT ^^^^^^^
|
259
259
|
# ^^^^^^ GOING THROUGH THE DESIGN REVIEW PROCESS AND ADDRESS THE EXISTING CHEF-SUGAR ONES ^^^^^^^
|
260
260
|
# ^^^^^^ DO "THE HARD RIGHT THING" AND ADDRESS THE BROADER PROBLEM AND FIX IT ALL. ^^^^^^^
|
261
|
-
|
262
261
|
end
|
263
262
|
end
|
264
263
|
end
|
data/lib/chef/dsl/recipe.rb
CHANGED
@@ -22,23 +22,19 @@ require_relative "resources"
|
|
22
22
|
require_relative "definitions"
|
23
23
|
require_relative "include_recipe"
|
24
24
|
require_relative "reboot_pending"
|
25
|
-
require_relative "
|
25
|
+
require_relative "universal"
|
26
|
+
require_relative "declare_resource"
|
27
|
+
require_relative "../mixin/notifying_block"
|
26
28
|
require_relative "../mixin/lazy_module_include"
|
27
29
|
|
28
30
|
class Chef
|
29
31
|
module DSL
|
30
32
|
# Part of a family of DSL mixins.
|
31
33
|
#
|
32
|
-
# Chef::DSL::Recipe mixes into Recipes and
|
33
|
-
# - this does not target core chef resources and providers.
|
34
|
+
# Chef::DSL::Recipe mixes into Recipes and Providers.
|
34
35
|
# - this is restricted to recipe/resource/provider context where a resource collection exists.
|
35
36
|
# - cookbook authors should typically include modules into here.
|
36
37
|
#
|
37
|
-
# Chef::DSL::Core mixes into Recipes, LWRP Providers and Core Providers
|
38
|
-
# - this adds cores providers on top of the Recipe DSL.
|
39
|
-
# - this is restricted to recipe/resource/provider context where a resource collection exists.
|
40
|
-
# - core chef authors should typically include modules into here.
|
41
|
-
#
|
42
38
|
# Chef::DSL::Universal mixes into Recipes, LWRP Resources+Providers, Core Resources+Providers, and Attributes files.
|
43
39
|
# - this adds resources and attributes files.
|
44
40
|
# - do not add helpers which manipulate the resource collection.
|
@@ -46,7 +42,9 @@ class Chef
|
|
46
42
|
# - it also pollutes the namespace of nearly every context, watch out.
|
47
43
|
#
|
48
44
|
module Recipe
|
49
|
-
include Chef::DSL::
|
45
|
+
include Chef::DSL::Universal
|
46
|
+
include Chef::DSL::DeclareResource
|
47
|
+
include Chef::Mixin::NotifyingBlock
|
50
48
|
include Chef::DSL::IncludeRecipe
|
51
49
|
include Chef::DSL::RebootPending
|
52
50
|
include Chef::DSL::Resources
|
@@ -69,6 +67,3 @@ class Chef
|
|
69
67
|
end
|
70
68
|
end
|
71
69
|
end
|
72
|
-
|
73
|
-
# Avoid circular references for things that are only used in instance methods
|
74
|
-
require_relative "../resource"
|
data/lib/chef/dsl/universal.rb
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
|
20
20
|
require_relative "platform_introspection"
|
21
21
|
require_relative "data_query"
|
22
|
+
require_relative "chef_vault"
|
22
23
|
require_relative "registry_helper"
|
23
24
|
require_relative "powershell"
|
24
25
|
require_relative "../mixin/powershell_exec"
|
@@ -30,16 +31,10 @@ class Chef
|
|
30
31
|
module DSL
|
31
32
|
# Part of a family of DSL mixins.
|
32
33
|
#
|
33
|
-
# Chef::DSL::Recipe mixes into Recipes and
|
34
|
-
# - this does not target core chef resources and providers.
|
34
|
+
# Chef::DSL::Recipe mixes into Recipes and Providers.
|
35
35
|
# - this is restricted to recipe/resource/provider context where a resource collection exists.
|
36
36
|
# - cookbook authors should typically include modules into here.
|
37
37
|
#
|
38
|
-
# Chef::DSL::Core mixes into Recipes, LWRP Providers and Core Providers
|
39
|
-
# - this adds cores providers on top of the Recipe DSL.
|
40
|
-
# - this is restricted to recipe/resource/provider context where a resource collection exists.
|
41
|
-
# - core chef authors should typically include modules into here.
|
42
|
-
#
|
43
38
|
# Chef::DSL::Universal mixes into Recipes, LWRP Resources+Providers, Core Resources+Providers, and Attributes files.
|
44
39
|
# - this adds resources and attributes files.
|
45
40
|
# - do not add helpers which manipulate the resource collection.
|
@@ -49,6 +44,7 @@ class Chef
|
|
49
44
|
module Universal
|
50
45
|
include Chef::DSL::PlatformIntrospection
|
51
46
|
include Chef::DSL::DataQuery
|
47
|
+
include Chef::DSL::ChefVault
|
52
48
|
include Chef::DSL::RegistryHelper
|
53
49
|
include Chef::DSL::Powershell
|
54
50
|
include Chef::Mixin::PowershellExec
|
data/lib/chef/environment.rb
CHANGED
@@ -255,11 +255,11 @@ class Chef
|
|
255
255
|
js_file = File.join(Chef::Config[:environment_path], "#{name}.json")
|
256
256
|
rb_file = File.join(Chef::Config[:environment_path], "#{name}.rb")
|
257
257
|
|
258
|
-
if File.
|
258
|
+
if File.exists?(js_file)
|
259
259
|
# from_json returns object.class => json_class in the JSON.
|
260
260
|
hash = Chef::JSONCompat.parse(IO.read(js_file))
|
261
261
|
from_hash(hash)
|
262
|
-
elsif File.
|
262
|
+
elsif File.exists?(rb_file)
|
263
263
|
environment = Chef::Environment.new
|
264
264
|
environment.name(name)
|
265
265
|
environment.from_file(rb_file)
|
@@ -266,6 +266,9 @@ class Chef
|
|
266
266
|
# Called after #load_current_resource has run.
|
267
267
|
def resource_current_state_loaded(resource, action, current_resource); end
|
268
268
|
|
269
|
+
# Called after #load_after_resource has run.
|
270
|
+
def resource_after_state_loaded(resource, action, after_resource); end
|
271
|
+
|
269
272
|
# Called when resource current state load is skipped due to the provider
|
270
273
|
# not supporting whyrun mode.
|
271
274
|
def resource_current_state_load_bypassed(resource, action, current_resource); end
|
data/lib/chef/exceptions.rb
CHANGED
@@ -198,7 +198,6 @@ class Chef
|
|
198
198
|
class MetadataNotFound < StandardError
|
199
199
|
attr_reader :install_path
|
200
200
|
attr_reader :cookbook_name
|
201
|
-
|
202
201
|
def initialize(install_path, cookbook_name)
|
203
202
|
@install_path = install_path
|
204
203
|
@cookbook_name = cookbook_name
|
@@ -449,7 +448,6 @@ class Chef
|
|
449
448
|
# to correctly populate the backtrace with the wrapped backtraces.
|
450
449
|
class RunFailedWrappingError < RuntimeError
|
451
450
|
attr_reader :wrapped_errors
|
452
|
-
|
453
451
|
def initialize(*errors)
|
454
452
|
errors = errors.select { |e| !e.nil? }
|
455
453
|
output = "Found #{errors.size} errors, they are stored in the backtrace"
|
@@ -490,7 +488,6 @@ class Chef
|
|
490
488
|
|
491
489
|
class MultipleDscResourcesFound < RuntimeError
|
492
490
|
attr_reader :resources_found
|
493
|
-
|
494
491
|
def initialize(resources_found)
|
495
492
|
@resources_found = resources_found
|
496
493
|
matches_info = @resources_found.each do |r|
|