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
|
@@ -9,15 +9,6 @@ class Chef
|
|
|
9
9
|
class Cookbook
|
|
10
10
|
class CookbookVersionLoader
|
|
11
11
|
|
|
12
|
-
FILETYPES_SUBJECT_TO_IGNORE = [ :attribute_filenames,
|
|
13
|
-
:definition_filenames,
|
|
14
|
-
:recipe_filenames,
|
|
15
|
-
:template_filenames,
|
|
16
|
-
:file_filenames,
|
|
17
|
-
:library_filenames,
|
|
18
|
-
:resource_filenames,
|
|
19
|
-
:provider_filenames]
|
|
20
|
-
|
|
21
12
|
UPLOADED_COOKBOOK_VERSION_FILE = ".uploaded-cookbook-version.json".freeze
|
|
22
13
|
|
|
23
14
|
attr_reader :cookbook_settings
|
|
@@ -44,16 +35,7 @@ class Chef
|
|
|
44
35
|
@relative_path = /#{Regexp.escape(@cookbook_path)}\/(.+)$/
|
|
45
36
|
@metadata_loaded = false
|
|
46
37
|
@cookbook_settings = {
|
|
47
|
-
:all_files
|
|
48
|
-
:attribute_filenames => {},
|
|
49
|
-
:definition_filenames => {},
|
|
50
|
-
:recipe_filenames => {},
|
|
51
|
-
:template_filenames => {},
|
|
52
|
-
:file_filenames => {},
|
|
53
|
-
:library_filenames => {},
|
|
54
|
-
:resource_filenames => {},
|
|
55
|
-
:provider_filenames => {},
|
|
56
|
-
:root_filenames => {},
|
|
38
|
+
:all_files => {},
|
|
57
39
|
}
|
|
58
40
|
|
|
59
41
|
@metadata_filenames = []
|
|
@@ -84,16 +66,6 @@ class Chef
|
|
|
84
66
|
|
|
85
67
|
remove_ignored_files
|
|
86
68
|
|
|
87
|
-
load_as(:attribute_filenames, "attributes", "*.rb")
|
|
88
|
-
load_as(:definition_filenames, "definitions", "*.rb")
|
|
89
|
-
load_as(:recipe_filenames, "recipes", "*.rb")
|
|
90
|
-
load_recursively_as(:library_filenames, "libraries", "*")
|
|
91
|
-
load_recursively_as(:template_filenames, "templates", "*")
|
|
92
|
-
load_recursively_as(:file_filenames, "files", "*")
|
|
93
|
-
load_recursively_as(:resource_filenames, "resources", "*.rb")
|
|
94
|
-
load_recursively_as(:provider_filenames, "providers", "*.rb")
|
|
95
|
-
load_root_files
|
|
96
|
-
|
|
97
69
|
if empty?
|
|
98
70
|
Chef::Log.warn "Found a directory #{cookbook_name} in the cookbook path, but it contains no cookbook files. skipping."
|
|
99
71
|
end
|
|
@@ -108,10 +80,10 @@ class Chef
|
|
|
108
80
|
@uploaded_cookbook_version_file = File.join(cookbook_path, UPLOADED_COOKBOOK_VERSION_FILE)
|
|
109
81
|
end
|
|
110
82
|
|
|
111
|
-
if File.exists?(File.join(cookbook_path, "metadata.
|
|
112
|
-
@metadata_filenames << File.join(cookbook_path, "metadata.rb")
|
|
113
|
-
elsif File.exists?(File.join(cookbook_path, "metadata.json"))
|
|
83
|
+
if File.exists?(File.join(cookbook_path, "metadata.json"))
|
|
114
84
|
@metadata_filenames << File.join(cookbook_path, "metadata.json")
|
|
85
|
+
elsif File.exists?(File.join(cookbook_path, "metadata.rb"))
|
|
86
|
+
@metadata_filenames << File.join(cookbook_path, "metadata.rb")
|
|
115
87
|
elsif @uploaded_cookbook_version_file
|
|
116
88
|
@metadata_filenames << @uploaded_cookbook_version_file
|
|
117
89
|
end
|
|
@@ -126,16 +98,6 @@ class Chef
|
|
|
126
98
|
|
|
127
99
|
Chef::CookbookVersion.new(cookbook_name, *cookbook_paths).tap do |c|
|
|
128
100
|
c.all_files = cookbook_settings[:all_files].values
|
|
129
|
-
c.attribute_filenames = cookbook_settings[:attribute_filenames].values
|
|
130
|
-
c.definition_filenames = cookbook_settings[:definition_filenames].values
|
|
131
|
-
c.recipe_filenames = cookbook_settings[:recipe_filenames].values
|
|
132
|
-
c.template_filenames = cookbook_settings[:template_filenames].values
|
|
133
|
-
c.file_filenames = cookbook_settings[:file_filenames].values
|
|
134
|
-
c.library_filenames = cookbook_settings[:library_filenames].values
|
|
135
|
-
c.resource_filenames = cookbook_settings[:resource_filenames].values
|
|
136
|
-
c.provider_filenames = cookbook_settings[:provider_filenames].values
|
|
137
|
-
c.root_filenames = cookbook_settings[:root_filenames].values
|
|
138
|
-
c.metadata_filenames = metadata_filenames
|
|
139
101
|
c.metadata = metadata
|
|
140
102
|
|
|
141
103
|
c.freeze_version if @frozen
|
|
@@ -253,51 +215,6 @@ class Chef
|
|
|
253
215
|
end
|
|
254
216
|
end
|
|
255
217
|
|
|
256
|
-
def load_root_files
|
|
257
|
-
select_files_by_glob(File.join(Chef::Util::PathHelper.escape_glob_dir(cookbook_path), "*"), File::FNM_DOTMATCH).each do |file|
|
|
258
|
-
file = Chef::Util::PathHelper.cleanpath(file)
|
|
259
|
-
next if File.directory?(file)
|
|
260
|
-
next if File.basename(file) == UPLOADED_COOKBOOK_VERSION_FILE
|
|
261
|
-
name = Chef::Util::PathHelper.relative_path_from(@cookbook_path, file)
|
|
262
|
-
cookbook_settings[:root_filenames][name] = file
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
def load_recursively_as(category, category_dir, glob)
|
|
267
|
-
glob_pattern = File.join(Chef::Util::PathHelper.escape_glob_dir(cookbook_path, category_dir), "**", glob)
|
|
268
|
-
select_files_by_glob(glob_pattern, File::FNM_DOTMATCH).each do |file|
|
|
269
|
-
file = Chef::Util::PathHelper.cleanpath(file)
|
|
270
|
-
name = Chef::Util::PathHelper.relative_path_from(@cookbook_path, file)
|
|
271
|
-
cookbook_settings[category][name] = file
|
|
272
|
-
end
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
def load_as(category, *path_glob)
|
|
276
|
-
glob_pattern = File.join(Chef::Util::PathHelper.escape_glob_dir(cookbook_path), *path_glob)
|
|
277
|
-
select_files_by_glob(glob_pattern).each do |file|
|
|
278
|
-
file = Chef::Util::PathHelper.cleanpath(file)
|
|
279
|
-
name = Chef::Util::PathHelper.relative_path_from(@cookbook_path, file)
|
|
280
|
-
cookbook_settings[category][name] = file
|
|
281
|
-
end
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
# Mimic Dir.glob inside a cookbook by running `File.fnmatch?` against
|
|
285
|
-
# `cookbook_settings[:all_files]`.
|
|
286
|
-
#
|
|
287
|
-
# @param pattern [String] a glob string passed to `File.fnmatch?`
|
|
288
|
-
# @param option [Integer] Option flag to control globbing behavior. These
|
|
289
|
-
# are constants defined on `File`, such as `File::FNM_DOTMATCH`.
|
|
290
|
-
# `File.fnmatch?` and `Dir.glob` only take one option argument, if you
|
|
291
|
-
# need to combine options, you must `|` the constants together. To make
|
|
292
|
-
# `File.fnmatch?` behave like `Dir.glob`, `File::FNM_PATHNAME` is
|
|
293
|
-
# always enabled.
|
|
294
|
-
def select_files_by_glob(pattern, option = 0)
|
|
295
|
-
combined_opts = option | File::FNM_PATHNAME
|
|
296
|
-
cookbook_settings[:all_files].values.select do |path|
|
|
297
|
-
File.fnmatch?(pattern, path, combined_opts)
|
|
298
|
-
end
|
|
299
|
-
end
|
|
300
|
-
|
|
301
218
|
def remove_ignored_files
|
|
302
219
|
cookbook_settings[:all_files].reject! do |relative_path, full_path|
|
|
303
220
|
chefignore.ignored?(relative_path)
|
|
@@ -305,40 +222,34 @@ class Chef
|
|
|
305
222
|
end
|
|
306
223
|
|
|
307
224
|
def apply_ruby_metadata(file)
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
raise
|
|
313
|
-
end
|
|
225
|
+
@metadata.from_file(file)
|
|
226
|
+
rescue Chef::Exceptions::JSON::ParseError
|
|
227
|
+
Chef::Log.error("Error evaluating metadata.rb for #{@inferred_cookbook_name} in " + file)
|
|
228
|
+
raise
|
|
314
229
|
end
|
|
315
230
|
|
|
316
231
|
def apply_json_metadata(file)
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
raise
|
|
322
|
-
end
|
|
232
|
+
@metadata.from_json(IO.read(file))
|
|
233
|
+
rescue Chef::Exceptions::JSON::ParseError
|
|
234
|
+
Chef::Log.error("Couldn't parse cookbook metadata JSON for #{@inferred_cookbook_name} in " + file)
|
|
235
|
+
raise
|
|
323
236
|
end
|
|
324
237
|
|
|
325
238
|
def apply_json_cookbook_version_metadata(file)
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
raise
|
|
341
|
-
end
|
|
239
|
+
data = Chef::JSONCompat.parse(IO.read(file))
|
|
240
|
+
@metadata.from_hash(data["metadata"])
|
|
241
|
+
# the JSON cookbok metadata file is only used by chef-zero.
|
|
242
|
+
# The Chef Server API currently does not enforce that the metadata
|
|
243
|
+
# have a `name` field, but that will cause an error when attempting
|
|
244
|
+
# to load the cookbook. To keep compatibility, we fake it by setting
|
|
245
|
+
# the metadata name from the cookbook version object's name.
|
|
246
|
+
#
|
|
247
|
+
# This behavior can be removed if/when Chef Server enforces that the
|
|
248
|
+
# metadata contains a name key.
|
|
249
|
+
@metadata.name(data["cookbook_name"]) unless data["metadata"].key?("name")
|
|
250
|
+
rescue Chef::Exceptions::JSON::ParseError
|
|
251
|
+
Chef::Log.error("Couldn't parse cookbook metadata JSON for #{@inferred_cookbook_name} in " + file)
|
|
252
|
+
raise
|
|
342
253
|
end
|
|
343
254
|
|
|
344
255
|
def set_frozen
|
|
@@ -35,7 +35,7 @@ class Chef
|
|
|
35
35
|
attr_reader :repo_paths
|
|
36
36
|
|
|
37
37
|
def initialize(manifest, *repo_paths)
|
|
38
|
-
@cookbook_name = manifest
|
|
38
|
+
@cookbook_name = manifest.name
|
|
39
39
|
@repo_paths = repo_paths.flatten
|
|
40
40
|
raise ArgumentError, "You must specify at least one repo path" if repo_paths.empty?
|
|
41
41
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright:: Copyright (c) 2010-
|
|
2
|
+
# Copyright:: Copyright (c) 2010-2017, Chef Software Inc.
|
|
3
3
|
# License:: Apache License, Version 2.0
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -36,10 +36,12 @@ class Chef
|
|
|
36
36
|
# Installs the gems into the omnibus gemset.
|
|
37
37
|
#
|
|
38
38
|
def install
|
|
39
|
-
cookbook_gems = []
|
|
39
|
+
cookbook_gems = Hash.new { |h, k| h[k] = [] }
|
|
40
40
|
|
|
41
41
|
cookbook_collection.each do |cookbook_name, cookbook_version|
|
|
42
|
-
|
|
42
|
+
cookbook_version.metadata.gems.each do |args|
|
|
43
|
+
cookbook_gems[args.first] += args[1..-1]
|
|
44
|
+
end
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
events.cookbook_gem_start(cookbook_gems)
|
|
@@ -48,9 +50,11 @@ class Chef
|
|
|
48
50
|
begin
|
|
49
51
|
Dir.mktmpdir("chef-gem-bundle") do |dir|
|
|
50
52
|
File.open("#{dir}/Gemfile", "w+") do |tf|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
Array(Chef::Config[:rubygems_url] || "https://www.rubygems.org").each do |s|
|
|
54
|
+
tf.puts "source '#{s}'"
|
|
55
|
+
end
|
|
56
|
+
cookbook_gems.each do |gem_name, args|
|
|
57
|
+
tf.puts "gem(*#{([gem_name] + args).inspect})"
|
|
54
58
|
end
|
|
55
59
|
tf.close
|
|
56
60
|
Chef::Log.debug("generated Gemfile contents:")
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
2
|
+
# Copyright:: Copyright 2015-2016, Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require "chef/json_compat"
|
|
18
|
+
require "chef/mixin/versioned_api"
|
|
19
|
+
|
|
20
|
+
class Chef
|
|
21
|
+
class Cookbook
|
|
22
|
+
class ManifestV0
|
|
23
|
+
extend Chef::Mixin::VersionedAPI
|
|
24
|
+
|
|
25
|
+
minimum_api_version 0
|
|
26
|
+
|
|
27
|
+
COOKBOOK_SEGMENTS = %w{ resources providers recipes definitions libraries attributes files templates root_files }
|
|
28
|
+
|
|
29
|
+
def self.from_hash(hash)
|
|
30
|
+
response = Mash.new(hash)
|
|
31
|
+
response[:all_files] = COOKBOOK_SEGMENTS.inject([]) do |memo, segment|
|
|
32
|
+
next memo if hash[segment].nil? || hash[segment].empty?
|
|
33
|
+
hash[segment].each do |file|
|
|
34
|
+
file["name"] = "#{segment}/#{file["name"]}" unless segment == "root_files"
|
|
35
|
+
memo << file
|
|
36
|
+
end
|
|
37
|
+
response.delete(segment)
|
|
38
|
+
memo
|
|
39
|
+
end
|
|
40
|
+
response
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.to_hash(manifest)
|
|
44
|
+
result = manifest.manifest.dup
|
|
45
|
+
result.delete("all_files")
|
|
46
|
+
|
|
47
|
+
files = manifest.by_parent_directory
|
|
48
|
+
files.keys.each_with_object(result) do |parent, memo|
|
|
49
|
+
if COOKBOOK_SEGMENTS.include?(parent)
|
|
50
|
+
memo[parent] ||= []
|
|
51
|
+
files[parent].each do |file|
|
|
52
|
+
file["name"] = file["name"].split("/")[1] unless parent == "root_files"
|
|
53
|
+
file.delete("full_path")
|
|
54
|
+
memo[parent] << file
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
# Ensure all segments are set to [] if they don't exist.
|
|
59
|
+
# See https://github.com/chef/chef/issues/6044
|
|
60
|
+
COOKBOOK_SEGMENTS.each do |segment|
|
|
61
|
+
result[segment] ||= []
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
result.merge({ "frozen?" => manifest.frozen_version?, "chef_type" => "cookbook_version" })
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Copyright:: Copyright 2015-2016, Chef Software Inc.
|
|
2
|
+
# License:: Apache License, Version 2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
require "chef/json_compat"
|
|
17
|
+
require "chef/mixin/versioned_api"
|
|
18
|
+
|
|
19
|
+
class Chef
|
|
20
|
+
class Cookbook
|
|
21
|
+
class ManifestV2
|
|
22
|
+
extend Chef::Mixin::VersionedAPI
|
|
23
|
+
|
|
24
|
+
minimum_api_version 2
|
|
25
|
+
|
|
26
|
+
def self.from_hash(hash)
|
|
27
|
+
Chef::Log.debug "processing manifest: #{hash}"
|
|
28
|
+
Mash.new hash
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.to_hash(manifest)
|
|
32
|
+
result = manifest.manifest.dup
|
|
33
|
+
result["all_files"].map! { |file| file.delete("full_path"); file }
|
|
34
|
+
result["frozen?"] = manifest.frozen_version?
|
|
35
|
+
result["chef_type"] = "cookbook_version"
|
|
36
|
+
result.to_hash
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: AJ Christensen (<aj@chef.io>)
|
|
4
4
|
# Author:: Seth Falcon (<seth@chef.io>)
|
|
5
|
-
# Copyright:: Copyright 2008-
|
|
5
|
+
# Copyright:: Copyright 2008-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");
|
|
@@ -44,13 +44,8 @@ class Chef
|
|
|
44
44
|
LICENSE = "license".freeze
|
|
45
45
|
PLATFORMS = "platforms".freeze
|
|
46
46
|
DEPENDENCIES = "dependencies".freeze
|
|
47
|
-
RECOMMENDATIONS = "recommendations".freeze
|
|
48
|
-
SUGGESTIONS = "suggestions".freeze
|
|
49
|
-
CONFLICTING = "conflicting".freeze
|
|
50
47
|
PROVIDING = "providing".freeze
|
|
51
|
-
REPLACING = "replacing".freeze
|
|
52
48
|
ATTRIBUTES = "attributes".freeze
|
|
53
|
-
GROUPINGS = "groupings".freeze
|
|
54
49
|
RECIPES = "recipes".freeze
|
|
55
50
|
VERSION = "version".freeze
|
|
56
51
|
SOURCE_URL = "source_url".freeze
|
|
@@ -62,17 +57,12 @@ class Chef
|
|
|
62
57
|
|
|
63
58
|
COMPARISON_FIELDS = [ :name, :description, :long_description, :maintainer,
|
|
64
59
|
:maintainer_email, :license, :platforms, :dependencies,
|
|
65
|
-
:
|
|
66
|
-
:replacing, :attributes, :groupings, :recipes, :version,
|
|
60
|
+
:providing, :attributes, :recipes, :version,
|
|
67
61
|
:source_url, :issues_url, :privacy, :chef_versions, :ohai_versions,
|
|
68
62
|
:gems ]
|
|
69
63
|
|
|
70
64
|
VERSION_CONSTRAINTS = { :depends => DEPENDENCIES,
|
|
71
|
-
:recommends => RECOMMENDATIONS,
|
|
72
|
-
:suggests => SUGGESTIONS,
|
|
73
|
-
:conflicts => CONFLICTING,
|
|
74
65
|
:provides => PROVIDING,
|
|
75
|
-
:replaces => REPLACING,
|
|
76
66
|
:chef_version => CHEF_VERSIONS,
|
|
77
67
|
:ohai_version => OHAI_VERSIONS }
|
|
78
68
|
|
|
@@ -81,13 +71,8 @@ class Chef
|
|
|
81
71
|
|
|
82
72
|
attr_reader :platforms
|
|
83
73
|
attr_reader :dependencies
|
|
84
|
-
attr_reader :recommendations
|
|
85
|
-
attr_reader :suggestions
|
|
86
|
-
attr_reader :conflicting
|
|
87
74
|
attr_reader :providing
|
|
88
|
-
attr_reader :replacing
|
|
89
75
|
attr_reader :attributes
|
|
90
|
-
attr_reader :groupings
|
|
91
76
|
attr_reader :recipes
|
|
92
77
|
attr_reader :version
|
|
93
78
|
|
|
@@ -120,13 +105,8 @@ class Chef
|
|
|
120
105
|
|
|
121
106
|
@platforms = Mash.new
|
|
122
107
|
@dependencies = Mash.new
|
|
123
|
-
@recommendations = Mash.new
|
|
124
|
-
@suggestions = Mash.new
|
|
125
|
-
@conflicting = Mash.new
|
|
126
108
|
@providing = Mash.new
|
|
127
|
-
@replacing = Mash.new
|
|
128
109
|
@attributes = Mash.new
|
|
129
|
-
@groupings = Mash.new
|
|
130
110
|
@recipes = Mash.new
|
|
131
111
|
@version = Version.new("0.0.0")
|
|
132
112
|
@source_url = ""
|
|
@@ -306,7 +286,7 @@ class Chef
|
|
|
306
286
|
# versions<Array>:: Returns the list of versions for the platform
|
|
307
287
|
def depends(cookbook, *version_args)
|
|
308
288
|
if cookbook == name
|
|
309
|
-
|
|
289
|
+
raise "Cookbook depends on itself in cookbook #{name}, please remove the this unnecessary self-dependency"
|
|
310
290
|
else
|
|
311
291
|
version = new_args_format(:depends, cookbook, version_args)
|
|
312
292
|
constraint = validate_version_constraint(:depends, cookbook, version)
|
|
@@ -315,57 +295,6 @@ class Chef
|
|
|
315
295
|
@dependencies[cookbook]
|
|
316
296
|
end
|
|
317
297
|
|
|
318
|
-
# Adds a recommendation for another cookbook, with version checking strings.
|
|
319
|
-
#
|
|
320
|
-
# === Parameters
|
|
321
|
-
# cookbook<String>:: The cookbook
|
|
322
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
|
323
|
-
# where OP is one of < <= = > >= ~> and VERSION has
|
|
324
|
-
# the form x.y.z or x.y.
|
|
325
|
-
#
|
|
326
|
-
# === Returns
|
|
327
|
-
# versions<Array>:: Returns the list of versions for the platform
|
|
328
|
-
def recommends(cookbook, *version_args)
|
|
329
|
-
version = new_args_format(:recommends, cookbook, version_args)
|
|
330
|
-
constraint = validate_version_constraint(:recommends, cookbook, version)
|
|
331
|
-
@recommendations[cookbook] = constraint.to_s
|
|
332
|
-
@recommendations[cookbook]
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
# Adds a suggestion for another cookbook, with version checking strings.
|
|
336
|
-
#
|
|
337
|
-
# === Parameters
|
|
338
|
-
# cookbook<String>:: The cookbook
|
|
339
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
|
340
|
-
# where OP is one of < <= = > >= ~> and VERSION has the
|
|
341
|
-
# formx.y.z or x.y.
|
|
342
|
-
#
|
|
343
|
-
# === Returns
|
|
344
|
-
# versions<Array>:: Returns the list of versions for the platform
|
|
345
|
-
def suggests(cookbook, *version_args)
|
|
346
|
-
version = new_args_format(:suggests, cookbook, version_args)
|
|
347
|
-
constraint = validate_version_constraint(:suggests, cookbook, version)
|
|
348
|
-
@suggestions[cookbook] = constraint.to_s
|
|
349
|
-
@suggestions[cookbook]
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
# Adds a conflict for another cookbook, with version checking strings.
|
|
353
|
-
#
|
|
354
|
-
# === Parameters
|
|
355
|
-
# cookbook<String>:: The cookbook
|
|
356
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
|
357
|
-
# where OP is one of < <= = > >= ~> and VERSION has
|
|
358
|
-
# the form x.y.z or x.y.
|
|
359
|
-
#
|
|
360
|
-
# === Returns
|
|
361
|
-
# versions<Array>:: Returns the list of versions for the platform
|
|
362
|
-
def conflicts(cookbook, *version_args)
|
|
363
|
-
version = new_args_format(:conflicts, cookbook, version_args)
|
|
364
|
-
constraint = validate_version_constraint(:conflicts, cookbook, version)
|
|
365
|
-
@conflicting[cookbook] = constraint.to_s
|
|
366
|
-
@conflicting[cookbook]
|
|
367
|
-
end
|
|
368
|
-
|
|
369
298
|
# Adds a recipe, definition, or resource provided by this cookbook.
|
|
370
299
|
#
|
|
371
300
|
# Recipes are specified as normal
|
|
@@ -387,22 +316,6 @@ class Chef
|
|
|
387
316
|
@providing[cookbook]
|
|
388
317
|
end
|
|
389
318
|
|
|
390
|
-
# Adds a cookbook that is replaced by this one, with version checking strings.
|
|
391
|
-
#
|
|
392
|
-
# === Parameters
|
|
393
|
-
# cookbook<String>:: The cookbook we replace
|
|
394
|
-
# version<String>:: A version constraint of the form "OP VERSION",
|
|
395
|
-
# where OP is one of < <= = > >= ~> and VERSION has the form x.y.z or x.y.
|
|
396
|
-
#
|
|
397
|
-
# === Returns
|
|
398
|
-
# versions<Array>:: Returns the list of versions for the platform
|
|
399
|
-
def replaces(cookbook, *version_args)
|
|
400
|
-
version = new_args_format(:replaces, cookbook, version_args)
|
|
401
|
-
constraint = validate_version_constraint(:replaces, cookbook, version)
|
|
402
|
-
@replacing[cookbook] = constraint.to_s
|
|
403
|
-
@replacing[cookbook]
|
|
404
|
-
end
|
|
405
|
-
|
|
406
319
|
# Metadata DSL to set a valid chef_version. May be declared multiple times
|
|
407
320
|
# with the result being 'OR'd such that if any statements match, the version
|
|
408
321
|
# is considered supported. Uses Gem::Requirement for its implementation.
|
|
@@ -462,7 +375,7 @@ class Chef
|
|
|
462
375
|
cookbook.fully_qualified_recipe_names.map do |recipe_name|
|
|
463
376
|
unqualified_name =
|
|
464
377
|
if recipe_name =~ /::default$/
|
|
465
|
-
|
|
378
|
+
name.to_s
|
|
466
379
|
else
|
|
467
380
|
recipe_name
|
|
468
381
|
end
|
|
@@ -519,18 +432,6 @@ class Chef
|
|
|
519
432
|
@attributes[name]
|
|
520
433
|
end
|
|
521
434
|
|
|
522
|
-
def grouping(name, options)
|
|
523
|
-
validate(
|
|
524
|
-
options,
|
|
525
|
-
{
|
|
526
|
-
:title => { :kind_of => String },
|
|
527
|
-
:description => { :kind_of => String },
|
|
528
|
-
}
|
|
529
|
-
)
|
|
530
|
-
@groupings[name] = options
|
|
531
|
-
@groupings[name]
|
|
532
|
-
end
|
|
533
|
-
|
|
534
435
|
# Convert an Array of Gem::Dependency objects (chef_version/ohai_version) to an Array.
|
|
535
436
|
#
|
|
536
437
|
# Gem::Dependencey#to_s is not useful, and there is no #to_json defined on it or its component
|
|
@@ -567,29 +468,24 @@ class Chef
|
|
|
567
468
|
|
|
568
469
|
def to_hash
|
|
569
470
|
{
|
|
570
|
-
NAME =>
|
|
571
|
-
DESCRIPTION =>
|
|
572
|
-
LONG_DESCRIPTION =>
|
|
573
|
-
MAINTAINER =>
|
|
574
|
-
MAINTAINER_EMAIL =>
|
|
575
|
-
LICENSE =>
|
|
576
|
-
PLATFORMS =>
|
|
577
|
-
DEPENDENCIES =>
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
ISSUES_URL => self.issues_url,
|
|
589
|
-
PRIVACY => self.privacy,
|
|
590
|
-
CHEF_VERSIONS => gem_requirements_to_array(*self.chef_versions),
|
|
591
|
-
OHAI_VERSIONS => gem_requirements_to_array(*self.ohai_versions),
|
|
592
|
-
GEMS => self.gems,
|
|
471
|
+
NAME => name,
|
|
472
|
+
DESCRIPTION => description,
|
|
473
|
+
LONG_DESCRIPTION => long_description,
|
|
474
|
+
MAINTAINER => maintainer,
|
|
475
|
+
MAINTAINER_EMAIL => maintainer_email,
|
|
476
|
+
LICENSE => license,
|
|
477
|
+
PLATFORMS => platforms,
|
|
478
|
+
DEPENDENCIES => dependencies,
|
|
479
|
+
PROVIDING => providing,
|
|
480
|
+
ATTRIBUTES => attributes,
|
|
481
|
+
RECIPES => recipes,
|
|
482
|
+
VERSION => version,
|
|
483
|
+
SOURCE_URL => source_url,
|
|
484
|
+
ISSUES_URL => issues_url,
|
|
485
|
+
PRIVACY => privacy,
|
|
486
|
+
CHEF_VERSIONS => gem_requirements_to_array(*chef_versions),
|
|
487
|
+
OHAI_VERSIONS => gem_requirements_to_array(*ohai_versions),
|
|
488
|
+
GEMS => gems,
|
|
593
489
|
}
|
|
594
490
|
end
|
|
595
491
|
|
|
@@ -598,7 +494,7 @@ class Chef
|
|
|
598
494
|
end
|
|
599
495
|
|
|
600
496
|
def self.from_hash(o)
|
|
601
|
-
cm =
|
|
497
|
+
cm = new()
|
|
602
498
|
cm.from_hash(o)
|
|
603
499
|
cm
|
|
604
500
|
end
|
|
@@ -612,13 +508,8 @@ class Chef
|
|
|
612
508
|
@license = o[LICENSE] if o.has_key?(LICENSE)
|
|
613
509
|
@platforms = o[PLATFORMS] if o.has_key?(PLATFORMS)
|
|
614
510
|
@dependencies = handle_deprecated_constraints(o[DEPENDENCIES]) if o.has_key?(DEPENDENCIES)
|
|
615
|
-
@recommendations = handle_deprecated_constraints(o[RECOMMENDATIONS]) if o.has_key?(RECOMMENDATIONS)
|
|
616
|
-
@suggestions = handle_deprecated_constraints(o[SUGGESTIONS]) if o.has_key?(SUGGESTIONS)
|
|
617
|
-
@conflicting = handle_deprecated_constraints(o[CONFLICTING]) if o.has_key?(CONFLICTING)
|
|
618
511
|
@providing = o[PROVIDING] if o.has_key?(PROVIDING)
|
|
619
|
-
@replacing = handle_deprecated_constraints(o[REPLACING]) if o.has_key?(REPLACING)
|
|
620
512
|
@attributes = o[ATTRIBUTES] if o.has_key?(ATTRIBUTES)
|
|
621
|
-
@groupings = o[GROUPINGS] if o.has_key?(GROUPINGS)
|
|
622
513
|
@recipes = o[RECIPES] if o.has_key?(RECIPES)
|
|
623
514
|
@version = o[VERSION] if o.has_key?(VERSION)
|
|
624
515
|
@source_url = o[SOURCE_URL] if o.has_key?(SOURCE_URL)
|
|
@@ -632,7 +523,7 @@ class Chef
|
|
|
632
523
|
|
|
633
524
|
def self.from_json(string)
|
|
634
525
|
o = Chef::JSONCompat.from_json(string)
|
|
635
|
-
|
|
526
|
+
from_hash(o)
|
|
636
527
|
end
|
|
637
528
|
|
|
638
529
|
def self.validate_json(json_str)
|
|
@@ -726,7 +617,7 @@ class Chef
|
|
|
726
617
|
if block_given?
|
|
727
618
|
super
|
|
728
619
|
else
|
|
729
|
-
Chef::Log.debug "ignoring method #{method} on cookbook with name #{name}, possible typo or
|
|
620
|
+
Chef::Log.debug "ignoring method #{method} on cookbook with name #{name}, possible typo or the ghosts of metadata past or future?"
|
|
730
621
|
end
|
|
731
622
|
end
|
|
732
623
|
|
|
@@ -30,7 +30,7 @@ class Chef
|
|
|
30
30
|
|
|
31
31
|
def initialize(manifest, rest)
|
|
32
32
|
@manifest = manifest
|
|
33
|
-
@cookbook_name = @manifest
|
|
33
|
+
@cookbook_name = @manifest.name
|
|
34
34
|
@rest = rest
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -44,8 +44,8 @@ class Chef
|
|
|
44
44
|
raise "get_filename: Cannot determine segment/filename for incoming filename #{filename}"
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
raise "No such segment #{segment} in cookbook #{@cookbook_name}" unless @manifest
|
|
48
|
-
found_manifest_record = @manifest
|
|
47
|
+
raise "No such segment #{segment} in cookbook #{@cookbook_name}" unless @manifest.files_for(segment)
|
|
48
|
+
found_manifest_record = @manifest.files_for(segment).find { |manifest_record| manifest_record[:path] == filename }
|
|
49
49
|
raise "No such file #{filename} in #{@cookbook_name}" unless found_manifest_record
|
|
50
50
|
|
|
51
51
|
cache_filename = File.join("cookbooks", @cookbook_name, found_manifest_record["path"])
|