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
|
@@ -26,6 +26,10 @@ class Chef
|
|
|
26
26
|
|
|
27
27
|
provides :env, os: "windows"
|
|
28
28
|
|
|
29
|
+
def whyrun_supported?
|
|
30
|
+
false
|
|
31
|
+
end
|
|
32
|
+
|
|
29
33
|
def create_env
|
|
30
34
|
obj = env_obj(@new_resource.key_name)
|
|
31
35
|
unless obj
|
|
@@ -54,7 +58,7 @@ class Chef
|
|
|
54
58
|
|
|
55
59
|
def env_value(key_name)
|
|
56
60
|
obj = env_obj(key_name)
|
|
57
|
-
|
|
61
|
+
obj ? obj.variablevalue : ENV[key_name]
|
|
58
62
|
end
|
|
59
63
|
|
|
60
64
|
def env_obj(key_name)
|
data/lib/chef/provider/env.rb
CHANGED
|
@@ -17,34 +17,36 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require "chef/provider"
|
|
20
|
-
require "chef/mixin/command"
|
|
21
20
|
require "chef/resource/env"
|
|
22
21
|
|
|
23
22
|
class Chef
|
|
24
23
|
class Provider
|
|
25
24
|
class Env < Chef::Provider
|
|
26
|
-
include Chef::Mixin::Command
|
|
27
25
|
attr_accessor :key_exists
|
|
28
26
|
|
|
29
27
|
provides :env, os: "!windows"
|
|
30
28
|
|
|
29
|
+
def whyrun_supported?
|
|
30
|
+
false
|
|
31
|
+
end
|
|
32
|
+
|
|
31
33
|
def initialize(new_resource, run_context)
|
|
32
34
|
super
|
|
33
35
|
@key_exists = true
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
def load_current_resource
|
|
37
|
-
@current_resource = Chef::Resource::Env.new(
|
|
38
|
-
|
|
39
|
+
@current_resource = Chef::Resource::Env.new(new_resource.name)
|
|
40
|
+
current_resource.key_name(new_resource.key_name)
|
|
39
41
|
|
|
40
|
-
if env_key_exists(
|
|
41
|
-
|
|
42
|
+
if env_key_exists(new_resource.key_name)
|
|
43
|
+
current_resource.value(env_value(new_resource.key_name))
|
|
42
44
|
else
|
|
43
45
|
@key_exists = false
|
|
44
|
-
Chef::Log.debug("#{
|
|
46
|
+
Chef::Log.debug("#{new_resource} key does not exist")
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
current_resource
|
|
48
50
|
end
|
|
49
51
|
|
|
50
52
|
def env_value(key_name)
|
|
@@ -61,7 +63,7 @@ class Chef
|
|
|
61
63
|
# <true>:: If a change is required
|
|
62
64
|
# <false>:: If a change is not required
|
|
63
65
|
def requires_modify_or_create?
|
|
64
|
-
if
|
|
66
|
+
if new_resource.delim
|
|
65
67
|
#e.g. check for existing value within PATH
|
|
66
68
|
new_values.inject(0) do |index, val|
|
|
67
69
|
next_index = current_values.find_index val
|
|
@@ -70,7 +72,7 @@ class Chef
|
|
|
70
72
|
end
|
|
71
73
|
false
|
|
72
74
|
else
|
|
73
|
-
|
|
75
|
+
new_resource.value != current_resource.value
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
78
|
|
|
@@ -80,13 +82,13 @@ class Chef
|
|
|
80
82
|
if @key_exists
|
|
81
83
|
if requires_modify_or_create?
|
|
82
84
|
modify_env
|
|
83
|
-
Chef::Log.info("#{
|
|
84
|
-
|
|
85
|
+
Chef::Log.info("#{new_resource} altered")
|
|
86
|
+
new_resource.updated_by_last_action(true)
|
|
85
87
|
end
|
|
86
88
|
else
|
|
87
89
|
create_env
|
|
88
|
-
Chef::Log.info("#{
|
|
89
|
-
|
|
90
|
+
Chef::Log.info("#{new_resource} created")
|
|
91
|
+
new_resource.updated_by_last_action(true)
|
|
90
92
|
end
|
|
91
93
|
end
|
|
92
94
|
|
|
@@ -97,24 +99,24 @@ class Chef
|
|
|
97
99
|
# <false>:: Caller should delete the key, either no :delim was specific or value was empty
|
|
98
100
|
# after we removed the element.
|
|
99
101
|
def delete_element
|
|
100
|
-
return false unless
|
|
102
|
+
return false unless new_resource.delim #no delim: delete the key
|
|
101
103
|
needs_delete = new_values.any? { |v| current_values.include?(v) }
|
|
102
104
|
if !needs_delete
|
|
103
|
-
Chef::Log.debug("#{
|
|
105
|
+
Chef::Log.debug("#{new_resource} element '#{new_resource.value}' does not exist")
|
|
104
106
|
return true #do not delete the key
|
|
105
107
|
else
|
|
106
108
|
new_value =
|
|
107
109
|
current_values.select do |item|
|
|
108
110
|
not new_values.include?(item)
|
|
109
|
-
end.join(
|
|
111
|
+
end.join(new_resource.delim)
|
|
110
112
|
|
|
111
113
|
if new_value.empty?
|
|
112
114
|
return false #nothing left here, delete the key
|
|
113
115
|
else
|
|
114
|
-
old_value =
|
|
116
|
+
old_value = new_resource.value(new_value)
|
|
115
117
|
create_env
|
|
116
|
-
Chef::Log.debug("#{
|
|
117
|
-
|
|
118
|
+
Chef::Log.debug("#{new_resource} deleted #{old_value} element")
|
|
119
|
+
new_resource.updated_by_last_action(true)
|
|
118
120
|
return true #we removed the element and updated; do not delete the key
|
|
119
121
|
end
|
|
120
122
|
end
|
|
@@ -123,8 +125,8 @@ class Chef
|
|
|
123
125
|
def action_delete
|
|
124
126
|
if @key_exists && !delete_element
|
|
125
127
|
delete_env
|
|
126
|
-
Chef::Log.info("#{
|
|
127
|
-
|
|
128
|
+
Chef::Log.info("#{new_resource} deleted")
|
|
129
|
+
new_resource.updated_by_last_action(true)
|
|
128
130
|
end
|
|
129
131
|
end
|
|
130
132
|
|
|
@@ -132,16 +134,16 @@ class Chef
|
|
|
132
134
|
if @key_exists
|
|
133
135
|
if requires_modify_or_create?
|
|
134
136
|
modify_env
|
|
135
|
-
Chef::Log.info("#{
|
|
136
|
-
|
|
137
|
+
Chef::Log.info("#{new_resource} modified")
|
|
138
|
+
new_resource.updated_by_last_action(true)
|
|
137
139
|
end
|
|
138
140
|
else
|
|
139
|
-
raise Chef::Exceptions::Env, "Cannot modify #{
|
|
141
|
+
raise Chef::Exceptions::Env, "Cannot modify #{new_resource} - key does not exist!"
|
|
140
142
|
end
|
|
141
143
|
end
|
|
142
144
|
|
|
143
145
|
def create_env
|
|
144
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :#{
|
|
146
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :#{new_resource.action}"
|
|
145
147
|
end
|
|
146
148
|
|
|
147
149
|
def delete_env
|
|
@@ -149,20 +151,20 @@ class Chef
|
|
|
149
151
|
end
|
|
150
152
|
|
|
151
153
|
def modify_env
|
|
152
|
-
if
|
|
153
|
-
|
|
154
|
+
if new_resource.delim
|
|
155
|
+
new_resource.value((new_values + current_values).uniq.join(new_resource.delim))
|
|
154
156
|
end
|
|
155
157
|
create_env
|
|
156
158
|
end
|
|
157
159
|
|
|
158
160
|
# Returns the current values to split by delimiter
|
|
159
161
|
def current_values
|
|
160
|
-
@current_values ||=
|
|
162
|
+
@current_values ||= current_resource.value.split(new_resource.delim)
|
|
161
163
|
end
|
|
162
164
|
|
|
163
165
|
# Returns the new values to split by delimiter
|
|
164
166
|
def new_values
|
|
165
|
-
@new_values ||=
|
|
167
|
+
@new_values ||= new_resource.value.split(new_resource.delim)
|
|
166
168
|
end
|
|
167
169
|
end
|
|
168
170
|
end
|
|
@@ -17,13 +17,11 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require "chef/log"
|
|
20
|
-
require "chef/mixin/command"
|
|
21
20
|
require "chef/provider"
|
|
22
21
|
|
|
23
22
|
class Chef
|
|
24
23
|
class Provider
|
|
25
24
|
class ErlCall < Chef::Provider
|
|
26
|
-
include Chef::Mixin::Command
|
|
27
25
|
|
|
28
26
|
provides :erl_call
|
|
29
27
|
|
|
@@ -31,29 +29,25 @@ class Chef
|
|
|
31
29
|
super(node, new_resource)
|
|
32
30
|
end
|
|
33
31
|
|
|
34
|
-
def whyrun_supported?
|
|
35
|
-
true
|
|
36
|
-
end
|
|
37
|
-
|
|
38
32
|
def load_current_resource
|
|
39
33
|
true
|
|
40
34
|
end
|
|
41
35
|
|
|
42
36
|
def action_run
|
|
43
|
-
case
|
|
37
|
+
case new_resource.name_type
|
|
44
38
|
when "sname"
|
|
45
|
-
node = "-sname #{
|
|
39
|
+
node = "-sname #{new_resource.node_name}"
|
|
46
40
|
when "name"
|
|
47
|
-
node = "-name #{
|
|
41
|
+
node = "-name #{new_resource.node_name}"
|
|
48
42
|
end
|
|
49
43
|
|
|
50
|
-
if
|
|
51
|
-
cookie = "-c #{
|
|
44
|
+
if new_resource.cookie
|
|
45
|
+
cookie = "-c #{new_resource.cookie}"
|
|
52
46
|
else
|
|
53
47
|
cookie = ""
|
|
54
48
|
end
|
|
55
49
|
|
|
56
|
-
if
|
|
50
|
+
if new_resource.distributed
|
|
57
51
|
distributed = "-s"
|
|
58
52
|
else
|
|
59
53
|
distributed = ""
|
|
@@ -62,44 +56,18 @@ class Chef
|
|
|
62
56
|
command = "erl_call -e #{distributed} #{node} #{cookie}"
|
|
63
57
|
|
|
64
58
|
converge_by("run erlang block") do
|
|
65
|
-
|
|
66
|
-
pid, stdin, stdout, stderr = popen4(command, :waitlast => true)
|
|
67
|
-
|
|
68
|
-
Chef::Log.debug("#{@new_resource} running")
|
|
69
|
-
Chef::Log.debug("#{@new_resource} command: #{command}")
|
|
70
|
-
Chef::Log.debug("#{@new_resource} code: #{@new_resource.code}")
|
|
71
|
-
|
|
72
|
-
@new_resource.code.each_line { |line| stdin.puts(line.chomp) }
|
|
73
|
-
|
|
74
|
-
stdin.close
|
|
75
|
-
|
|
76
|
-
Chef::Log.debug("#{@new_resource} output: ")
|
|
59
|
+
so = shell_out!(command, input: new_resource.code)
|
|
77
60
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
stderr_output = ""
|
|
83
|
-
stderr.each_line { |line| stderr_output << line }
|
|
84
|
-
stderr.close
|
|
85
|
-
|
|
86
|
-
# fail if stderr contains anything
|
|
87
|
-
if stderr_output.length > 0
|
|
88
|
-
raise Chef::Exceptions::ErlCall, stderr_output
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# fail if the first 4 characters aren't "{ok,"
|
|
92
|
-
unless stdout_output[0..3].include?("{ok,")
|
|
93
|
-
raise Chef::Exceptions::ErlCall, stdout_output
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
@new_resource.updated_by_last_action(true)
|
|
61
|
+
# fail if stderr contains anything
|
|
62
|
+
if so.stderr.length > 0
|
|
63
|
+
raise Chef::Exceptions::ErlCall, so.stderr
|
|
64
|
+
end
|
|
97
65
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
Process.wait(pid) if pid
|
|
66
|
+
# fail if the first 4 characters aren't "{ok,"
|
|
67
|
+
unless so.stdout[0..3].include?("{ok,")
|
|
68
|
+
raise Chef::Exceptions::ErlCall, so.stdout
|
|
102
69
|
end
|
|
70
|
+
|
|
103
71
|
end
|
|
104
72
|
end
|
|
105
73
|
|
|
@@ -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");
|
|
@@ -27,21 +27,17 @@ class Chef
|
|
|
27
27
|
|
|
28
28
|
provides :execute
|
|
29
29
|
|
|
30
|
-
def_delegators
|
|
30
|
+
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates
|
|
31
31
|
|
|
32
32
|
def load_current_resource
|
|
33
33
|
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
|
34
34
|
current_resource
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def whyrun_supported?
|
|
38
|
-
true
|
|
39
|
-
end
|
|
40
|
-
|
|
41
37
|
def define_resource_requirements
|
|
42
|
-
# @todo: this should change to raise in some appropriate major version bump.
|
|
43
38
|
if creates && creates_relative? && !cwd
|
|
44
|
-
|
|
39
|
+
# FIXME? move this onto the resource?
|
|
40
|
+
raise Chef::Exceptions::Execute, "Please either specify a full path for the creates attribute, or specify a cwd propoerty to the #{new_resource} resource"
|
|
45
41
|
end
|
|
46
42
|
end
|
|
47
43
|
|
|
@@ -92,6 +88,8 @@ class Chef
|
|
|
92
88
|
opts[:returns] = returns if returns
|
|
93
89
|
opts[:environment] = environment if environment
|
|
94
90
|
opts[:user] = user if user
|
|
91
|
+
opts[:domain] = domain if domain
|
|
92
|
+
opts[:password] = password if password
|
|
95
93
|
opts[:group] = group if group
|
|
96
94
|
opts[:cwd] = cwd if cwd
|
|
97
95
|
opts[:umask] = umask if umask
|
|
@@ -120,6 +118,7 @@ class Chef
|
|
|
120
118
|
( cwd && creates_relative? ) ? ::File.join(cwd, creates) : creates
|
|
121
119
|
))
|
|
122
120
|
end
|
|
121
|
+
|
|
123
122
|
end
|
|
124
123
|
end
|
|
125
124
|
end
|
data/lib/chef/provider/file.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Lamont Granquist (<lamont@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");
|
|
@@ -30,8 +30,6 @@ require "chef/mixin/enforce_ownership_and_permissions"
|
|
|
30
30
|
require "chef/util/backup"
|
|
31
31
|
require "chef/util/diff"
|
|
32
32
|
require "chef/util/selinux"
|
|
33
|
-
require "chef/deprecation/provider/file"
|
|
34
|
-
require "chef/deprecation/warnings"
|
|
35
33
|
require "chef/file_content_management/deploy"
|
|
36
34
|
|
|
37
35
|
# The Tao of File Providers:
|
|
@@ -52,10 +50,6 @@ class Chef
|
|
|
52
50
|
include Chef::Util::Selinux
|
|
53
51
|
include Chef::Mixin::FileClass
|
|
54
52
|
|
|
55
|
-
extend Chef::Deprecation::Warnings
|
|
56
|
-
include Chef::Deprecation::Provider::File
|
|
57
|
-
add_deprecation_warnings_for(Chef::Deprecation::Provider::File.instance_methods)
|
|
58
|
-
|
|
59
53
|
provides :file
|
|
60
54
|
|
|
61
55
|
attr_reader :deployment_strategy
|
|
@@ -72,10 +66,6 @@ class Chef
|
|
|
72
66
|
super
|
|
73
67
|
end
|
|
74
68
|
|
|
75
|
-
def whyrun_supported?
|
|
76
|
-
true
|
|
77
|
-
end
|
|
78
|
-
|
|
79
69
|
def load_current_resource
|
|
80
70
|
# true if there is a symlink and we need to manage what it points at
|
|
81
71
|
@managing_symlink = file_class.symlink?(new_resource.path) && ( new_resource.manage_symlink_source || new_resource.manage_symlink_source.nil? )
|
|
@@ -95,7 +85,7 @@ class Chef
|
|
|
95
85
|
# true if we are going to be creating a new file
|
|
96
86
|
@needs_creating = !::File.exist?(new_resource.path) || needs_unlinking?
|
|
97
87
|
|
|
98
|
-
# Let children resources override constructing the
|
|
88
|
+
# Let children resources override constructing the current_resource
|
|
99
89
|
@current_resource ||= Chef::Resource::File.new(new_resource.name)
|
|
100
90
|
current_resource.path(new_resource.path)
|
|
101
91
|
|
|
@@ -120,17 +110,17 @@ class Chef
|
|
|
120
110
|
|
|
121
111
|
# Make sure the parent directory exists, otherwise fail. For why-run assume it would have been created.
|
|
122
112
|
requirements.assert(:create, :create_if_missing, :touch) do |a|
|
|
123
|
-
parent_directory = ::File.dirname(
|
|
113
|
+
parent_directory = ::File.dirname(new_resource.path)
|
|
124
114
|
a.assertion { ::File.directory?(parent_directory) }
|
|
125
115
|
a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist.")
|
|
126
116
|
a.whyrun("Assuming directory #{parent_directory} would have been created")
|
|
127
117
|
end
|
|
128
118
|
|
|
129
119
|
# Make sure the file is deletable if it exists, otherwise fail.
|
|
130
|
-
if ::File.exist?(
|
|
120
|
+
if ::File.exist?(new_resource.path)
|
|
131
121
|
requirements.assert(:delete) do |a|
|
|
132
|
-
a.assertion { ::File.writable?(
|
|
133
|
-
a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{
|
|
122
|
+
a.assertion { ::File.writable?(new_resource.path) }
|
|
123
|
+
a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{new_resource.path} exists but is not writable so it cannot be deleted")
|
|
134
124
|
end
|
|
135
125
|
end
|
|
136
126
|
|
|
@@ -154,33 +144,33 @@ class Chef
|
|
|
154
144
|
do_contents_changes
|
|
155
145
|
do_acl_changes
|
|
156
146
|
do_selinux
|
|
157
|
-
load_resource_attributes_from_file(
|
|
147
|
+
load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
|
|
158
148
|
end
|
|
159
149
|
|
|
160
150
|
def action_create_if_missing
|
|
161
|
-
unless ::File.exist?(
|
|
151
|
+
unless ::File.exist?(new_resource.path)
|
|
162
152
|
action_create
|
|
163
153
|
else
|
|
164
|
-
Chef::Log.debug("#{
|
|
154
|
+
Chef::Log.debug("#{new_resource} exists at #{new_resource.path} taking no action.")
|
|
165
155
|
end
|
|
166
156
|
end
|
|
167
157
|
|
|
168
158
|
def action_delete
|
|
169
|
-
if ::File.exists?(
|
|
170
|
-
converge_by("delete file #{
|
|
171
|
-
do_backup unless file_class.symlink?(
|
|
172
|
-
::File.delete(
|
|
173
|
-
Chef::Log.info("#{
|
|
159
|
+
if ::File.exists?(new_resource.path)
|
|
160
|
+
converge_by("delete file #{new_resource.path}") do
|
|
161
|
+
do_backup unless file_class.symlink?(new_resource.path)
|
|
162
|
+
::File.delete(new_resource.path)
|
|
163
|
+
Chef::Log.info("#{new_resource} deleted file at #{new_resource.path}")
|
|
174
164
|
end
|
|
175
165
|
end
|
|
176
166
|
end
|
|
177
167
|
|
|
178
168
|
def action_touch
|
|
179
169
|
action_create
|
|
180
|
-
converge_by("update utime on file #{
|
|
170
|
+
converge_by("update utime on file #{new_resource.path}") do
|
|
181
171
|
time = Time.now
|
|
182
|
-
::File.utime(time, time,
|
|
183
|
-
Chef::Log.info("#{
|
|
172
|
+
::File.utime(time, time, new_resource.path)
|
|
173
|
+
Chef::Log.info("#{new_resource} updated atime and mtime to #{time}")
|
|
184
174
|
end
|
|
185
175
|
end
|
|
186
176
|
|
|
@@ -197,8 +187,8 @@ class Chef
|
|
|
197
187
|
# content (for things like doing checksums in load_current_resource). Expected to
|
|
198
188
|
# be overridden in subclasses.
|
|
199
189
|
def managing_content?
|
|
200
|
-
return true if
|
|
201
|
-
return true if
|
|
190
|
+
return true if new_resource.checksum
|
|
191
|
+
return true if !new_resource.content.nil? && @action != :create_if_missing
|
|
202
192
|
false
|
|
203
193
|
end
|
|
204
194
|
|
|
@@ -228,25 +218,25 @@ class Chef
|
|
|
228
218
|
# assertions, which then decide whether or not to raise or issue a
|
|
229
219
|
# warning for whyrun mode.
|
|
230
220
|
def inspect_existing_fs_entry
|
|
231
|
-
path =
|
|
221
|
+
path = new_resource.path
|
|
232
222
|
|
|
233
223
|
if !l_exist?(path)
|
|
234
224
|
[nil, nil, nil]
|
|
235
225
|
elsif real_file?(path)
|
|
236
226
|
[nil, nil, nil]
|
|
237
|
-
elsif file_class.symlink?(path) &&
|
|
227
|
+
elsif file_class.symlink?(path) && new_resource.manage_symlink_source
|
|
238
228
|
verify_symlink_sanity(path)
|
|
239
|
-
elsif file_class.symlink?(
|
|
240
|
-
Chef::Log.warn("File #{path} managed by #{
|
|
229
|
+
elsif file_class.symlink?(new_resource.path) && new_resource.manage_symlink_source.nil?
|
|
230
|
+
Chef::Log.warn("File #{path} managed by #{new_resource} is really a symlink. Managing the source file instead.")
|
|
241
231
|
Chef::Log.warn("Disable this warning by setting `manage_symlink_source true` on the resource")
|
|
242
232
|
Chef::Log.warn("In a future Chef release, 'manage_symlink_source' will not be enabled by default")
|
|
243
233
|
verify_symlink_sanity(path)
|
|
244
|
-
elsif
|
|
234
|
+
elsif new_resource.force_unlink
|
|
245
235
|
[nil, nil, nil]
|
|
246
236
|
else
|
|
247
237
|
[ Chef::Exceptions::FileTypeMismatch,
|
|
248
|
-
"File #{path} exists, but is a #{file_type_string(
|
|
249
|
-
"Assuming #{file_type_string(
|
|
238
|
+
"File #{path} exists, but is a #{file_type_string(new_resource.path)}, set force_unlink to true to remove",
|
|
239
|
+
"Assuming #{file_type_string(new_resource.path)} at #{new_resource.path} would have been removed by a previous resource",
|
|
250
240
|
]
|
|
251
241
|
end
|
|
252
242
|
end
|
|
@@ -282,8 +272,8 @@ class Chef
|
|
|
282
272
|
|
|
283
273
|
def content
|
|
284
274
|
@content ||= begin
|
|
285
|
-
load_current_resource if
|
|
286
|
-
@content_class.new(
|
|
275
|
+
load_current_resource if current_resource.nil?
|
|
276
|
+
@content_class.new(new_resource, current_resource, @run_context)
|
|
287
277
|
end
|
|
288
278
|
end
|
|
289
279
|
|
|
@@ -312,11 +302,9 @@ class Chef
|
|
|
312
302
|
|
|
313
303
|
# like real_file? that follows (sane) symlinks
|
|
314
304
|
def symlink_to_real_file?(path)
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
false
|
|
319
|
-
end
|
|
305
|
+
real_file?(::File.realpath(path))
|
|
306
|
+
rescue Errno::ELOOP, Errno::ENOENT
|
|
307
|
+
false
|
|
320
308
|
end
|
|
321
309
|
|
|
322
310
|
# Similar to File.exist?, but also returns true in the case that the
|
|
@@ -358,12 +346,12 @@ class Chef
|
|
|
358
346
|
end
|
|
359
347
|
|
|
360
348
|
def do_unlink
|
|
361
|
-
if
|
|
349
|
+
if new_resource.force_unlink
|
|
362
350
|
if needs_unlinking?
|
|
363
351
|
# unlink things that aren't normal files
|
|
364
|
-
description = "unlink #{file_type_string(
|
|
352
|
+
description = "unlink #{file_type_string(new_resource.path)} at #{new_resource.path}"
|
|
365
353
|
converge_by(description) do
|
|
366
|
-
unlink(
|
|
354
|
+
unlink(new_resource.path)
|
|
367
355
|
end
|
|
368
356
|
end
|
|
369
357
|
end
|
|
@@ -371,15 +359,15 @@ class Chef
|
|
|
371
359
|
|
|
372
360
|
def do_create_file
|
|
373
361
|
if needs_creating?
|
|
374
|
-
converge_by("create new file #{
|
|
375
|
-
deployment_strategy.create(
|
|
376
|
-
Chef::Log.info("#{
|
|
362
|
+
converge_by("create new file #{new_resource.path}") do
|
|
363
|
+
deployment_strategy.create(new_resource.path)
|
|
364
|
+
Chef::Log.info("#{new_resource} created file #{new_resource.path}")
|
|
377
365
|
end
|
|
378
366
|
end
|
|
379
367
|
end
|
|
380
368
|
|
|
381
369
|
def do_backup(file = nil)
|
|
382
|
-
Chef::Util::Backup.new(
|
|
370
|
+
Chef::Util::Backup.new(new_resource, file).backup!
|
|
383
371
|
end
|
|
384
372
|
|
|
385
373
|
def diff
|
|
@@ -405,17 +393,17 @@ class Chef
|
|
|
405
393
|
end
|
|
406
394
|
|
|
407
395
|
# the file? on the next line suppresses the case in why-run when we have a not-file here that would have otherwise been removed
|
|
408
|
-
if ::File.file?(
|
|
409
|
-
description = [ "update content in file #{
|
|
410
|
-
#{short_cksum(
|
|
396
|
+
if ::File.file?(new_resource.path) && contents_changed?
|
|
397
|
+
description = [ "update content in file #{new_resource.path} from \
|
|
398
|
+
#{short_cksum(current_resource.checksum)} to #{short_cksum(tempfile_checksum)}" ]
|
|
411
399
|
|
|
412
400
|
# Hide the diff output if the resource is marked as a sensitive resource
|
|
413
|
-
if
|
|
414
|
-
|
|
401
|
+
if new_resource.sensitive
|
|
402
|
+
new_resource.diff("suppressed sensitive resource")
|
|
415
403
|
description << "suppressed sensitive resource"
|
|
416
404
|
else
|
|
417
|
-
diff.diff(
|
|
418
|
-
|
|
405
|
+
diff.diff(current_resource.path, tempfile.path)
|
|
406
|
+
new_resource.diff( diff.for_reporting ) unless needs_creating?
|
|
419
407
|
description << diff.for_output
|
|
420
408
|
end
|
|
421
409
|
|
|
@@ -437,7 +425,7 @@ class Chef
|
|
|
437
425
|
if resource_updated? && Chef::Config[:enable_selinux_file_permission_fixup]
|
|
438
426
|
if selinux_enabled?
|
|
439
427
|
converge_by("restore selinux security context") do
|
|
440
|
-
restore_security_context(::File.realpath(
|
|
428
|
+
restore_security_context(::File.realpath(new_resource.path), recursive)
|
|
441
429
|
end
|
|
442
430
|
else
|
|
443
431
|
Chef::Log.debug "selinux utilities can not be found. Skipping selinux permission fixup."
|
|
@@ -454,8 +442,8 @@ class Chef
|
|
|
454
442
|
end
|
|
455
443
|
|
|
456
444
|
def contents_changed?
|
|
457
|
-
Chef::Log.debug "calculating checksum of #{tempfile.path} to compare with #{
|
|
458
|
-
tempfile_checksum !=
|
|
445
|
+
Chef::Log.debug "calculating checksum of #{tempfile.path} to compare with #{current_resource.checksum}"
|
|
446
|
+
tempfile_checksum != current_resource.checksum
|
|
459
447
|
end
|
|
460
448
|
|
|
461
449
|
def tempfile
|
|
@@ -470,7 +458,7 @@ class Chef
|
|
|
470
458
|
# reporting won't work for Windows.
|
|
471
459
|
return
|
|
472
460
|
end
|
|
473
|
-
acl_scanner = ScanAccessControl.new(
|
|
461
|
+
acl_scanner = ScanAccessControl.new(new_resource, resource)
|
|
474
462
|
acl_scanner.set_all!
|
|
475
463
|
end
|
|
476
464
|
|