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
|
@@ -37,9 +37,9 @@ class Chef
|
|
|
37
37
|
return if new_resource.package_name.is_a?(Array)
|
|
38
38
|
# if we're passed something that looks like a filesystem path, with no source, use it
|
|
39
39
|
# - require at least one '/' in the path to avoid gem_package "foo" breaking if a file named 'foo' exists in the cwd
|
|
40
|
-
if new_resource.source.nil? && new_resource.package_name.match(/#{::File::SEPARATOR}/) && ::File.
|
|
40
|
+
if new_resource.source.nil? && new_resource.package_name.match(/#{::File::SEPARATOR}/) && ::File.exist?(new_resource.package_name)
|
|
41
41
|
Chef::Log.debug("No package source specified, but #{new_resource.package_name} exists on the filesystem, copying to package source")
|
|
42
|
-
new_resource.source(
|
|
42
|
+
new_resource.source(new_resource.package_name)
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -20,15 +20,13 @@ class Chef
|
|
|
20
20
|
module NotifyingBlock
|
|
21
21
|
|
|
22
22
|
def notifying_block(&block)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if
|
|
29
|
-
|
|
30
|
-
new_resource.updated_by_last_action(true)
|
|
31
|
-
end
|
|
23
|
+
subcontext = subcontext_block(&block)
|
|
24
|
+
Chef::Runner.new(subcontext).converge
|
|
25
|
+
ensure
|
|
26
|
+
# recipes don't have a new_resource
|
|
27
|
+
if respond_to?(:new_resource)
|
|
28
|
+
if subcontext && subcontext.resource_collection.any?(&:updated?)
|
|
29
|
+
new_resource.updated_by_last_action(true)
|
|
32
30
|
end
|
|
33
31
|
end
|
|
34
32
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2008-
|
|
3
|
+
# Copyright:: Copyright 2008-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");
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
require "chef/constants"
|
|
19
19
|
require "chef/property"
|
|
20
20
|
require "chef/delayed_evaluator"
|
|
21
|
+
require "chef/exceptions"
|
|
21
22
|
|
|
22
23
|
class Chef
|
|
23
24
|
module Mixin
|
|
@@ -102,8 +103,8 @@ class Chef
|
|
|
102
103
|
when Hash
|
|
103
104
|
validation.each do |check, carg|
|
|
104
105
|
check_method = "_pv_#{check}"
|
|
105
|
-
if
|
|
106
|
-
|
|
106
|
+
if respond_to?(check_method, true)
|
|
107
|
+
send(check_method, opts, key, carg)
|
|
107
108
|
else
|
|
108
109
|
raise ArgumentError, "Validation map has unknown check: #{check}"
|
|
109
110
|
end
|
|
@@ -332,8 +333,8 @@ class Chef
|
|
|
332
333
|
def _pv_name_property(opts, key, is_name_property = true)
|
|
333
334
|
if is_name_property
|
|
334
335
|
if opts[key].nil?
|
|
335
|
-
raise CannotValidateStaticallyError, "name_property cannot be evaluated without a resource." if self == Chef::Mixin::ParamsValidate
|
|
336
|
-
opts[key] =
|
|
336
|
+
raise Exceptions::CannotValidateStaticallyError, "name_property cannot be evaluated without a resource." if self == Chef::Mixin::ParamsValidate
|
|
337
|
+
opts[key] = instance_variable_get(:"@name")
|
|
337
338
|
end
|
|
338
339
|
end
|
|
339
340
|
end
|
|
@@ -404,7 +405,7 @@ class Chef
|
|
|
404
405
|
passed = to_be.any? do |tb|
|
|
405
406
|
case tb
|
|
406
407
|
when Proc
|
|
407
|
-
raise CannotValidateStaticallyError, "is: proc { } must be evaluated once for each resource" if self == Chef::Mixin::ParamsValidate
|
|
408
|
+
raise Exceptions::CannotValidateStaticallyError, "is: proc { } must be evaluated once for each resource" if self == Chef::Mixin::ParamsValidate
|
|
408
409
|
instance_exec(value, &tb)
|
|
409
410
|
when Property
|
|
410
411
|
begin
|
|
@@ -448,10 +449,10 @@ class Chef
|
|
|
448
449
|
#
|
|
449
450
|
def _pv_coerce(opts, key, coercer)
|
|
450
451
|
if opts.has_key?(key.to_s)
|
|
451
|
-
raise CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
|
452
|
+
raise Exceptions::CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
|
452
453
|
opts[key.to_s] = instance_exec(opts[key], &coercer)
|
|
453
454
|
elsif opts.has_key?(key.to_sym)
|
|
454
|
-
raise CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
|
455
|
+
raise Exceptions::CannotValidateStaticallyError, "coerce must be evaluated for each resource." if self == Chef::Mixin::ParamsValidate
|
|
455
456
|
opts[key.to_sym] = instance_exec(opts[key], &coercer)
|
|
456
457
|
end
|
|
457
458
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
|
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");
|
|
@@ -22,25 +22,23 @@ class Chef
|
|
|
22
22
|
|
|
23
23
|
def enforce_path_sanity(env = ENV)
|
|
24
24
|
if Chef::Config[:enforce_path_sanity]
|
|
25
|
-
env["PATH"] =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
env["PATH"] = env_path.encode("utf-8", invalid: :replace, undef: :replace)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
25
|
+
env["PATH"] = sanitized_path(env)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def sanitized_path(env = ENV)
|
|
30
|
+
env_path = env["PATH"].nil? ? "" : env["PATH"].dup
|
|
31
|
+
path_separator = Chef::Platform.windows? ? ";" : ":"
|
|
32
|
+
# ensure the Ruby and Gem bindirs are included
|
|
33
|
+
# mainly for 'full-stack' Chef installs
|
|
34
|
+
new_paths = env_path.split(path_separator)
|
|
35
|
+
[ ruby_bindir, gem_bindir ].compact.each do |path|
|
|
36
|
+
new_paths = [ path ] + new_paths unless new_paths.include?(path)
|
|
37
|
+
end
|
|
38
|
+
sane_paths.each do |path|
|
|
39
|
+
new_paths << path unless new_paths.include?(path)
|
|
43
40
|
end
|
|
41
|
+
new_paths.join(path_separator).encode("utf-8", invalid: :replace, undef: :replace)
|
|
44
42
|
end
|
|
45
43
|
|
|
46
44
|
private
|
data/lib/chef/mixin/securable.rb
CHANGED
|
@@ -110,7 +110,7 @@ class Chef
|
|
|
110
110
|
# equivalent to something like:
|
|
111
111
|
# def rights(permissions=nil, principals=nil, args_hash=nil)
|
|
112
112
|
define_method(name) do |permissions = nil, principals = nil, args_hash = nil|
|
|
113
|
-
rights =
|
|
113
|
+
rights = instance_variable_get("@#{name}".to_sym)
|
|
114
114
|
unless permissions.nil?
|
|
115
115
|
input = {
|
|
116
116
|
:permissions => permissions,
|
data/lib/chef/mixin/shell_out.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2010-
|
|
3
|
+
# Copyright:: Copyright 2010-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");
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
|
|
18
18
|
require "mixlib/shellout"
|
|
19
|
+
require "chef/mixin/path_sanity"
|
|
19
20
|
|
|
20
21
|
class Chef
|
|
21
22
|
module Mixin
|
|
22
23
|
module ShellOut
|
|
24
|
+
include Chef::Mixin::PathSanity
|
|
23
25
|
|
|
24
26
|
# PREFERRED APIS:
|
|
25
27
|
#
|
|
@@ -75,6 +77,24 @@ class Chef
|
|
|
75
77
|
end
|
|
76
78
|
end
|
|
77
79
|
|
|
80
|
+
# helper sugar for resources that support passing timeouts to shell_out
|
|
81
|
+
|
|
82
|
+
def shell_out_compact_timeout(*args, **options)
|
|
83
|
+
raise "object is not a resource that supports timeouts" unless respond_to?(:new_resource) && new_resource.respond_to?(:timeout)
|
|
84
|
+
options_dup = options.dup
|
|
85
|
+
options_dup[:timeout] = new_resource.timeout if new_resource.timeout
|
|
86
|
+
options_dup[:timeout] = 900 unless options_dup.key?(:timeout)
|
|
87
|
+
shell_out_compact(*args, **options_dup)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def shell_out_compact_timeout!(*args, **options)
|
|
91
|
+
raise "object is not a resource that supports timeouts" unless respond_to?(:new_resource) && new_resource.respond_to?(:timeout)
|
|
92
|
+
options_dup = options.dup
|
|
93
|
+
options_dup[:timeout] = new_resource.timeout if new_resource.timeout
|
|
94
|
+
options_dup[:timeout] = 900 unless options_dup.key?(:timeout)
|
|
95
|
+
shell_out_compact!(*args, **options_dup)
|
|
96
|
+
end
|
|
97
|
+
|
|
78
98
|
# shell_out! runs a command on the system and will raise an error if the command fails, which is what you want
|
|
79
99
|
# for debugging, shell_out and shell_out! both will display command output to the tty when the log level is debug
|
|
80
100
|
# Generally speaking, 'extend Chef::Mixin::ShellOut' in your recipes and include 'Chef::Mixin::ShellOut' in your LWRPs
|
|
@@ -89,6 +109,7 @@ class Chef
|
|
|
89
109
|
"LC_ALL" => Chef::Config[:internal_locale],
|
|
90
110
|
"LANGUAGE" => Chef::Config[:internal_locale],
|
|
91
111
|
"LANG" => Chef::Config[:internal_locale],
|
|
112
|
+
env_path => sanitized_path,
|
|
92
113
|
}.update(options[env_key] || {})
|
|
93
114
|
shell_out_command(*args, **options)
|
|
94
115
|
end
|
|
@@ -110,28 +131,6 @@ class Chef
|
|
|
110
131
|
cmd
|
|
111
132
|
end
|
|
112
133
|
|
|
113
|
-
DEPRECATED_OPTIONS =
|
|
114
|
-
[ [:command_log_level, :log_level],
|
|
115
|
-
[:command_log_prepend, :log_tag] ]
|
|
116
|
-
|
|
117
|
-
# CHEF-3090: Deprecate command_log_level and command_log_prepend
|
|
118
|
-
# Patterned after https://github.com/chef/chef/commit/e1509990b559984b43e428d4d801c394e970f432
|
|
119
|
-
def run_command_compatible_options(command_args)
|
|
120
|
-
return command_args unless command_args.last.is_a?(Hash)
|
|
121
|
-
|
|
122
|
-
my_command_args = command_args.dup
|
|
123
|
-
my_options = my_command_args.last
|
|
124
|
-
|
|
125
|
-
DEPRECATED_OPTIONS.each do |old_option, new_option|
|
|
126
|
-
# Edge case: someone specifies :command_log_level and 'command_log_level' in the option hash
|
|
127
|
-
next unless value = my_options.delete(old_option) || my_options.delete(old_option.to_s)
|
|
128
|
-
deprecate_option old_option, new_option
|
|
129
|
-
my_options[new_option] = value
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
return my_command_args
|
|
133
|
-
end
|
|
134
|
-
|
|
135
134
|
# Helper for sublcasses to convert an array of string args into a string. It
|
|
136
135
|
# will compact nil or empty strings in the array and will join the array elements
|
|
137
136
|
# with spaces, without introducing any double spaces for nil/empty elements.
|
|
@@ -139,7 +138,8 @@ class Chef
|
|
|
139
138
|
# @param args [String] variable number of string arguments
|
|
140
139
|
# @return [String] nicely concatenated string or empty string
|
|
141
140
|
def a_to_s(*args)
|
|
142
|
-
#
|
|
141
|
+
# can't quite deprecate this yet
|
|
142
|
+
#Chef.deprecated(:package_misc, "a_to_s is deprecated use shell_out_compact or shell_out_compact_timeout instead")
|
|
143
143
|
args.flatten.reject { |i| i.nil? || i == "" }.map(&:to_s).join(" ")
|
|
144
144
|
end
|
|
145
145
|
|
|
@@ -166,16 +166,12 @@ class Chef
|
|
|
166
166
|
private
|
|
167
167
|
|
|
168
168
|
def shell_out_command(*command_args)
|
|
169
|
-
cmd = Mixlib::ShellOut.new(*
|
|
169
|
+
cmd = Mixlib::ShellOut.new(*command_args)
|
|
170
170
|
cmd.live_stream ||= io_for_live_stream
|
|
171
171
|
cmd.run_command
|
|
172
172
|
cmd
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
def deprecate_option(old_option, new_option)
|
|
176
|
-
Chef.deprecated :internal_api, "Chef::Mixin::ShellOut option :#{old_option} is deprecated. Use :#{new_option}"
|
|
177
|
-
end
|
|
178
|
-
|
|
179
175
|
def io_for_live_stream
|
|
180
176
|
if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.debug?
|
|
181
177
|
STDOUT
|
|
@@ -183,6 +179,14 @@ class Chef
|
|
|
183
179
|
nil
|
|
184
180
|
end
|
|
185
181
|
end
|
|
182
|
+
|
|
183
|
+
def env_path
|
|
184
|
+
if Chef::Platform.windows?
|
|
185
|
+
"Path"
|
|
186
|
+
else
|
|
187
|
+
"PATH"
|
|
188
|
+
end
|
|
189
|
+
end
|
|
186
190
|
end
|
|
187
191
|
end
|
|
188
192
|
end
|
|
@@ -22,9 +22,9 @@ class Chef
|
|
|
22
22
|
|
|
23
23
|
def write(message)
|
|
24
24
|
data = message.match(/(\[.+?\] )?([\w]+):(.*)$/)
|
|
25
|
-
|
|
25
|
+
send(data[2].downcase.chomp.to_sym, data[3].strip)
|
|
26
26
|
rescue NoMethodError
|
|
27
|
-
|
|
27
|
+
send(:info, message)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
end
|
data/lib/chef/mixin/uris.rb
CHANGED
|
@@ -31,12 +31,10 @@ class Chef
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def as_uri(source)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
URI.parse(Addressable::URI.encode(source))
|
|
39
|
-
end
|
|
34
|
+
URI.parse(source)
|
|
35
|
+
rescue URI::InvalidURIError
|
|
36
|
+
Chef::Log.warn("#{source} was an invalid URI. Trying to escape invalid characters")
|
|
37
|
+
URI.parse(Addressable::URI.encode(source))
|
|
40
38
|
end
|
|
41
39
|
|
|
42
40
|
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright:: Copyright 2017, Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
class Chef
|
|
19
|
+
module Mixin
|
|
20
|
+
module VersionedAPI
|
|
21
|
+
|
|
22
|
+
def minimum_api_version(version = nil)
|
|
23
|
+
if version
|
|
24
|
+
@minimum_api_version = version
|
|
25
|
+
else
|
|
26
|
+
@minimum_api_version
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
module VersionedAPIFactory
|
|
33
|
+
|
|
34
|
+
def versioned_interfaces
|
|
35
|
+
@versioned_interfaces ||= []
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def add_versioned_api_class(klass)
|
|
39
|
+
versioned_interfaces << klass
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def versioned_api_class
|
|
43
|
+
get_class_for(:max_server_version)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def get_class_for(type)
|
|
47
|
+
versioned_interfaces.select do |klass|
|
|
48
|
+
version = klass.send(:minimum_api_version)
|
|
49
|
+
# min and max versions will be nil if we've not made a request to the server yet,
|
|
50
|
+
# in which case we'll just start with the highest version and see what happens
|
|
51
|
+
ServerAPIVersions.instance.min_server_version.nil? || (version >= ServerAPIVersions.instance.min_server_version && version <= ServerAPIVersions.instance.send(type))
|
|
52
|
+
end
|
|
53
|
+
.sort { |a, b| a.send(:minimum_api_version) <=> b.send(:minimum_api_version) }
|
|
54
|
+
.last
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def def_versioned_delegator(method)
|
|
58
|
+
line_no = __LINE__; str = %{
|
|
59
|
+
def self.#{method}(*args, &block)
|
|
60
|
+
versioned_api_class.__send__(:#{method}, *args, &block)
|
|
61
|
+
end
|
|
62
|
+
}
|
|
63
|
+
module_eval(str, __FILE__, line_no)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# When teeing up an HTTP request, we need to be able to ask which API version we should use.
|
|
67
|
+
# Something in Net::HTTP seems to expect to strip headers, so we return this as a string.
|
|
68
|
+
def best_request_version
|
|
69
|
+
klass = get_class_for(:max_server_version)
|
|
70
|
+
klass.minimum_api_version.to_s
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def possible_requests
|
|
74
|
+
versioned_interfaces.length
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def new(*args)
|
|
78
|
+
object = versioned_api_class.allocate
|
|
79
|
+
object.send(:initialize, *args)
|
|
80
|
+
object
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
data/lib/chef/mixin/which.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Author:: Lamont Granquist <lamont@chef.io>
|
|
3
|
-
# Copyright:: Copyright 2010-
|
|
3
|
+
# Copyright:: Copyright 2010-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");
|
|
@@ -18,15 +18,32 @@
|
|
|
18
18
|
class Chef
|
|
19
19
|
module Mixin
|
|
20
20
|
module Which
|
|
21
|
-
def which(
|
|
21
|
+
def which(*cmds, extra_path: nil, &block)
|
|
22
|
+
where(*cmds, extra_path: extra_path, &block).first || false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def where(*cmds, extra_path: nil, &block)
|
|
22
26
|
# NOTE: unnecessarily duplicates function of path_sanity
|
|
23
27
|
extra_path ||= [ "/bin", "/usr/bin", "/sbin", "/usr/sbin" ]
|
|
24
|
-
paths =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
paths = env_path.split(File::PATH_SEPARATOR) + extra_path
|
|
29
|
+
cmds.map do |cmd|
|
|
30
|
+
paths.map do |path|
|
|
31
|
+
filename = Chef.path_to(File.join(path, cmd))
|
|
32
|
+
filename if valid_executable?(filename, &block)
|
|
33
|
+
end.compact
|
|
34
|
+
end.flatten
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
# for test stubbing
|
|
40
|
+
def env_path
|
|
41
|
+
ENV["PATH"]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def valid_executable?(filename, &block)
|
|
45
|
+
return false unless File.executable?(filename) && !File.directory?(filename)
|
|
46
|
+
block ? yield(filename) : true
|
|
30
47
|
end
|
|
31
48
|
end
|
|
32
49
|
end
|
|
@@ -74,11 +74,11 @@ class Chef
|
|
|
74
74
|
|
|
75
75
|
def node_supports_windows_architecture?(node, desired_architecture)
|
|
76
76
|
assert_valid_windows_architecture!(desired_architecture)
|
|
77
|
-
|
|
77
|
+
( node_windows_architecture(node) == :x86_64 ) || ( desired_architecture == :i386 )
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
def valid_windows_architecture?(architecture)
|
|
81
|
-
|
|
81
|
+
( architecture == :x86_64 ) || ( architecture == :i386 )
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def assert_valid_windows_architecture!(architecture)
|
|
@@ -103,11 +103,9 @@ class Chef
|
|
|
103
103
|
(0xE000..0xFFFD), (0x10000..0x10FFFF)]
|
|
104
104
|
|
|
105
105
|
def xml_escape(unescaped_str)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
unescaped_str.unpack("C*").map { |char| xml_escape_char!(char) }.join
|
|
110
|
-
end
|
|
106
|
+
unescaped_str.unpack("U*").map { |char| xml_escape_char!(char) }.join
|
|
107
|
+
rescue
|
|
108
|
+
unescaped_str.unpack("C*").map { |char| xml_escape_char!(char) }.join
|
|
111
109
|
end
|
|
112
110
|
|
|
113
111
|
private
|
data/lib/chef/mixins.rb
CHANGED
data/lib/chef/node/attribute.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: AJ Christensen (<aj@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");
|
|
@@ -216,16 +216,12 @@ class Chef
|
|
|
216
216
|
# that precedence level, +value+ will be the symbol +:not_present+.
|
|
217
217
|
def debug_value(*args)
|
|
218
218
|
COMPONENTS.map do |component|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
elsif so_far.has_key?(key)
|
|
224
|
-
so_far[key]
|
|
225
|
-
else
|
|
219
|
+
value =
|
|
220
|
+
begin
|
|
221
|
+
instance_variable_get(component).read!(*args)
|
|
222
|
+
rescue
|
|
226
223
|
:not_present
|
|
227
224
|
end
|
|
228
|
-
end
|
|
229
225
|
[component.to_s.sub(/^@/, ""), value]
|
|
230
226
|
end
|
|
231
227
|
end
|
|
@@ -454,19 +450,19 @@ class Chef
|
|
|
454
450
|
end
|
|
455
451
|
|
|
456
452
|
def write(level, *args, &block)
|
|
457
|
-
|
|
453
|
+
send(level).write(*args, &block)
|
|
458
454
|
end
|
|
459
455
|
|
|
460
456
|
def write!(level, *args, &block)
|
|
461
|
-
|
|
457
|
+
send(level).write!(*args, &block)
|
|
462
458
|
end
|
|
463
459
|
|
|
464
460
|
def unlink(level, *path)
|
|
465
|
-
|
|
461
|
+
send(level).unlink(*path)
|
|
466
462
|
end
|
|
467
463
|
|
|
468
464
|
def unlink!(level, *path)
|
|
469
|
-
|
|
465
|
+
send(level).unlink!(*path)
|
|
470
466
|
end
|
|
471
467
|
|
|
472
468
|
alias :attribute? :has_key?
|
|
@@ -476,25 +472,6 @@ class Chef
|
|
|
476
472
|
|
|
477
473
|
alias :each_attribute :each
|
|
478
474
|
|
|
479
|
-
def method_missing(symbol, *args)
|
|
480
|
-
if symbol == :to_ary
|
|
481
|
-
merged_attributes.send(symbol, *args)
|
|
482
|
-
elsif args.empty?
|
|
483
|
-
Chef.deprecated(:attributes, %q{method access to node attributes (node.foo.bar) is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]["bar"])})
|
|
484
|
-
if key?(symbol)
|
|
485
|
-
self[symbol]
|
|
486
|
-
else
|
|
487
|
-
raise NoMethodError, "Undefined method or attribute `#{symbol}' on `node'"
|
|
488
|
-
end
|
|
489
|
-
elsif symbol.to_s =~ /=$/
|
|
490
|
-
Chef.deprecated(:attributes, %q{method setting of node attributes (node.foo="bar") is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]="bar")})
|
|
491
|
-
key_to_set = symbol.to_s[/^(.+)=$/, 1]
|
|
492
|
-
self[key_to_set] = (args.length == 1 ? args[0] : args)
|
|
493
|
-
else
|
|
494
|
-
raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'"
|
|
495
|
-
end
|
|
496
|
-
end
|
|
497
|
-
|
|
498
475
|
def to_s
|
|
499
476
|
merged_attributes.to_s
|
|
500
477
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2012-
|
|
3
|
+
# Copyright:: Copyright 2012-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");
|
|
@@ -180,24 +180,6 @@ class Chef
|
|
|
180
180
|
|
|
181
181
|
alias :attribute? :has_key?
|
|
182
182
|
|
|
183
|
-
def method_missing(symbol, *args)
|
|
184
|
-
# Calling `puts arg` implicitly calls #to_ary on `arg`. If `arg` does
|
|
185
|
-
# not implement #to_ary, ruby recognizes it as a single argument, and
|
|
186
|
-
# if it returns an Array, then ruby prints each element. If we don't
|
|
187
|
-
# account for that here, we'll auto-vivify a VividMash for the key
|
|
188
|
-
# :to_ary which creates an unwanted key and raises a TypeError.
|
|
189
|
-
if symbol == :to_ary
|
|
190
|
-
super
|
|
191
|
-
elsif args.empty?
|
|
192
|
-
self[symbol]
|
|
193
|
-
elsif symbol.to_s =~ /=$/
|
|
194
|
-
key_to_set = symbol.to_s[/^(.+)=$/, 1]
|
|
195
|
-
self[key_to_set] = (args.length == 1 ? args[0] : args)
|
|
196
|
-
else
|
|
197
|
-
raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'. To set an attribute, use `#{symbol}=value' instead."
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
|
|
201
183
|
def convert_key(key)
|
|
202
184
|
super
|
|
203
185
|
end
|
data/lib/chef/node/common_api.rb
CHANGED
|
@@ -24,7 +24,7 @@ class Chef
|
|
|
24
24
|
# method-style access to attributes
|
|
25
25
|
|
|
26
26
|
def valid_container?(obj, key)
|
|
27
|
-
|
|
27
|
+
obj.is_a?(Hash) || (obj.is_a?(Array) && key.is_a?(Integer))
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
private :valid_container?
|
|
@@ -85,16 +85,14 @@ class Chef
|
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
|
-
|
|
88
|
+
true
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
# this is a safe non-autovivifying reader that returns nil if the attribute does not exist
|
|
92
92
|
def read(*path)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
nil
|
|
97
|
-
end
|
|
93
|
+
read!(*path)
|
|
94
|
+
rescue Chef::Exceptions::NoSuchAttribute
|
|
95
|
+
nil
|
|
98
96
|
end
|
|
99
97
|
|
|
100
98
|
# non-autovivifying reader that throws an exception if the attribute does not exist
|