chef 16.2.44-universal-mingw32 → 16.4.35-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 +4 -4
- data/Rakefile +3 -16
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +4 -3
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +13 -1
- data/lib/chef/application/apply.rb +6 -5
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- 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 +18 -18
- 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/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/client.rb +14 -14
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/deprecated.rb +8 -0
- data/lib/chef/digester.rb +3 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +3 -4
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_access_control/windows.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +12 -12
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/config_get.rb +1 -0
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/configure.rb +1 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +29 -37
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/ssh.rb +11 -7
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/log.rb +7 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +30 -6
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +17 -9
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +3 -4
- data/lib/chef/provider/package/windows.rb +9 -4
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +1 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +9 -11
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +2 -2
- data/lib/chef/resource/execute.rb +4 -5
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +18 -18
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
- data/lib/chef/resource/openssl_x509_crl.rb +3 -2
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
- data/lib/chef/resource/sudo.rb +31 -4
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +25 -5
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +199 -0
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +52 -21
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +27 -2
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -12
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/knife/configure_spec.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +9 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -9
- data/spec/functional/resource/apt_package_spec.rb +0 -1
- data/spec/functional/resource/bash_spec.rb +3 -2
- data/spec/functional/resource/bff_spec.rb +3 -3
- data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -2
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/execute_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +21 -9
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +7 -7
- data/spec/functional/resource/link_spec.rb +22 -25
- data/spec/functional/resource/mount_spec.rb +9 -1
- data/spec/functional/resource/msu_package_spec.rb +9 -3
- data/spec/functional/resource/powershell_script_spec.rb +8 -8
- data/spec/functional/resource/remote_file_spec.rb +7 -13
- data/spec/functional/resource/rpm_spec.rb +3 -3
- data/spec/functional/resource/timezone_spec.rb +2 -0
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_package_spec.rb +0 -1
- data/spec/functional/resource/windows_path_spec.rb +4 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
- data/spec/functional/resource/windows_service_spec.rb +4 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -3
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
- data/spec/functional/resource/yum_package_spec.rb +4 -1
- data/spec/functional/resource/zypper_package_spec.rb +4 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +5 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/crypto_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
- data/spec/integration/knife/config_use_profile_spec.rb +115 -61
- data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
- data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/environment_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +1 -1
- data/spec/integration/knife/role_from_file_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +4 -2
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +16 -10
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +9 -11
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- 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 +20 -21
- data/spec/support/shared/functional/securable_resource.rb +1 -2
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -5
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +12 -8
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/application/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +4 -2
- data/spec/unit/chef_fs/config_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +8 -8
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/client_spec.rb +4 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/data_collector_spec.rb +23 -1
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +12 -8
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +20 -2
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +17 -20
- data/spec/unit/knife/cookbook_download_spec.rb +6 -6
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +6 -7
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +9 -6
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/powershell_out_spec.rb +2 -4
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/unformatter_spec.rb +2 -2
- data/spec/unit/mixin/uris_spec.rb +1 -1
- data/spec/unit/mixin/which.rb +8 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/provider/batch_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +1 -1
- data/spec/unit/provider/dsc_resource_spec.rb +22 -38
- data/spec/unit/provider/dsc_script_spec.rb +10 -10
- data/spec/unit/provider/execute_spec.rb +1 -8
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/openbsd_spec.rb +1 -1
- data/spec/unit/provider/package/pacman_spec.rb +17 -20
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- data/spec/unit/provider/user/dscl_spec.rb +2 -2
- data/spec/unit/provider/windows_env_spec.rb +5 -4
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/file/verification_spec.rb +2 -1
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +25 -8
- data/spec/unit/role_spec.rb +30 -28
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
- data/spec/unit/util/selinux_spec.rb +2 -1
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +1 -1
- metadata +53 -40
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -62,6 +62,7 @@ class Chef
|
|
62
62
|
config_data.delete(:color)
|
63
63
|
# Only keep these if true, false is much less important because it's the default.
|
64
64
|
config_data.delete(:local_mode) unless config_data[:local_mode]
|
65
|
+
config_data.delete(:enforce_default_paths) unless config_data[:enforce_default_paths]
|
65
66
|
config_data.delete(:enforce_path_sanity) unless config_data[:enforce_path_sanity]
|
66
67
|
end
|
67
68
|
|
@@ -32,6 +32,10 @@ class Chef
|
|
32
32
|
description: "Ignore the current config.rb/knife.rb configuration.",
|
33
33
|
default: false
|
34
34
|
|
35
|
+
def configure_chef
|
36
|
+
apply_computed_config
|
37
|
+
end
|
38
|
+
|
35
39
|
def run
|
36
40
|
credentials_data = self.class.config_loader.parse_credentials_file
|
37
41
|
if credentials_data.nil? || credentials_data.empty?
|
@@ -72,7 +76,6 @@ class Chef
|
|
72
76
|
# Try to reset the config.
|
73
77
|
unless config[:ignore_knife_rb]
|
74
78
|
Chef::Config.reset
|
75
|
-
Chef::WorkstationConfigLoader.new(config[:config_file], Chef::Log, profile: config[:profile]).load
|
76
79
|
apply_computed_config
|
77
80
|
end
|
78
81
|
|
@@ -33,17 +33,27 @@ class Chef
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def run
|
36
|
+
credentials_data = self.class.config_loader.parse_credentials_file
|
36
37
|
context_file = ChefConfig::PathHelper.home(".chef", "context").freeze
|
37
38
|
profile = @name_args[0]&.strip
|
38
|
-
if profile
|
39
|
+
if profile.nil? || profile.empty?
|
40
|
+
show_usage
|
41
|
+
ui.fatal("You must specify a profile")
|
42
|
+
exit 1
|
43
|
+
end
|
44
|
+
|
45
|
+
if credentials_data.nil? || credentials_data.empty?
|
46
|
+
ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
|
47
|
+
exit 1
|
48
|
+
end
|
49
|
+
|
50
|
+
if credentials_data[profile].nil?
|
51
|
+
raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{self.class.config_loader.credentials_file_path} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles."
|
52
|
+
else
|
39
53
|
# Ensure the .chef/ folder exists.
|
40
54
|
FileUtils.mkdir_p(File.dirname(context_file))
|
41
55
|
IO.write(context_file, "#{profile}\n")
|
42
56
|
ui.msg("Set default profile to #{profile}")
|
43
|
-
else
|
44
|
-
show_usage
|
45
|
-
ui.fatal("You must specify a profile")
|
46
|
-
exit 1
|
47
57
|
end
|
48
58
|
end
|
49
59
|
|
data/lib/chef/knife/configure.rb
CHANGED
@@ -92,7 +92,7 @@ class Chef
|
|
92
92
|
user_create = Chef::Knife::UserCreate.new
|
93
93
|
user_create.name_args = [ new_client_name ]
|
94
94
|
user_create.config[:user_password] = config[:user_password] ||
|
95
|
-
ui.ask("Please enter a password for the new user: "
|
95
|
+
ui.ask("Please enter a password for the new user: ", echo: false)
|
96
96
|
user_create.config[:admin] = true
|
97
97
|
user_create.config[:file] = new_client_key
|
98
98
|
user_create.config[:yes] = true
|
@@ -73,7 +73,7 @@ class Chef
|
|
73
73
|
manifest = cookbook.cookbook_manifest
|
74
74
|
|
75
75
|
basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
|
76
|
-
if File.
|
76
|
+
if File.exist?(basedir)
|
77
77
|
if config[:force]
|
78
78
|
Chef::Log.trace("Deleting #{basedir}")
|
79
79
|
FileUtils.rm_rf(basedir)
|
@@ -62,7 +62,7 @@ class Chef
|
|
62
62
|
def generate_metadata(cookbook)
|
63
63
|
Array(config[:cookbook_path]).reverse_each do |path|
|
64
64
|
file = File.expand_path(File.join(path, cookbook, "metadata.rb"))
|
65
|
-
if File.
|
65
|
+
if File.exist?(file)
|
66
66
|
generate_metadata_from_file(cookbook, file)
|
67
67
|
else
|
68
68
|
validate_metadata_json(path, cookbook)
|
@@ -23,9 +23,6 @@ require_relative "../knife"
|
|
23
23
|
class Chef
|
24
24
|
class Knife
|
25
25
|
class CookbookUpload < Knife
|
26
|
-
CHECKSUM = "checksum".freeze
|
27
|
-
MATCH_CHECKSUM = /[0-9a-f]{32,}/.freeze
|
28
|
-
|
29
26
|
deps do
|
30
27
|
require_relative "../mixin/file_class"
|
31
28
|
include Chef::Mixin::FileClass
|
@@ -37,10 +34,10 @@ class Chef
|
|
37
34
|
banner "knife cookbook upload [COOKBOOKS...] (options)"
|
38
35
|
|
39
36
|
option :cookbook_path,
|
40
|
-
short: "-o PATH:PATH",
|
41
|
-
long: "--cookbook-path PATH:PATH",
|
42
|
-
description: "A
|
43
|
-
proc: lambda { |o| o.split(
|
37
|
+
short: "-o 'PATH:PATH'",
|
38
|
+
long: "--cookbook-path 'PATH:PATH'",
|
39
|
+
description: "A delimited path to search for cookbooks. On Unix the delimiter is ':', on Windows it is ';'.",
|
40
|
+
proc: lambda { |o| o.split(File::PATH_SEPARATOR) }
|
44
41
|
|
45
42
|
option :freeze,
|
46
43
|
long: "--freeze",
|
@@ -110,8 +107,7 @@ class Chef
|
|
110
107
|
cookbook_path = config[:cookbook_path].respond_to?(:join) ? config[:cookbook_path].join(", ") : config[:cookbook_path]
|
111
108
|
ui.warn("Could not find any cookbooks in your cookbook path: '#{File.expand_path(cookbook_path)}'. Use --cookbook-path to specify the desired path.")
|
112
109
|
else
|
113
|
-
|
114
|
-
tmp_cl = Chef::CookbookLoader.copy_to_tmp_dir_from_array(cookbooks)
|
110
|
+
Chef::CookbookLoader.copy_to_tmp_dir_from_array(cookbooks) do |tmp_cl|
|
115
111
|
tmp_cl.load_cookbooks
|
116
112
|
tmp_cl.compile_metadata
|
117
113
|
tmp_cl.freeze_versions if config[:freeze]
|
@@ -130,28 +126,26 @@ class Chef
|
|
130
126
|
ui.error("Uploading of some of the cookbooks must be failed. Remove cookbook whose version is frozen from your cookbooks repo OR use --force option.")
|
131
127
|
upload_failures += 1
|
132
128
|
rescue SystemExit => e
|
133
|
-
tmp_cl.unlink!
|
134
129
|
raise exit e.status
|
135
130
|
end
|
136
131
|
ui.info("Uploaded all cookbooks.") if upload_failures == 0
|
137
132
|
end
|
138
133
|
else
|
139
134
|
tmp_cl.each do |cookbook_name, cookbook|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
end
|
135
|
+
|
136
|
+
upload([cookbook], justify_width)
|
137
|
+
upload_ok += 1
|
138
|
+
rescue Exceptions::CookbookNotFoundInRepo => e
|
139
|
+
upload_failures += 1
|
140
|
+
ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
|
141
|
+
Log.debug(e)
|
142
|
+
upload_failures += 1
|
143
|
+
rescue Exceptions::CookbookFrozen
|
144
|
+
ui.warn("Not updating version constraints for #{cookbook_name} in the environment as the cookbook is frozen.")
|
145
|
+
upload_failures += 1
|
146
|
+
rescue SystemExit => e
|
147
|
+
raise exit e.status
|
148
|
+
|
155
149
|
end
|
156
150
|
|
157
151
|
if upload_failures == 0
|
@@ -167,8 +161,6 @@ class Chef
|
|
167
161
|
unless version_constraints_to_update.empty?
|
168
162
|
update_version_constraints(version_constraints_to_update) if config[:environment]
|
169
163
|
end
|
170
|
-
ensure
|
171
|
-
tmp_cl.unlink!
|
172
164
|
end
|
173
165
|
end
|
174
166
|
end
|
@@ -180,17 +172,17 @@ class Chef
|
|
180
172
|
else
|
181
173
|
upload_set = {}
|
182
174
|
@name_args.each do |cookbook_name|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
end
|
175
|
+
|
176
|
+
unless upload_set.key?(cookbook_name)
|
177
|
+
upload_set[cookbook_name] = cookbook_repo[cookbook_name]
|
178
|
+
if config[:depends]
|
179
|
+
upload_set[cookbook_name].metadata.dependencies.each_key { |dep| @name_args << dep }
|
189
180
|
end
|
190
|
-
rescue Exceptions::CookbookNotFoundInRepo => e
|
191
|
-
ui.error(e.message)
|
192
|
-
Log.debug(e)
|
193
181
|
end
|
182
|
+
rescue Exceptions::CookbookNotFoundInRepo => e
|
183
|
+
ui.error(e.message)
|
184
|
+
Log.debug(e)
|
185
|
+
|
194
186
|
end
|
195
187
|
upload_set
|
196
188
|
end
|
@@ -245,7 +237,7 @@ class Chef
|
|
245
237
|
# manifest object, but the manifest becomes invalid when you
|
246
238
|
# regenerate the metadata
|
247
239
|
broken_files = cookbook.dup.manifest_records_by_path.select do |path, info|
|
248
|
-
|
240
|
+
!/[0-9a-f]{32,}/.match?(info["checksum"])
|
249
241
|
end
|
250
242
|
unless broken_files.empty?
|
251
243
|
broken_filenames = Array(broken_files).map { |path, info| path }
|
@@ -28,7 +28,7 @@ class Chef
|
|
28
28
|
# bootstrap templates. For backwards compatibility, they +must+ set the
|
29
29
|
# following instance variables:
|
30
30
|
# * @config - a hash of knife's config values
|
31
|
-
# * @run_list - the run list for the node to
|
31
|
+
# * @run_list - the run list for the node to bootstrap
|
32
32
|
#
|
33
33
|
class BootstrapContext
|
34
34
|
|
@@ -47,7 +47,7 @@ class Chef
|
|
47
47
|
|
48
48
|
def find_subcommands_via_dirglob
|
49
49
|
# The "require paths" of the core knife subcommands bundled with chef
|
50
|
-
files = Dir[File.join(Chef::Util::PathHelper.escape_glob_dir(File.expand_path("
|
50
|
+
files = Dir[File.join(Chef::Util::PathHelper.escape_glob_dir(File.expand_path("../../knife", __dir__)), "*.rb")]
|
51
51
|
subcommand_files = {}
|
52
52
|
files.each do |knife_file|
|
53
53
|
rel_path = knife_file[/#{CHEF_ROOT}#{Regexp.escape(File::SEPARATOR)}(.*)\.rb/, 1]
|
@@ -27,6 +27,7 @@ class Chef
|
|
27
27
|
KEY = "_autogenerated_command_paths".freeze
|
28
28
|
|
29
29
|
attr_accessor :manifest
|
30
|
+
|
30
31
|
def initialize(chef_config_dir, plugin_manifest)
|
31
32
|
super(chef_config_dir)
|
32
33
|
@manifest = plugin_manifest
|
@@ -52,7 +53,7 @@ class Chef
|
|
52
53
|
paths = manifest[KEY]["plugins_paths"][command]
|
53
54
|
if paths && paths.is_a?(Array)
|
54
55
|
# It is only an error if all the paths don't exist
|
55
|
-
if paths.all? { |sc| !File.
|
56
|
+
if paths.all? { |sc| !File.exist?(sc) }
|
56
57
|
errors[command] = paths
|
57
58
|
end
|
58
59
|
end
|
@@ -76,7 +77,7 @@ class Chef
|
|
76
77
|
false
|
77
78
|
else
|
78
79
|
paths.each do |sc|
|
79
|
-
if File.
|
80
|
+
if File.exist?(sc)
|
80
81
|
Kernel.load sc
|
81
82
|
else
|
82
83
|
return false
|
@@ -75,6 +75,25 @@ class Chef
|
|
75
75
|
Chef::Util::PathHelper.home(".chef", "plugin_manifest.json")
|
76
76
|
end
|
77
77
|
|
78
|
+
def self.generate_hash
|
79
|
+
output = if plugin_manifest?
|
80
|
+
plugin_manifest
|
81
|
+
else
|
82
|
+
{ Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY => {} }
|
83
|
+
end
|
84
|
+
output[Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY]["plugins_paths"] = Chef::Knife.subcommand_files
|
85
|
+
output[Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY]["plugins_by_category"] = Chef::Knife.subcommands_by_category
|
86
|
+
output
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.write_hash(data)
|
90
|
+
plugin_manifest_dir = File.expand_path("..", plugin_manifest_path)
|
91
|
+
FileUtils.mkdir_p(plugin_manifest_dir) unless File.directory?(plugin_manifest_dir)
|
92
|
+
File.open(plugin_manifest_path, "w") do |f|
|
93
|
+
f.write(Chef::JSONCompat.to_json_pretty(data))
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
78
97
|
def initialize(chef_config_dir)
|
79
98
|
@chef_config_dir = chef_config_dir
|
80
99
|
end
|
@@ -125,7 +144,7 @@ class Chef
|
|
125
144
|
#
|
126
145
|
def find_subcommands_via_dirglob
|
127
146
|
# The "require paths" of the core knife subcommands bundled with chef
|
128
|
-
files = Dir[File.join(Chef::Util::PathHelper.escape_glob_dir(File.expand_path("
|
147
|
+
files = Dir[File.join(Chef::Util::PathHelper.escape_glob_dir(File.expand_path("../../knife", __dir__)), "*.rb")]
|
129
148
|
subcommand_files = {}
|
130
149
|
files.each do |knife_file|
|
131
150
|
rel_path = knife_file[/#{CHEF_ROOT}#{Regexp.escape(File::SEPARATOR)}(.*)\.rb/, 1]
|
data/lib/chef/knife/core/ui.rb
CHANGED
@@ -61,6 +61,12 @@ class Chef
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
# Creates a new object of class TTY::Prompt
|
65
|
+
# with interrupt as exit so that it can be terminated with status code.
|
66
|
+
def prompt
|
67
|
+
@prompt ||= TTY::Prompt.new(interrupt: :exit)
|
68
|
+
end
|
69
|
+
|
64
70
|
# pastel.decorate is a lightweight replacement for highline.color
|
65
71
|
def pastel
|
66
72
|
@pastel ||= begin
|
@@ -163,8 +169,8 @@ class Chef
|
|
163
169
|
Chef::Config[:color] && stdout.tty?
|
164
170
|
end
|
165
171
|
|
166
|
-
def ask(*args, &block)
|
167
|
-
|
172
|
+
def ask(*args, **options, &block)
|
173
|
+
prompt.ask(*args, **options, &block)
|
168
174
|
end
|
169
175
|
|
170
176
|
def list(*args)
|
@@ -27,7 +27,7 @@ class Chef
|
|
27
27
|
# bootstrap templates. For backwards compatibility, they +must+ set the
|
28
28
|
# following instance variables:
|
29
29
|
# * @config - a hash of knife's config values
|
30
|
-
# * @run_list - the run list for the node to
|
30
|
+
# * @run_list - the run list for the node to bootstrap
|
31
31
|
#
|
32
32
|
class WindowsBootstrapContext < BootstrapContext
|
33
33
|
attr_accessor :config
|
@@ -41,21 +41,6 @@ class Chef
|
|
41
41
|
super(config, run_list, chef_config, secret)
|
42
42
|
end
|
43
43
|
|
44
|
-
# This is a duplicate of ChefConfig::PathHelper.cleanpath, however
|
45
|
-
# this presumes Windows so we can avoid changing the method definitions
|
46
|
-
# across Chef, ChefConfig, and ChefUtils for the circumstance where
|
47
|
-
# the methods are being run for a system other than the one Ruby is
|
48
|
-
# executing on.
|
49
|
-
#
|
50
|
-
# We only need to cleanpath the paths that we are passing to cmd.exe,
|
51
|
-
# anything written to a configuration file or passed as an argument
|
52
|
-
# will be interpreted by ruby later and do the right thing.
|
53
|
-
def cleanpath(path)
|
54
|
-
path = Pathname.new(path).cleanpath.to_s
|
55
|
-
path = path.gsub(File::SEPARATOR, '\\')
|
56
|
-
path
|
57
|
-
end
|
58
|
-
|
59
44
|
def validation_key
|
60
45
|
if File.exist?(File.expand_path(chef_config[:validation_key]))
|
61
46
|
IO.read(File.expand_path(chef_config[:validation_key]))
|
@@ -73,12 +58,21 @@ class Chef
|
|
73
58
|
end
|
74
59
|
|
75
60
|
def config_content
|
61
|
+
# The windows: true / windows: false in the block that follows is more than a bit weird. The way to read this is that we need
|
62
|
+
# the e.g. var_chef_dir to be rendered for the windows value ("C:\chef"), but then we are rendering into a file to be read by
|
63
|
+
# ruby, so we don't actually care about forward-vs-backslashes and by rendering into unix we avoid having to deal with the
|
64
|
+
# double-backwhacking of everything. So we expect to see:
|
65
|
+
#
|
66
|
+
# file_cache_path "C:/chef"
|
67
|
+
#
|
68
|
+
# Which is mildly odd, but should be entirely correct as far as ruby cares.
|
69
|
+
#
|
76
70
|
client_rb = <<~CONFIG
|
77
71
|
chef_server_url "#{chef_config[:chef_server_url]}"
|
78
72
|
validation_client_name "#{chef_config[:validation_client_name]}"
|
79
|
-
file_cache_path "#{ChefConfig::Config.var_chef_dir(true)}
|
80
|
-
file_backup_path "#{ChefConfig::Config.var_chef_dir(true)}
|
81
|
-
cache_options ({:path => "#{ChefConfig::Config.etc_chef_dir(true)}
|
73
|
+
file_cache_path "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.var_chef_dir(windows: true))}\\\\cache"
|
74
|
+
file_backup_path "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.var_chef_dir(windows: true))}\\\\backup"
|
75
|
+
cache_options ({:path => "#{ChefConfig::PathHelper.escapepath(ChefConfig::Config.etc_chef_dir(windows: true))}\\\\cache\\\\checksums", :skip_expires => true})
|
82
76
|
CONFIG
|
83
77
|
|
84
78
|
unless chef_config[:chef_license].nil?
|
@@ -91,8 +85,8 @@ class Chef
|
|
91
85
|
client_rb << "# Using default node name (fqdn)\n"
|
92
86
|
end
|
93
87
|
|
94
|
-
if
|
95
|
-
client_rb << %Q{log_level :#{
|
88
|
+
if config[:config_log_level]
|
89
|
+
client_rb << %Q{log_level :#{config[:config_log_level]}\n}
|
96
90
|
else
|
97
91
|
client_rb << "log_level :auto\n"
|
98
92
|
end
|
@@ -141,11 +135,11 @@ class Chef
|
|
141
135
|
end
|
142
136
|
|
143
137
|
if config[:secret]
|
144
|
-
client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(true)}/encrypted_data_bag_secret"\n}
|
138
|
+
client_rb << %Q{encrypted_data_bag_secret "#{ChefConfig::Config.etc_chef_dir(windows: true)}/encrypted_data_bag_secret"\n}
|
145
139
|
end
|
146
140
|
|
147
141
|
unless trusted_certs_script.empty?
|
148
|
-
client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(true)}/trusted_certs"\n}
|
142
|
+
client_rb << %Q{trusted_certs_dir "#{ChefConfig::Config.etc_chef_dir(windows: true)}/trusted_certs"\n}
|
149
143
|
end
|
150
144
|
|
151
145
|
if chef_config[:fips]
|
@@ -174,9 +168,14 @@ class Chef
|
|
174
168
|
end
|
175
169
|
|
176
170
|
def start_chef
|
171
|
+
c_opscode_dir = ChefConfig::PathHelper.cleanpath(ChefConfig::Config.c_opscode_dir, windows: true)
|
172
|
+
client_rb = clean_etc_chef_file("client.rb")
|
173
|
+
first_boot = clean_etc_chef_file("first-boot.json")
|
174
|
+
|
177
175
|
bootstrap_environment_option = bootstrap_environment.nil? ? "" : " -E #{bootstrap_environment}"
|
178
|
-
|
179
|
-
start_chef
|
176
|
+
|
177
|
+
start_chef = "SET \"PATH=%SYSTEM32%;%SystemRoot%;%SYSTEM32%\\Wbem;%SYSTEM32%\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{c_opscode_dir}\\bin;#{c_opscode_dir}\\embedded\\bin\;%PATH%\"\n"
|
178
|
+
start_chef << "#{Chef::Dist::CLIENT} -c #{client_rb} -j #{first_boot}#{bootstrap_environment_option}\n"
|
180
179
|
end
|
181
180
|
|
182
181
|
def win_wget
|
@@ -276,8 +275,16 @@ class Chef
|
|
276
275
|
install_command('"') + "\n" + fallback_install_task_command
|
277
276
|
end
|
278
277
|
|
278
|
+
def clean_etc_chef_file(path)
|
279
|
+
ChefConfig::PathHelper.cleanpath(etc_chef_file(path), windows: true)
|
280
|
+
end
|
281
|
+
|
282
|
+
def etc_chef_file(path)
|
283
|
+
"#{bootstrap_directory}/#{path}"
|
284
|
+
end
|
285
|
+
|
279
286
|
def bootstrap_directory
|
280
|
-
|
287
|
+
ChefConfig::Config.etc_chef_dir(windows: true)
|
281
288
|
end
|
282
289
|
|
283
290
|
def local_download_path
|