chef 12.18.31 → 13.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -37,45 +37,23 @@ class Chef
|
|
|
37
37
|
class CookbookVersion
|
|
38
38
|
|
|
39
39
|
include Comparable
|
|
40
|
+
extend Forwardable
|
|
41
|
+
|
|
42
|
+
def_delegator :@cookbook_manifest, :files_for
|
|
43
|
+
def_delegator :@cookbook_manifest, :each_file
|
|
40
44
|
|
|
41
45
|
COOKBOOK_SEGMENTS = [ :resources, :providers, :recipes, :definitions, :libraries, :attributes, :files, :templates, :root_files ]
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
attr_reader :all_files
|
|
44
48
|
|
|
45
49
|
attr_accessor :root_paths
|
|
46
|
-
attr_accessor :definition_filenames
|
|
47
|
-
attr_accessor :template_filenames
|
|
48
|
-
attr_accessor :file_filenames
|
|
49
|
-
attr_accessor :library_filenames
|
|
50
|
-
attr_accessor :resource_filenames
|
|
51
|
-
attr_accessor :provider_filenames
|
|
52
|
-
attr_accessor :root_filenames
|
|
53
50
|
attr_accessor :name
|
|
54
|
-
attr_accessor :metadata_filenames
|
|
55
|
-
|
|
56
|
-
def status=(new_status)
|
|
57
|
-
Chef.deprecated(:internal_api, "Deprecated method `status' called. This method will be removed.")
|
|
58
|
-
@status = new_status
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def status
|
|
62
|
-
Chef.deprecated(:internal_api, "Deprecated method `status' called. This method will be removed.")
|
|
63
|
-
@status
|
|
64
|
-
end
|
|
65
51
|
|
|
66
52
|
# A Chef::Cookbook::Metadata object. It has a setter that fixes up the
|
|
67
53
|
# metadata to add descriptions of the recipes contained in this
|
|
68
54
|
# CookbookVersion.
|
|
69
55
|
attr_reader :metadata
|
|
70
56
|
|
|
71
|
-
# attribute_filenames also has a setter that has non-default
|
|
72
|
-
# functionality.
|
|
73
|
-
attr_reader :attribute_filenames
|
|
74
|
-
|
|
75
|
-
# recipe_filenames also has a setter that has non-default
|
|
76
|
-
# functionality.
|
|
77
|
-
attr_reader :recipe_filenames
|
|
78
|
-
|
|
79
57
|
attr_reader :recipe_filenames_by_name
|
|
80
58
|
attr_reader :attribute_filenames_by_short_filename
|
|
81
59
|
|
|
@@ -96,6 +74,11 @@ class Chef
|
|
|
96
74
|
root_paths[0]
|
|
97
75
|
end
|
|
98
76
|
|
|
77
|
+
def all_files=(files)
|
|
78
|
+
@all_files = Array(files)
|
|
79
|
+
cookbook_manifest.reset!
|
|
80
|
+
end
|
|
81
|
+
|
|
99
82
|
# This is the one and only method that knows how cookbook files'
|
|
100
83
|
# checksums are generated.
|
|
101
84
|
def self.checksum_cookbook_file(filepath)
|
|
@@ -118,23 +101,10 @@ class Chef
|
|
|
118
101
|
@root_paths = root_paths
|
|
119
102
|
@frozen = false
|
|
120
103
|
|
|
121
|
-
@attribute_filenames = Array.new
|
|
122
|
-
@definition_filenames = Array.new
|
|
123
|
-
@template_filenames = Array.new
|
|
124
|
-
@file_filenames = Array.new
|
|
125
|
-
@recipe_filenames = Array.new
|
|
126
|
-
@recipe_filenames_by_name = Hash.new
|
|
127
|
-
@library_filenames = Array.new
|
|
128
|
-
@resource_filenames = Array.new
|
|
129
|
-
@provider_filenames = Array.new
|
|
130
|
-
@metadata_filenames = Array.new
|
|
131
|
-
@root_filenames = Array.new
|
|
132
|
-
|
|
133
104
|
@all_files = Array.new
|
|
134
105
|
|
|
135
|
-
# deprecated
|
|
136
|
-
@status = :ready
|
|
137
106
|
@file_vendor = nil
|
|
107
|
+
@cookbook_manifest = Chef::CookbookManifest.new(self)
|
|
138
108
|
@metadata = Chef::Cookbook::Metadata.new
|
|
139
109
|
@chef_server_rest = chef_server_rest
|
|
140
110
|
end
|
|
@@ -163,10 +133,25 @@ class Chef
|
|
|
163
133
|
"#{name}-#{version}"
|
|
164
134
|
end
|
|
165
135
|
|
|
166
|
-
def
|
|
167
|
-
@
|
|
168
|
-
|
|
169
|
-
|
|
136
|
+
def attribute_filenames_by_short_filename
|
|
137
|
+
@attribute_filenames_by_short_filename ||= begin
|
|
138
|
+
name_map = filenames_by_name(files_for("attributes"))
|
|
139
|
+
root_alias = cookbook_manifest.root_files.find { |record| record[:name] == "attributes.rb" }
|
|
140
|
+
name_map["default"] = root_alias[:full_path] if root_alias
|
|
141
|
+
name_map
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def recipe_filenames_by_name
|
|
146
|
+
@recipe_filenames_by_name ||= begin
|
|
147
|
+
name_map = filenames_by_name(files_for("recipes"))
|
|
148
|
+
root_alias = cookbook_manifest.root_files.find { |record| record[:name] == "recipe.rb" }
|
|
149
|
+
if root_alias
|
|
150
|
+
Chef::Log.error("Cookbook #{name} contains both recipe.rb and and recipes/default.rb, ignoring recipes/default.rb") if name_map["default"]
|
|
151
|
+
name_map["default"] = root_alias[:full_path]
|
|
152
|
+
end
|
|
153
|
+
name_map
|
|
154
|
+
end
|
|
170
155
|
end
|
|
171
156
|
|
|
172
157
|
def metadata=(metadata)
|
|
@@ -175,14 +160,14 @@ class Chef
|
|
|
175
160
|
@metadata
|
|
176
161
|
end
|
|
177
162
|
|
|
178
|
-
## BACKCOMPAT/DEPRECATED - Remove these and fix breakage before release [DAN - 5/20/2010]##
|
|
179
|
-
alias :attribute_files :attribute_filenames
|
|
180
|
-
alias :attribute_files= :attribute_filenames=
|
|
181
|
-
|
|
182
163
|
def manifest
|
|
183
164
|
cookbook_manifest.manifest
|
|
184
165
|
end
|
|
185
166
|
|
|
167
|
+
def manifest=(new_manifest)
|
|
168
|
+
cookbook_manifest.update_from(new_manifest)
|
|
169
|
+
end
|
|
170
|
+
|
|
186
171
|
# Returns a hash of checksums to either nil or the on disk path (which is
|
|
187
172
|
# done by generate_manifest).
|
|
188
173
|
def checksums
|
|
@@ -193,29 +178,16 @@ class Chef
|
|
|
193
178
|
cookbook_manifest.manifest_records_by_path
|
|
194
179
|
end
|
|
195
180
|
|
|
196
|
-
def manifest=(new_manifest)
|
|
197
|
-
cookbook_manifest.update_from(new_manifest)
|
|
198
|
-
end
|
|
199
|
-
|
|
200
181
|
# Return recipe names in the form of cookbook_name::recipe_name
|
|
201
182
|
def fully_qualified_recipe_names
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
183
|
+
files_for("recipes").inject([]) do |memo, recipe|
|
|
184
|
+
rname = recipe[:name].split("/")[1]
|
|
185
|
+
rname = File.basename(rname, ".rb")
|
|
186
|
+
memo << "#{name}::#{rname}"
|
|
187
|
+
memo
|
|
205
188
|
end
|
|
206
|
-
results
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def recipe_filenames=(*filenames)
|
|
210
|
-
@recipe_filenames = filenames.flatten
|
|
211
|
-
@recipe_filenames_by_name = filenames_by_name(recipe_filenames)
|
|
212
|
-
recipe_filenames
|
|
213
189
|
end
|
|
214
190
|
|
|
215
|
-
## BACKCOMPAT/DEPRECATED - Remove these and fix breakage before release [DAN - 5/20/2010]##
|
|
216
|
-
alias :recipe_files :recipe_filenames
|
|
217
|
-
alias :recipe_files= :recipe_filenames=
|
|
218
|
-
|
|
219
191
|
# called from DSL
|
|
220
192
|
def load_recipe(recipe_name, run_context)
|
|
221
193
|
unless recipe_filenames_by_name.has_key?(recipe_name)
|
|
@@ -235,41 +207,7 @@ class Chef
|
|
|
235
207
|
end
|
|
236
208
|
|
|
237
209
|
def segment_filenames(segment)
|
|
238
|
-
|
|
239
|
-
raise ArgumentError, "invalid segment #{segment}: must be one of #{COOKBOOK_SEGMENTS.join(', ')}"
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
case segment.to_sym
|
|
243
|
-
when :resources
|
|
244
|
-
@resource_filenames
|
|
245
|
-
when :providers
|
|
246
|
-
@provider_filenames
|
|
247
|
-
when :recipes
|
|
248
|
-
@recipe_filenames
|
|
249
|
-
when :libraries
|
|
250
|
-
@library_filenames
|
|
251
|
-
when :definitions
|
|
252
|
-
@definition_filenames
|
|
253
|
-
when :attributes
|
|
254
|
-
@attribute_filenames
|
|
255
|
-
when :files
|
|
256
|
-
@file_filenames
|
|
257
|
-
when :templates
|
|
258
|
-
@template_filenames
|
|
259
|
-
when :root_files
|
|
260
|
-
@root_filenames
|
|
261
|
-
end
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
def replace_segment_filenames(segment, filenames)
|
|
265
|
-
case segment.to_sym
|
|
266
|
-
when :recipes
|
|
267
|
-
self.recipe_filenames = filenames
|
|
268
|
-
when :attributes
|
|
269
|
-
self.attribute_filenames = filenames
|
|
270
|
-
else
|
|
271
|
-
segment_filenames(segment).replace(filenames)
|
|
272
|
-
end
|
|
210
|
+
files_for(segment).map { |f| f["full_path"] || File.join(root_dir, f["path"]) }
|
|
273
211
|
end
|
|
274
212
|
|
|
275
213
|
# Query whether a template file +template_filename+ is available. File
|
|
@@ -349,7 +287,7 @@ class Chef
|
|
|
349
287
|
filenames_by_pref = Hash.new
|
|
350
288
|
preferences.each { |pref| filenames_by_pref[pref] = Array.new }
|
|
351
289
|
|
|
352
|
-
|
|
290
|
+
files_for(segment).each do |manifest_record|
|
|
353
291
|
manifest_record_path = manifest_record[:path]
|
|
354
292
|
|
|
355
293
|
# find the NON SPECIFIC filenames, but prefer them by filespecificity.
|
|
@@ -389,7 +327,7 @@ class Chef
|
|
|
389
327
|
records_by_pref = Hash.new
|
|
390
328
|
preferences.each { |pref| records_by_pref[pref] = Array.new }
|
|
391
329
|
|
|
392
|
-
|
|
330
|
+
files_for(segment).each do |manifest_record|
|
|
393
331
|
manifest_record_path = manifest_record[:path]
|
|
394
332
|
|
|
395
333
|
# extract the preference part from the path.
|
|
@@ -469,12 +407,22 @@ class Chef
|
|
|
469
407
|
end
|
|
470
408
|
private :preferences_for_path
|
|
471
409
|
|
|
410
|
+
def display
|
|
411
|
+
output = Mash.new
|
|
412
|
+
output["cookbook_name"] = name
|
|
413
|
+
output["name"] = full_name
|
|
414
|
+
output["frozen?"] = frozen_version?
|
|
415
|
+
output["metadata"] = metadata.to_hash
|
|
416
|
+
output["version"] = version
|
|
417
|
+
output.merge(cookbook_manifest.by_parent_directory)
|
|
418
|
+
end
|
|
419
|
+
|
|
472
420
|
def self.from_hash(o)
|
|
473
421
|
cookbook_version = new(o["cookbook_name"] || o["name"])
|
|
474
422
|
|
|
475
423
|
# We want the Chef::Cookbook::Metadata object to always be inflated
|
|
476
|
-
cookbook_version.metadata = Chef::Cookbook::Metadata.from_hash(o["metadata"])
|
|
477
424
|
cookbook_version.manifest = o
|
|
425
|
+
cookbook_version.metadata = Chef::Cookbook::Metadata.from_hash(o["metadata"])
|
|
478
426
|
cookbook_version.identifier = o["identifier"] if o.key?("identifier")
|
|
479
427
|
|
|
480
428
|
# We don't need the following step when we decide to stop supporting deprecated operators in the metadata (e.g. <<, >>)
|
|
@@ -484,42 +432,10 @@ class Chef
|
|
|
484
432
|
cookbook_version
|
|
485
433
|
end
|
|
486
434
|
|
|
487
|
-
def self.json_create(o)
|
|
488
|
-
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::CookbookVersion#from_hash")
|
|
489
|
-
from_hash(o)
|
|
490
|
-
end
|
|
491
|
-
|
|
492
435
|
def self.from_cb_artifact_data(o)
|
|
493
436
|
from_hash(o)
|
|
494
437
|
end
|
|
495
438
|
|
|
496
|
-
# @deprecated This method was used by the Ruby Chef Server and is no longer
|
|
497
|
-
# needed. There is no replacement.
|
|
498
|
-
def generate_manifest_with_urls
|
|
499
|
-
Chef.deprecated(:internal_api, "Deprecated method #generate_manifest_with_urls.")
|
|
500
|
-
|
|
501
|
-
rendered_manifest = manifest.dup
|
|
502
|
-
COOKBOOK_SEGMENTS.each do |segment|
|
|
503
|
-
if rendered_manifest.has_key?(segment)
|
|
504
|
-
rendered_manifest[segment].each do |manifest_record|
|
|
505
|
-
url_options = { :cookbook_name => name.to_s, :cookbook_version => version, :checksum => manifest_record["checksum"] }
|
|
506
|
-
manifest_record["url"] = yield(url_options)
|
|
507
|
-
end
|
|
508
|
-
end
|
|
509
|
-
end
|
|
510
|
-
rendered_manifest
|
|
511
|
-
end
|
|
512
|
-
|
|
513
|
-
def to_hash
|
|
514
|
-
# TODO: this should become deprecated when the API for CookbookManifest becomes stable
|
|
515
|
-
cookbook_manifest.to_hash
|
|
516
|
-
end
|
|
517
|
-
|
|
518
|
-
def to_json(*a)
|
|
519
|
-
# TODO: this should become deprecated when the API for CookbookManifest becomes stable
|
|
520
|
-
cookbook_manifest.to_json
|
|
521
|
-
end
|
|
522
|
-
|
|
523
439
|
def metadata_json_file
|
|
524
440
|
File.join(root_paths[0], "metadata.json")
|
|
525
441
|
end
|
|
@@ -538,22 +454,12 @@ class Chef
|
|
|
538
454
|
# REST API
|
|
539
455
|
##
|
|
540
456
|
|
|
541
|
-
def save_url
|
|
542
|
-
# TODO: this should become deprecated when the API for CookbookManifest becomes stable
|
|
543
|
-
cookbook_manifest.save_url
|
|
544
|
-
end
|
|
545
|
-
|
|
546
|
-
def force_save_url
|
|
547
|
-
# TODO: this should become deprecated when the API for CookbookManifest becomes stable
|
|
548
|
-
cookbook_manifest.force_save_url
|
|
549
|
-
end
|
|
550
|
-
|
|
551
457
|
def chef_server_rest
|
|
552
|
-
@chef_server_rest ||=
|
|
458
|
+
@chef_server_rest ||= chef_server_rest
|
|
553
459
|
end
|
|
554
460
|
|
|
555
461
|
def self.chef_server_rest
|
|
556
|
-
Chef::ServerAPI.new(Chef::Config[:chef_server_url])
|
|
462
|
+
Chef::ServerAPI.new(Chef::Config[:chef_server_url], { version_class: Chef::CookbookManifestVersions })
|
|
557
463
|
end
|
|
558
464
|
|
|
559
465
|
def destroy
|
|
@@ -600,19 +506,19 @@ class Chef
|
|
|
600
506
|
end
|
|
601
507
|
|
|
602
508
|
def <=>(other)
|
|
603
|
-
raise Chef::Exceptions::CookbookVersionNameMismatch if
|
|
509
|
+
raise Chef::Exceptions::CookbookVersionNameMismatch if name != other.name
|
|
604
510
|
# FIXME: can we change the interface to the Metadata class such
|
|
605
511
|
# that metadata.version returns a Chef::Version instance instead
|
|
606
512
|
# of a string?
|
|
607
|
-
Chef::Version.new(
|
|
513
|
+
Chef::Version.new(version) <=> Chef::Version.new(other.version)
|
|
608
514
|
end
|
|
609
515
|
|
|
610
|
-
private
|
|
611
|
-
|
|
612
516
|
def cookbook_manifest
|
|
613
517
|
@cookbook_manifest ||= CookbookManifest.new(self)
|
|
614
518
|
end
|
|
615
519
|
|
|
520
|
+
private
|
|
521
|
+
|
|
616
522
|
def find_preferred_manifest_record(node, segment, filename)
|
|
617
523
|
preferences = preferences_for_path(node, segment, filename)
|
|
618
524
|
|
|
@@ -620,15 +526,21 @@ class Chef
|
|
|
620
526
|
preferences.find { |preferred_filename| manifest_records_by_path[preferred_filename] }
|
|
621
527
|
end
|
|
622
528
|
|
|
623
|
-
# For each
|
|
529
|
+
# For each manifest record, produce a mapping of base filename (i.e. recipe name
|
|
530
|
+
# or attribute file) to on disk location
|
|
531
|
+
def relative_paths_by_name(records)
|
|
532
|
+
records.select { |record| record[:name] =~ /\.rb$/ }.inject({}) { |memo, record| memo[File.basename(record[:name], ".rb")] = record[:path]; memo }
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
# For each manifest record, produce a mapping of base filename (i.e. recipe name
|
|
624
536
|
# or attribute file) to on disk location
|
|
625
|
-
def filenames_by_name(
|
|
626
|
-
|
|
537
|
+
def filenames_by_name(records)
|
|
538
|
+
records.select { |record| record[:name] =~ /\.rb$/ }.inject({}) { |memo, record| memo[File.basename(record[:name], ".rb")] = record[:full_path]; memo }
|
|
627
539
|
end
|
|
628
540
|
|
|
629
541
|
def file_vendor
|
|
630
542
|
unless @file_vendor
|
|
631
|
-
@file_vendor = Chef::Cookbook::FileVendor.create_from_manifest(
|
|
543
|
+
@file_vendor = Chef::Cookbook::FileVendor.create_from_manifest(cookbook_manifest)
|
|
632
544
|
end
|
|
633
545
|
@file_vendor
|
|
634
546
|
end
|
data/lib/chef/data_bag.rb
CHANGED
|
@@ -78,12 +78,6 @@ class Chef
|
|
|
78
78
|
Chef::ServerAPI.new(Chef::Config[:chef_server_url])
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
# Create a Chef::Role from JSON
|
|
82
|
-
def self.json_create(o)
|
|
83
|
-
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::DataBag#from_hash")
|
|
84
|
-
from_hash(o)
|
|
85
|
-
end
|
|
86
|
-
|
|
87
81
|
def self.from_hash(o)
|
|
88
82
|
bag = new
|
|
89
83
|
bag.name(o["name"])
|
|
@@ -137,7 +131,7 @@ class Chef
|
|
|
137
131
|
end
|
|
138
132
|
end
|
|
139
133
|
end
|
|
140
|
-
|
|
134
|
+
data_bag
|
|
141
135
|
else
|
|
142
136
|
Chef::ServerAPI.new(Chef::Config[:chef_server_url]).get("data/#{name}")
|
|
143
137
|
end
|
data/lib/chef/data_bag_item.rb
CHANGED
|
@@ -75,6 +75,7 @@ class Chef
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def raw_data=(new_data)
|
|
78
|
+
new_data = Mash.new(new_data)
|
|
78
79
|
unless new_data.respond_to?(:[]) && new_data.respond_to?(:keys)
|
|
79
80
|
raise Exceptions::ValidationFailed, "Data Bag Items must contain a Hash or Mash!"
|
|
80
81
|
end
|
|
@@ -107,9 +108,9 @@ class Chef
|
|
|
107
108
|
end
|
|
108
109
|
|
|
109
110
|
def to_hash
|
|
110
|
-
result =
|
|
111
|
+
result = raw_data.dup
|
|
111
112
|
result["chef_type"] = "data_bag_item"
|
|
112
|
-
result["data_bag"] =
|
|
113
|
+
result["data_bag"] = data_bag.to_s
|
|
113
114
|
result
|
|
114
115
|
end
|
|
115
116
|
|
|
@@ -132,19 +133,13 @@ class Chef
|
|
|
132
133
|
item = new
|
|
133
134
|
item.data_bag(h.delete("data_bag")) if h.key?("data_bag")
|
|
134
135
|
if h.key?("raw_data")
|
|
135
|
-
item.raw_data =
|
|
136
|
+
item.raw_data = h["raw_data"]
|
|
136
137
|
else
|
|
137
138
|
item.raw_data = h
|
|
138
139
|
end
|
|
139
140
|
item
|
|
140
141
|
end
|
|
141
142
|
|
|
142
|
-
# Create a Chef::DataBagItem from JSON
|
|
143
|
-
def self.json_create(o)
|
|
144
|
-
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::DataBagItem#from_hash")
|
|
145
|
-
from_hash(o)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
143
|
# Load a Data Bag Item by name via either the RESTful API or local data_bag_path if run in solo mode
|
|
149
144
|
def self.load(data_bag, name)
|
|
150
145
|
if Chef::Config[:solo_legacy_mode]
|
|
@@ -207,7 +202,7 @@ class Chef
|
|
|
207
202
|
end
|
|
208
203
|
|
|
209
204
|
def pretty_print(pretty_printer)
|
|
210
|
-
pretty_printer.pp({ "data_bag_item('#{data_bag}', '#{id}')" =>
|
|
205
|
+
pretty_printer.pp({ "data_bag_item('#{data_bag}', '#{id}')" => to_hash })
|
|
211
206
|
end
|
|
212
207
|
|
|
213
208
|
def id
|
|
@@ -73,6 +73,8 @@ class Chef
|
|
|
73
73
|
"resources" => reporter_data[:resources].map(&:report_data),
|
|
74
74
|
"run_id" => run_status.run_id,
|
|
75
75
|
"run_list" => run_status.node.run_list.for_json,
|
|
76
|
+
"policy_name" => run_status.node.policy_name,
|
|
77
|
+
"policy_group" => run_status.node.policy_group,
|
|
76
78
|
"start_time" => run_status.start_time.utc.iso8601,
|
|
77
79
|
"end_time" => run_status.end_time.utc.iso8601,
|
|
78
80
|
"source" => collector_source,
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
# limitations under the License.
|
|
19
19
|
#
|
|
20
20
|
|
|
21
|
+
require "chef/exceptions"
|
|
22
|
+
|
|
21
23
|
class Chef
|
|
22
24
|
class DataCollector
|
|
23
25
|
class ResourceReport
|
|
@@ -67,9 +69,9 @@ class Chef
|
|
|
67
69
|
hash = {
|
|
68
70
|
"type" => new_resource.resource_name.to_sym,
|
|
69
71
|
"name" => new_resource.name.to_s,
|
|
70
|
-
"id" =>
|
|
71
|
-
"after" =>
|
|
72
|
-
"before" =>
|
|
72
|
+
"id" => resource_identity,
|
|
73
|
+
"after" => new_resource_state_reporter,
|
|
74
|
+
"before" => current_resource_state_reporter,
|
|
73
75
|
"duration" => elapsed_time_in_milliseconds.to_s,
|
|
74
76
|
"delta" => new_resource.respond_to?(:diff) && potentially_changed? ? new_resource.diff : "",
|
|
75
77
|
"ignore_failure" => new_resource.ignore_failure,
|
|
@@ -83,13 +85,39 @@ class Chef
|
|
|
83
85
|
hash["recipe_name"] = new_resource.recipe_name
|
|
84
86
|
end
|
|
85
87
|
|
|
86
|
-
hash["conditional"]
|
|
88
|
+
hash["conditional"] = conditional.to_text if status == "skipped"
|
|
87
89
|
hash["error_message"] = exception.message unless exception.nil?
|
|
88
90
|
|
|
89
91
|
hash
|
|
90
92
|
end
|
|
91
93
|
alias :to_h :to_hash
|
|
92
94
|
alias :for_json :to_hash
|
|
95
|
+
|
|
96
|
+
# We should be able to call the identity of a resource safely, but there
|
|
97
|
+
# is an edge case where resources that have a lazy property that is both
|
|
98
|
+
# the name_property and the identity property, it will thow a validation
|
|
99
|
+
# exception causing the chef-client run to fail. We are not fixing this
|
|
100
|
+
# case since Chef is actually doing the right thing but we are making the
|
|
101
|
+
# ResourceReporter smarter so that it detects the failure and sends a
|
|
102
|
+
# message to the data collector containing a static resource identity
|
|
103
|
+
# since we were unable to generate a proper one.
|
|
104
|
+
def resource_identity
|
|
105
|
+
new_resource.identity.to_s
|
|
106
|
+
rescue => e
|
|
107
|
+
"unknown identity (due to #{e.class})"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def new_resource_state_reporter
|
|
111
|
+
new_resource.state_for_resource_reporter
|
|
112
|
+
rescue
|
|
113
|
+
{}
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def current_resource_state_reporter
|
|
117
|
+
current_resource ? current_resource.state_for_resource_reporter : {}
|
|
118
|
+
rescue
|
|
119
|
+
{}
|
|
120
|
+
end
|
|
93
121
|
end
|
|
94
122
|
end
|
|
95
123
|
end
|
data/lib/chef/data_collector.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Author:: Adam Leff (<adamleff@chef.io>)
|
|
3
3
|
# Author:: Ryan Cragun (<ryan@chef.io>)
|
|
4
4
|
#
|
|
5
|
-
# Copyright:: Copyright 2012-
|
|
5
|
+
# Copyright:: Copyright 2012-2017, Chef Software Inc.
|
|
6
6
|
# License:: Apache License, Version 2.0
|
|
7
7
|
#
|
|
8
8
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -288,9 +288,9 @@ class Chef
|
|
|
288
288
|
# raise an exception.
|
|
289
289
|
def setup_http_client
|
|
290
290
|
if data_collector_token.nil?
|
|
291
|
-
Chef::ServerAPI.new(data_collector_server_url)
|
|
291
|
+
Chef::ServerAPI.new(data_collector_server_url, validate_utf8: false)
|
|
292
292
|
else
|
|
293
|
-
Chef::HTTP::SimpleJSON.new(data_collector_server_url)
|
|
293
|
+
Chef::HTTP::SimpleJSON.new(data_collector_server_url, validate_utf8: false)
|
|
294
294
|
end
|
|
295
295
|
end
|
|
296
296
|
|
|
@@ -333,7 +333,6 @@ class Chef
|
|
|
333
333
|
def send_to_data_collector(message)
|
|
334
334
|
return unless data_collector_accessible?
|
|
335
335
|
|
|
336
|
-
Chef::Log.debug("data_collector_reporter: POSTing the following message to #{data_collector_server_url}: #{Chef::JSONCompat.to_json(message)}")
|
|
337
336
|
http.post(nil, message, headers)
|
|
338
337
|
end
|
|
339
338
|
|
|
@@ -38,22 +38,6 @@ class Chef
|
|
|
38
38
|
__path__.push(key)
|
|
39
39
|
@delegate_sd_obj.public_send(__method__, *__path__, value)
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
# unfortunately we have to support method_missing for node.set_unless.foo.bar = 'baz' notation
|
|
43
|
-
def method_missing(symbol, *args)
|
|
44
|
-
if symbol == :to_ary
|
|
45
|
-
merged_attributes.send(symbol, *args)
|
|
46
|
-
elsif args.empty?
|
|
47
|
-
Chef.deprecated :attributes, %q{method access to node attributes (node.foo.bar) is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]["bar"])}
|
|
48
|
-
self[symbol]
|
|
49
|
-
elsif symbol.to_s =~ /=$/
|
|
50
|
-
Chef.deprecated :attributes, %q{method setting of node attributes (node.foo="bar") is deprecated and will be removed in Chef 13, please use bracket syntax (node["foo"]="bar")}
|
|
51
|
-
key_to_set = symbol.to_s[/^(.+)=$/, 1]
|
|
52
|
-
self[key_to_set] = (args.length == 1 ? args[0] : args)
|
|
53
|
-
else
|
|
54
|
-
raise NoMethodError, "Undefined node attribute or method `#{symbol}' on `node'"
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
41
|
end
|
|
58
42
|
end
|
|
59
43
|
end
|
data/lib/chef/decorator.rb
CHANGED
|
@@ -52,7 +52,7 @@ class Chef
|
|
|
52
52
|
# adding the define_singleton_method call and @__defined_methods__ tracking
|
|
53
53
|
def method_missing(m, *args, &block)
|
|
54
54
|
r = true
|
|
55
|
-
target =
|
|
55
|
+
target = __getobj__ { r = false }
|
|
56
56
|
|
|
57
57
|
if r && target.respond_to?(m)
|
|
58
58
|
# these next 4 lines are the patched code
|