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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Tyler Ball (<tball@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2014-
|
|
3
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -30,7 +30,10 @@ class Chef
|
|
|
30
30
|
|
|
31
31
|
# Matches a single resource lookup specification,
|
|
32
32
|
# e.g., "service[nginx]"
|
|
33
|
-
SINGLE_RESOURCE_MATCH = /^(.+)\[(
|
|
33
|
+
SINGLE_RESOURCE_MATCH = /^(.+)\[(.*)\]$/
|
|
34
|
+
|
|
35
|
+
# Matches e.g. "apt_update" with no name
|
|
36
|
+
NAMELESS_RESOURCE_MATCH = /^([^\[\]\s]+)$/
|
|
34
37
|
|
|
35
38
|
def initialize
|
|
36
39
|
@resources_by_key = Hash.new
|
|
@@ -118,7 +121,7 @@ class Chef
|
|
|
118
121
|
case query_object
|
|
119
122
|
when Chef::Resource
|
|
120
123
|
true
|
|
121
|
-
when SINGLE_RESOURCE_MATCH, MULTIPLE_RESOURCE_MATCH
|
|
124
|
+
when SINGLE_RESOURCE_MATCH, MULTIPLE_RESOURCE_MATCH, NAMELESS_RESOURCE_MATCH
|
|
122
125
|
true
|
|
123
126
|
when Hash
|
|
124
127
|
true
|
|
@@ -132,6 +135,14 @@ class Chef
|
|
|
132
135
|
end
|
|
133
136
|
end
|
|
134
137
|
|
|
138
|
+
def self.from_hash(o)
|
|
139
|
+
collection = new()
|
|
140
|
+
rl = o["instance_vars"]["@resources_by_key"]
|
|
141
|
+
resources = rl.merge(rl) { |k, r| Chef::Resource.from_hash(r) }
|
|
142
|
+
collection.instance_variable_set(:@resources_by_key, resources)
|
|
143
|
+
collection
|
|
144
|
+
end
|
|
145
|
+
|
|
135
146
|
private
|
|
136
147
|
|
|
137
148
|
def create_key(resource_type, instance_name)
|
|
@@ -146,27 +157,43 @@ class Chef
|
|
|
146
157
|
results << lookup(create_key(resource_type, instance_name))
|
|
147
158
|
end
|
|
148
159
|
end
|
|
149
|
-
|
|
160
|
+
results
|
|
150
161
|
end
|
|
151
162
|
|
|
152
163
|
def find_resource_by_string(arg)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
when MULTIPLE_RESOURCE_MATCH
|
|
156
|
-
resource_type = $1
|
|
157
|
-
arg =~ /^.+\[(.+)\]$/
|
|
158
|
-
resource_list = $1
|
|
159
|
-
resource_list.split(",").each do |instance_name|
|
|
160
|
-
results << lookup(create_key(resource_type, instance_name))
|
|
161
|
-
end
|
|
162
|
-
when SINGLE_RESOURCE_MATCH
|
|
164
|
+
begin
|
|
165
|
+
if arg =~ SINGLE_RESOURCE_MATCH
|
|
163
166
|
resource_type = $1
|
|
164
167
|
name = $2
|
|
165
|
-
|
|
168
|
+
return [ lookup(create_key(resource_type, name)) ]
|
|
169
|
+
end
|
|
170
|
+
rescue Chef::Exceptions::ResourceNotFound => e
|
|
171
|
+
if arg =~ MULTIPLE_RESOURCE_MATCH
|
|
172
|
+
begin
|
|
173
|
+
results = Array.new
|
|
174
|
+
resource_type = $1
|
|
175
|
+
arg =~ /^.+\[(.+)\]$/
|
|
176
|
+
resource_list = $1
|
|
177
|
+
resource_list.split(",").each do |instance_name|
|
|
178
|
+
results << lookup(create_key(resource_type, instance_name))
|
|
179
|
+
end
|
|
180
|
+
Chef.deprecated(:multiresource_match, "The resource_collection multi-resource syntax is deprecated")
|
|
181
|
+
return results
|
|
182
|
+
rescue Chef::Exceptions::ResourceNotFound
|
|
183
|
+
raise e
|
|
184
|
+
end
|
|
166
185
|
else
|
|
167
|
-
raise
|
|
186
|
+
raise e
|
|
187
|
+
end
|
|
168
188
|
end
|
|
169
|
-
|
|
189
|
+
|
|
190
|
+
if arg =~ NAMELESS_RESOURCE_MATCH
|
|
191
|
+
resource_type = $1
|
|
192
|
+
name = ""
|
|
193
|
+
return [ lookup(create_key(resource_type, name)) ]
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
raise ArgumentError, "Bad string format #{arg}, you must have a string like resource_type[name]!"
|
|
170
197
|
end
|
|
171
198
|
end
|
|
172
199
|
end
|
|
@@ -117,6 +117,16 @@ class Chef
|
|
|
117
117
|
end
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
+
def self.from_hash(o)
|
|
121
|
+
collection = new()
|
|
122
|
+
{ "@resource_list" => "ResourceList", "@resource_set" => "ResourceSet" }.each_pair do |name, klass|
|
|
123
|
+
obj = Chef::ResourceCollection.const_get(klass).from_hash(o["instance_vars"].delete(name))
|
|
124
|
+
collection.instance_variable_set(name.to_sym, obj)
|
|
125
|
+
end
|
|
126
|
+
collection.instance_variable_set(:@run_context, o["instance_vars"].delete("@run_context"))
|
|
127
|
+
collection
|
|
128
|
+
end
|
|
129
|
+
|
|
120
130
|
private
|
|
121
131
|
|
|
122
132
|
def lookup_recursive(rc, key)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Lamont Granquist (<lamont@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2015-
|
|
3
|
+
# Copyright:: Copyright 2015-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -54,11 +54,6 @@ class Chef
|
|
|
54
54
|
# @api private
|
|
55
55
|
attr_reader :resource_name
|
|
56
56
|
# @api private
|
|
57
|
-
def resource
|
|
58
|
-
Chef.deprecated(:custom_resource, "Chef::ResourceResolver.resource deprecated. Use resource_name instead.")
|
|
59
|
-
resource_name
|
|
60
|
-
end
|
|
61
|
-
# @api private
|
|
62
57
|
attr_reader :action
|
|
63
58
|
# @api private
|
|
64
59
|
attr_reader :canonical
|
|
@@ -161,24 +156,5 @@ class Chef
|
|
|
161
156
|
def overrode_provides?(handler)
|
|
162
157
|
handler.method(:provides?).owner != Chef::Resource.method(:provides?).owner
|
|
163
158
|
end
|
|
164
|
-
|
|
165
|
-
module Deprecated
|
|
166
|
-
# return a deterministically sorted list of Chef::Resource subclasses
|
|
167
|
-
def resources
|
|
168
|
-
Chef::Resource.sorted_descendants
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def enabled_handlers
|
|
172
|
-
handlers = super
|
|
173
|
-
if handlers.empty?
|
|
174
|
-
handlers = resources.select { |handler| overrode_provides?(handler) && handler.provides?(node, resource_name) }
|
|
175
|
-
handlers.each do |handler|
|
|
176
|
-
Chef.deprecated(:custom_resource, "#{handler}.provides? returned true when asked if it provides DSL #{resource_name}, but provides #{resource_name.inspect} was never called! In Chef 13, this will break: you must call provides to mark the names you provide, even if you also override provides? yourself.")
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
handlers
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
prepend Deprecated
|
|
183
159
|
end
|
|
184
160
|
end
|
data/lib/chef/resources.rb
CHANGED
|
@@ -34,7 +34,6 @@ require "chef/resource/dpkg_package"
|
|
|
34
34
|
require "chef/resource/dnf_package"
|
|
35
35
|
require "chef/resource/dsc_script"
|
|
36
36
|
require "chef/resource/dsc_resource"
|
|
37
|
-
require "chef/resource/easy_install_package"
|
|
38
37
|
require "chef/resource/env"
|
|
39
38
|
require "chef/resource/erl_call"
|
|
40
39
|
require "chef/resource/execute"
|
|
@@ -99,3 +98,4 @@ require "chef/resource/zypper_package"
|
|
|
99
98
|
require "chef/resource/cab_package"
|
|
100
99
|
require "chef/resource/powershell_package"
|
|
101
100
|
require "chef/resource/msu_package"
|
|
101
|
+
require "chef/resource/windows_task"
|
data/lib/chef/role.rb
CHANGED
|
@@ -168,12 +168,6 @@ class Chef
|
|
|
168
168
|
self
|
|
169
169
|
end
|
|
170
170
|
|
|
171
|
-
# Create a Chef::Role from JSON
|
|
172
|
-
def self.json_create(o)
|
|
173
|
-
Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::Role#from_hash")
|
|
174
|
-
from_hash(o)
|
|
175
|
-
end
|
|
176
|
-
|
|
177
171
|
def self.from_hash(o)
|
|
178
172
|
role = new
|
|
179
173
|
role.name(o["name"])
|
|
@@ -57,6 +57,7 @@ class Chef
|
|
|
57
57
|
|
|
58
58
|
# Run the compile phase of the chef run. Loads files in the following order:
|
|
59
59
|
# * Libraries
|
|
60
|
+
# * Ohai
|
|
60
61
|
# * Attributes
|
|
61
62
|
# * LWRPs
|
|
62
63
|
# * Resource Definitions
|
|
@@ -69,6 +70,7 @@ class Chef
|
|
|
69
70
|
# #cookbook_order for more information.
|
|
70
71
|
def compile
|
|
71
72
|
compile_libraries
|
|
73
|
+
compile_ohai_plugins
|
|
72
74
|
compile_attributes
|
|
73
75
|
compile_lwrps
|
|
74
76
|
compile_resource_definitions
|
|
@@ -101,11 +103,31 @@ class Chef
|
|
|
101
103
|
@events.library_load_complete
|
|
102
104
|
end
|
|
103
105
|
|
|
106
|
+
# Loads Ohai Plugins from cookbooks, and ensure any old ones are
|
|
107
|
+
# properly cleaned out
|
|
108
|
+
def compile_ohai_plugins
|
|
109
|
+
ohai_plugin_count = count_files_by_segment(:ohai)
|
|
110
|
+
@events.ohai_plugin_load_start(ohai_plugin_count)
|
|
111
|
+
FileUtils.rm_rf(Chef::Config[:ohai_segment_plugin_path])
|
|
112
|
+
|
|
113
|
+
cookbook_order.each do |cookbook|
|
|
114
|
+
load_ohai_plugins_from_cookbook(cookbook)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Doing a full ohai system check is costly, so only do so if we've loaded additional plugins
|
|
118
|
+
if ohai_plugin_count > 0
|
|
119
|
+
ohai = Ohai::System.new.run_additional_plugins(Chef::Config[:ohai_segment_plugin_path])
|
|
120
|
+
node.consume_ohai_data(ohai)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
@events.ohai_plugin_load_complete
|
|
124
|
+
end
|
|
125
|
+
|
|
104
126
|
# Loads attributes files from cookbooks. Attributes files are loaded
|
|
105
127
|
# according to #cookbook_order; within a cookbook, +default.rb+ is loaded
|
|
106
128
|
# first, then the remaining attributes files in lexical sort order.
|
|
107
129
|
def compile_attributes
|
|
108
|
-
@events.attribute_load_start(count_files_by_segment(:attributes))
|
|
130
|
+
@events.attribute_load_start(count_files_by_segment(:attributes, "attributes.rb"))
|
|
109
131
|
cookbook_order.each do |cookbook|
|
|
110
132
|
load_attributes_from_cookbook(cookbook)
|
|
111
133
|
end
|
|
@@ -166,7 +188,16 @@ class Chef
|
|
|
166
188
|
|
|
167
189
|
def load_attributes_from_cookbook(cookbook_name)
|
|
168
190
|
list_of_attr_files = files_in_cookbook_by_segment(cookbook_name, :attributes).dup
|
|
169
|
-
|
|
191
|
+
root_alias = cookbook_collection[cookbook_name].files_for(:root_files).find { |record| record[:name] == "attributes.rb" }
|
|
192
|
+
default_file = list_of_attr_files.find { |path| File.basename(path) == "default.rb" }
|
|
193
|
+
if root_alias
|
|
194
|
+
if default_file
|
|
195
|
+
Chef::Log.error("Cookbook #{cookbook_name} contains both attributes.rb and and attributes/default.rb, ignoring attributes/default.rb")
|
|
196
|
+
list_of_attr_files.delete(default_file)
|
|
197
|
+
end
|
|
198
|
+
# The actual root_alias path decoding is handled in CookbookVersion#attribute_filenames_by_short_filename
|
|
199
|
+
load_attribute_file(cookbook_name.to_s, "default")
|
|
200
|
+
elsif default_file
|
|
170
201
|
list_of_attr_files.delete(default_file)
|
|
171
202
|
load_attribute_file(cookbook_name.to_s, default_file)
|
|
172
203
|
end
|
|
@@ -226,6 +257,19 @@ class Chef
|
|
|
226
257
|
raise
|
|
227
258
|
end
|
|
228
259
|
|
|
260
|
+
def load_ohai_plugins_from_cookbook(cookbook_name)
|
|
261
|
+
target = Chef::Config[:ohai_segment_plugin_path]
|
|
262
|
+
files_in_cookbook_by_segment(cookbook_name, :ohai).each do |filename|
|
|
263
|
+
next unless File.extname(filename) == ".rb"
|
|
264
|
+
|
|
265
|
+
Chef::Log.debug "Loading Ohai plugin: #{filename} from #{cookbook_name}"
|
|
266
|
+
target_name = File.join(target, cookbook_name.to_s, File.basename(filename))
|
|
267
|
+
|
|
268
|
+
FileUtils.mkdir_p(File.dirname(target_name))
|
|
269
|
+
FileUtils.cp(filename, target_name)
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
229
273
|
def load_resource_definitions_from_cookbook(cookbook_name)
|
|
230
274
|
files_in_cookbook_by_segment(cookbook_name, :definitions).each do |filename|
|
|
231
275
|
begin
|
|
@@ -259,16 +303,16 @@ class Chef
|
|
|
259
303
|
ordered_cookbooks << cookbook
|
|
260
304
|
end
|
|
261
305
|
|
|
262
|
-
def count_files_by_segment(segment)
|
|
306
|
+
def count_files_by_segment(segment, root_alias = nil)
|
|
263
307
|
cookbook_collection.inject(0) do |count, cookbook_by_name|
|
|
264
|
-
count + cookbook_by_name[1].segment_filenames(segment).size
|
|
308
|
+
count + cookbook_by_name[1].segment_filenames(segment).size + (root_alias ? cookbook_by_name[1].files_for(:root_files).select { |record| record[:name] == root_alias }.size : 0)
|
|
265
309
|
end
|
|
266
310
|
end
|
|
267
311
|
|
|
268
312
|
# Lists the local paths to files in +cookbook+ of type +segment+
|
|
269
313
|
# (attribute, recipe, etc.), sorted lexically.
|
|
270
314
|
def files_in_cookbook_by_segment(cookbook, segment)
|
|
271
|
-
cookbook_collection[cookbook].
|
|
315
|
+
cookbook_collection[cookbook].files_for(segment).map { |record| record[:full_path] }.sort
|
|
272
316
|
end
|
|
273
317
|
|
|
274
318
|
# Yields the name, as a symbol, of each cookbook depended on by
|
data/lib/chef/run_context.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Christopher Walters (<cw@chef.io>)
|
|
4
4
|
# Author:: Tim Hinderliter (<tim@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");
|
|
@@ -253,7 +253,7 @@ class Chef
|
|
|
253
253
|
# @return [Array[Notification]]
|
|
254
254
|
#
|
|
255
255
|
def before_notifications(resource)
|
|
256
|
-
|
|
256
|
+
before_notification_collection[resource.declared_key]
|
|
257
257
|
end
|
|
258
258
|
|
|
259
259
|
#
|
|
@@ -262,7 +262,7 @@ class Chef
|
|
|
262
262
|
# @return [Array[Notification]]
|
|
263
263
|
#
|
|
264
264
|
def immediate_notifications(resource)
|
|
265
|
-
|
|
265
|
+
immediate_notification_collection[resource.declared_key]
|
|
266
266
|
end
|
|
267
267
|
|
|
268
268
|
#
|
|
@@ -272,7 +272,7 @@ class Chef
|
|
|
272
272
|
# @return [Array[Notification]]
|
|
273
273
|
#
|
|
274
274
|
def delayed_notifications(resource)
|
|
275
|
-
|
|
275
|
+
delayed_notification_collection[resource.declared_key]
|
|
276
276
|
end
|
|
277
277
|
|
|
278
278
|
#
|
|
@@ -576,27 +576,6 @@ ERROR_MESSAGE
|
|
|
576
576
|
attr_reader :loaded_attributes_hash
|
|
577
577
|
attr_reader :loaded_recipes_hash
|
|
578
578
|
|
|
579
|
-
module Deprecated
|
|
580
|
-
###
|
|
581
|
-
# These need to be settable so deploy can run a resource_collection
|
|
582
|
-
# independent of any cookbooks via +recipe_eval+
|
|
583
|
-
def audits=(value)
|
|
584
|
-
Chef.deprecated(:internal_api, "Setting run_context.audits will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
|
585
|
-
@audits = value
|
|
586
|
-
end
|
|
587
|
-
|
|
588
|
-
def immediate_notification_collection=(value)
|
|
589
|
-
Chef.deprecated(:internal_api, "Setting run_context.immediate_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
|
590
|
-
@immediate_notification_collection = value
|
|
591
|
-
end
|
|
592
|
-
|
|
593
|
-
def delayed_notification_collection=(value)
|
|
594
|
-
Chef.deprecated(:internal_api, "Setting run_context.delayed_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
|
|
595
|
-
@delayed_notification_collection = value
|
|
596
|
-
end
|
|
597
|
-
end
|
|
598
|
-
prepend Deprecated
|
|
599
|
-
|
|
600
579
|
#
|
|
601
580
|
# A child run context. Delegates all root context calls to its parent.
|
|
602
581
|
#
|
|
@@ -81,7 +81,7 @@ class Chef
|
|
|
81
81
|
|
|
82
82
|
def ==(other)
|
|
83
83
|
if other.kind_of?(String)
|
|
84
|
-
|
|
84
|
+
to_s == other.to_s
|
|
85
85
|
else
|
|
86
86
|
other.respond_to?(:type) && other.respond_to?(:name) && other.respond_to?(:version) && other.type == @type && other.name == @name && other.version == @version
|
|
87
87
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Stephen Delano (<stephen@chef.io>)
|
|
3
3
|
# Author:: Seth Falcon (<seth@chef.io>)
|
|
4
|
-
# Copyright:: Copyright 2010-
|
|
4
|
+
# Copyright:: Copyright 2010-2017, Chef Software Inc.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -36,17 +36,17 @@ class Chef
|
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
@versions[name] = version if version
|
|
39
|
-
self << name unless
|
|
39
|
+
self << name unless include?(name)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def with_versions
|
|
43
|
-
|
|
43
|
+
map { |recipe_name| { :name => recipe_name, :version => @versions[recipe_name] } }
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# Return an Array of Hashes, each of the form:
|
|
47
47
|
# {:name => RECIPE_NAME, :version_constraint => Chef::VersionConstraint }
|
|
48
48
|
def with_version_constraints
|
|
49
|
-
|
|
49
|
+
map do |recipe_name|
|
|
50
50
|
constraint = Chef::VersionConstraint.new(@versions[recipe_name])
|
|
51
51
|
{ :name => recipe_name, :version_constraint => constraint }
|
|
52
52
|
end
|
|
@@ -55,7 +55,7 @@ class Chef
|
|
|
55
55
|
# Return an Array of Strings, each of the form:
|
|
56
56
|
# "NAME@VERSION"
|
|
57
57
|
def with_version_constraints_strings
|
|
58
|
-
|
|
58
|
+
map do |recipe_name|
|
|
59
59
|
if @versions[recipe_name]
|
|
60
60
|
"#{recipe_name}@#{@versions[recipe_name]}"
|
|
61
61
|
else
|
|
@@ -69,7 +69,7 @@ class Chef
|
|
|
69
69
|
#
|
|
70
70
|
# @return [Array] Array of strings with fully-qualified recipe names
|
|
71
71
|
def with_fully_qualified_names_and_version_constraints
|
|
72
|
-
|
|
72
|
+
map do |recipe_name|
|
|
73
73
|
qualified_recipe = if recipe_name.include?("::")
|
|
74
74
|
recipe_name
|
|
75
75
|
else
|
|
@@ -83,17 +83,19 @@ class Chef
|
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
86
|
+
# For "foo::default" also include "foo", for "foo" also include "foo::default", for
|
|
87
|
+
# "foo::bar" just return "foo::bar". This makes it easier for people to search on
|
|
88
|
+
# default recipe names.
|
|
89
89
|
#
|
|
90
90
|
# @return [Array] Array of strings with fully-qualified and unexpanded recipe names
|
|
91
91
|
def with_duplicate_names
|
|
92
|
-
|
|
93
|
-
if recipe_name.
|
|
92
|
+
map do |recipe_name|
|
|
93
|
+
if recipe_name.end_with?("::default")
|
|
94
|
+
[ recipe_name.sub(/::default$/, ""), recipe_name ]
|
|
95
|
+
elsif recipe_name.include?("::")
|
|
94
96
|
recipe_name
|
|
95
97
|
else
|
|
96
|
-
[recipe_name, "#{recipe_name}::default"]
|
|
98
|
+
[ recipe_name, "#{recipe_name}::default" ]
|
|
97
99
|
end
|
|
98
100
|
end.flatten
|
|
99
101
|
end
|
data/lib/chef/search/query.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2008-
|
|
3
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -39,28 +39,6 @@ class Chef
|
|
|
39
39
|
@rest ||= Chef::ServerAPI.new(@url || @config[:chef_server_url])
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
# Backwards compatability for cookbooks.
|
|
43
|
-
# This can be removed in Chef > 12.
|
|
44
|
-
def partial_search(type, query = "*:*", *args, &block)
|
|
45
|
-
Chef::Log.warn(<<-WARNDEP)
|
|
46
|
-
DEPRECATED: The 'partial_search' API is deprecated and will be removed in
|
|
47
|
-
future releases. Please use 'search' with a :filter_result argument to get
|
|
48
|
-
partial search data.
|
|
49
|
-
WARNDEP
|
|
50
|
-
|
|
51
|
-
if !args.empty? && args.first.is_a?(Hash)
|
|
52
|
-
# partial_search uses :keys instead of :filter_result for
|
|
53
|
-
# result filtering.
|
|
54
|
-
args_h = args.first.dup
|
|
55
|
-
args_h[:filter_result] = args_h[:keys]
|
|
56
|
-
args_h.delete(:keys)
|
|
57
|
-
|
|
58
|
-
search(type, query, args_h, &block)
|
|
59
|
-
else
|
|
60
|
-
search(type, query, *args, &block)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
42
|
#
|
|
65
43
|
# New search input, designed to be backwards compatible with the old method signature
|
|
66
44
|
# 'type' and 'query' are the same as before, args now will accept either a Hash of
|
|
@@ -85,6 +63,14 @@ WARNDEP
|
|
|
85
63
|
validate_type(type)
|
|
86
64
|
|
|
87
65
|
args_h = hashify_args(*args)
|
|
66
|
+
if args_h[:fuzz]
|
|
67
|
+
if type == :node
|
|
68
|
+
query = fuzzify_node_query(query)
|
|
69
|
+
end
|
|
70
|
+
# FIXME: can i haz proper ruby-2.x named parameters someday plz?
|
|
71
|
+
args_h = args_h.reject { |k, v| k == :fuzz }
|
|
72
|
+
end
|
|
73
|
+
|
|
88
74
|
response = call_rest_service(type, query: query, **args_h)
|
|
89
75
|
|
|
90
76
|
if block
|
|
@@ -114,6 +100,14 @@ WARNDEP
|
|
|
114
100
|
|
|
115
101
|
private
|
|
116
102
|
|
|
103
|
+
def fuzzify_node_query(query)
|
|
104
|
+
if query !~ /:/
|
|
105
|
+
"tags:*#{query}* OR roles:*#{query}* OR fqdn:*#{query}* OR addresses:*#{query}* OR policy_name:*#{query}* OR policy_group:*#{query}*"
|
|
106
|
+
else
|
|
107
|
+
query
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
117
111
|
def validate_type(t)
|
|
118
112
|
unless t.kind_of?(String) || t.kind_of?(Symbol)
|
|
119
113
|
msg = "Invalid search object type #{t.inspect} (#{t.class}), must be a String or Symbol." +
|
|
@@ -128,10 +122,12 @@ WARNDEP
|
|
|
128
122
|
return args.first if args.first.is_a?(Hash)
|
|
129
123
|
|
|
130
124
|
args_h = Hash.new
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
args_h[:
|
|
125
|
+
# If we have 4 arguments, the first is the now-removed sort option, so
|
|
126
|
+
# just ignore it.
|
|
127
|
+
args.pop(0) if args.length == 4
|
|
128
|
+
args_h[:start] = args[0] if args[0]
|
|
129
|
+
args_h[:rows] = args[1]
|
|
130
|
+
args_h[:filter_result] = args[2]
|
|
135
131
|
args_h
|
|
136
132
|
end
|
|
137
133
|
|
|
@@ -141,16 +137,15 @@ WARNDEP
|
|
|
141
137
|
s && Addressable::URI.encode_component(s.to_s, QUERY_PARAM_VALUE)
|
|
142
138
|
end
|
|
143
139
|
|
|
144
|
-
def create_query_string(type, query, rows, start
|
|
140
|
+
def create_query_string(type, query, rows, start)
|
|
145
141
|
qstr = "search/#{type}?q=#{escape_value(query)}"
|
|
146
|
-
qstr += "&sort=#{escape_value(sort)}" if sort
|
|
147
142
|
qstr += "&start=#{escape_value(start)}" if start
|
|
148
143
|
qstr += "&rows=#{escape_value(rows)}" if rows
|
|
149
144
|
qstr
|
|
150
145
|
end
|
|
151
146
|
|
|
152
|
-
def call_rest_service(type, query: "*:*", rows: nil, start: 0,
|
|
153
|
-
query_string = create_query_string(type, query, rows, start
|
|
147
|
+
def call_rest_service(type, query: "*:*", rows: nil, start: 0, filter_result: nil)
|
|
148
|
+
query_string = create_query_string(type, query, rows, start)
|
|
154
149
|
|
|
155
150
|
if filter_result
|
|
156
151
|
response = rest.post(query_string, filter_result)
|
data/lib/chef/server_api.rb
CHANGED
|
@@ -24,6 +24,7 @@ require "chef/http/json_input"
|
|
|
24
24
|
require "chef/http/json_output"
|
|
25
25
|
require "chef/http/remote_request_id"
|
|
26
26
|
require "chef/http/validate_content_length"
|
|
27
|
+
require "chef/http/api_versions"
|
|
27
28
|
|
|
28
29
|
class Chef
|
|
29
30
|
class ServerAPI < Chef::HTTP
|
|
@@ -42,6 +43,7 @@ class Chef
|
|
|
42
43
|
use Chef::HTTP::Decompressor
|
|
43
44
|
use Chef::HTTP::Authenticator
|
|
44
45
|
use Chef::HTTP::RemoteRequestID
|
|
46
|
+
use Chef::HTTP::APIVersions
|
|
45
47
|
|
|
46
48
|
# ValidateContentLength should come after Decompressor
|
|
47
49
|
# because the order of middlewares is reversed when handling
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
#
|
|
3
|
-
# Copyright:: Copyright 2009-2016, Joe Williams
|
|
1
|
+
#--
|
|
2
|
+
# Copyright:: Copyright 2017, Chef Software Inc.
|
|
4
3
|
# License:: Apache License, Version 2.0
|
|
5
4
|
#
|
|
6
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -16,17 +15,26 @@
|
|
|
16
15
|
# limitations under the License.
|
|
17
16
|
#
|
|
18
17
|
|
|
19
|
-
require "
|
|
18
|
+
require "singleton"
|
|
20
19
|
|
|
21
20
|
class Chef
|
|
22
|
-
class
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
class ServerAPIVersions
|
|
22
|
+
include Singleton
|
|
23
|
+
|
|
24
|
+
def set_versions(versions)
|
|
25
|
+
@versions ||= versions
|
|
26
|
+
end
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
def min_server_version
|
|
29
|
+
!@versions.nil? ? Integer(@versions["min_version"]) : nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def max_server_version
|
|
33
|
+
!@versions.nil? ? Integer(@versions["max_version"]) : nil
|
|
34
|
+
end
|
|
29
35
|
|
|
36
|
+
def reset!
|
|
37
|
+
@versions = nil
|
|
30
38
|
end
|
|
31
39
|
end
|
|
32
40
|
end
|
data/lib/chef/shell/ext.rb
CHANGED
|
@@ -73,7 +73,7 @@ module Shell
|
|
|
73
73
|
banner << "| " + "Command".ljust(25) + "| " + "Description"
|
|
74
74
|
banner << "".ljust(80, "=")
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
all_help_descriptions.each do |help_text|
|
|
77
77
|
banner << "| " + help_text.cmd.ljust(25) + "| " + help_text.desc
|
|
78
78
|
end
|
|
79
79
|
banner << "".ljust(80, "=")
|
|
@@ -84,7 +84,7 @@ module Shell
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def explain_command(method_name)
|
|
87
|
-
help =
|
|
87
|
+
help = all_help_descriptions.find { |h| h.cmd.to_s == method_name.to_s }
|
|
88
88
|
if help
|
|
89
89
|
puts ""
|
|
90
90
|
puts "Command: #{method_name}"
|
|
@@ -159,7 +159,7 @@ module Shell
|
|
|
159
159
|
|
|
160
160
|
module Symbol
|
|
161
161
|
def on_off_to_bool
|
|
162
|
-
|
|
162
|
+
to_s.on_off_to_bool
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|