chef 15.11.3-universal-mingw32 → 16.1.16-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 +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- 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/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.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/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.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_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- 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 +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- 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 +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- 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 +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- 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/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- 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_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- 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 +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- 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 +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- 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 +85 -26
- 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/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- 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 +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- 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/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- 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 +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- 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 +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- 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 +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- 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 +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- 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/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 +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- 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 +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- 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 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_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 +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- 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 +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- 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 +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- 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/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- 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/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- 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/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/msu_package_spec.rb +4 -0
- 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_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- 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/unit/provider/ohai_spec.rb +0 -84
@@ -78,7 +78,7 @@ describe Chef::Cookbook::GemInstaller do
|
|
78
78
|
|
79
79
|
it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to a String" do
|
80
80
|
expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
|
81
|
-
Chef::Config[:rubygems_url] = "https://
|
81
|
+
Chef::Config[:rubygems_url] = "https://rubygems.org"
|
82
82
|
expect { gem_installer.install }.to_not raise_error
|
83
83
|
|
84
84
|
expect(bundler_dsl.dependencies.find { |d| d.name == "httpclient" }.requirements_list.length).to eql(2)
|
@@ -86,7 +86,7 @@ describe Chef::Cookbook::GemInstaller do
|
|
86
86
|
|
87
87
|
it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to an Array" do
|
88
88
|
expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
|
89
|
-
Chef::Config[:rubygems_url] = [ "https://
|
89
|
+
Chef::Config[:rubygems_url] = [ "https://rubygems.org" ]
|
90
90
|
|
91
91
|
expect { gem_installer.install }.to_not raise_error
|
92
92
|
|
@@ -29,7 +29,7 @@ describe Chef::Cookbook::Metadata do
|
|
29
29
|
@fields = %i{name description long_description maintainer
|
30
30
|
maintainer_email license platforms dependencies
|
31
31
|
providing recipes version source_url issues_url
|
32
|
-
privacy ohai_versions chef_versions gems}
|
32
|
+
privacy ohai_versions chef_versions gems eager_load_libraries}
|
33
33
|
end
|
34
34
|
|
35
35
|
it "does not depend on object identity for equality" do
|
@@ -127,6 +127,10 @@ describe Chef::Cookbook::Metadata do
|
|
127
127
|
it "is not private" do
|
128
128
|
expect(metadata.privacy).to eq(false)
|
129
129
|
end
|
130
|
+
|
131
|
+
it "has eager_load_libraries set to true" do
|
132
|
+
expect(metadata.eager_load_libraries).to eq(true)
|
133
|
+
end
|
130
134
|
end
|
131
135
|
|
132
136
|
describe "validation" do
|
@@ -179,6 +183,7 @@ describe Chef::Cookbook::Metadata do
|
|
179
183
|
source_url: "http://example.com",
|
180
184
|
issues_url: "http://example.com/issues",
|
181
185
|
privacy: true,
|
186
|
+
eager_load_libraries: false,
|
182
187
|
}
|
183
188
|
params.sort_by(&:to_s).each do |field, field_value|
|
184
189
|
describe field do
|
@@ -269,8 +274,33 @@ describe Chef::Cookbook::Metadata do
|
|
269
274
|
|
270
275
|
it "errors on self-dependencies" do
|
271
276
|
metadata.name("foo")
|
272
|
-
expect { metadata.depends("foo") }.to raise_error
|
273
|
-
|
277
|
+
expect { metadata.depends("foo") }.to raise_error(RuntimeError, /Cookbook depends on itself/)
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
describe "eager_load_libraries" do
|
282
|
+
it "can be set to true" do
|
283
|
+
metadata.send(:eager_load_libraries, true)
|
284
|
+
expect(metadata.send(:eager_load_libraries)).to eql(true)
|
285
|
+
end
|
286
|
+
|
287
|
+
it "can be set to false" do
|
288
|
+
metadata.send(:eager_load_libraries, false)
|
289
|
+
expect(metadata.send(:eager_load_libraries)).to eql(false)
|
290
|
+
end
|
291
|
+
|
292
|
+
it "can be set to a string" do
|
293
|
+
metadata.send(:eager_load_libraries, "default.rb")
|
294
|
+
expect(metadata.send(:eager_load_libraries)).to eql("default.rb")
|
295
|
+
end
|
296
|
+
|
297
|
+
it "can be set to an array" do
|
298
|
+
metadata.send(:eager_load_libraries, [ "default.rb", "foo/*/**.rb" ])
|
299
|
+
expect(metadata.send(:eager_load_libraries)).to eql([ "default.rb", "foo/*/**.rb" ])
|
300
|
+
end
|
301
|
+
|
302
|
+
it "cannot be set to a number" do
|
303
|
+
expect { metadata.send(:eager_load_libraries, 1) }.to raise_error(Chef::Exceptions::ValidationFailed)
|
274
304
|
end
|
275
305
|
end
|
276
306
|
|
@@ -448,10 +478,11 @@ describe Chef::Cookbook::Metadata do
|
|
448
478
|
metadata.version "1.2.3"
|
449
479
|
metadata.gem "foo", "~> 1.2"
|
450
480
|
metadata.gem "bar", ">= 2.2", "< 4.0"
|
451
|
-
metadata.chef_version "
|
452
|
-
metadata.chef_version "
|
453
|
-
metadata.ohai_version "
|
454
|
-
metadata.ohai_version "
|
481
|
+
metadata.chef_version "< 11.18.10", ">= 11.14.2"
|
482
|
+
metadata.chef_version "< 12.5.1", ">= 12.2.1"
|
483
|
+
metadata.ohai_version "< 7.5.0", ">= 7.1.0"
|
484
|
+
metadata.ohai_version "< 8.6.0", ">= 8.0.1"
|
485
|
+
metadata.eager_load_libraries [ "default.rb", "foo/*/**.rb" ]
|
455
486
|
end
|
456
487
|
|
457
488
|
it "should produce the same output from to_json and Chef::JSONCompat" do
|
@@ -537,18 +568,6 @@ describe Chef::Cookbook::Metadata do
|
|
537
568
|
@hash = metadata.to_hash
|
538
569
|
end
|
539
570
|
|
540
|
-
it "should transform deprecated greater than syntax for :dependencies" do
|
541
|
-
@hash[:dependencies.to_s]["foo::bar"] = ">> 0.2"
|
542
|
-
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
543
|
-
expect(deserial.send(:dependencies)["foo::bar"]).to eq("> 0.2")
|
544
|
-
end
|
545
|
-
|
546
|
-
it "should transform deprecated less than syntax for :dependencies" do
|
547
|
-
@hash[:dependencies.to_s]["foo::bar"] = "<< 0.2"
|
548
|
-
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
549
|
-
expect(deserial.send(:dependencies)["foo::bar"]).to eq("< 0.2")
|
550
|
-
end
|
551
|
-
|
552
571
|
it "should ignore multiple dependency constraints for :dependencies" do
|
553
572
|
@hash[:dependencies.to_s]["foo::bar"] = [ ">= 1.0", "<= 5.2" ]
|
554
573
|
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
@@ -15,10 +15,16 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
17
|
|
18
|
-
|
18
|
+
require_relative "../spec_helper"
|
19
19
|
require "chef/data_collector"
|
20
20
|
require "socket"
|
21
21
|
|
22
|
+
#
|
23
|
+
# FIXME FIXME FIXME: What we need to do here is have the ability to construct a real resource collection
|
24
|
+
# with some test resources that will correctly be up-to-date/updated/skipped/failed/unprocessed and really
|
25
|
+
# converge a client with them (sort of chefspec-like construction of a Chef::Client but with the actions
|
26
|
+
# actually running -- another testing requirement similar to the integration testing framework in cheffish as well)
|
27
|
+
#
|
22
28
|
describe Chef::DataCollector do
|
23
29
|
before(:each) do
|
24
30
|
Chef::Config[:enable_reporting] = true
|
@@ -30,9 +36,23 @@ describe Chef::DataCollector do
|
|
30
36
|
|
31
37
|
let(:data_collector) { Chef::DataCollector::Reporter.new(events) }
|
32
38
|
|
33
|
-
let(:new_resource)
|
39
|
+
let(:new_resource) do
|
40
|
+
new_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
41
|
+
new_resource.checksum nil
|
42
|
+
new_resource
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:current_resource) do
|
46
|
+
current_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
47
|
+
current_resource.checksum "1234123412341234123412341234123412341234123412341234123412341234"
|
48
|
+
current_resource
|
49
|
+
end
|
34
50
|
|
35
|
-
let(:
|
51
|
+
let(:after_resource) do
|
52
|
+
after_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
53
|
+
after_resource.checksum "6789678967896789678967896789678967896789678967896789678967896789"
|
54
|
+
after_resource
|
55
|
+
end
|
36
56
|
|
37
57
|
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
38
58
|
|
@@ -130,10 +150,10 @@ describe Chef::DataCollector do
|
|
130
150
|
new_resource.respond_to?(:diff) && %w{updated failed}.include?(status)
|
131
151
|
end
|
132
152
|
|
133
|
-
def resource_record_for(
|
153
|
+
def resource_record_for(new_resource, before_resource, after_resource, action, status, duration)
|
134
154
|
{
|
135
|
-
"after" =>
|
136
|
-
"before" =>
|
155
|
+
"after" => after_resource&.state_for_resource_reporter || {},
|
156
|
+
"before" => before_resource&.state_for_resource_reporter || {},
|
137
157
|
"cookbook_name" => cookbook_name,
|
138
158
|
"cookbook_version" => cookbook_version.version,
|
139
159
|
"delta" => resource_has_diff(new_resource, status) ? new_resource.diff : "",
|
@@ -634,13 +654,14 @@ describe Chef::DataCollector do
|
|
634
654
|
context "when the run contains a file resource that is up-to-date" do
|
635
655
|
let(:total_resource_count) { 1 }
|
636
656
|
let(:updated_resource_count) { 0 }
|
637
|
-
let(:resource_record) { [ resource_record_for(current_resource,
|
657
|
+
let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "up-to-date", "1234") ] }
|
638
658
|
let(:status) { "success" }
|
639
659
|
|
640
660
|
before do
|
641
661
|
events.resource_action_start(new_resource, :create)
|
642
662
|
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
643
663
|
events.resource_up_to_date(new_resource, :create)
|
664
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
644
665
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
645
666
|
events.resource_completed(new_resource)
|
646
667
|
events.converge_complete
|
@@ -653,13 +674,14 @@ describe Chef::DataCollector do
|
|
653
674
|
context "when the run contains a file resource that is updated" do
|
654
675
|
let(:total_resource_count) { 1 }
|
655
676
|
let(:updated_resource_count) { 1 }
|
656
|
-
let(:resource_record) { [ resource_record_for(current_resource,
|
677
|
+
let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
|
657
678
|
let(:status) { "success" }
|
658
679
|
|
659
680
|
before do
|
660
681
|
events.resource_action_start(new_resource, :create)
|
661
682
|
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
662
683
|
events.resource_updated(new_resource, :create)
|
684
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
663
685
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
664
686
|
events.resource_completed(new_resource)
|
665
687
|
events.converge_complete
|
@@ -679,7 +701,7 @@ describe Chef::DataCollector do
|
|
679
701
|
allow(r).to receive(:cookbook_version).and_return(cookbook_version)
|
680
702
|
r
|
681
703
|
end
|
682
|
-
let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(current_resource,
|
704
|
+
let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
|
683
705
|
let(:status) { "success" }
|
684
706
|
|
685
707
|
before do
|
@@ -689,10 +711,12 @@ describe Chef::DataCollector do
|
|
689
711
|
events.resource_action_start(implementation_resource , :create)
|
690
712
|
events.resource_current_state_loaded(implementation_resource, :create, implementation_resource)
|
691
713
|
events.resource_updated(implementation_resource, :create)
|
714
|
+
events.resource_after_state_loaded(implementation_resource, :create, implementation_resource)
|
692
715
|
implementation_resource.instance_variable_set(:@elapsed_time, 2.3456)
|
693
716
|
events.resource_completed(implementation_resource)
|
694
717
|
|
695
718
|
events.resource_updated(new_resource, :create)
|
719
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
696
720
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
697
721
|
events.resource_completed(new_resource)
|
698
722
|
events.converge_complete
|
@@ -706,7 +730,7 @@ describe Chef::DataCollector do
|
|
706
730
|
let(:total_resource_count) { 1 }
|
707
731
|
let(:updated_resource_count) { 0 }
|
708
732
|
let(:resource_record) do
|
709
|
-
rec = resource_record_for(
|
733
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
|
710
734
|
rec["conditional"] = "not_if { #code block }" # FIXME: "#code block" is poor, is there some way to fix this?
|
711
735
|
[ rec ]
|
712
736
|
end
|
@@ -715,7 +739,6 @@ describe Chef::DataCollector do
|
|
715
739
|
before do
|
716
740
|
conditional = (new_resource.not_if { true }).first
|
717
741
|
events.resource_action_start(new_resource, :create)
|
718
|
-
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
719
742
|
events.resource_skipped(new_resource, :create, conditional)
|
720
743
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
721
744
|
events.resource_completed(new_resource)
|
@@ -730,7 +753,7 @@ describe Chef::DataCollector do
|
|
730
753
|
let(:total_resource_count) { 1 }
|
731
754
|
let(:updated_resource_count) { 0 }
|
732
755
|
let(:resource_record) do
|
733
|
-
rec = resource_record_for(
|
756
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
|
734
757
|
rec["conditional"] = 'not_if "true"'
|
735
758
|
[ rec ]
|
736
759
|
end
|
@@ -739,7 +762,6 @@ describe Chef::DataCollector do
|
|
739
762
|
before do
|
740
763
|
conditional = (new_resource.not_if "true").first
|
741
764
|
events.resource_action_start(new_resource, :create)
|
742
|
-
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
743
765
|
events.resource_skipped(new_resource, :create, conditional)
|
744
766
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
745
767
|
events.resource_completed(new_resource)
|
@@ -756,7 +778,7 @@ describe Chef::DataCollector do
|
|
756
778
|
let(:total_resource_count) { 1 }
|
757
779
|
let(:updated_resource_count) { 0 }
|
758
780
|
let(:resource_record) do
|
759
|
-
rec = resource_record_for(current_resource,
|
781
|
+
rec = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
|
760
782
|
rec["error_message"] = "imperial to metric conversion error"
|
761
783
|
[ rec ]
|
762
784
|
end
|
@@ -783,7 +805,7 @@ describe Chef::DataCollector do
|
|
783
805
|
let(:total_resource_count) { 1 }
|
784
806
|
let(:updated_resource_count) { 0 }
|
785
807
|
let(:resource_record) do
|
786
|
-
rec = resource_record_for(
|
808
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "failed", "1234")
|
787
809
|
rec["before"] = {}
|
788
810
|
rec["error_message"] = "imperial to metric conversion error"
|
789
811
|
[ rec ]
|
@@ -818,10 +840,9 @@ describe Chef::DataCollector do
|
|
818
840
|
res
|
819
841
|
end
|
820
842
|
let(:resource_record) do
|
821
|
-
rec1 = resource_record_for(current_resource,
|
843
|
+
rec1 = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
|
822
844
|
rec1["error_message"] = "imperial to metric conversion error"
|
823
|
-
rec2 = resource_record_for(nil,
|
824
|
-
rec2["before"] = {}
|
845
|
+
rec2 = resource_record_for(unprocessed_resource, nil, nil, :nothing, "unprocessed", "")
|
825
846
|
[ rec1, rec2 ]
|
826
847
|
end
|
827
848
|
let(:status) { "failure" }
|
@@ -93,7 +93,7 @@ describe Chef::FileAccessControl do
|
|
93
93
|
end
|
94
94
|
|
95
95
|
it "wraps uids to their negative complements to correctly handle negative uids" do
|
96
|
-
# More:
|
96
|
+
# More: macOS (at least) has negative UIDs for 'nobody' and some other
|
97
97
|
# users. Ruby doesn't believe in negative UIDs so you get the diminished radix
|
98
98
|
# complement (i.e., it wraps around the maximum size of C unsigned int) of these
|
99
99
|
# uids. So we have to get ruby and negative uids to smoke the peace pipe
|
@@ -25,12 +25,12 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
|
|
25
25
|
let(:stdin) { StringIO.new }
|
26
26
|
let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
|
27
27
|
|
28
|
-
let(:
|
28
|
+
let(:config) { {} }
|
29
29
|
|
30
30
|
let(:client) { Chef::ApiClient.new }
|
31
31
|
|
32
32
|
let(:chef_vault_handler) do
|
33
|
-
chef_vault_handler = Chef::Knife::Bootstrap::ChefVaultHandler.new(
|
33
|
+
chef_vault_handler = Chef::Knife::Bootstrap::ChefVaultHandler.new(config: config, ui: ui)
|
34
34
|
chef_vault_handler
|
35
35
|
end
|
36
36
|
|
@@ -55,28 +55,28 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
|
|
55
55
|
expect(bootstrap_vault_item).to receive(:save).at_least(:once)
|
56
56
|
end
|
57
57
|
|
58
|
-
context "from
|
58
|
+
context "from config[:bootstrap_vault_item]" do
|
59
59
|
it "sets a single item as a scalar" do
|
60
|
-
|
60
|
+
config[:bootstrap_vault_item] = { "vault" => "item1" }
|
61
61
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
62
62
|
chef_vault_handler.run(client)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "sets a single item as an array" do
|
66
|
-
|
66
|
+
config[:bootstrap_vault_item] = { "vault" => [ "item1" ] }
|
67
67
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
68
68
|
chef_vault_handler.run(client)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "sets two items as an array" do
|
72
|
-
|
72
|
+
config[:bootstrap_vault_item] = { "vault" => %w{item1 item2} }
|
73
73
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
74
74
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
|
75
75
|
chef_vault_handler.run(client)
|
76
76
|
end
|
77
77
|
|
78
78
|
it "sets two vaults from different hash keys" do
|
79
|
-
|
79
|
+
config[:bootstrap_vault_item] = { "vault" => %w{item1 item2}, "vault2" => [ "item3" ] }
|
80
80
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
81
81
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
|
82
82
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
|
@@ -84,28 +84,28 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
context "from
|
87
|
+
context "from config[:bootstrap_vault_json]" do
|
88
88
|
it "sets a single item as a scalar" do
|
89
|
-
|
89
|
+
config[:bootstrap_vault_json] = '{ "vault": "item1" }'
|
90
90
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
91
91
|
chef_vault_handler.run(client)
|
92
92
|
end
|
93
93
|
|
94
94
|
it "sets a single item as an array" do
|
95
|
-
|
95
|
+
config[:bootstrap_vault_json] = '{ "vault": [ "item1" ] }'
|
96
96
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
97
97
|
chef_vault_handler.run(client)
|
98
98
|
end
|
99
99
|
|
100
100
|
it "sets two items as an array" do
|
101
|
-
|
101
|
+
config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ] }'
|
102
102
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
103
103
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
|
104
104
|
chef_vault_handler.run(client)
|
105
105
|
end
|
106
106
|
|
107
107
|
it "sets two vaults from different hash keys" do
|
108
|
-
|
108
|
+
config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ], "vault2": [ "item3" ] }'
|
109
109
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
|
110
110
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
|
111
111
|
expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
|
@@ -113,12 +113,12 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
context "from
|
116
|
+
context "from config[:bootstrap_vault_file]" do
|
117
117
|
|
118
118
|
def setup_file_contents(json)
|
119
119
|
stringio = StringIO.new(json)
|
120
|
-
|
121
|
-
expect(File).to receive(:read).with(
|
120
|
+
config[:bootstrap_vault_file] = "/foo/bar/baz"
|
121
|
+
expect(File).to receive(:read).with(config[:bootstrap_vault_file]).and_return(stringio)
|
122
122
|
end
|
123
123
|
|
124
124
|
it "sets a single item as a scalar" do
|
@@ -25,7 +25,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
|
|
25
25
|
let(:stdin) { StringIO.new }
|
26
26
|
let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
|
27
27
|
|
28
|
-
let(:
|
28
|
+
let(:config) { {} }
|
29
29
|
|
30
30
|
let(:chef_config) { {} }
|
31
31
|
|
@@ -34,7 +34,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
|
|
34
34
|
let(:rest) { double("Chef::ServerAPI") }
|
35
35
|
|
36
36
|
let(:client_builder) do
|
37
|
-
client_builder = Chef::Knife::Bootstrap::ClientBuilder.new(
|
37
|
+
client_builder = Chef::Knife::Bootstrap::ClientBuilder.new(config: config, chef_config: chef_config, ui: ui)
|
38
38
|
allow(client_builder).to receive(:rest).and_return(rest)
|
39
39
|
allow(client_builder).to receive(:node_name).and_return(node_name)
|
40
40
|
client_builder
|
@@ -160,7 +160,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
|
|
160
160
|
it "adds tags to the node when given" do
|
161
161
|
tag_receiver = []
|
162
162
|
|
163
|
-
|
163
|
+
config[:tags] = %w{foo bar}
|
164
164
|
allow(node).to receive(:run_list).with([])
|
165
165
|
allow(node).to receive(:tags).and_return(tag_receiver)
|
166
166
|
client_builder.run
|
@@ -168,34 +168,34 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
|
|
168
168
|
end
|
169
169
|
|
170
170
|
it "builds a node when the run_list is a string" do
|
171
|
-
|
171
|
+
config[:run_list] = "role[base],role[app]"
|
172
172
|
expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
|
173
173
|
client_builder.run
|
174
174
|
end
|
175
175
|
|
176
176
|
it "builds a node when the run_list is an Array" do
|
177
|
-
|
177
|
+
config[:run_list] = ["role[base]", "role[app]"]
|
178
178
|
expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
|
179
179
|
client_builder.run
|
180
180
|
end
|
181
181
|
|
182
182
|
it "builds a node with first_boot_attributes if they're given" do
|
183
|
-
|
183
|
+
config[:first_boot_attributes] = { baz: :quux }
|
184
184
|
expect(node).to receive(:normal_attrs=).with({ baz: :quux })
|
185
185
|
expect(node).to receive(:run_list).with([])
|
186
186
|
client_builder.run
|
187
187
|
end
|
188
188
|
|
189
189
|
it "builds a node with an environment if its given" do
|
190
|
-
|
190
|
+
config[:environment] = "production"
|
191
191
|
expect(node).to receive(:environment).with("production")
|
192
192
|
expect(node).to receive(:run_list).with([])
|
193
193
|
client_builder.run
|
194
194
|
end
|
195
195
|
|
196
196
|
it "builds a node with policy_name and policy_group when given" do
|
197
|
-
|
198
|
-
|
197
|
+
config[:policy_name] = "my-app"
|
198
|
+
config[:policy_group] = "staging"
|
199
199
|
|
200
200
|
expect(node).to receive(:run_list).with([])
|
201
201
|
expect(node).to receive(:policy_name=).with("my-app")
|