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
data/lib/chef/provider/user.rb
CHANGED
@@ -116,7 +116,7 @@ class Chef
|
|
116
116
|
false
|
117
117
|
end
|
118
118
|
|
119
|
-
|
119
|
+
action :create do
|
120
120
|
if !@user_exists
|
121
121
|
converge_by("create user #{new_resource.username}") do
|
122
122
|
create_user
|
@@ -130,7 +130,7 @@ class Chef
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
|
133
|
+
action :remove do
|
134
134
|
return unless @user_exists
|
135
135
|
|
136
136
|
converge_by("remove user #{new_resource.username}") do
|
@@ -139,7 +139,7 @@ class Chef
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
|
-
|
142
|
+
action :manage do
|
143
143
|
return unless @user_exists && compare_user
|
144
144
|
|
145
145
|
converge_by("manage user #{new_resource.username}") do
|
@@ -148,7 +148,7 @@ class Chef
|
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
|
151
|
+
action :modify do
|
152
152
|
return unless compare_user
|
153
153
|
|
154
154
|
converge_by("modify user #{new_resource.username}") do
|
@@ -157,7 +157,7 @@ class Chef
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
160
|
-
|
160
|
+
action :lock do
|
161
161
|
if check_lock == false
|
162
162
|
converge_by("lock the user #{new_resource.username}") do
|
163
163
|
lock_user
|
@@ -168,7 +168,7 @@ class Chef
|
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
-
|
171
|
+
action :unlock do
|
172
172
|
if check_lock == true
|
173
173
|
converge_by("unlock user #{new_resource.username}") do
|
174
174
|
unlock_user
|
@@ -118,7 +118,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
118
118
|
|
119
119
|
# Calling shell_out directly since we want to give an input stream
|
120
120
|
shadow_hash_xml = convert_binary_plist_to_xml(shadow_hash_binary.string)
|
121
|
-
shadow_hash = Plist.parse_xml(shadow_hash_xml)
|
121
|
+
shadow_hash = ::Plist.parse_xml(shadow_hash_xml)
|
122
122
|
|
123
123
|
if shadow_hash["SALTED-SHA512-PBKDF2"] # 10.7+ contains this, but we retain the check in case it goes away in the future
|
124
124
|
@password_shadow_conversion_algorithm = "SALTED-SHA512-PBKDF2"
|
@@ -541,7 +541,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
541
541
|
begin
|
542
542
|
user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
|
543
543
|
user_plist_info = run_plutil("convert", "xml1", "-o", "-", user_plist_file)
|
544
|
-
user_info = Plist.parse_xml(user_plist_info)
|
544
|
+
user_info = ::Plist.parse_xml(user_plist_info)
|
545
545
|
rescue Chef::Exceptions::PlistUtilCommandFailed
|
546
546
|
end
|
547
547
|
|
@@ -554,7 +554,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
554
554
|
#
|
555
555
|
def save_user_info(user_info)
|
556
556
|
user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
|
557
|
-
Plist::Emit.save_plist(user_info, user_plist_file)
|
557
|
+
::Plist::Emit.save_plist(user_info, user_plist_file)
|
558
558
|
run_plutil("convert", "binary1", user_plist_file)
|
559
559
|
end
|
560
560
|
|
@@ -22,6 +22,7 @@ require_relative "../../mixin/shell_out"
|
|
22
22
|
require_relative "../../mixin/which"
|
23
23
|
require_relative "../user"
|
24
24
|
require_relative "../../resource/user/mac_user"
|
25
|
+
require "plist"
|
25
26
|
|
26
27
|
class Chef
|
27
28
|
class Provider
|
@@ -196,12 +197,12 @@ class Chef
|
|
196
197
|
# group management should be done outside of the core resource.
|
197
198
|
group_name, group_id, group_action = user_group_info
|
198
199
|
|
199
|
-
|
200
|
+
group group_name do
|
200
201
|
members new_resource.username
|
201
202
|
gid group_id if group_id
|
202
|
-
action
|
203
|
+
action group_action
|
203
204
|
append true
|
204
|
-
end
|
205
|
+
end
|
205
206
|
|
206
207
|
converge_by("create primary group ID") do
|
207
208
|
run_dscl("create", "/Users/#{new_resource.username}", "PrimaryGroupID", group_id)
|
@@ -246,16 +247,16 @@ class Chef
|
|
246
247
|
|
247
248
|
if diverged?(:admin)
|
248
249
|
converge_by("alter admin group membership") do
|
249
|
-
|
250
|
+
group "admin" do
|
250
251
|
if new_resource.admin
|
251
252
|
members new_resource.username
|
252
253
|
else
|
253
254
|
excluded_members new_resource.username
|
254
255
|
end
|
255
256
|
|
256
|
-
action :
|
257
|
+
action :create
|
257
258
|
append true
|
258
|
-
end
|
259
|
+
end
|
259
260
|
|
260
261
|
admins = admin_group_plist[:group_members]
|
261
262
|
if new_resource.admin
|
@@ -271,12 +272,12 @@ class Chef
|
|
271
272
|
end
|
272
273
|
|
273
274
|
group_name, group_id, group_action = user_group_info
|
274
|
-
|
275
|
+
group group_name do
|
275
276
|
gid group_id if group_id
|
276
277
|
members new_resource.username
|
277
|
-
action
|
278
|
+
action group_action
|
278
279
|
append true
|
279
|
-
end
|
280
|
+
end
|
280
281
|
|
281
282
|
if diverged?(:gid)
|
282
283
|
converge_by("alter group membership") do
|
@@ -21,7 +21,7 @@ class Chef
|
|
21
21
|
class WhyrunSafeRubyBlock < Chef::Provider::RubyBlock
|
22
22
|
provides :whyrun_safe_ruby_block
|
23
23
|
|
24
|
-
|
24
|
+
action :run do
|
25
25
|
new_resource.block.call
|
26
26
|
new_resource.updated_by_last_action(true)
|
27
27
|
@run_context.events.resource_update_applied(new_resource, :create, "execute the whyrun_safe_ruby_block #{new_resource.name}")
|
@@ -78,7 +78,7 @@ class Chef
|
|
78
78
|
|
79
79
|
alias_method :compare_value, :requires_modify_or_create?
|
80
80
|
|
81
|
-
|
81
|
+
action :create do
|
82
82
|
if @key_exists
|
83
83
|
if requires_modify_or_create?
|
84
84
|
modify_env
|
@@ -123,7 +123,7 @@ class Chef
|
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
|
126
|
+
action :delete do
|
127
127
|
if ( ENV[new_resource.key_name] || @key_exists ) && !delete_element
|
128
128
|
delete_env
|
129
129
|
logger.info("#{new_resource} deleted")
|
@@ -131,7 +131,7 @@ class Chef
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
|
134
|
+
action :modify do
|
135
135
|
if @key_exists
|
136
136
|
if requires_modify_or_create?
|
137
137
|
modify_env
|
@@ -19,7 +19,6 @@
|
|
19
19
|
require_relative "../mixin/shell_out"
|
20
20
|
require "rexml/document" unless defined?(REXML::Document)
|
21
21
|
require "iso8601" if ChefUtils.windows?
|
22
|
-
require_relative "../mixin/powershell_out"
|
23
22
|
require_relative "../provider"
|
24
23
|
require_relative "../util/path_helper"
|
25
24
|
require "win32/taskscheduler" if ChefUtils.windows?
|
@@ -28,7 +27,6 @@ class Chef
|
|
28
27
|
class Provider
|
29
28
|
class WindowsTask < Chef::Provider
|
30
29
|
include Chef::Mixin::ShellOut
|
31
|
-
include Chef::Mixin::PowershellOut
|
32
30
|
|
33
31
|
if ChefUtils.windows?
|
34
32
|
include Win32
|
@@ -115,7 +113,7 @@ class Chef
|
|
115
113
|
@current_resource
|
116
114
|
end
|
117
115
|
|
118
|
-
|
116
|
+
action :create do
|
119
117
|
set_command_and_arguments if new_resource.command
|
120
118
|
|
121
119
|
if current_resource.exists
|
@@ -152,7 +150,7 @@ class Chef
|
|
152
150
|
end
|
153
151
|
end
|
154
152
|
|
155
|
-
|
153
|
+
action :run do
|
156
154
|
if current_resource.exists
|
157
155
|
logger.trace "#{new_resource} task exists"
|
158
156
|
if current_resource.task.status == "running"
|
@@ -167,7 +165,7 @@ class Chef
|
|
167
165
|
end
|
168
166
|
end
|
169
167
|
|
170
|
-
|
168
|
+
action :delete do
|
171
169
|
if current_resource.exists
|
172
170
|
logger.trace "#{new_resource} task exists"
|
173
171
|
converge_by("delete scheduled task #{new_resource}") do
|
@@ -179,7 +177,7 @@ class Chef
|
|
179
177
|
end
|
180
178
|
end
|
181
179
|
|
182
|
-
|
180
|
+
action :end do
|
183
181
|
if current_resource.exists
|
184
182
|
logger.trace "#{new_resource} task exists"
|
185
183
|
if current_resource.task.status != "running"
|
@@ -194,7 +192,7 @@ class Chef
|
|
194
192
|
end
|
195
193
|
end
|
196
194
|
|
197
|
-
|
195
|
+
action :enable do
|
198
196
|
if current_resource.exists
|
199
197
|
logger.trace "#{new_resource} task exists"
|
200
198
|
if current_resource.task.status == "not scheduled"
|
@@ -211,7 +209,7 @@ class Chef
|
|
211
209
|
end
|
212
210
|
end
|
213
211
|
|
214
|
-
|
212
|
+
action :disable do
|
215
213
|
if current_resource.exists
|
216
214
|
logger.info "#{new_resource} task exists"
|
217
215
|
if %w{ready running}.include?(current_resource.task.status)
|
@@ -426,7 +424,7 @@ class Chef
|
|
426
424
|
when TaskScheduler::AT_LOGON
|
427
425
|
# TODO: handle option for this trigger
|
428
426
|
when TaskScheduler::AT_SYSTEMSTART
|
429
|
-
|
427
|
+
# TODO: handle option for this trigger
|
430
428
|
end
|
431
429
|
end
|
432
430
|
|
@@ -37,7 +37,7 @@ class Chef
|
|
37
37
|
if template_available?(new_resource.source)
|
38
38
|
source new_resource.source
|
39
39
|
else
|
40
|
-
source ::File.expand_path("support/yum_repo.erb",
|
40
|
+
source ::File.expand_path("../support/yum_repo.erb", __FILE__)
|
41
41
|
local true
|
42
42
|
end
|
43
43
|
sensitive new_resource.sensitive
|
@@ -41,7 +41,7 @@ class Chef
|
|
41
41
|
if template_available?(new_resource.source)
|
42
42
|
source new_resource.source
|
43
43
|
else
|
44
|
-
source ::File.expand_path("support/zypper_repo.erb",
|
44
|
+
source ::File.expand_path("../support/zypper_repo.erb", __FILE__)
|
45
45
|
local true
|
46
46
|
end
|
47
47
|
sensitive new_resource.sensitive
|
@@ -115,48 +115,28 @@ class Chef
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
|
-
# the version of gpg installed on the system
|
119
|
-
#
|
120
|
-
# @return [Gem::Version] the version of GPG
|
121
|
-
def gpg_version
|
122
|
-
so = shell_out!("gpg --version")
|
123
|
-
# matches 2.0 and 2.2 versions from SLES 12 and 15: https://rubular.com/r/e6D0WfGK6SXvUp
|
124
|
-
version = /gpg \(GnuPG\)\s*(.*)/.match(so.stdout)[1]
|
125
|
-
logger.trace("GPG package version is #{version}")
|
126
|
-
Gem::Version.new(version)
|
127
|
-
end
|
128
|
-
|
129
118
|
# is the provided key already installed
|
130
119
|
# @param [String] key_path the path to the key on the local filesystem
|
131
120
|
#
|
132
121
|
# @return [boolean] is the key already known by rpm
|
133
122
|
def key_installed?(key_path)
|
134
|
-
so = shell_out("
|
123
|
+
so = shell_out("rpm -qa gpg-pubkey*")
|
135
124
|
# expected output & match: http://rubular.com/r/RdF7EcXEtb
|
136
|
-
status = /gpg-pubkey-#{
|
125
|
+
status = /gpg-pubkey-#{key_fingerprint(key_path)}/.match(so.stdout)
|
137
126
|
logger.trace("GPG key at #{key_path} is known by rpm? #{status ? "true" : "false"}")
|
138
127
|
status
|
139
128
|
end
|
140
129
|
|
141
|
-
# extract the gpg key
|
142
|
-
# is sometimes incorrectly called the fingerprint. The fingerprint is the full length value
|
143
|
-
# and googling for that will just result in sad times.
|
144
|
-
#
|
130
|
+
# extract the gpg key fingerprint from a local file
|
145
131
|
# @param [String] key_path the path to the key on the local filesystem
|
146
132
|
#
|
147
|
-
# @return [String] the
|
148
|
-
def
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
so = shell_out!("gpg --with-fingerprint #{key_path}")
|
155
|
-
# expected output and match: http://rubular.com/r/BpfMjxySQM
|
156
|
-
short_key_id = %r{pub\s*\S*/(\S*)}.match(so.stdout)[1].downcase
|
157
|
-
end
|
158
|
-
logger.trace("GPG short key ID of key at #{key_path} is #{short_key_id}")
|
159
|
-
short_key_id
|
133
|
+
# @return [String] the fingerprint of the key
|
134
|
+
def key_fingerprint(key_path)
|
135
|
+
so = shell_out!("gpg --with-fingerprint #{key_path}")
|
136
|
+
# expected output and match: http://rubular.com/r/BpfMjxySQM
|
137
|
+
fingerprint = %r{pub\s*\S*/(\S*)}.match(so.stdout)[1].downcase
|
138
|
+
logger.trace("GPG fingerprint of key at #{key_path} is #{fingerprint}")
|
139
|
+
fingerprint
|
160
140
|
end
|
161
141
|
|
162
142
|
# install the provided gpg key
|
data/lib/chef/providers.rb
CHANGED
@@ -16,9 +16,6 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require_relative "provider/apt_update"
|
20
|
-
require_relative "provider/apt_preference"
|
21
|
-
require_relative "provider/apt_repository"
|
22
19
|
require_relative "provider/batch"
|
23
20
|
require_relative "provider/cookbook_file"
|
24
21
|
require_relative "provider/cron"
|
@@ -35,9 +32,6 @@ require_relative "provider/http_request"
|
|
35
32
|
require_relative "provider/ifconfig"
|
36
33
|
require_relative "provider/launchd"
|
37
34
|
require_relative "provider/link"
|
38
|
-
require_relative "provider/log"
|
39
|
-
require_relative "provider/ohai"
|
40
|
-
require_relative "provider/mdadm"
|
41
35
|
require_relative "provider/mount"
|
42
36
|
require_relative "provider/noop"
|
43
37
|
require_relative "provider/package"
|
data/lib/chef/recipe.rb
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
+
require "yaml"
|
20
21
|
require_relative "dsl/recipe"
|
21
22
|
require_relative "mixin/from_file"
|
22
23
|
require_relative "mixin/deprecation"
|
@@ -85,6 +86,41 @@ class Chef
|
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
89
|
+
def from_yaml_file(filename)
|
90
|
+
self.source_file = filename
|
91
|
+
if File.file?(filename) && File.readable?(filename)
|
92
|
+
yaml_contents = IO.read(filename)
|
93
|
+
if ::YAML.load_stream(yaml_contents).length > 1
|
94
|
+
raise ArgumentError, "YAML recipe '#{filename}' contains multiple documents, only one is supported"
|
95
|
+
end
|
96
|
+
|
97
|
+
from_yaml(yaml_contents)
|
98
|
+
else
|
99
|
+
raise IOError, "Cannot open or read file '#{filename}'!"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def from_yaml(string)
|
104
|
+
res = ::YAML.safe_load(string)
|
105
|
+
unless res.is_a?(Hash) && res.key?("resources")
|
106
|
+
raise ArgumentError, "YAML recipe '#{source_file}' must contain a top-level 'resources' hash (YAML sequence), i.e. 'resources:'"
|
107
|
+
end
|
108
|
+
|
109
|
+
from_hash(res)
|
110
|
+
end
|
111
|
+
|
112
|
+
def from_hash(hash)
|
113
|
+
hash["resources"].each do |rhash|
|
114
|
+
type = rhash.delete("type").to_sym
|
115
|
+
name = rhash.delete("name")
|
116
|
+
res = declare_resource(type, name)
|
117
|
+
rhash.each do |key, value|
|
118
|
+
# FIXME?: we probably need a way to instance_exec a string that contains block code against the property?
|
119
|
+
res.send(key, value)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
88
124
|
def to_s
|
89
125
|
"cookbook: #{cookbook_name ? cookbook_name : "(none)"}, recipe: #{recipe_name ? recipe_name : "(none)"} "
|
90
126
|
end
|
data/lib/chef/resource.rb
CHANGED
@@ -415,7 +415,6 @@ class Chef
|
|
415
415
|
@not_if
|
416
416
|
end
|
417
417
|
|
418
|
-
#
|
419
418
|
# The number of times to retry this resource if it fails by throwing an
|
420
419
|
# exception while running an action. Default: 0
|
421
420
|
#
|
@@ -427,7 +426,6 @@ class Chef
|
|
427
426
|
#
|
428
427
|
property :retries, Integer, default: 0, desired_state: false
|
429
428
|
|
430
|
-
#
|
431
429
|
# The number of seconds to wait between retries. Default: 2.
|
432
430
|
#
|
433
431
|
# @param arg [Integer] The number of seconds to wait between retries.
|
@@ -435,7 +433,6 @@ class Chef
|
|
435
433
|
#
|
436
434
|
property :retry_delay, Integer, default: 2, desired_state: false
|
437
435
|
|
438
|
-
#
|
439
436
|
# Whether to treat this resource's data as sensitive. If set, no resource
|
440
437
|
# data will be displayed in log output.
|
441
438
|
#
|
@@ -444,7 +441,16 @@ class Chef
|
|
444
441
|
#
|
445
442
|
property :sensitive, [ TrueClass, FalseClass ], default: false, desired_state: false
|
446
443
|
|
444
|
+
# If this is set the resource will be set to run at compile time and the converge time
|
445
|
+
# action will be set to :nothing.
|
446
|
+
#
|
447
|
+
# @param arg [Boolean] Whether or not to force this resource to run at compile time.
|
448
|
+
# @return [Boolean] Whether or not to force this resource to run at compile time.
|
447
449
|
#
|
450
|
+
property :compile_time, [TrueClass, FalseClass],
|
451
|
+
description: "Determines whether or not the resource is executed during the compile time phase.",
|
452
|
+
default: false, desired_state: false
|
453
|
+
|
448
454
|
# The time it took (in seconds) to run the most recently-run action. Not
|
449
455
|
# cumulative across actions. This is set to 0 as soon as a new action starts
|
450
456
|
# running, and set to the elapsed time at the end of the action.
|
@@ -458,7 +464,6 @@ class Chef
|
|
458
464
|
#
|
459
465
|
attr_accessor :executed_by_runner
|
460
466
|
|
461
|
-
#
|
462
467
|
# The guard interpreter that will be used to process `only_if` and `not_if`
|
463
468
|
# statements. If left unset, the #default_guard_interpreter will be used.
|
464
469
|
#
|
@@ -493,7 +498,7 @@ class Chef
|
|
493
498
|
state = {}
|
494
499
|
state_properties = self.class.state_properties
|
495
500
|
state_properties.each do |property|
|
496
|
-
if property.
|
501
|
+
if property.is_set?(self)
|
497
502
|
state[property.name] = property.sensitive? ? "*sensitive value suppressed*" : send(property.name)
|
498
503
|
end
|
499
504
|
end
|
@@ -613,7 +618,6 @@ class Chef
|
|
613
618
|
# Do NOT use this. It may be removed. It is for internal purposes only.
|
614
619
|
# @api private
|
615
620
|
attr_reader :resource_initializing
|
616
|
-
|
617
621
|
def resource_initializing=(value)
|
618
622
|
if value
|
619
623
|
@resource_initializing = true
|
@@ -864,7 +868,6 @@ class Chef
|
|
864
868
|
# have.
|
865
869
|
#
|
866
870
|
attr_writer :allowed_actions
|
867
|
-
|
868
871
|
def allowed_actions(value = NOT_PASSED)
|
869
872
|
if value != NOT_PASSED
|
870
873
|
self.allowed_actions = value
|
@@ -937,13 +940,7 @@ class Chef
|
|
937
940
|
#
|
938
941
|
# The display name of this resource type, for printing purposes.
|
939
942
|
#
|
940
|
-
#
|
941
|
-
# name.
|
942
|
-
#
|
943
|
-
# resource_name defaults to your class name.
|
944
|
-
#
|
945
|
-
# Call `resource_name nil` to remove the resource name (and any
|
946
|
-
# corresponding DSL).
|
943
|
+
# Call `resource_name nil` to remove the resource name
|
947
944
|
#
|
948
945
|
# @param value [Symbol] The desired name of this resource type (e.g.
|
949
946
|
# `execute`), or `nil` if this class is abstract and has no resource_name.
|
@@ -953,16 +950,13 @@ class Chef
|
|
953
950
|
def self.resource_name(name = NOT_PASSED)
|
954
951
|
# Setter
|
955
952
|
if name != NOT_PASSED
|
956
|
-
remove_canonical_dsl
|
957
|
-
|
958
|
-
# Set the resource_name and call provides
|
959
953
|
if name
|
954
|
+
@resource_name = name.to_sym
|
960
955
|
name = name.to_sym
|
961
|
-
#
|
956
|
+
# FIXME: determine a way to deprecate this magic behavior
|
962
957
|
unless Chef::ResourceResolver.includes_handler?(name, self)
|
963
|
-
provides name
|
958
|
+
provides name
|
964
959
|
end
|
965
|
-
@resource_name = name
|
966
960
|
else
|
967
961
|
@resource_name = nil
|
968
962
|
end
|
@@ -976,19 +970,6 @@ class Chef
|
|
976
970
|
resource_name(name)
|
977
971
|
end
|
978
972
|
|
979
|
-
#
|
980
|
-
# Use the class name as the resource name.
|
981
|
-
#
|
982
|
-
# Munges the last part of the class name from camel case to snake case,
|
983
|
-
# and sets the resource_name to that:
|
984
|
-
#
|
985
|
-
# A::B::BlahDBlah -> blah_d_blah
|
986
|
-
#
|
987
|
-
def self.use_automatic_resource_name
|
988
|
-
automatic_name = convert_to_snake_case(name.split("::")[-1])
|
989
|
-
resource_name automatic_name
|
990
|
-
end
|
991
|
-
|
992
973
|
# If the resource's action should run in separated compile/converge mode.
|
993
974
|
#
|
994
975
|
# @param flag [Boolean] value to set unified_mode to
|
@@ -1320,12 +1301,6 @@ class Chef
|
|
1320
1301
|
def self.inherited(child)
|
1321
1302
|
super
|
1322
1303
|
@@sorted_descendants = nil
|
1323
|
-
# set resource_name automatically if it's not set
|
1324
|
-
if child.name && !child.resource_name
|
1325
|
-
if child.name =~ /^Chef::Resource::(\w+)$/
|
1326
|
-
child.resource_name(convert_to_snake_case($1))
|
1327
|
-
end
|
1328
|
-
end
|
1329
1304
|
end
|
1330
1305
|
|
1331
1306
|
# If an unknown method is invoked, determine whether the enclosing Provider's
|
@@ -1347,9 +1322,7 @@ class Chef
|
|
1347
1322
|
#
|
1348
1323
|
# Since resource_name calls provides the generally correct way of doing this is
|
1349
1324
|
# to do `chef_version_for_provides` first, then `resource_name` and then
|
1350
|
-
# any additional options `provides` lines.
|
1351
|
-
# important to have the canonical_dsl removed or else that'll stick around
|
1352
|
-
# and chef_version won't get applied to it.
|
1325
|
+
# any additional options `provides` lines.
|
1353
1326
|
#
|
1354
1327
|
# Once we no longer care about supporting chef < 14.4 then we can deprecate
|
1355
1328
|
# this API.
|
@@ -1373,17 +1346,14 @@ class Chef
|
|
1373
1346
|
# quell warnings
|
1374
1347
|
@chef_version_for_provides = nil unless defined?(@chef_version_for_provides)
|
1375
1348
|
|
1376
|
-
#
|
1377
|
-
|
1378
|
-
if @resource_name && name == @resource_name
|
1379
|
-
remove_canonical_dsl
|
1380
|
-
end
|
1349
|
+
# deliberately do not go through the accessor here
|
1350
|
+
@resource_name = name if resource_name.nil?
|
1381
1351
|
|
1382
1352
|
if @chef_version_for_provides && !options.include?(:chef_version)
|
1383
1353
|
options[:chef_version] = @chef_version_for_provides
|
1384
1354
|
end
|
1385
1355
|
|
1386
|
-
result = Chef.resource_handler_map.set(name, self, options, &block)
|
1356
|
+
result = Chef.resource_handler_map.set(name, self, **options, &block)
|
1387
1357
|
Chef::DSL::Resources.add_resource_dsl(name)
|
1388
1358
|
result
|
1389
1359
|
end
|
@@ -1491,6 +1461,20 @@ class Chef
|
|
1491
1461
|
@default_description
|
1492
1462
|
end
|
1493
1463
|
|
1464
|
+
# Use a partial code fragment. This can be used for code sharing between multiple resources.
|
1465
|
+
#
|
1466
|
+
# Do not wrap the code fragment in a class or module. It also does not support the use of super
|
1467
|
+
# to subclass any methods defined in the fragment, the methods will just be overwritten.
|
1468
|
+
#
|
1469
|
+
# @param partial [String] the code fragment to eval against the class
|
1470
|
+
#
|
1471
|
+
def self.use(partial)
|
1472
|
+
dirname = ::File.dirname(partial)
|
1473
|
+
basename = ::File.basename(partial, ".rb")
|
1474
|
+
basename = basename[1..-1] if basename.start_with?("_")
|
1475
|
+
class_eval IO.read(::File.expand_path("#{dirname}/_#{basename}.rb", ::File.dirname(caller_locations.first.absolute_path)))
|
1476
|
+
end
|
1477
|
+
|
1494
1478
|
# The cookbook in which this Resource was defined (if any).
|
1495
1479
|
#
|
1496
1480
|
# @return Chef::CookbookVersion The cookbook in which this Resource was defined.
|
@@ -1587,7 +1571,7 @@ class Chef
|
|
1587
1571
|
# <Chef::Resource>:: returns the proper Chef::Resource class
|
1588
1572
|
#
|
1589
1573
|
def self.resource_matching_short_name(short_name)
|
1590
|
-
Chef::ResourceResolver.resolve(short_name
|
1574
|
+
Chef::ResourceResolver.resolve(short_name)
|
1591
1575
|
end
|
1592
1576
|
|
1593
1577
|
# @api private
|
@@ -1602,13 +1586,14 @@ class Chef
|
|
1602
1586
|
self.class.resource_for_node(name, node).new("name", run_context).provider_for_action(action).class
|
1603
1587
|
end
|
1604
1588
|
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1589
|
+
# This is used to suppress the "(up to date)" message in the doc formatter
|
1590
|
+
# for the log resource (where it is nonsensical).
|
1591
|
+
#
|
1592
|
+
# This is not exactly a private API, but its doubtful there exist many other sane
|
1593
|
+
# use cases for this.
|
1594
|
+
#
|
1595
|
+
def suppress_up_to_date_messages?
|
1596
|
+
false
|
1612
1597
|
end
|
1613
1598
|
end
|
1614
1599
|
end
|