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
@@ -402,8 +402,8 @@ describe Chef::Environment do
|
|
402
402
|
|
403
403
|
it "should get the environment from the environment_path" do
|
404
404
|
expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
|
405
|
-
expect(File).to receive(:
|
406
|
-
expect(File).to receive(:
|
405
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.json")).and_return(false)
|
406
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.rb")).exactly(1).times.and_return(true)
|
407
407
|
expect(File).to receive(:readable?).with(File.join(Chef::Config[:environment_path], "foo.rb")).and_return(true)
|
408
408
|
expect(File).to receive(:file?).with(File.join(Chef::Config[:environment_path], "foo.rb")).and_return(true)
|
409
409
|
role_dsl = "name \"foo\"\ndescription \"desc\"\n"
|
@@ -413,7 +413,7 @@ describe Chef::Environment do
|
|
413
413
|
|
414
414
|
it "should return a Chef::Environment object from JSON" do
|
415
415
|
expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
|
416
|
-
expect(File).to receive(:
|
416
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.json")).and_return(true)
|
417
417
|
environment_hash = {
|
418
418
|
"name" => "foo",
|
419
419
|
"default_attributes" => {
|
@@ -436,8 +436,8 @@ describe Chef::Environment do
|
|
436
436
|
|
437
437
|
it "should return a Chef::Environment object from Ruby DSL" do
|
438
438
|
expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
|
439
|
-
expect(File).to receive(:
|
440
|
-
expect(File).to receive(:
|
439
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.json")).and_return(false)
|
440
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.rb")).exactly(1).times.and_return(true)
|
441
441
|
expect(File).to receive(:readable?).with(File.join(Chef::Config[:environment_path], "foo.rb")).and_return(true)
|
442
442
|
expect(File).to receive(:file?).with(File.join(Chef::Config[:environment_path], "foo.rb")).and_return(true)
|
443
443
|
role_dsl = "name \"foo\"\ndescription \"desc\"\n"
|
@@ -459,8 +459,8 @@ describe Chef::Environment do
|
|
459
459
|
|
460
460
|
it "should raise an error if the file does not exist" do
|
461
461
|
expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
|
462
|
-
expect(File).to receive(:
|
463
|
-
expect(File).to receive(:
|
462
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.json")).and_return(false)
|
463
|
+
expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], "foo.rb")).and_return(false)
|
464
464
|
|
465
465
|
expect do
|
466
466
|
Chef::Environment.load("foo")
|
@@ -61,7 +61,6 @@ describe Chef::EventDispatch::Dispatcher do
|
|
61
61
|
let(:event_sink) do
|
62
62
|
Class.new(Chef::EventDispatch::Base) do
|
63
63
|
attr_reader :synchronized_cookbook_args
|
64
|
-
|
65
64
|
def synchronized_cookbook(cookbook_name)
|
66
65
|
@synchronized_cookbook_args = [cookbook_name]
|
67
66
|
end
|
@@ -80,7 +79,6 @@ describe Chef::EventDispatch::Dispatcher do
|
|
80
79
|
let(:event_sink_1) do
|
81
80
|
Class.new(Chef::EventDispatch::Base) do
|
82
81
|
attr_reader :synchronized_cookbook_args
|
83
|
-
|
84
82
|
def synchronized_cookbook(cookbook_name)
|
85
83
|
@synchronized_cookbook_args = [cookbook_name]
|
86
84
|
end
|
@@ -89,7 +87,6 @@ describe Chef::EventDispatch::Dispatcher do
|
|
89
87
|
let(:event_sink_2) do
|
90
88
|
Class.new(Chef::EventDispatch::Base) do
|
91
89
|
attr_reader :synchronized_cookbook_args
|
92
|
-
|
93
90
|
def synchronized_cookbook(cookbook_name, cookbook)
|
94
91
|
@synchronized_cookbook_args = [cookbook_name, cookbook]
|
95
92
|
end
|
@@ -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: Mac OS X (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")
|
@@ -206,7 +206,7 @@ describe Chef::Knife::Bootstrap do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
before(:each) do
|
209
|
-
expect(File).to receive(:
|
209
|
+
expect(File).to receive(:exists?).with(bootstrap_template).and_return(false)
|
210
210
|
end
|
211
211
|
|
212
212
|
context "when file is available everywhere" do
|
@@ -215,7 +215,7 @@ describe Chef::Knife::Bootstrap do
|
|
215
215
|
configure_env_home
|
216
216
|
configure_gem_files
|
217
217
|
|
218
|
-
expect(File).to receive(:
|
218
|
+
expect(File).to receive(:exists?).with(builtin_template_path).and_return(true)
|
219
219
|
end
|
220
220
|
|
221
221
|
it "should load the template from built-in templates" do
|
@@ -229,8 +229,8 @@ describe Chef::Knife::Bootstrap do
|
|
229
229
|
configure_env_home
|
230
230
|
configure_gem_files
|
231
231
|
|
232
|
-
expect(File).to receive(:
|
233
|
-
expect(File).to receive(:
|
232
|
+
expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
|
233
|
+
expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(true)
|
234
234
|
|
235
235
|
it "should load the template from chef_config_dir" do
|
236
236
|
knife.find_template.should eq(chef_config_dir_template_path)
|
@@ -244,9 +244,9 @@ describe Chef::Knife::Bootstrap do
|
|
244
244
|
configure_env_home
|
245
245
|
configure_gem_files
|
246
246
|
|
247
|
-
expect(File).to receive(:
|
248
|
-
expect(File).to receive(:
|
249
|
-
expect(File).to receive(:
|
247
|
+
expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
|
248
|
+
expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
|
249
|
+
expect(File).to receive(:exists?).with(env_home_template_path).and_return(true)
|
250
250
|
end
|
251
251
|
|
252
252
|
it "should load the template from chef_config_dir" do
|
@@ -260,10 +260,10 @@ describe Chef::Knife::Bootstrap do
|
|
260
260
|
configure_env_home
|
261
261
|
configure_gem_files
|
262
262
|
|
263
|
-
expect(File).to receive(:
|
264
|
-
expect(File).to receive(:
|
265
|
-
expect(File).to receive(:
|
266
|
-
expect(File).to receive(:
|
263
|
+
expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
|
264
|
+
expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
|
265
|
+
expect(File).to receive(:exists?).with(env_home_template_path).and_return(false)
|
266
|
+
expect(File).to receive(:exists?).with(gem_files_template_path).and_return(true)
|
267
267
|
end
|
268
268
|
|
269
269
|
it "should load the template from Gem files" do
|
@@ -277,9 +277,9 @@ describe Chef::Knife::Bootstrap do
|
|
277
277
|
configure_gem_files
|
278
278
|
allow(Chef::Util::PathHelper).to receive(:home).with(".chef", "bootstrap", "example.erb").and_return(nil)
|
279
279
|
|
280
|
-
expect(File).to receive(:
|
281
|
-
expect(File).to receive(:
|
282
|
-
expect(File).to receive(:
|
280
|
+
expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
|
281
|
+
expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
|
282
|
+
expect(File).to receive(:exists?).with(gem_files_template_path).and_return(true)
|
283
283
|
end
|
284
284
|
|
285
285
|
it "should load the template from Gem files" do
|
@@ -382,7 +382,7 @@ describe Chef::Knife::Bootstrap do
|
|
382
382
|
k
|
383
383
|
end
|
384
384
|
|
385
|
-
let(:options) { ["--bootstrap-no-proxy", setting
|
385
|
+
let(:options) { ["--bootstrap-no-proxy", setting] }
|
386
386
|
|
387
387
|
let(:template_file) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "no_proxy.erb")) }
|
388
388
|
|
@@ -518,6 +518,7 @@ describe Chef::Knife::Bootstrap do
|
|
518
518
|
|
519
519
|
before do
|
520
520
|
Chef::Config[:knife][:bootstrap_template] = template_file
|
521
|
+
knife.merge_configs
|
521
522
|
end
|
522
523
|
|
523
524
|
let(:rendered_template) do
|
@@ -530,7 +531,6 @@ describe Chef::Knife::Bootstrap do
|
|
530
531
|
end
|
531
532
|
|
532
533
|
it "renders 'fips true'" do
|
533
|
-
Chef::Config[:fips] = true
|
534
534
|
expect(rendered_template).to match("fips")
|
535
535
|
end
|
536
536
|
end
|
@@ -617,6 +617,7 @@ describe Chef::Knife::Bootstrap do
|
|
617
617
|
allow(knife).to receive(:host_descriptor).and_return host_descriptor
|
618
618
|
if knife_connection_protocol
|
619
619
|
Chef::Config[:knife][:connection_protocol] = knife_connection_protocol
|
620
|
+
knife.merge_configs
|
620
621
|
end
|
621
622
|
end
|
622
623
|
|
@@ -827,6 +828,7 @@ describe Chef::Knife::Bootstrap do
|
|
827
828
|
before do
|
828
829
|
# Set everything to easily identifiable and obviously fake values
|
829
830
|
# to verify that Chef::Config is being sourced instead of knife.config
|
831
|
+
knife.config = {}
|
830
832
|
Chef::Config[:knife][:max_wait] = 9999
|
831
833
|
Chef::Config[:knife][:winrm_user] = "winbob"
|
832
834
|
Chef::Config[:knife][:winrm_port] = 9999
|
@@ -841,21 +843,7 @@ describe Chef::Knife::Bootstrap do
|
|
841
843
|
Chef::Config[:knife][:winrm_ssl_peer_fingerprint] = "ABCDEF"
|
842
844
|
end
|
843
845
|
|
844
|
-
context "and unsupported Chef::Config options are given in Chef::Config, not in CLI" do
|
845
|
-
before do
|
846
|
-
Chef::Config[:knife][:connection_password] = "blah"
|
847
|
-
Chef::Config[:knife][:winrm_password] = "blah"
|
848
|
-
end
|
849
|
-
it "does not include the corresponding option in the connection options" do
|
850
|
-
expect(knife.connection_opts.key?(:password)).to eq false
|
851
|
-
end
|
852
|
-
end
|
853
|
-
|
854
846
|
context "and no CLI options have been given" do
|
855
|
-
before do
|
856
|
-
knife.config = {}
|
857
|
-
knife.merge_configs
|
858
|
-
end
|
859
847
|
let(:expected_result) do
|
860
848
|
{
|
861
849
|
logger: Chef::Log, # not configurable
|
@@ -875,6 +863,7 @@ describe Chef::Knife::Bootstrap do
|
|
875
863
|
end
|
876
864
|
|
877
865
|
it "generates a config hash using the Chef::Config values" do
|
866
|
+
knife.merge_configs
|
878
867
|
expect(knife.connection_opts).to match expected_result
|
879
868
|
end
|
880
869
|
|
@@ -886,7 +875,7 @@ describe Chef::Knife::Bootstrap do
|
|
886
875
|
logger: Chef::Log, # not configurable
|
887
876
|
ca_trust_path: "no trust",
|
888
877
|
max_wait_until_ready: 9999,
|
889
|
-
operation_timeout:
|
878
|
+
operation_timeout: 9999,
|
890
879
|
ssl_peer_fingerprint: "ABCDEF",
|
891
880
|
winrm_transport: "kerberos",
|
892
881
|
winrm_basic_auth_only: true,
|
@@ -906,10 +895,10 @@ describe Chef::Knife::Bootstrap do
|
|
906
895
|
knife.config[:connection_port] = 12
|
907
896
|
knife.config[:winrm_port] = "13" # indirectly verify we're not looking for the wrong CLI flag
|
908
897
|
knife.config[:connection_password] = "lobster"
|
909
|
-
knife.merge_configs
|
910
898
|
end
|
911
899
|
|
912
900
|
it "generates a config hash using the CLI options when available and falling back to Chef::Config values" do
|
901
|
+
knife.merge_configs
|
913
902
|
expect(knife.connection_opts).to match expected_result
|
914
903
|
end
|
915
904
|
end
|
@@ -956,6 +945,7 @@ describe Chef::Knife::Bootstrap do
|
|
956
945
|
}
|
957
946
|
end
|
958
947
|
it "generates a config hash using the CLI options and pulling nothing from Chef::Config" do
|
948
|
+
knife.merge_configs
|
959
949
|
expect(knife.connection_opts).to match expected_result
|
960
950
|
end
|
961
951
|
end
|
@@ -965,7 +955,6 @@ describe Chef::Knife::Bootstrap do
|
|
965
955
|
before do
|
966
956
|
# We will use knife's actual config since these tests
|
967
957
|
# have assumptions based on CLI default values
|
968
|
-
knife.merge_configs
|
969
958
|
end
|
970
959
|
let(:expected_result) do
|
971
960
|
{
|
@@ -979,6 +968,7 @@ describe Chef::Knife::Bootstrap do
|
|
979
968
|
}
|
980
969
|
end
|
981
970
|
it "populates appropriate defaults" do
|
971
|
+
knife.merge_configs
|
982
972
|
expect(knife.connection_opts).to match expected_result
|
983
973
|
end
|
984
974
|
end
|
@@ -992,6 +982,7 @@ describe Chef::Knife::Bootstrap do
|
|
992
982
|
before do
|
993
983
|
# Set everything to easily identifiable and obviously fake values
|
994
984
|
# to verify that Chef::Config is being sourced instead of knife.config
|
985
|
+
knife.config = {}
|
995
986
|
Chef::Config[:knife][:max_wait] = 9999
|
996
987
|
Chef::Config[:knife][:session_timeout] = 9999
|
997
988
|
Chef::Config[:knife][:ssh_user] = "sshbob"
|
@@ -1004,10 +995,6 @@ describe Chef::Knife::Bootstrap do
|
|
1004
995
|
end
|
1005
996
|
|
1006
997
|
context "and no CLI options have been given" do
|
1007
|
-
before do
|
1008
|
-
knife.config = {}
|
1009
|
-
knife.merge_configs
|
1010
|
-
end
|
1011
998
|
let(:expected_result) do
|
1012
999
|
{
|
1013
1000
|
logger: Chef::Log, # not configurable
|
@@ -1021,13 +1008,14 @@ describe Chef::Knife::Bootstrap do
|
|
1021
1008
|
keys_only: true,
|
1022
1009
|
key_files: ["/identity.pem", "/gateway.pem"],
|
1023
1010
|
sudo: false,
|
1024
|
-
verify_host_key:
|
1011
|
+
verify_host_key: "always",
|
1025
1012
|
port: 9999,
|
1026
1013
|
non_interactive: true,
|
1027
1014
|
}
|
1028
1015
|
end
|
1029
1016
|
|
1030
1017
|
it "generates a correct config hash using the Chef::Config values" do
|
1018
|
+
knife.merge_configs
|
1031
1019
|
expect(knife.connection_opts).to match expected_result
|
1032
1020
|
end
|
1033
1021
|
end
|
@@ -1041,6 +1029,7 @@ describe Chef::Knife::Bootstrap do
|
|
1041
1029
|
Chef::Config[:knife][:ssh_forward_agent] = "blah"
|
1042
1030
|
end
|
1043
1031
|
it "does not include the corresponding option in the connection options" do
|
1032
|
+
knife.merge_configs
|
1044
1033
|
expect(knife.connection_opts.key?(:password)).to eq false
|
1045
1034
|
expect(knife.connection_opts.key?(:ssh_forward_agent)).to eq false
|
1046
1035
|
expect(knife.connection_opts.key?(:use_sudo)).to eq false
|
@@ -1050,6 +1039,7 @@ describe Chef::Knife::Bootstrap do
|
|
1050
1039
|
|
1051
1040
|
context "and some CLI options have been given" do
|
1052
1041
|
before do
|
1042
|
+
knife.config = {}
|
1053
1043
|
knife.config[:connection_user] = "sshalice"
|
1054
1044
|
knife.config[:connection_port] = 12
|
1055
1045
|
knife.config[:ssh_port] = "13" # canary to indirectly verify we're not looking for the wrong CLI flag
|
@@ -1059,7 +1049,6 @@ describe Chef::Knife::Bootstrap do
|
|
1059
1049
|
knife.config[:use_sudo] = true
|
1060
1050
|
knife.config[:use_sudo_pasword] = true
|
1061
1051
|
knife.config[:ssh_forward_agent] = true
|
1062
|
-
knife.merge_configs
|
1063
1052
|
end
|
1064
1053
|
|
1065
1054
|
let(:expected_result) do
|
@@ -1076,19 +1065,21 @@ describe Chef::Knife::Bootstrap do
|
|
1076
1065
|
keys_only: false, # implied false from config password present
|
1077
1066
|
key_files: ["/identity.pem", "/gateway.pem"], # Config
|
1078
1067
|
sudo: true, # ccli
|
1079
|
-
verify_host_key:
|
1068
|
+
verify_host_key: "always", # Config
|
1080
1069
|
port: 12, # cli
|
1081
1070
|
non_interactive: true,
|
1082
1071
|
}
|
1083
1072
|
end
|
1084
1073
|
|
1085
1074
|
it "generates a config hash using the CLI options when available and falling back to Chef::Config values" do
|
1075
|
+
knife.merge_configs
|
1086
1076
|
expect(knife.connection_opts).to match expected_result
|
1087
1077
|
end
|
1088
1078
|
end
|
1089
1079
|
|
1090
1080
|
context "and all CLI options have been given" do
|
1091
1081
|
before do
|
1082
|
+
knife.config = {}
|
1092
1083
|
knife.config[:max_wait] = 150
|
1093
1084
|
knife.config[:session_timeout] = 120
|
1094
1085
|
knife.config[:connection_user] = "sshroot"
|
@@ -1133,6 +1124,7 @@ describe Chef::Knife::Bootstrap do
|
|
1133
1124
|
}
|
1134
1125
|
end
|
1135
1126
|
it "generates a config hash using the CLI options and pulling nothing from Chef::Config" do
|
1127
|
+
knife.merge_configs
|
1136
1128
|
expect(knife.connection_opts).to match expected_result
|
1137
1129
|
end
|
1138
1130
|
end
|
@@ -1141,7 +1133,7 @@ describe Chef::Knife::Bootstrap do
|
|
1141
1133
|
before do
|
1142
1134
|
# We will use knife's actual config since these tests
|
1143
1135
|
# have assumptions based on CLI default values
|
1144
|
-
|
1136
|
+
config = {}
|
1145
1137
|
end
|
1146
1138
|
|
1147
1139
|
let(:expected_result) do
|
@@ -1157,6 +1149,7 @@ describe Chef::Knife::Bootstrap do
|
|
1157
1149
|
}
|
1158
1150
|
end
|
1159
1151
|
it "populates appropriate defaults" do
|
1152
|
+
knife.merge_configs
|
1160
1153
|
expect(knife.connection_opts).to match expected_result
|
1161
1154
|
end
|
1162
1155
|
end
|
@@ -1173,17 +1166,6 @@ describe Chef::Knife::Bootstrap do
|
|
1173
1166
|
allow(knife).to receive(:connection_protocol).and_return connection_protocol
|
1174
1167
|
end
|
1175
1168
|
|
1176
|
-
context "when determining knife config keys for user and port" do
|
1177
|
-
let(:connection_protocol) { "fake" }
|
1178
|
-
it "uses the protocol name to resolve the knife config keys" do
|
1179
|
-
allow(knife).to receive(:config_value).with(:max_wait)
|
1180
|
-
|
1181
|
-
expect(knife).to receive(:config_value).with(:connection_port, :fake_port)
|
1182
|
-
expect(knife).to receive(:config_value).with(:connection_user, :fake_user)
|
1183
|
-
knife.base_opts
|
1184
|
-
end
|
1185
|
-
end
|
1186
|
-
|
1187
1169
|
context "for all protocols" do
|
1188
1170
|
context "when password is provided" do
|
1189
1171
|
before do
|
@@ -1747,8 +1729,8 @@ describe Chef::Knife::Bootstrap do
|
|
1747
1729
|
allow(vault_handler_mock).to receive(:doing_chef_vault?).and_return false
|
1748
1730
|
end
|
1749
1731
|
|
1750
|
-
it "shows a
|
1751
|
-
expect(knife.ui).to receive(:
|
1732
|
+
it "shows a message" do
|
1733
|
+
expect(knife.ui).to receive(:info)
|
1752
1734
|
knife.register_client
|
1753
1735
|
end
|
1754
1736
|
end
|