chef 16.2.44 → 16.4.35
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 +8 -8
- data/lib/chef/application.rb +18 -1
- data/lib/chef/application/apply.rb +6 -5
- data/lib/chef/application/base.rb +2 -0
- data/lib/chef/application/client.rb +3 -0
- 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 +45 -24
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5cd173a8bc2e595b0c39776bd219be73951547e20a8ea7ca42e10ab9f4caf301
|
|
4
|
+
data.tar.gz: 8868bce6fe0f624417e2b431bdd0bd160b7747f1801ce93a2ab73b9225c210dc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2880171bce3ce18571abc3142417189f5a31f768adfa4654a1d7b3bf7acdee3483032bd0b5da61e895cb3c1613cccbf95edd76788a44bc2290fe0e4c6823534b
|
|
7
|
+
data.tar.gz: c1d9c41879c5db64c0d104cc41ceb8c3c97a7188d6d2f11333ef33b06ec4574833e586a507c5f1dbbf3c0da43f6df97e462c1c54983cccabdba98075437425f5
|
data/Gemfile
CHANGED
|
@@ -9,12 +9,12 @@ gem "chef", path: "."
|
|
|
9
9
|
|
|
10
10
|
gem "ohai", git: "https://github.com/chef/ohai.git", branch: "master"
|
|
11
11
|
|
|
12
|
-
gem "chef-utils", path: File.expand_path("
|
|
13
|
-
gem "chef-config", path: File.expand_path("
|
|
12
|
+
gem "chef-utils", path: File.expand_path("chef-utils", __dir__) if File.exist?(File.expand_path("chef-utils", __dir__))
|
|
13
|
+
gem "chef-config", path: File.expand_path("chef-config", __dir__) if File.exist?(File.expand_path("chef-config", __dir__))
|
|
14
14
|
|
|
15
|
-
if File.exist?(File.expand_path("
|
|
15
|
+
if File.exist?(File.expand_path("chef-bin", __dir__))
|
|
16
16
|
# bundling in a git checkout
|
|
17
|
-
gem "chef-bin", path: File.expand_path("
|
|
17
|
+
gem "chef-bin", path: File.expand_path("chef-bin", __dir__)
|
|
18
18
|
else
|
|
19
19
|
# bundling in omnibus
|
|
20
20
|
gem "chef-bin" # rubocop:disable Bundler/DuplicatedGem
|
data/Rakefile
CHANGED
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
#
|
|
19
19
|
|
|
20
20
|
# we need this to resolve files required by lib/chef/dist
|
|
21
|
-
$LOAD_PATH.unshift(File.expand_path("
|
|
21
|
+
$LOAD_PATH.unshift(File.expand_path("chef-config/lib", __dir__))
|
|
22
22
|
|
|
23
23
|
begin
|
|
24
24
|
require_relative "tasks/rspec"
|
|
25
25
|
require_relative "tasks/dependencies"
|
|
26
26
|
require_relative "tasks/announce"
|
|
27
27
|
require_relative "tasks/docs"
|
|
28
|
+
require_relative "tasks/spellcheck"
|
|
28
29
|
require_relative "lib/chef/dist"
|
|
29
30
|
rescue LoadError => e
|
|
30
31
|
puts "Skipping missing rake dep: #{e}"
|
|
@@ -107,18 +108,4 @@ begin
|
|
|
107
108
|
end
|
|
108
109
|
rescue LoadError
|
|
109
110
|
puts "yard is not available. bundle install first to make sure all dependencies are installed."
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
namespace :spellcheck do
|
|
113
|
-
task :run do
|
|
114
|
-
sh 'cspell "**/*"'
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
desc "List the unique unrecognized words in the project."
|
|
118
|
-
task :unknown_words do
|
|
119
|
-
sh 'cspell "**/*" --wordsOnly --no-summary | sort | uniq'
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
desc "Run spellcheck on the project."
|
|
124
|
-
task spellcheck: "spellcheck:run"
|
|
111
|
+
end
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
gemspec = eval(IO.read(File.expand_path("
|
|
1
|
+
gemspec = eval(IO.read(File.expand_path("chef.gemspec", __dir__)))
|
|
2
2
|
|
|
3
3
|
gemspec.platform = Gem::Platform.new(%w{universal mingw32})
|
|
4
4
|
|
|
5
5
|
gemspec.add_dependency "win32-api", "~> 1.5.3"
|
|
6
|
-
gemspec.add_dependency "win32-dir", "~> 0.5.0"
|
|
7
6
|
gemspec.add_dependency "win32-event", "~> 0.6.1"
|
|
8
7
|
# TODO: Relax this pin and make the necessary updaets. The issue originally
|
|
9
8
|
# leading to this pin has been fixed in 0.6.5.
|
|
@@ -14,7 +13,7 @@ gemspec.add_dependency "win32-process", "~> 0.8.2"
|
|
|
14
13
|
gemspec.add_dependency "win32-service", ">= 2.1.5", "< 3.0"
|
|
15
14
|
gemspec.add_dependency "wmi-lite", "~> 1.0"
|
|
16
15
|
gemspec.add_dependency "win32-taskscheduler", "~> 2.0"
|
|
17
|
-
gemspec.add_dependency "iso8601", "
|
|
16
|
+
gemspec.add_dependency "iso8601", ">= 0.12.1", "< 0.14" # validate 0.14 when it comes out
|
|
18
17
|
gemspec.add_dependency "win32-certstore", "~> 0.3"
|
|
19
18
|
gemspec.extensions << "ext/win32-eventlog/Rakefile"
|
|
20
19
|
gemspec.files += Dir.glob("{distro,ext}/**/*")
|
data/chef.gemspec
CHANGED
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
s.add_dependency "mixlib-cli", ">= 2.1.1", "< 3.0"
|
|
25
25
|
s.add_dependency "mixlib-log", ">= 2.0.3", "< 4.0"
|
|
26
26
|
s.add_dependency "mixlib-authentication", ">= 2.1", "< 4"
|
|
27
|
-
s.add_dependency "mixlib-shellout", ">= 3.
|
|
27
|
+
s.add_dependency "mixlib-shellout", ">= 3.1.1", "< 4.0"
|
|
28
28
|
s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
|
|
29
29
|
s.add_dependency "ohai", "~> 16.0"
|
|
30
30
|
|
|
@@ -36,11 +36,12 @@ Gem::Specification.new do |s|
|
|
|
36
36
|
s.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
|
|
37
37
|
s.add_dependency "bcrypt_pbkdf", "= 1.1.0.rc1" # ed25519 ssh key support
|
|
38
38
|
s.add_dependency "highline", ">= 1.6.9", "< 3"
|
|
39
|
+
s.add_dependency "tty-prompt", "~> 0.21" # knife ui.ask prompt
|
|
39
40
|
s.add_dependency "tty-screen", "~> 0.6" # knife list
|
|
40
41
|
s.add_dependency "pastel" # knife ui.color
|
|
41
42
|
s.add_dependency "erubis", "~> 2.7"
|
|
42
|
-
s.add_dependency "diff-lcs", "
|
|
43
|
-
s.add_dependency "ffi-libarchive"
|
|
43
|
+
s.add_dependency "diff-lcs", ">= 1.2.4", "< 1.4.0" # 1.4 breaks output
|
|
44
|
+
s.add_dependency "ffi-libarchive", "~> 1.0", ">= 1.0.3"
|
|
44
45
|
s.add_dependency "chef-zero", ">= 14.0.11"
|
|
45
46
|
s.add_dependency "chef-vault"
|
|
46
47
|
|
|
@@ -44,6 +44,9 @@ class Chef
|
|
|
44
44
|
# @return [Exception] The exception that was thrown
|
|
45
45
|
attr_accessor :exception
|
|
46
46
|
|
|
47
|
+
# @return [Hash] JSON-formatted error description from the Chef::Formatters::ErrorMapper
|
|
48
|
+
attr_accessor :error_description
|
|
49
|
+
|
|
47
50
|
# @return [Numeric] The elapsed time in seconds with machine precision
|
|
48
51
|
attr_accessor :elapsed_time
|
|
49
52
|
|
|
@@ -223,6 +226,7 @@ class Chef
|
|
|
223
226
|
|
|
224
227
|
current_record.status = :failed
|
|
225
228
|
current_record.exception = exception
|
|
229
|
+
current_record.error_description = Formatters::ErrorMapper.resource_failed(new_resource, action, exception).for_json
|
|
226
230
|
end
|
|
227
231
|
|
|
228
232
|
# Hook called after an action is completed. This is always called, even if the action fails.
|
|
@@ -72,14 +72,14 @@ class Chef
|
|
|
72
72
|
|
|
73
73
|
def assert_destination_writable!
|
|
74
74
|
abs_path = File.expand_path(destination)
|
|
75
|
-
unless File.
|
|
75
|
+
unless File.exist?(File.dirname(abs_path))
|
|
76
76
|
begin
|
|
77
77
|
FileUtils.mkdir_p(File.dirname(abs_path))
|
|
78
78
|
rescue Errno::EACCES
|
|
79
79
|
raise Chef::Exceptions::CannotWritePrivateKey, "I can't create the configuration directory at #{File.dirname(abs_path)} - check permissions?"
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
|
-
if (File.
|
|
82
|
+
if (File.exist?(abs_path) && !File.writable?(abs_path)) || !File.writable?(File.dirname(abs_path))
|
|
83
83
|
raise Chef::Exceptions::CannotWritePrivateKey, "I can't write your private key to #{abs_path} - check permissions?"
|
|
84
84
|
end
|
|
85
85
|
end
|
|
@@ -157,12 +157,12 @@ class Chef
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
def http_api
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
160
|
+
options = {}
|
|
161
|
+
options[:api_version] = "0"
|
|
162
|
+
options[:client_name] = Chef::Config[:validation_client_name]
|
|
163
|
+
options[:raw_key] = Chef::Config[:validation_key_contents]
|
|
164
|
+
options[:signing_key_filename] = Chef::Config[:validation_key] unless options[:raw_key]
|
|
165
|
+
@http_api ||= Chef::ServerAPI.new(Chef::Config[:chef_server_url], options)
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
# Whether or not to generate keys locally and post the public key to the
|
data/lib/chef/application.rb
CHANGED
|
@@ -19,13 +19,14 @@
|
|
|
19
19
|
require "pp" unless defined?(PP)
|
|
20
20
|
require "socket" unless defined?(Socket)
|
|
21
21
|
require_relative "config"
|
|
22
|
+
require "chef-config/mixin/chef_cloud"
|
|
22
23
|
require_relative "exceptions"
|
|
23
24
|
require_relative "local_mode"
|
|
24
25
|
require_relative "log"
|
|
25
26
|
require_relative "platform"
|
|
26
27
|
require "mixlib/cli" unless defined?(Mixlib::CLI)
|
|
27
28
|
require "tmpdir" unless defined?(Dir.mktmpdir)
|
|
28
|
-
require "rbconfig"
|
|
29
|
+
require "rbconfig" unless defined?(RbConfig)
|
|
29
30
|
require_relative "application/exit_code"
|
|
30
31
|
require_relative "dist"
|
|
31
32
|
require "license_acceptance/acceptor"
|
|
@@ -136,6 +137,10 @@ class Chef
|
|
|
136
137
|
|
|
137
138
|
if config[:config_file].nil?
|
|
138
139
|
logger.warn("No config file found or specified on command line. Using command line options instead.")
|
|
140
|
+
elsif ChefConfig::Mixin::ChefCloud.cloud_config?
|
|
141
|
+
logger.warn("*****************************************")
|
|
142
|
+
logger.warn("Found Chef Cloud configuration. Overriding local values from cloud.")
|
|
143
|
+
logger.warn("*****************************************")
|
|
139
144
|
elsif config_fetcher.config_missing?
|
|
140
145
|
logger.warn("*****************************************")
|
|
141
146
|
logger.warn("Did not find config file: #{config[:config_file]}. Using command line options instead.")
|
|
@@ -194,8 +199,10 @@ class Chef
|
|
|
194
199
|
chef_config[:log_location].map! do |log_location|
|
|
195
200
|
case log_location
|
|
196
201
|
when :syslog, "syslog"
|
|
202
|
+
force_force_logger
|
|
197
203
|
logger::Syslog.new
|
|
198
204
|
when :win_evt, "win_evt"
|
|
205
|
+
force_force_logger
|
|
199
206
|
logger::WinEvt.new
|
|
200
207
|
else
|
|
201
208
|
# should be a path or STDOUT
|
|
@@ -204,6 +211,16 @@ class Chef
|
|
|
204
211
|
end
|
|
205
212
|
end
|
|
206
213
|
|
|
214
|
+
# Force the logger by default for the :winevt and :syslog loggers. Since we do not and cannot
|
|
215
|
+
# support multiple log levels in a mix-and-match situation with formatters and loggers, and the
|
|
216
|
+
# formatters do not support syslog, we force the formatter off by default and the log level is
|
|
217
|
+
# thus info by default. Users can add `--force-formatter -l info` to get back formatter output
|
|
218
|
+
# on STDOUT along with syslog logging.
|
|
219
|
+
#
|
|
220
|
+
def force_force_logger
|
|
221
|
+
chef_config[:force_logger] = true unless chef_config[:force_formatter]
|
|
222
|
+
end
|
|
223
|
+
|
|
207
224
|
# Use of output formatters is assumed if `force_formatter` is set or if `force_logger` is not set
|
|
208
225
|
def using_output_formatter?
|
|
209
226
|
chef_config[:force_formatter] || !chef_config[:force_logger]
|
|
@@ -21,6 +21,7 @@ require_relative "../../chef"
|
|
|
21
21
|
require_relative "../application"
|
|
22
22
|
require_relative "../client"
|
|
23
23
|
require_relative "../config"
|
|
24
|
+
require_relative "../config_fetcher"
|
|
24
25
|
require_relative "../log"
|
|
25
26
|
require "fileutils" unless defined?(FileUtils)
|
|
26
27
|
require "tempfile" unless defined?(Tempfile)
|
|
@@ -212,11 +213,11 @@ class Chef::Application::Apply < Chef::Application
|
|
|
212
213
|
end
|
|
213
214
|
runner = Chef::Runner.new(run_context)
|
|
214
215
|
catch(:end_client_run_early) do
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
216
|
+
|
|
217
|
+
runner.converge
|
|
218
|
+
ensure
|
|
219
|
+
@recipe_fh.close
|
|
220
|
+
|
|
220
221
|
end
|
|
221
222
|
Chef::Platform::Rebooter.reboot_if_needed!(runner)
|
|
222
223
|
end
|
|
@@ -22,6 +22,7 @@ require_relative "../mixin/shell_out"
|
|
|
22
22
|
require_relative "../config_fetcher"
|
|
23
23
|
require_relative "../dist"
|
|
24
24
|
require_relative "../daemon"
|
|
25
|
+
require "chef-config/mixin/chef_cloud"
|
|
25
26
|
require "chef-config/mixin/dot_d"
|
|
26
27
|
require "license_acceptance/cli_flags/mixlib_cli"
|
|
27
28
|
require "mixlib/archive" unless defined?(Mixlib::Archive)
|
|
@@ -39,6 +40,7 @@ require "mixlib/archive" unless defined?(Mixlib::Archive)
|
|
|
39
40
|
#
|
|
40
41
|
class Chef::Application::Base < Chef::Application
|
|
41
42
|
include Chef::Mixin::ShellOut
|
|
43
|
+
include ChefConfig::Mixin::ChefCloud
|
|
42
44
|
include ChefConfig::Mixin::DotD
|
|
43
45
|
include LicenseAcceptance::CLIFlags::MixlibCLI
|
|
44
46
|
|
|
@@ -156,6 +156,9 @@ class Chef::Application::Client < Chef::Application::Base
|
|
|
156
156
|
|
|
157
157
|
# Load all config files in client.d
|
|
158
158
|
load_dot_d(Chef::Config[:client_d_dir]) if Chef::Config[:client_d_dir]
|
|
159
|
+
|
|
160
|
+
# Load cloud config if present
|
|
161
|
+
load_cloud_config
|
|
159
162
|
end
|
|
160
163
|
|
|
161
164
|
def configure_logging
|
|
@@ -78,33 +78,33 @@ class Chef
|
|
|
78
78
|
while running?
|
|
79
79
|
# Grab the service_action_mutex to make a chef-client run
|
|
80
80
|
@service_action_mutex.synchronize do
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
81
|
+
|
|
82
|
+
Chef::Log.info("Next #{Chef::Dist::CLIENT} run will happen in #{timeout} seconds")
|
|
83
|
+
@service_signal.wait(@service_action_mutex, timeout)
|
|
84
|
+
|
|
85
|
+
# Continue only if service is RUNNING
|
|
86
|
+
next if state != RUNNING
|
|
87
|
+
|
|
88
|
+
# Reconfigure each time through to pick up any changes in the client file
|
|
89
|
+
Chef::Log.info("Reconfiguring with startup parameters")
|
|
90
|
+
reconfigure(startup_parameters)
|
|
91
|
+
timeout = Chef::Config[:interval]
|
|
92
|
+
|
|
93
|
+
# Honor splay sleep config
|
|
94
|
+
timeout += rand Chef::Config[:splay]
|
|
95
|
+
|
|
96
|
+
# run chef-client only if service is in RUNNING state
|
|
97
|
+
next if state != RUNNING
|
|
98
|
+
|
|
99
|
+
Chef::Log.info("#{Chef::Dist::CLIENT} service is starting a #{Chef::Dist::CLIENT} run...")
|
|
100
|
+
run_chef_client
|
|
101
|
+
rescue SystemExit => e
|
|
102
|
+
# Do not raise any of the errors here in order to
|
|
103
|
+
# prevent service crash
|
|
104
|
+
Chef::Log.error("#{e.class}: #{e}")
|
|
105
|
+
rescue Exception => e
|
|
106
|
+
Chef::Log.error("#{e.class}: #{e}")
|
|
107
|
+
|
|
108
108
|
end
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
require_relative "exceptions"
|
|
3
3
|
|
|
4
4
|
class Chef
|
|
5
|
-
class
|
|
5
|
+
class AttributeAllowlist
|
|
6
6
|
|
|
7
|
-
# filter takes two arguments - the data you want to filter, and
|
|
8
|
-
#
|
|
7
|
+
# filter takes two arguments - the data you want to filter, and an array of
|
|
8
|
+
# keys you want included. You can capture a subtree of the data to filter by
|
|
9
9
|
# providing a "/"-delimited string of keys. If some key includes "/"-characters,
|
|
10
10
|
# you must provide an array of keys instead.
|
|
11
11
|
#
|
|
12
|
-
#
|
|
12
|
+
# AttributeAllowlist.filter(
|
|
13
13
|
# { "filesystem" => {
|
|
14
14
|
# "/dev/disk" => {
|
|
15
15
|
# "size" => "10mb"
|
|
@@ -27,18 +27,18 @@ class Chef
|
|
|
27
27
|
# },
|
|
28
28
|
# ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
|
|
29
29
|
# will capture the eth0 and /dev/disk subtrees.
|
|
30
|
-
def self.filter(data,
|
|
31
|
-
return data if
|
|
30
|
+
def self.filter(data, allowlist = nil)
|
|
31
|
+
return data if allowlist.nil?
|
|
32
32
|
|
|
33
33
|
new_data = {}
|
|
34
|
-
|
|
34
|
+
allowlist.each do |item|
|
|
35
35
|
add_data(data, new_data, item)
|
|
36
36
|
end
|
|
37
37
|
new_data
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
# Walk the data has according to the keys provided by the
|
|
41
|
-
# and add the data to the
|
|
40
|
+
# Walk the data has according to the keys provided by the allowlisted item
|
|
41
|
+
# and add the data to the allowlisting result.
|
|
42
42
|
def self.add_data(data, new_data, item)
|
|
43
43
|
parts = to_array(item)
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
|
46
46
|
filtered_data = new_data
|
|
47
47
|
parts[0..-2].each do |part|
|
|
48
48
|
unless all_data.key?(part)
|
|
49
|
-
Chef::Log.warn("Could not find
|
|
49
|
+
Chef::Log.warn("Could not find allowlist attribute #{item}.")
|
|
50
50
|
return nil
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -58,7 +58,7 @@ class Chef
|
|
|
58
58
|
# Note: You can't do all_data[parts[-1]] here because the value
|
|
59
59
|
# may be false-y
|
|
60
60
|
unless all_data.key?(parts[-1])
|
|
61
|
-
Chef::Log.warn("Could not find
|
|
61
|
+
Chef::Log.warn("Could not find allowlist attribute #{item}.")
|
|
62
62
|
return nil
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
require_relative "exceptions"
|
|
3
3
|
|
|
4
4
|
class Chef
|
|
5
|
-
class
|
|
5
|
+
class AttributeBlocklist
|
|
6
6
|
|
|
7
|
-
# filter takes two arguments - the data you want to filter, and
|
|
7
|
+
# filter takes two arguments - the data you want to filter, and an array
|
|
8
8
|
# of keys you want discarded. You can capture a subtree of the data to filter by
|
|
9
9
|
# providing a "/"-delimited string of keys. If some key includes "/"-characters,
|
|
10
10
|
# you must provide an array of keys instead.
|
|
11
11
|
#
|
|
12
|
-
#
|
|
12
|
+
# AttributeBlocklist.filter(
|
|
13
13
|
# { "filesystem" => {
|
|
14
14
|
# "/dev/disk" => {
|
|
15
15
|
# "size" => "10mb"
|
|
@@ -27,17 +27,17 @@ class Chef
|
|
|
27
27
|
# },
|
|
28
28
|
# ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
|
|
29
29
|
# will exclude the eth0 and /dev/disk subtrees.
|
|
30
|
-
def self.filter(data,
|
|
31
|
-
return data if
|
|
30
|
+
def self.filter(data, blocklist = nil)
|
|
31
|
+
return data if blocklist.nil?
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
blocklist.each do |item|
|
|
34
34
|
Chef::Log.warn("Removing item #{item}")
|
|
35
35
|
remove_data(data, item)
|
|
36
36
|
end
|
|
37
37
|
data
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
# Walk the data according to the keys provided by the
|
|
40
|
+
# Walk the data according to the keys provided by the blocklisted item
|
|
41
41
|
# to get a reference to the item that will be removed.
|
|
42
42
|
def self.remove_data(data, item)
|
|
43
43
|
parts = to_array(item)
|
|
@@ -45,7 +45,7 @@ class Chef
|
|
|
45
45
|
item_ref = data
|
|
46
46
|
parts[0..-2].each do |part|
|
|
47
47
|
unless item_ref[part]
|
|
48
|
-
Chef::Log.warn("Could not find
|
|
48
|
+
Chef::Log.warn("Could not find blocklist attribute #{item}.")
|
|
49
49
|
return nil
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -53,7 +53,7 @@ class Chef
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
unless item_ref.key?(parts[-1])
|
|
56
|
-
Chef::Log.warn("Could not find
|
|
56
|
+
Chef::Log.warn("Could not find blocklist attribute #{item}.")
|
|
57
57
|
return nil
|
|
58
58
|
end
|
|
59
59
|
|