chef 12.18.31 → 13.0.118
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 +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
data/lib/chef/api_client.rb
CHANGED
|
@@ -140,11 +140,6 @@ class Chef
|
|
|
140
140
|
client
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
-
def self.json_create(data)
|
|
144
|
-
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::ApiClient#from_hash")
|
|
145
|
-
from_hash(data)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
143
|
def self.from_json(j)
|
|
149
144
|
from_hash(Chef::JSONCompat.parse(j))
|
|
150
145
|
end
|
|
@@ -162,7 +157,7 @@ class Chef
|
|
|
162
157
|
if inflate
|
|
163
158
|
response = Hash.new
|
|
164
159
|
Chef::Search::Query.new.search(:client) do |n|
|
|
165
|
-
n =
|
|
160
|
+
n = json_create(n) if n.instance_of?(Hash)
|
|
166
161
|
response[n.name] = n
|
|
167
162
|
end
|
|
168
163
|
response
|
|
@@ -188,15 +183,13 @@ class Chef
|
|
|
188
183
|
|
|
189
184
|
# Save this client via the REST API, returns a hash including the private key
|
|
190
185
|
def save
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
raise e
|
|
199
|
-
end
|
|
186
|
+
http_api.put("clients/#{name}", { :name => name, :admin => admin, :validator => validator })
|
|
187
|
+
rescue Net::HTTPServerException => e
|
|
188
|
+
# If that fails, go ahead and try and update it
|
|
189
|
+
if e.response.code == "404"
|
|
190
|
+
http_api.post("clients", { :name => name, :admin => admin, :validator => validator })
|
|
191
|
+
else
|
|
192
|
+
raise e
|
|
200
193
|
end
|
|
201
194
|
end
|
|
202
195
|
|
data/lib/chef/api_client_v1.rb
CHANGED
|
@@ -190,7 +190,7 @@ class Chef
|
|
|
190
190
|
if inflate
|
|
191
191
|
response = Hash.new
|
|
192
192
|
Chef::Search::Query.new.search(:client) do |n|
|
|
193
|
-
n =
|
|
193
|
+
n = from_hash(n) if n.instance_of?(Hash)
|
|
194
194
|
response[n.name] = n
|
|
195
195
|
end
|
|
196
196
|
response
|
|
@@ -212,15 +212,13 @@ class Chef
|
|
|
212
212
|
|
|
213
213
|
# Save this client via the REST API, returns a hash including the private key
|
|
214
214
|
def save
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
raise e
|
|
223
|
-
end
|
|
215
|
+
update
|
|
216
|
+
rescue Net::HTTPServerException => e
|
|
217
|
+
# If that fails, go ahead and try and update it
|
|
218
|
+
if e.response.code == "404"
|
|
219
|
+
create
|
|
220
|
+
else
|
|
221
|
+
raise e
|
|
224
222
|
end
|
|
225
223
|
end
|
|
226
224
|
|
|
@@ -313,7 +311,7 @@ class Chef
|
|
|
313
311
|
|
|
314
312
|
new_client = chef_rest_v0.post("clients", payload)
|
|
315
313
|
end
|
|
316
|
-
Chef::ApiClientV1.from_hash(
|
|
314
|
+
Chef::ApiClientV1.from_hash(to_hash.merge(new_client))
|
|
317
315
|
end
|
|
318
316
|
|
|
319
317
|
# As a string
|
|
@@ -200,16 +200,14 @@ class Chef::Application::Apply < Chef::Application
|
|
|
200
200
|
end
|
|
201
201
|
|
|
202
202
|
def run_application
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
|
212
|
-
end
|
|
203
|
+
parse_options
|
|
204
|
+
run_chef_recipe
|
|
205
|
+
Chef::Application.exit! "Exiting", 0
|
|
206
|
+
rescue SystemExit
|
|
207
|
+
raise
|
|
208
|
+
rescue Exception => e
|
|
209
|
+
Chef::Application.debug_stacktrace(e)
|
|
210
|
+
Chef::Application.fatal!("#{e.class}: #{e.message}", e)
|
|
213
211
|
end
|
|
214
212
|
|
|
215
213
|
# Get this party started
|
|
@@ -45,62 +45,23 @@ class Chef
|
|
|
45
45
|
class << self
|
|
46
46
|
|
|
47
47
|
def normalize_exit_code(exit_code = nil)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
normalize_legacy_exit_code(exit_code)
|
|
48
|
+
normalized_exit_code = normalize_legacy_exit_code(exit_code)
|
|
49
|
+
if valid_exit_codes.include? normalized_exit_code
|
|
50
|
+
normalized_exit_code
|
|
52
51
|
else
|
|
53
|
-
|
|
52
|
+
Chef::Log.warn(non_standard_exit_code_warning(normalized_exit_code))
|
|
53
|
+
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
def enforce_rfc_062_exit_codes?
|
|
58
|
-
!normalization_disabled? && !normalization_not_configured?
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def notify_reboot_exit_code_deprecation
|
|
62
|
-
return if normalization_disabled?
|
|
63
|
-
notify_on_deprecation(reboot_deprecation_warning)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def notify_deprecated_exit_code
|
|
67
|
-
return if normalization_disabled?
|
|
68
|
-
notify_on_deprecation(deprecation_warning)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
57
|
private
|
|
72
58
|
|
|
73
|
-
def normalization_disabled?
|
|
74
|
-
Chef::Config[:exit_status] == :disabled
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def normalization_not_configured?
|
|
78
|
-
Chef::Config[:exit_status].nil?
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def normalize_legacy_exit_code_with_warning(exit_code)
|
|
82
|
-
normalized_exit_code = normalize_legacy_exit_code(exit_code)
|
|
83
|
-
unless valid_exit_codes.include? normalized_exit_code
|
|
84
|
-
notify_on_deprecation(deprecation_warning)
|
|
85
|
-
end
|
|
86
|
-
normalized_exit_code
|
|
87
|
-
end
|
|
88
|
-
|
|
89
59
|
def normalize_legacy_exit_code(exit_code)
|
|
90
60
|
case exit_code
|
|
91
61
|
when Integer
|
|
92
62
|
exit_code
|
|
93
63
|
when Exception
|
|
94
64
|
lookup_exit_code_by_exception(exit_code)
|
|
95
|
-
else
|
|
96
|
-
default_exit_code
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def normalize_exit_code_to_rfc(exit_code)
|
|
101
|
-
normalized_exit_code = normalize_legacy_exit_code_with_warning(exit_code)
|
|
102
|
-
if valid_exit_codes.include? normalized_exit_code
|
|
103
|
-
normalized_exit_code
|
|
104
65
|
else
|
|
105
66
|
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
|
106
67
|
end
|
|
@@ -111,15 +72,6 @@ class Chef
|
|
|
111
72
|
VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
|
|
112
73
|
elsif sigterm_received?(exception)
|
|
113
74
|
VALID_RFC_062_EXIT_CODES[:SIGTERM_RECEIVED]
|
|
114
|
-
elsif normalization_disabled? || normalization_not_configured?
|
|
115
|
-
if legacy_exit_code?(exception)
|
|
116
|
-
# We have lots of "Chef::Application.fatal!('', 2)
|
|
117
|
-
# This maintains that behavior at initial introduction
|
|
118
|
-
# and when the RFC exit_status compliance is disabled.
|
|
119
|
-
VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
|
|
120
|
-
else
|
|
121
|
-
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
|
122
|
-
end
|
|
123
75
|
elsif reboot_scheduled?(exception)
|
|
124
76
|
VALID_RFC_062_EXIT_CODES[:REBOOT_SCHEDULED]
|
|
125
77
|
elsif reboot_needed?(exception)
|
|
@@ -135,12 +87,6 @@ class Chef
|
|
|
135
87
|
end
|
|
136
88
|
end
|
|
137
89
|
|
|
138
|
-
def legacy_exit_code?(exception)
|
|
139
|
-
resolve_exception_array(exception).any? do |e|
|
|
140
|
-
e.is_a? Chef::Exceptions::DeprecatedExitCode
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
90
|
def reboot_scheduled?(exception)
|
|
145
91
|
resolve_exception_array(exception).any? do |e|
|
|
146
92
|
e.is_a? Chef::Exceptions::Reboot
|
|
@@ -198,34 +144,17 @@ class Chef
|
|
|
198
144
|
end
|
|
199
145
|
|
|
200
146
|
def notify_on_deprecation(message)
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
rescue Chef::Exceptions::DeprecatedFeatureError
|
|
147
|
+
Chef.deprecated(:exit_code, message)
|
|
148
|
+
rescue Chef::Exceptions::DeprecatedFeatureError
|
|
204
149
|
# Have to rescue this, otherwise this unhandled error preempts
|
|
205
150
|
# the current exit code assignment.
|
|
206
|
-
end
|
|
207
151
|
end
|
|
208
152
|
|
|
209
|
-
def
|
|
210
|
-
"Chef
|
|
153
|
+
def non_standard_exit_code_warning(exit_code)
|
|
154
|
+
"Chef attempted to exit with a non-standard exit code of #{exit_code}." \
|
|
155
|
+
" Chef RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md) defines the" \
|
|
211
156
|
" exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
|
|
212
|
-
"
|
|
213
|
-
" GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
def reboot_deprecation_warning
|
|
217
|
-
"Per RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md)" \
|
|
218
|
-
", when a reboot is requested Chef Client will exit with an exit code of 35, REBOOT_SCHEDULED." \
|
|
219
|
-
" To maintain the current behavior (an exit code of 0), you will need to set `exit_status` to" \
|
|
220
|
-
" `:disabled` in your client.rb"
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
def default_exit_code
|
|
224
|
-
if normalization_disabled? || normalization_not_configured?
|
|
225
|
-
return DEPRECATED_RFC_062_EXIT_CODES[:DEPRECATED_FAILURE]
|
|
226
|
-
else
|
|
227
|
-
VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
|
|
228
|
-
end
|
|
157
|
+
" Non-standard exit codes are redefined as GENERIC_FAILURE."
|
|
229
158
|
end
|
|
230
159
|
|
|
231
160
|
end
|
|
@@ -203,11 +203,11 @@ class Chef::Application::Knife < Chef::Application
|
|
|
203
203
|
Chef::Log.error(fatal_message) if fatal_message
|
|
204
204
|
|
|
205
205
|
begin
|
|
206
|
-
|
|
206
|
+
parse_options
|
|
207
207
|
rescue OptionParser::InvalidOption => e
|
|
208
208
|
puts "#{e}\n"
|
|
209
209
|
end
|
|
210
|
-
puts
|
|
210
|
+
puts opt_parser
|
|
211
211
|
puts
|
|
212
212
|
Chef::Knife.list_commands
|
|
213
213
|
exit exitcode
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Christopher Maier (<maier@lambda.local>)
|
|
3
|
-
# Copyright:: Copyright 2011-
|
|
3
|
+
# Copyright:: Copyright 2011-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -183,39 +183,38 @@ class Chef
|
|
|
183
183
|
# The chef client will be started in a new process. We have used shell_out to start the chef-client.
|
|
184
184
|
# The log_location and config_file of the parent process is passed to the new chef-client process.
|
|
185
185
|
# We need to add the --no-fork, as by default it is set to fork=true.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
186
|
+
|
|
187
|
+
Chef::Log.info "Starting chef-client in a new process"
|
|
188
|
+
# Pass config params to the new process
|
|
189
|
+
config_params = " --no-fork"
|
|
190
|
+
config_params += " -c #{Chef::Config[:config_file]}" unless Chef::Config[:config_file].nil?
|
|
191
|
+
# log_location might be an event logger and if so we cannot pass as a command argument
|
|
192
|
+
# but shed no tears! If the logger is an event logger, it must have been configured
|
|
193
|
+
# as such in the config file and chef-client will use that when no arg is passed here
|
|
194
|
+
config_params += " -L #{resolve_log_location}" if resolve_log_location.is_a?(String)
|
|
195
|
+
|
|
196
|
+
# Starts a new process and waits till the process exits
|
|
197
|
+
|
|
198
|
+
result = shell_out(
|
|
199
|
+
"chef-client.bat #{config_params}",
|
|
200
|
+
:timeout => Chef::Config[:windows_service][:watchdog_timeout],
|
|
201
|
+
:logger => Chef::Log
|
|
202
|
+
)
|
|
203
|
+
Chef::Log.debug "#{result.stdout}"
|
|
204
|
+
Chef::Log.debug "#{result.stderr}"
|
|
205
|
+
rescue Mixlib::ShellOut::CommandTimeout => e
|
|
206
|
+
Chef::Log.error "chef-client timed out\n(#{e})"
|
|
207
|
+
Chef::Log.error(<<-EOF)
|
|
208
208
|
Your chef-client run timed out. You can increase the time chef-client is given
|
|
209
209
|
to complete by configuring windows_service.watchdog_timeout in your client.rb.
|
|
210
210
|
EOF
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
end
|
|
211
|
+
rescue Mixlib::ShellOut::ShellCommandFailed => e
|
|
212
|
+
Chef::Log.warn "Not able to start chef-client in new process (#{e})"
|
|
213
|
+
rescue => e
|
|
214
|
+
Chef::Log.error e
|
|
215
|
+
ensure
|
|
216
|
+
# Once process exits, we log the current process' pid
|
|
217
|
+
Chef::Log.info "Child process exited (pid: #{Process.pid})"
|
|
219
218
|
end
|
|
220
219
|
|
|
221
220
|
def apply_config(config_file_path)
|
|
@@ -257,13 +256,13 @@ class Chef
|
|
|
257
256
|
# Based on config and whether or not STDOUT is a tty, should we setup a
|
|
258
257
|
# secondary logger for stdout?
|
|
259
258
|
def want_additional_logger?
|
|
260
|
-
( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? &&
|
|
259
|
+
( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && !Chef::Config[:daemonize]
|
|
261
260
|
end
|
|
262
261
|
|
|
263
262
|
# Use of output formatters is assumed if `force_formatter` is set or if
|
|
264
|
-
# `force_logger` is not set
|
|
263
|
+
# `force_logger` is not set
|
|
265
264
|
def using_output_formatter?
|
|
266
|
-
Chef::Config[:force_formatter] ||
|
|
265
|
+
Chef::Config[:force_formatter] || !Chef::Config[:force_logger]
|
|
267
266
|
end
|
|
268
267
|
|
|
269
268
|
def auto_log_level?
|
|
@@ -319,11 +318,11 @@ class Chef
|
|
|
319
318
|
|
|
320
319
|
Chef::Config.merge!(config)
|
|
321
320
|
rescue SocketError
|
|
322
|
-
Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}"
|
|
321
|
+
Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}")
|
|
323
322
|
rescue Chef::Exceptions::ConfigurationError => error
|
|
324
|
-
Chef::Application.fatal!("Error processing config file #{Chef::Config[:config_file]} with error #{error.message}"
|
|
323
|
+
Chef::Application.fatal!("Error processing config file #{Chef::Config[:config_file]} with error #{error.message}")
|
|
325
324
|
rescue Exception => error
|
|
326
|
-
Chef::Application.fatal!("Unknown error processing config file #{Chef::Config[:config_file]} with error #{error.message}"
|
|
325
|
+
Chef::Application.fatal!("Unknown error processing config file #{Chef::Config[:config_file]} with error #{error.message}")
|
|
327
326
|
end
|
|
328
327
|
end
|
|
329
328
|
|
data/lib/chef/application.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: AJ Christensen (<aj@chef.io>)
|
|
3
3
|
# Author:: Mark Mzyk (mmzyk@chef.io)
|
|
4
|
-
# Copyright:: Copyright 2008-
|
|
4
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -80,6 +80,10 @@ class Chef
|
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
+
def emit_warnings
|
|
84
|
+
Chef::Log.warn "Chef::Config[:zypper_check_gpg] is set to false which disables security checking on zypper packages" unless Chef::Config[:zypper_check_gpg]
|
|
85
|
+
end
|
|
86
|
+
|
|
83
87
|
# Parse configuration (options and config file)
|
|
84
88
|
def configure_chef
|
|
85
89
|
parse_options
|
|
@@ -140,16 +144,9 @@ class Chef
|
|
|
140
144
|
# unattended, the `force_formatter` option is provided.
|
|
141
145
|
#
|
|
142
146
|
# === Auto Log Level
|
|
143
|
-
#
|
|
144
|
-
#
|
|
145
|
-
# +using_output_formatter?+) and `:info` otherwise.
|
|
147
|
+
# The `log_level` of `:auto` means `:warn` in the formatter and `:info` in
|
|
148
|
+
# the logger.
|
|
146
149
|
#
|
|
147
|
-
# === Automatic STDOUT Logging
|
|
148
|
-
# When `force_logger` is configured (e.g., Chef 10 mode), a second logger
|
|
149
|
-
# with output on STDOUT is added when running in a console (STDOUT is a tty)
|
|
150
|
-
# and the configured log_location isn't STDOUT. This accounts for the case
|
|
151
|
-
# that a user has configured a log_location in client.rb, but is running
|
|
152
|
-
# chef-client by hand to troubleshoot a problem.
|
|
153
150
|
def configure_logging
|
|
154
151
|
configure_log_location
|
|
155
152
|
Chef::Log.init(MonoLogger.new(Chef::Config[:log_location]))
|
|
@@ -176,22 +173,21 @@ class Chef
|
|
|
176
173
|
end
|
|
177
174
|
end
|
|
178
175
|
|
|
176
|
+
# Based on config and whether or not STDOUT is a tty, should we setup a
|
|
177
|
+
# secondary logger for stdout?
|
|
178
|
+
def want_additional_logger?
|
|
179
|
+
( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && !Chef::Config[:daemonize]
|
|
180
|
+
end
|
|
181
|
+
|
|
179
182
|
def configure_stdout_logger
|
|
180
183
|
stdout_logger = MonoLogger.new(STDOUT)
|
|
181
184
|
stdout_logger.formatter = Chef::Log.logger.formatter
|
|
182
185
|
Chef::Log.loggers << stdout_logger
|
|
183
186
|
end
|
|
184
187
|
|
|
185
|
-
#
|
|
186
|
-
# secondary logger for stdout?
|
|
187
|
-
def want_additional_logger?
|
|
188
|
-
( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize]) && (Chef::Config[:force_logger])
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
# Use of output formatters is assumed if `force_formatter` is set or if
|
|
192
|
-
# `force_logger` is not set and STDOUT is to a console (tty)
|
|
188
|
+
# Use of output formatters is assumed if `force_formatter` is set or if `force_logger` is not set
|
|
193
189
|
def using_output_formatter?
|
|
194
|
-
Chef::Config[:force_formatter] ||
|
|
190
|
+
Chef::Config[:force_formatter] || !Chef::Config[:force_logger]
|
|
195
191
|
end
|
|
196
192
|
|
|
197
193
|
def auto_log_level?
|
|
@@ -332,12 +328,6 @@ class Chef
|
|
|
332
328
|
ENV
|
|
333
329
|
end
|
|
334
330
|
|
|
335
|
-
def emit_warnings
|
|
336
|
-
if Chef::Config[:chef_gem_compile_time]
|
|
337
|
-
Chef.deprecated :chef_gem_compile_time, "setting chef_gem_compile_time to true is deprecated"
|
|
338
|
-
end
|
|
339
|
-
end
|
|
340
|
-
|
|
341
331
|
class << self
|
|
342
332
|
def debug_stacktrace(e)
|
|
343
333
|
message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
|
|
@@ -78,14 +78,14 @@ class Chef
|
|
|
78
78
|
# We know all of our examples each live in a top-level `control_group` block - get this name now
|
|
79
79
|
outermost_group_desc = describe_groups.shift
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
[outermost_group_desc, {
|
|
82
82
|
:name => example.description,
|
|
83
83
|
:desc => example.full_description,
|
|
84
84
|
:resource_type => resource_type,
|
|
85
85
|
:resource_name => resource_name,
|
|
86
86
|
:context => describe_groups,
|
|
87
87
|
:line_number => example.metadata[:line_number],
|
|
88
|
-
}
|
|
88
|
+
}]
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
|
|
2
|
+
require "chef/exceptions"
|
|
3
|
+
|
|
4
|
+
class Chef
|
|
5
|
+
class Blacklist
|
|
6
|
+
|
|
7
|
+
# filter takes two arguments - the data you want to filter, and a blacklisted array
|
|
8
|
+
# of keys you want discluded. You can capture a subtree of the data to filter by
|
|
9
|
+
# providing a "/"-delimited string of keys. If some key includes "/"-characters,
|
|
10
|
+
# you must provide an array of keys instead.
|
|
11
|
+
#
|
|
12
|
+
# Blacklist.filter(
|
|
13
|
+
# { "filesystem" => {
|
|
14
|
+
# "/dev/disk" => {
|
|
15
|
+
# "size" => "10mb"
|
|
16
|
+
# },
|
|
17
|
+
# "map - autohome" => {
|
|
18
|
+
# "size" => "10mb"
|
|
19
|
+
# }
|
|
20
|
+
# },
|
|
21
|
+
# "network" => {
|
|
22
|
+
# "interfaces" => {
|
|
23
|
+
# "eth0" => {...},
|
|
24
|
+
# "eth1" => {...}
|
|
25
|
+
# }
|
|
26
|
+
# }
|
|
27
|
+
# },
|
|
28
|
+
# ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
|
|
29
|
+
# will exclude the eth0 and /dev/disk subtrees.
|
|
30
|
+
def self.filter(data, blacklist = nil)
|
|
31
|
+
return data if blacklist.nil?
|
|
32
|
+
|
|
33
|
+
blacklist.each do |item|
|
|
34
|
+
Chef::Log.warn("Removing item #{item}")
|
|
35
|
+
remove_data(data, item)
|
|
36
|
+
end
|
|
37
|
+
data
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Walk the data according to the keys provided by the blacklisted item
|
|
41
|
+
# to get a reference to the item that will be removed.
|
|
42
|
+
def self.remove_data(data, item)
|
|
43
|
+
parts = to_array(item)
|
|
44
|
+
|
|
45
|
+
item_ref = data
|
|
46
|
+
parts[0..-2].each do |part|
|
|
47
|
+
unless item_ref[part]
|
|
48
|
+
Chef::Log.warn("Could not find blacklist attribute #{item}.")
|
|
49
|
+
return nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
item_ref = item_ref[part]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
unless item_ref.key?(parts[-1])
|
|
56
|
+
Chef::Log.warn("Could not find blacklist attribute #{item}.")
|
|
57
|
+
return nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
item_ref.delete(parts[-1])
|
|
61
|
+
data
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
private_class_method :remove_data
|
|
65
|
+
|
|
66
|
+
# Accepts a String or an Array, and returns an Array of String keys that
|
|
67
|
+
# are used to traverse the data hash. Strings are split on "/", Arrays are
|
|
68
|
+
# assumed to contain exact keys (that is, Array elements will not be split
|
|
69
|
+
# by "/").
|
|
70
|
+
def self.to_array(item)
|
|
71
|
+
return item if item.kind_of? Array
|
|
72
|
+
|
|
73
|
+
parts = item.split("/")
|
|
74
|
+
parts.shift if !parts.empty? && parts[0].empty?
|
|
75
|
+
parts
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
private_class_method :to_array
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
end
|
data/lib/chef/chef_class.rb
CHANGED
|
@@ -30,6 +30,7 @@ require "chef/platform/provider_priority_map"
|
|
|
30
30
|
require "chef/platform/resource_priority_map"
|
|
31
31
|
require "chef/platform/provider_handler_map"
|
|
32
32
|
require "chef/platform/resource_handler_map"
|
|
33
|
+
require "chef/deprecated"
|
|
33
34
|
require "chef/event_dispatch/dsl"
|
|
34
35
|
require "chef/deprecated"
|
|
35
36
|
|
|
@@ -611,7 +611,7 @@ class Chef
|
|
|
611
611
|
private
|
|
612
612
|
|
|
613
613
|
def use_memory_store?(path)
|
|
614
|
-
|
|
614
|
+
path[0] == "sandboxes" || path[0] == "file_store" && path[1] == "checksums" || path == %w{environments _default}
|
|
615
615
|
end
|
|
616
616
|
|
|
617
617
|
def write_cookbook(path, data, *options)
|
|
@@ -768,7 +768,7 @@ class Chef
|
|
|
768
768
|
end
|
|
769
769
|
|
|
770
770
|
elsif path.length == 2 && path[0] != "cookbooks"
|
|
771
|
-
path[1] = path[1]
|
|
771
|
+
path[1] = path[1].gsub(/\.(rb|json)/, "")
|
|
772
772
|
end
|
|
773
773
|
|
|
774
774
|
path
|
|
@@ -779,15 +779,13 @@ class Chef
|
|
|
779
779
|
end
|
|
780
780
|
|
|
781
781
|
def path_always_exists?(path)
|
|
782
|
-
|
|
782
|
+
path.length == 1 && BASE_DIRNAMES.include?(path[0])
|
|
783
783
|
end
|
|
784
784
|
|
|
785
785
|
def with_entry(path)
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e)
|
|
790
|
-
end
|
|
786
|
+
yield Chef::ChefFS::FileSystem.resolve_path(chef_fs, to_chef_fs_path(path))
|
|
787
|
+
rescue Chef::ChefFS::FileSystem::NotFoundError => e
|
|
788
|
+
raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e)
|
|
791
789
|
end
|
|
792
790
|
|
|
793
791
|
def with_parent_dir(path, *options)
|