chef 12.18.31 → 13.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
data/lib/chef/property.rb
CHANGED
|
@@ -74,7 +74,7 @@ class Chef
|
|
|
74
74
|
# return `true` if the property is set *or* if `name` is set.
|
|
75
75
|
# @option options [Boolean] :nillable `true` opt-in to Chef-13 style behavior where
|
|
76
76
|
# attempting to set a nil value will really set a nil value instead of issuing
|
|
77
|
-
# a warning and operating like a getter
|
|
77
|
+
# a warning and operating like a getter [DEPRECATED]
|
|
78
78
|
# @option options [Object] :default The value this property
|
|
79
79
|
# will return if the user does not set one. If this is `lazy`, it will
|
|
80
80
|
# be run in the context of the instance (and able to access other
|
|
@@ -106,17 +106,22 @@ class Chef
|
|
|
106
106
|
@options = options
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
if options.has_key?(:default) && options.has_key?(:name_property)
|
|
110
|
+
raise ArgumentError, "Cannot specify both default and name_property/name_attribute together on property #{self}"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Recursively freeze the default if it isn't a lazy value.
|
|
114
|
+
unless default.is_a?(DelayedEvaluator)
|
|
115
|
+
visitor = lambda do |obj|
|
|
116
|
+
case obj
|
|
117
|
+
when Hash
|
|
118
|
+
obj.each_value { |value| visitor.call(value) }
|
|
119
|
+
when Array
|
|
120
|
+
obj.each { |value| visitor.call(value) }
|
|
121
|
+
end
|
|
122
|
+
obj.freeze
|
|
118
123
|
end
|
|
119
|
-
|
|
124
|
+
visitor.call(default)
|
|
120
125
|
end
|
|
121
126
|
|
|
122
127
|
# Validate the default early, so the user gets a good error message, and
|
|
@@ -273,32 +278,8 @@ class Chef
|
|
|
273
278
|
#
|
|
274
279
|
def call(resource, value = NOT_PASSED)
|
|
275
280
|
if value == NOT_PASSED
|
|
276
|
-
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
if value.nil? && !nillable?
|
|
280
|
-
# In Chef 12, value(nil) does a *get* instead of a set, so we
|
|
281
|
-
# warn if the value would have been changed. In Chef 13, it will be
|
|
282
|
-
# equivalent to value = nil.
|
|
283
|
-
result = get(resource, nil_set: true)
|
|
284
|
-
|
|
285
|
-
# Warn about this becoming a set in Chef 13.
|
|
286
|
-
begin
|
|
287
|
-
input_to_stored_value(resource, value)
|
|
288
|
-
# If nil is valid, and it would change the value, warn that this will change to a set.
|
|
289
|
-
if !result.nil?
|
|
290
|
-
Chef.deprecated(:custom_resource, "An attempt was made to change #{name} from #{result.inspect} to nil by calling #{name}(nil). In Chef 12, this does a get rather than a set. In Chef 13, this will change to set the value to nil.")
|
|
291
|
-
end
|
|
292
|
-
rescue Chef::Exceptions::DeprecatedFeatureError
|
|
293
|
-
raise
|
|
294
|
-
rescue
|
|
295
|
-
# If nil is invalid, warn that this will become an error.
|
|
296
|
-
Chef.deprecated(:custom_resource, "nil is an invalid value for #{self}. In Chef 13, this warning will change to an error. Error: #{$!}")
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
result
|
|
281
|
+
get(resource)
|
|
300
282
|
else
|
|
301
|
-
# Anything else, such as myprop(value) is a set
|
|
302
283
|
set(resource, value)
|
|
303
284
|
end
|
|
304
285
|
end
|
|
@@ -327,10 +308,11 @@ class Chef
|
|
|
327
308
|
#
|
|
328
309
|
def get(resource, nil_set: false)
|
|
329
310
|
# If it's set, return it (and evaluate any lazy values)
|
|
311
|
+
value = nil
|
|
312
|
+
|
|
330
313
|
if is_set?(resource)
|
|
331
314
|
value = get_value(resource)
|
|
332
315
|
value = stored_value_to_output(resource, value)
|
|
333
|
-
|
|
334
316
|
else
|
|
335
317
|
# We are getting the default value.
|
|
336
318
|
|
|
@@ -375,13 +357,14 @@ class Chef
|
|
|
375
357
|
if !value.frozen? && !value.nil?
|
|
376
358
|
set_value(resource, value)
|
|
377
359
|
end
|
|
378
|
-
|
|
379
|
-
value
|
|
380
|
-
|
|
381
|
-
elsif required?
|
|
382
|
-
raise Chef::Exceptions::ValidationFailed, "#{name} is required"
|
|
383
360
|
end
|
|
384
361
|
end
|
|
362
|
+
|
|
363
|
+
if value.nil? && required?
|
|
364
|
+
raise Chef::Exceptions::ValidationFailed, "#{name} is required"
|
|
365
|
+
else
|
|
366
|
+
value
|
|
367
|
+
end
|
|
385
368
|
end
|
|
386
369
|
|
|
387
370
|
#
|
|
@@ -400,7 +383,13 @@ class Chef
|
|
|
400
383
|
# this property.
|
|
401
384
|
#
|
|
402
385
|
def set(resource, value)
|
|
403
|
-
set_value(resource, input_to_stored_value(resource, value))
|
|
386
|
+
value = set_value(resource, input_to_stored_value(resource, value))
|
|
387
|
+
|
|
388
|
+
if value.nil? && required?
|
|
389
|
+
raise Chef::Exceptions::ValidationFailed, "#{name} is required"
|
|
390
|
+
else
|
|
391
|
+
value
|
|
392
|
+
end
|
|
404
393
|
end
|
|
405
394
|
|
|
406
395
|
#
|
|
@@ -453,8 +442,8 @@ class Chef
|
|
|
453
442
|
#
|
|
454
443
|
def coerce(resource, value)
|
|
455
444
|
if options.has_key?(:coerce)
|
|
456
|
-
#
|
|
457
|
-
unless
|
|
445
|
+
# nil is never coerced
|
|
446
|
+
unless value.nil?
|
|
458
447
|
value = exec_in_resource(resource, options[:coerce], value)
|
|
459
448
|
end
|
|
460
449
|
end
|
|
@@ -475,8 +464,8 @@ class Chef
|
|
|
475
464
|
# this property.
|
|
476
465
|
#
|
|
477
466
|
def validate(resource, value)
|
|
478
|
-
#
|
|
479
|
-
|
|
467
|
+
# nils are not validated unless we have an explicit default value
|
|
468
|
+
if !value.nil? || has_default?
|
|
480
469
|
if resource
|
|
481
470
|
resource.validate({ name => value }, { name => validation_options })
|
|
482
471
|
else
|
|
@@ -518,6 +507,16 @@ class Chef
|
|
|
518
507
|
# be using the existing getter/setter to manipulate it instead.
|
|
519
508
|
return if !instance_variable_name
|
|
520
509
|
|
|
510
|
+
# Properties may override existing properties up the inheritance heirarchy, but
|
|
511
|
+
# properties must not override inherited methods like Object#hash. When the Resource is
|
|
512
|
+
# placed into the resource collection the ruby Hash object will call the
|
|
513
|
+
# Object#hash method on the resource, and overriding that with a property will cause
|
|
514
|
+
# very confusing results.
|
|
515
|
+
if property_redefines_method?
|
|
516
|
+
resource_name = declared_in.respond_to?(:resource_name) ? declared_in.resource_name : declared_in
|
|
517
|
+
raise ArgumentError, "Property `#{name}` of resource `#{resource_name}` overwrites an existing method."
|
|
518
|
+
end
|
|
519
|
+
|
|
521
520
|
# We prefer this form because the property name won't show up in the
|
|
522
521
|
# stack trace if you use `define_method`.
|
|
523
522
|
declared_in.class_eval <<-EOM, __FILE__, __LINE__ + 1
|
|
@@ -530,16 +529,6 @@ class Chef
|
|
|
530
529
|
self.class.properties[#{name.inspect}].set(self, value)
|
|
531
530
|
end
|
|
532
531
|
EOM
|
|
533
|
-
rescue SyntaxError
|
|
534
|
-
# If the name is not a valid ruby name, we use define_method.
|
|
535
|
-
declared_in.define_method(name) do |value = NOT_PASSED, &block|
|
|
536
|
-
raise "Property `#{name}` of `#{self}` was incorrectly passed a block! Possible property-resource collision. To call a resource named `#{name}` either rename the property or else use `declare_resource(:#{name}, ...)`" if block
|
|
537
|
-
self.class.properties[name].call(self, value)
|
|
538
|
-
end
|
|
539
|
-
declared_in.define_method("#{name}=") do |value, &block|
|
|
540
|
-
raise "Property `#{name}` of `#{self}` was incorrectly passed a block! Possible property-resource collision. To call a resource named `#{name}` either rename the property or else use `declare_resource(:#{name}, ...)`" if block
|
|
541
|
-
self.class.properties[name].set(self, value)
|
|
542
|
-
end
|
|
543
532
|
end
|
|
544
533
|
|
|
545
534
|
#
|
|
@@ -632,6 +621,25 @@ class Chef
|
|
|
632
621
|
|
|
633
622
|
private
|
|
634
623
|
|
|
624
|
+
def property_redefines_method?
|
|
625
|
+
# We only emit deprecations if this property already exists as an instance method.
|
|
626
|
+
# Weeding out class methods avoids unnecessary deprecations such Chef::Resource
|
|
627
|
+
# defining a `name` property when there's an already-existing `name` method
|
|
628
|
+
# for a Module.
|
|
629
|
+
return false unless declared_in.instance_methods.include?(name)
|
|
630
|
+
|
|
631
|
+
# Only emit deprecations for some well-known classes. This will still
|
|
632
|
+
# allow more advanced users to subclass their own custom resources and
|
|
633
|
+
# override their own properties.
|
|
634
|
+
return false unless [ Object, BasicObject, Kernel, Chef::Resource ].include?(declared_in.instance_method(name).owner)
|
|
635
|
+
|
|
636
|
+
# Allow top-level Chef::Resource proprties, such as `name`, to be overridden.
|
|
637
|
+
# As of this writing, `name` is the only Chef::Resource property created with the
|
|
638
|
+
# `property` definition, but this will allow for future properties to be extended
|
|
639
|
+
# as needed.
|
|
640
|
+
!Chef::Resource.properties.keys.include?(name)
|
|
641
|
+
end
|
|
642
|
+
|
|
635
643
|
def exec_in_resource(resource, proc, *args)
|
|
636
644
|
if resource
|
|
637
645
|
if proc.arity > args.size
|
|
@@ -666,31 +674,9 @@ class Chef
|
|
|
666
674
|
# valid.
|
|
667
675
|
def coerce_and_validate(resource, value, is_default: false)
|
|
668
676
|
result = coerce(resource, value)
|
|
669
|
-
|
|
670
|
-
# If the input is from a default, we need to emit an invalid default warning on validate.
|
|
671
|
-
validate(resource, result)
|
|
672
|
-
rescue Chef::Exceptions::CannotValidateStaticallyError
|
|
673
|
-
# This one gets re-raised
|
|
674
|
-
raise
|
|
675
|
-
rescue
|
|
676
|
-
# Anything else is just an invalid default: in those cases, we just
|
|
677
|
-
# warn and return the (possibly coerced) value to the user.
|
|
678
|
-
if is_default
|
|
679
|
-
if value.nil?
|
|
680
|
-
Chef.deprecated(:custom_resource, "Default value nil is invalid for property #{self}. Possible fixes: 1. Remove 'default: nil' if nil means 'undefined'. 2. Set a valid default value if there is a reasonable one. 3. Allow nil as a valid value of your property (for example, 'property #{name.inspect}, [ String, nil ], default: nil'). Error: #{$!}")
|
|
681
|
-
else
|
|
682
|
-
Chef.deprecated(:custom_resource, "Default value #{value.inspect} is invalid for property #{self}. In Chef 13 this will become an error: #{$!}.")
|
|
683
|
-
end
|
|
684
|
-
else
|
|
685
|
-
raise
|
|
686
|
-
end
|
|
687
|
-
end
|
|
677
|
+
validate(resource, result)
|
|
688
678
|
|
|
689
679
|
result
|
|
690
680
|
end
|
|
691
|
-
|
|
692
|
-
def nillable?
|
|
693
|
-
!!options[:nillable]
|
|
694
|
-
end
|
|
695
681
|
end
|
|
696
682
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Thom May (<thom@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c) 2016 Chef Software
|
|
3
|
+
# Copyright:: Copyright (c) 2016-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");
|
|
@@ -26,8 +26,6 @@ require "chef/provider/noop"
|
|
|
26
26
|
class Chef
|
|
27
27
|
class Provider
|
|
28
28
|
class AptRepository < Chef::Provider
|
|
29
|
-
use_inline_resources
|
|
30
|
-
|
|
31
29
|
include Chef::Mixin::ShellOut
|
|
32
30
|
extend Chef::Mixin::Which
|
|
33
31
|
|
|
@@ -35,10 +33,6 @@ class Chef
|
|
|
35
33
|
which("apt-get")
|
|
36
34
|
end
|
|
37
35
|
|
|
38
|
-
def whyrun_supported?
|
|
39
|
-
true
|
|
40
|
-
end
|
|
41
|
-
|
|
42
36
|
def load_current_resource
|
|
43
37
|
end
|
|
44
38
|
|
|
@@ -115,7 +109,7 @@ class Chef
|
|
|
115
109
|
so = shell_out(cmd)
|
|
116
110
|
so.run_command
|
|
117
111
|
so.stdout.split(/\n/).map do |t|
|
|
118
|
-
if z = t.match(/^
|
|
112
|
+
if z = t.match(/^fpr:+([0-9A-F]+):/)
|
|
119
113
|
z[1].split.join
|
|
120
114
|
end
|
|
121
115
|
end.compact
|
|
@@ -147,8 +141,10 @@ class Chef
|
|
|
147
141
|
end
|
|
148
142
|
|
|
149
143
|
def no_new_keys?(file)
|
|
150
|
-
|
|
151
|
-
|
|
144
|
+
# Now we are using the option --with-colons that works across old os versions
|
|
145
|
+
# as well as the latest (16.10). This for both `apt-key` and `gpg` commands
|
|
146
|
+
installed_keys = extract_fingerprints_from_cmd("apt-key adv --list-public-keys --with-fingerprint --with-colons")
|
|
147
|
+
proposed_keys = extract_fingerprints_from_cmd("gpg --with-fingerprint --with-colons #{file}")
|
|
152
148
|
(installed_keys & proposed_keys).sort == proposed_keys.sort
|
|
153
149
|
end
|
|
154
150
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Thom May (<thom@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c) 2016 Chef Software
|
|
3
|
+
# Copyright:: Copyright (c) 2016-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");
|
|
@@ -23,8 +23,6 @@ require "chef/mixin/which"
|
|
|
23
23
|
class Chef
|
|
24
24
|
class Provider
|
|
25
25
|
class AptUpdate < Chef::Provider
|
|
26
|
-
use_inline_resources
|
|
27
|
-
|
|
28
26
|
extend Chef::Mixin::Which
|
|
29
27
|
|
|
30
28
|
provides :apt_update do
|
|
@@ -34,10 +32,6 @@ class Chef
|
|
|
34
32
|
APT_CONF_DIR = "/etc/apt/apt.conf.d"
|
|
35
33
|
STAMP_DIR = "/var/lib/apt/periodic"
|
|
36
34
|
|
|
37
|
-
def whyrun_supported?
|
|
38
|
-
true
|
|
39
|
-
end
|
|
40
|
-
|
|
41
35
|
def load_current_resource
|
|
42
36
|
end
|
|
43
37
|
|
data/lib/chef/provider/batch.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
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");
|
|
@@ -28,7 +28,7 @@ class Chef
|
|
|
28
28
|
def action_break
|
|
29
29
|
if defined?(Shell) && Shell.running?
|
|
30
30
|
run_context.resource_collection.iterator.pause
|
|
31
|
-
|
|
31
|
+
new_resource.updated_by_last_action(true)
|
|
32
32
|
run_context.resource_collection.iterator
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require "chef/provider/file"
|
|
20
|
-
require "chef/deprecation/provider/cookbook_file"
|
|
21
|
-
require "chef/deprecation/warnings"
|
|
22
20
|
|
|
23
21
|
class Chef
|
|
24
22
|
class Provider
|
|
@@ -26,25 +24,21 @@ class Chef
|
|
|
26
24
|
|
|
27
25
|
provides :cookbook_file
|
|
28
26
|
|
|
29
|
-
extend Chef::Deprecation::Warnings
|
|
30
|
-
include Chef::Deprecation::Provider::CookbookFile
|
|
31
|
-
add_deprecation_warnings_for(Chef::Deprecation::Provider::CookbookFile.instance_methods)
|
|
32
|
-
|
|
33
27
|
def initialize(new_resource, run_context)
|
|
34
28
|
@content_class = Chef::Provider::CookbookFile::Content
|
|
35
29
|
super
|
|
36
30
|
end
|
|
37
31
|
|
|
38
32
|
def load_current_resource
|
|
39
|
-
@current_resource = Chef::Resource::CookbookFile.new(
|
|
33
|
+
@current_resource = Chef::Resource::CookbookFile.new(new_resource.name)
|
|
40
34
|
super
|
|
41
35
|
end
|
|
42
36
|
|
|
43
37
|
private
|
|
44
38
|
|
|
45
39
|
def managing_content?
|
|
46
|
-
return true if
|
|
47
|
-
return true if
|
|
40
|
+
return true if new_resource.checksum
|
|
41
|
+
return true if !new_resource.source.nil? && @action != :create_if_missing
|
|
48
42
|
false
|
|
49
43
|
end
|
|
50
44
|
|
data/lib/chef/provider/cron.rb
CHANGED
|
@@ -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 Cron < Chef::Provider
|
|
26
|
-
include Chef::Mixin::Command
|
|
27
25
|
|
|
28
26
|
provides :cron, os: ["!aix", "!solaris2"]
|
|
29
27
|
|
|
@@ -42,21 +40,17 @@ class Chef
|
|
|
42
40
|
end
|
|
43
41
|
attr_accessor :cron_exists, :cron_empty
|
|
44
42
|
|
|
45
|
-
def whyrun_supported?
|
|
46
|
-
true
|
|
47
|
-
end
|
|
48
|
-
|
|
49
43
|
def load_current_resource
|
|
50
44
|
crontab_lines = []
|
|
51
|
-
@current_resource = Chef::Resource::Cron.new(
|
|
52
|
-
|
|
45
|
+
@current_resource = Chef::Resource::Cron.new(new_resource.name)
|
|
46
|
+
current_resource.user(new_resource.user)
|
|
53
47
|
@cron_exists = false
|
|
54
48
|
if crontab = read_crontab
|
|
55
49
|
cron_found = false
|
|
56
50
|
crontab.each_line do |line|
|
|
57
51
|
case line.chomp
|
|
58
|
-
when "# Chef Name: #{
|
|
59
|
-
Chef::Log.debug("Found cron '#{
|
|
52
|
+
when "# Chef Name: #{new_resource.name}"
|
|
53
|
+
Chef::Log.debug("Found cron '#{new_resource.name}'")
|
|
60
54
|
cron_found = true
|
|
61
55
|
@cron_exists = true
|
|
62
56
|
next
|
|
@@ -65,18 +59,18 @@ class Chef
|
|
|
65
59
|
next
|
|
66
60
|
when SPECIAL_PATTERN
|
|
67
61
|
if cron_found
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
current_resource.time($2.to_sym)
|
|
63
|
+
current_resource.command($3)
|
|
70
64
|
cron_found = false
|
|
71
65
|
end
|
|
72
66
|
when CRON_PATTERN
|
|
73
67
|
if cron_found
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
68
|
+
current_resource.minute($1)
|
|
69
|
+
current_resource.hour($2)
|
|
70
|
+
current_resource.day($3)
|
|
71
|
+
current_resource.month($4)
|
|
72
|
+
current_resource.weekday($5)
|
|
73
|
+
current_resource.command($6)
|
|
80
74
|
cron_found = false
|
|
81
75
|
end
|
|
82
76
|
next
|
|
@@ -85,18 +79,18 @@ class Chef
|
|
|
85
79
|
next
|
|
86
80
|
end
|
|
87
81
|
end
|
|
88
|
-
Chef::Log.debug("Cron '#{
|
|
82
|
+
Chef::Log.debug("Cron '#{new_resource.name}' not found") unless @cron_exists
|
|
89
83
|
else
|
|
90
|
-
Chef::Log.debug("Cron empty for '#{
|
|
84
|
+
Chef::Log.debug("Cron empty for '#{new_resource.user}'")
|
|
91
85
|
@cron_empty = true
|
|
92
86
|
end
|
|
93
87
|
|
|
94
|
-
|
|
88
|
+
current_resource
|
|
95
89
|
end
|
|
96
90
|
|
|
97
91
|
def cron_different?
|
|
98
92
|
CRON_ATTRIBUTES.any? do |cron_var|
|
|
99
|
-
|
|
93
|
+
new_resource.send(cron_var) != current_resource.send(cron_var)
|
|
100
94
|
end
|
|
101
95
|
end
|
|
102
96
|
|
|
@@ -109,12 +103,12 @@ class Chef
|
|
|
109
103
|
|
|
110
104
|
if @cron_exists
|
|
111
105
|
unless cron_different?
|
|
112
|
-
Chef::Log.debug("Skipping existing cron entry '#{
|
|
106
|
+
Chef::Log.debug("Skipping existing cron entry '#{new_resource.name}'")
|
|
113
107
|
return
|
|
114
108
|
end
|
|
115
109
|
read_crontab.each_line do |line|
|
|
116
110
|
case line.chomp
|
|
117
|
-
when "# Chef Name: #{
|
|
111
|
+
when "# Chef Name: #{new_resource.name}"
|
|
118
112
|
cron_found = true
|
|
119
113
|
next
|
|
120
114
|
when ENV_PATTERN
|
|
@@ -144,18 +138,18 @@ class Chef
|
|
|
144
138
|
# Handle edge case where the Chef comment is the last line in the current crontab
|
|
145
139
|
crontab << newcron if cron_found
|
|
146
140
|
|
|
147
|
-
converge_by("update crontab entry for #{
|
|
141
|
+
converge_by("update crontab entry for #{new_resource}") do
|
|
148
142
|
write_crontab crontab
|
|
149
|
-
Chef::Log.info("#{
|
|
143
|
+
Chef::Log.info("#{new_resource} updated crontab entry")
|
|
150
144
|
end
|
|
151
145
|
|
|
152
146
|
else
|
|
153
147
|
crontab = read_crontab unless @cron_empty
|
|
154
148
|
crontab << newcron
|
|
155
149
|
|
|
156
|
-
converge_by("add crontab entry for #{
|
|
150
|
+
converge_by("add crontab entry for #{new_resource}") do
|
|
157
151
|
write_crontab crontab
|
|
158
|
-
Chef::Log.info("#{
|
|
152
|
+
Chef::Log.info("#{new_resource} added crontab entry")
|
|
159
153
|
end
|
|
160
154
|
end
|
|
161
155
|
end
|
|
@@ -166,7 +160,7 @@ class Chef
|
|
|
166
160
|
cron_found = false
|
|
167
161
|
read_crontab.each_line do |line|
|
|
168
162
|
case line.chomp
|
|
169
|
-
when "# Chef Name: #{
|
|
163
|
+
when "# Chef Name: #{new_resource.name}"
|
|
170
164
|
cron_found = true
|
|
171
165
|
next
|
|
172
166
|
when ENV_PATTERN
|
|
@@ -187,10 +181,10 @@ class Chef
|
|
|
187
181
|
end
|
|
188
182
|
crontab << line
|
|
189
183
|
end
|
|
190
|
-
description = cron_found ? "remove #{
|
|
184
|
+
description = cron_found ? "remove #{new_resource.name} from crontab" : "save unmodified crontab"
|
|
191
185
|
converge_by(description) do
|
|
192
186
|
write_crontab crontab
|
|
193
|
-
Chef::Log.info("#{
|
|
187
|
+
Chef::Log.info("#{new_resource} deleted crontab entry")
|
|
194
188
|
end
|
|
195
189
|
end
|
|
196
190
|
end
|
|
@@ -199,60 +193,48 @@ class Chef
|
|
|
199
193
|
|
|
200
194
|
def set_environment_var(attr_name, attr_value)
|
|
201
195
|
if %w{MAILTO PATH SHELL HOME}.include?(attr_name)
|
|
202
|
-
|
|
196
|
+
current_resource.send(attr_name.downcase.to_sym, attr_value.gsub(/^"|"$/, ""))
|
|
203
197
|
else
|
|
204
|
-
|
|
198
|
+
current_resource.environment(current_resource.environment.merge(attr_name => attr_value))
|
|
205
199
|
end
|
|
206
200
|
end
|
|
207
201
|
|
|
208
202
|
def read_crontab
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
raise Chef::Exceptions::Cron, "Error determining state of #{@new_resource.name}, exit: #{status.exitstatus}"
|
|
215
|
-
end
|
|
216
|
-
crontab
|
|
203
|
+
so = shell_out!("crontab -l -u #{new_resource.user}", returns: [0, 1])
|
|
204
|
+
return nil if so.exitstatus == 1
|
|
205
|
+
so.stdout
|
|
206
|
+
rescue => e
|
|
207
|
+
raise Chef::Exceptions::Cron, "Error determining state of #{new_resource.name}, error: #{e}"
|
|
217
208
|
end
|
|
218
209
|
|
|
219
210
|
def write_crontab(crontab)
|
|
220
211
|
write_exception = false
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
rescue Errno::EPIPE => e
|
|
225
|
-
# popen4 could yield while child has already died.
|
|
226
|
-
write_exception = true
|
|
227
|
-
Chef::Log.debug("#{e.message}")
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
if status.exitstatus > 0 || write_exception
|
|
231
|
-
raise Chef::Exceptions::Cron, "Error updating state of #{@new_resource.name}, exit: #{status.exitstatus}"
|
|
232
|
-
end
|
|
212
|
+
so = shell_out!("crontab -u #{new_resource.user} -", input: crontab)
|
|
213
|
+
rescue => e
|
|
214
|
+
raise Chef::Exceptions::Cron, "Error updating state of #{new_resource.name}, error: #{e}"
|
|
233
215
|
end
|
|
234
216
|
|
|
235
217
|
def get_crontab_entry
|
|
236
218
|
newcron = ""
|
|
237
219
|
newcron << "# Chef Name: #{new_resource.name}\n"
|
|
238
220
|
[ :mailto, :path, :shell, :home ].each do |v|
|
|
239
|
-
newcron << "#{v.to_s.upcase}=\"#{
|
|
221
|
+
newcron << "#{v.to_s.upcase}=\"#{new_resource.send(v)}\"\n" if new_resource.send(v)
|
|
240
222
|
end
|
|
241
|
-
|
|
223
|
+
new_resource.environment.each do |name, value|
|
|
242
224
|
newcron << "#{name}=#{value}\n"
|
|
243
225
|
end
|
|
244
|
-
if
|
|
245
|
-
newcron << "@#{
|
|
226
|
+
if new_resource.time
|
|
227
|
+
newcron << "@#{new_resource.time} #{new_resource.command}\n"
|
|
246
228
|
else
|
|
247
|
-
newcron << "#{
|
|
229
|
+
newcron << "#{new_resource.minute} #{new_resource.hour} #{new_resource.day} #{new_resource.month} #{new_resource.weekday} #{new_resource.command}\n"
|
|
248
230
|
end
|
|
249
231
|
newcron
|
|
250
232
|
end
|
|
251
233
|
|
|
252
234
|
def weekday_in_crontab
|
|
253
|
-
weekday_in_crontab = WEEKDAY_SYMBOLS.index(
|
|
235
|
+
weekday_in_crontab = WEEKDAY_SYMBOLS.index(new_resource.weekday)
|
|
254
236
|
if weekday_in_crontab.nil?
|
|
255
|
-
|
|
237
|
+
new_resource.weekday
|
|
256
238
|
else
|
|
257
239
|
weekday_in_crontab.to_s
|
|
258
240
|
end
|
|
@@ -91,11 +91,9 @@ class Chef
|
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def load_cache
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
sorted_releases_from_filesystem
|
|
98
|
-
end
|
|
94
|
+
Chef::JSONCompat.parse(Chef::FileCache.load("revision-deploys/#{new_resource.name}"))
|
|
95
|
+
rescue Chef::Exceptions::FileNotFound
|
|
96
|
+
sorted_releases_from_filesystem
|
|
99
97
|
end
|
|
100
98
|
|
|
101
99
|
def save_cache(cache)
|