chef 12.18.31 → 13.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
data/lib/chef/knife/core/ui.rb
CHANGED
|
@@ -65,22 +65,18 @@ class Chef
|
|
|
65
65
|
# Prints a message to stdout. Aliased as +info+ for compatibility with
|
|
66
66
|
# the logger API.
|
|
67
67
|
def msg(message)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
exit 0
|
|
73
|
-
end
|
|
68
|
+
stdout.puts message
|
|
69
|
+
rescue Errno::EPIPE => e
|
|
70
|
+
raise e if @config[:verbosity] >= 2
|
|
71
|
+
exit 0
|
|
74
72
|
end
|
|
75
73
|
|
|
76
74
|
# Prints a msg to stderr. Used for info, warn, error, and fatal.
|
|
77
75
|
def log(message)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
exit 0
|
|
83
|
-
end
|
|
76
|
+
stderr.puts message
|
|
77
|
+
rescue Errno::EPIPE => e
|
|
78
|
+
raise e if @config[:verbosity] >= 2
|
|
79
|
+
exit 0
|
|
84
80
|
end
|
|
85
81
|
|
|
86
82
|
alias :info :log
|
|
@@ -155,12 +151,10 @@ class Chef
|
|
|
155
151
|
end
|
|
156
152
|
|
|
157
153
|
def pretty_print(data)
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
exit 0
|
|
163
|
-
end
|
|
154
|
+
stdout.puts data
|
|
155
|
+
rescue Errno::EPIPE => e
|
|
156
|
+
raise e if @config[:verbosity] >= 2
|
|
157
|
+
exit 0
|
|
164
158
|
end
|
|
165
159
|
|
|
166
160
|
# Hash -> Hash
|
|
@@ -186,8 +180,7 @@ class Chef
|
|
|
186
180
|
|
|
187
181
|
if parse_output
|
|
188
182
|
if object_class.nil?
|
|
189
|
-
|
|
190
|
-
Chef::JSONCompat.from_json(output)
|
|
183
|
+
raise ArgumentError, "Please pass in the object class to hydrate or use #edit_hash"
|
|
191
184
|
else
|
|
192
185
|
object_class.from_hash(Chef::JSONCompat.parse(output))
|
|
193
186
|
end
|
|
@@ -215,9 +208,9 @@ class Chef
|
|
|
215
208
|
output_parsed_again = Chef::JSONCompat.parse(Chef::JSONCompat.to_json(output))
|
|
216
209
|
if object_parsed_again != output_parsed_again
|
|
217
210
|
output.save
|
|
218
|
-
|
|
211
|
+
msg("Saved #{output}")
|
|
219
212
|
else
|
|
220
|
-
|
|
213
|
+
msg("Object unchanged, not saving")
|
|
221
214
|
end
|
|
222
215
|
output(format_for_display(object)) if config[:print_after]
|
|
223
216
|
end
|
|
@@ -247,19 +240,19 @@ class Chef
|
|
|
247
240
|
when "Y", "y"
|
|
248
241
|
true
|
|
249
242
|
when "N", "n"
|
|
250
|
-
|
|
243
|
+
msg("You said no, so I'm done here.")
|
|
251
244
|
false
|
|
252
245
|
when ""
|
|
253
246
|
unless default_choice.nil?
|
|
254
247
|
default_choice
|
|
255
248
|
else
|
|
256
|
-
|
|
257
|
-
|
|
249
|
+
msg("I have no idea what to do with '#{answer}'")
|
|
250
|
+
msg("Just say Y or N, please.")
|
|
258
251
|
confirm_without_exit(question, append_instructions, default_choice)
|
|
259
252
|
end
|
|
260
253
|
else
|
|
261
|
-
|
|
262
|
-
|
|
254
|
+
msg("I have no idea what to do with '#{answer}'")
|
|
255
|
+
msg("Just say Y or N, please.")
|
|
263
256
|
confirm_without_exit(question, append_instructions, default_choice)
|
|
264
257
|
end
|
|
265
258
|
end
|
|
@@ -49,13 +49,15 @@ class Chef
|
|
|
49
49
|
exit(1)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
#
|
|
52
|
+
# Verify if the data bag exists
|
|
53
53
|
begin
|
|
54
|
+
rest.get("data/#{@data_bag_name}")
|
|
55
|
+
ui.info("Data bag #{@data_bag_name} already exists")
|
|
56
|
+
rescue Net::HTTPServerException => e
|
|
57
|
+
raise unless e.to_s =~ /^404/
|
|
58
|
+
# if it doesn't exists, try to create it
|
|
54
59
|
rest.post("data", { "name" => @data_bag_name })
|
|
55
60
|
ui.info("Created data_bag[#{@data_bag_name}]")
|
|
56
|
-
rescue Net::HTTPServerException => e
|
|
57
|
-
raise unless e.to_s =~ /^409/
|
|
58
|
-
ui.info("Data bag #{@data_bag_name} already exists")
|
|
59
61
|
end
|
|
60
62
|
|
|
61
63
|
# if an item is specified, create it, as well
|
data/lib/chef/knife/deps.rb
CHANGED
|
@@ -72,49 +72,47 @@ class Chef
|
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
def get_dependencies(entry)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return entry.chef_object.metadata.dependencies.keys.map { |cookbook| "/cookbooks/#{cookbook}" }
|
|
75
|
+
if entry.parent && entry.parent.path == "/cookbooks"
|
|
76
|
+
return entry.chef_object.metadata.dependencies.keys.map { |cookbook| "/cookbooks/#{cookbook}" }
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
78
|
+
elsif entry.parent && entry.parent.path == "/nodes"
|
|
79
|
+
node = Chef::JSONCompat.parse(entry.read)
|
|
80
|
+
result = []
|
|
81
|
+
if node["chef_environment"] && node["chef_environment"] != "_default"
|
|
82
|
+
result << "/environments/#{node['chef_environment']}.json"
|
|
83
|
+
end
|
|
84
|
+
if node["run_list"]
|
|
85
|
+
result += dependencies_from_runlist(node["run_list"])
|
|
86
|
+
end
|
|
87
|
+
result
|
|
89
88
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
end
|
|
89
|
+
elsif entry.parent && entry.parent.path == "/roles"
|
|
90
|
+
role = Chef::JSONCompat.parse(entry.read)
|
|
91
|
+
result = []
|
|
92
|
+
if role["run_list"]
|
|
93
|
+
dependencies_from_runlist(role["run_list"]).each do |dependency|
|
|
94
|
+
result << dependency if !result.include?(dependency)
|
|
97
95
|
end
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
end
|
|
97
|
+
if role["env_run_lists"]
|
|
98
|
+
role["env_run_lists"].each_pair do |env, run_list|
|
|
99
|
+
dependencies_from_runlist(run_list).each do |dependency|
|
|
100
|
+
result << dependency if !result.include?(dependency)
|
|
103
101
|
end
|
|
104
102
|
end
|
|
105
|
-
|
|
103
|
+
end
|
|
104
|
+
result
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
elsif !entry.exists?
|
|
107
|
+
raise Chef::ChefFS::FileSystem::NotFoundError.new(entry)
|
|
109
108
|
|
|
110
|
-
|
|
111
|
-
[]
|
|
112
|
-
end
|
|
113
|
-
rescue Chef::ChefFS::FileSystem::NotFoundError => e
|
|
114
|
-
ui.error "#{format_path(e.entry)}: No such file or directory"
|
|
115
|
-
self.exit_code = 2
|
|
109
|
+
else
|
|
116
110
|
[]
|
|
117
111
|
end
|
|
112
|
+
rescue Chef::ChefFS::FileSystem::NotFoundError => e
|
|
113
|
+
ui.error "#{format_path(e.entry)}: No such file or directory"
|
|
114
|
+
self.exit_code = 2
|
|
115
|
+
[]
|
|
118
116
|
end
|
|
119
117
|
|
|
120
118
|
def dependencies_from_runlist(run_list)
|
data/lib/chef/knife/edit.rb
CHANGED
data/lib/chef/knife/help.rb
CHANGED
|
@@ -90,7 +90,7 @@ MOAR_HELP
|
|
|
90
90
|
def find_manpage_path(topic)
|
|
91
91
|
if ::File.exists?(::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT))
|
|
92
92
|
# If we've provided the man page in the gem, give that
|
|
93
|
-
|
|
93
|
+
::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)
|
|
94
94
|
else
|
|
95
95
|
# Otherwise, we'll just be using MANPATH
|
|
96
96
|
topic
|
data/lib/chef/knife/list.rb
CHANGED
data/lib/chef/knife/search.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2009-
|
|
3
|
+
# Copyright:: Copyright 2009-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");
|
|
@@ -37,12 +37,6 @@ class Chef
|
|
|
37
37
|
|
|
38
38
|
banner "knife search INDEX QUERY (options)"
|
|
39
39
|
|
|
40
|
-
option :sort,
|
|
41
|
-
:short => "-o SORT",
|
|
42
|
-
:long => "--sort SORT",
|
|
43
|
-
:description => "The order to sort the results in",
|
|
44
|
-
:default => nil
|
|
45
|
-
|
|
46
40
|
option :start,
|
|
47
41
|
:short => "-b ROW",
|
|
48
42
|
:long => "--start ROW",
|
|
@@ -79,20 +73,18 @@ class Chef
|
|
|
79
73
|
|
|
80
74
|
def run
|
|
81
75
|
read_cli_args
|
|
82
|
-
fuzzify_query
|
|
83
76
|
|
|
84
77
|
if @type == "node"
|
|
85
78
|
ui.use_presenter Knife::Core::NodePresenter
|
|
86
79
|
end
|
|
87
80
|
|
|
88
81
|
q = Chef::Search::Query.new
|
|
89
|
-
escaped_query = Addressable::URI.encode_component(@query, Addressable::URI::CharacterClasses::QUERY)
|
|
90
82
|
|
|
91
83
|
result_items = []
|
|
92
84
|
result_count = 0
|
|
93
85
|
|
|
94
86
|
search_args = Hash.new
|
|
95
|
-
search_args[:
|
|
87
|
+
search_args[:fuzz] = true
|
|
96
88
|
search_args[:start] = config[:start] if config[:start]
|
|
97
89
|
search_args[:rows] = config[:rows] if config[:rows]
|
|
98
90
|
if config[:filter_result]
|
|
@@ -102,7 +94,7 @@ class Chef
|
|
|
102
94
|
end
|
|
103
95
|
|
|
104
96
|
begin
|
|
105
|
-
q.search(@type,
|
|
97
|
+
q.search(@type, @query, search_args) do |item|
|
|
106
98
|
formatted_item = Hash.new
|
|
107
99
|
if item.is_a?(Hash)
|
|
108
100
|
# doing a little magic here to set the correct name
|
|
@@ -116,7 +108,7 @@ class Chef
|
|
|
116
108
|
rescue Net::HTTPServerException => e
|
|
117
109
|
msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
|
|
118
110
|
ui.error("knife search failed: #{msg}")
|
|
119
|
-
exit
|
|
111
|
+
exit 99
|
|
120
112
|
end
|
|
121
113
|
|
|
122
114
|
if ui.interchange?
|
|
@@ -131,6 +123,9 @@ class Chef
|
|
|
131
123
|
end
|
|
132
124
|
end
|
|
133
125
|
end
|
|
126
|
+
|
|
127
|
+
# return a "failure" code to the shell so that knife search can be used in pipes similar to grep
|
|
128
|
+
exit 1 if result_count == 0
|
|
134
129
|
end
|
|
135
130
|
|
|
136
131
|
def read_cli_args
|
|
@@ -158,12 +153,6 @@ class Chef
|
|
|
158
153
|
end
|
|
159
154
|
end
|
|
160
155
|
|
|
161
|
-
def fuzzify_query
|
|
162
|
-
if @query !~ /:/
|
|
163
|
-
@query = "tags:*#{@query}* OR roles:*#{@query}* OR fqdn:*#{@query}* OR addresses:*#{@query}* OR policy_name:*#{@query}* OR policy_group:*#{@query}*"
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
156
|
# This method turns a set of key value pairs in a string into the appropriate data structure that the
|
|
168
157
|
# chef-server search api is expecting.
|
|
169
158
|
# expected input is in the form of:
|
|
@@ -183,7 +172,7 @@ class Chef
|
|
|
183
172
|
return_id, attr_path = f.split("=")
|
|
184
173
|
final_filter[return_id.to_sym] = attr_path.split(".")
|
|
185
174
|
end
|
|
186
|
-
|
|
175
|
+
final_filter
|
|
187
176
|
end
|
|
188
177
|
|
|
189
178
|
def create_result_filter_from_attributes(filter_array)
|
|
@@ -193,7 +182,7 @@ class Chef
|
|
|
193
182
|
end
|
|
194
183
|
# adding magic filter so we can actually pull the name as before
|
|
195
184
|
final_filter["__display_name"] = [ "name" ]
|
|
196
|
-
|
|
185
|
+
final_filter
|
|
197
186
|
end
|
|
198
187
|
|
|
199
188
|
end
|
data/lib/chef/knife/ssh.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2009-
|
|
3
|
+
# Copyright:: Copyright 2009-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -26,7 +26,6 @@ class Chef
|
|
|
26
26
|
deps do
|
|
27
27
|
require "net/ssh"
|
|
28
28
|
require "net/ssh/multi"
|
|
29
|
-
require "chef/monkey_patches/net-ssh-multi"
|
|
30
29
|
require "readline"
|
|
31
30
|
require "chef/exceptions"
|
|
32
31
|
require "chef/search/query"
|
|
@@ -93,6 +92,10 @@ class Chef
|
|
|
93
92
|
:description => "The ssh gateway",
|
|
94
93
|
:proc => Proc.new { |key| Chef::Config[:knife][:ssh_gateway] = key.strip }
|
|
95
94
|
|
|
95
|
+
option :ssh_gateway_identity,
|
|
96
|
+
:long => "--ssh-gateway-identity SSH_GATEWAY_IDENTITY",
|
|
97
|
+
:description => "The SSH identity file used for gateway authentication"
|
|
98
|
+
|
|
96
99
|
option :forward_agent,
|
|
97
100
|
:short => "-A",
|
|
98
101
|
:long => "--forward-agent",
|
|
@@ -166,10 +169,10 @@ class Chef
|
|
|
166
169
|
def configure_session
|
|
167
170
|
list = config[:manual] ? @name_args[0].split(" ") : search_nodes
|
|
168
171
|
if list.length == 0
|
|
169
|
-
if @
|
|
172
|
+
if @search_count == 0
|
|
170
173
|
ui.fatal("No nodes returned from search")
|
|
171
174
|
else
|
|
172
|
-
ui.fatal("#{@
|
|
175
|
+
ui.fatal("#{@search_count} #{@search_count > 1 ? "nodes" : "node"} found, " +
|
|
173
176
|
"but does not have the required attribute to establish the connection. " +
|
|
174
177
|
"Try setting another attribute to open the connection using --attribute.")
|
|
175
178
|
end
|
|
@@ -184,41 +187,56 @@ class Chef
|
|
|
184
187
|
# 2) configuration file
|
|
185
188
|
# 3) cloud attribute
|
|
186
189
|
# 4) fqdn
|
|
187
|
-
if config
|
|
188
|
-
Chef::Log.debug("Using node attribute '#{config[:attribute]}' as the ssh target")
|
|
189
|
-
|
|
190
|
+
if node["config"]
|
|
191
|
+
Chef::Log.debug("Using node attribute '#{config[:attribute]}' as the ssh target: #{node["config"]}")
|
|
192
|
+
node["config"]
|
|
190
193
|
elsif Chef::Config[:knife][:ssh_attribute]
|
|
191
|
-
Chef::Log.debug("Using node attribute #{Chef::Config[:knife][:ssh_attribute]}")
|
|
192
|
-
|
|
193
|
-
elsif node[
|
|
194
|
-
node[
|
|
195
|
-
!node[
|
|
196
|
-
Chef::Log.debug("Using node attribute 'cloud[:public_hostname]' automatically as the ssh target")
|
|
197
|
-
|
|
194
|
+
Chef::Log.debug("Using node attribute #{Chef::Config[:knife][:ssh_attribute]}: #{node["knife_config"]}")
|
|
195
|
+
node["knife_config"]
|
|
196
|
+
elsif node["cloud"] &&
|
|
197
|
+
node["cloud"]["public_hostname"] &&
|
|
198
|
+
!node["cloud"]["public_hostname"].empty?
|
|
199
|
+
Chef::Log.debug("Using node attribute 'cloud[:public_hostname]' automatically as the ssh target: #{node["cloud"]["public_hostname"]}")
|
|
200
|
+
node["cloud"]["public_hostname"]
|
|
198
201
|
else
|
|
199
202
|
# falling back to default of fqdn
|
|
200
|
-
Chef::Log.debug("Using node attribute 'fqdn' as the ssh target")
|
|
201
|
-
|
|
203
|
+
Chef::Log.debug("Using node attribute 'fqdn' as the ssh target: #{node["fqdn"]}")
|
|
204
|
+
node["fqdn"]
|
|
202
205
|
end
|
|
203
|
-
attribute
|
|
204
206
|
end
|
|
205
207
|
|
|
206
208
|
def search_nodes
|
|
207
209
|
list = Array.new
|
|
208
210
|
query = Chef::Search::Query.new
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
required_attributes = { fqdn: ["fqdn"], cloud: ["cloud"] }
|
|
212
|
+
|
|
213
|
+
separator = ui.presenter.attribute_field_separator
|
|
214
|
+
|
|
215
|
+
# if we've set an attribute to use on the command line
|
|
216
|
+
if config[:attribute]
|
|
217
|
+
required_attributes[:config] = config[:attribute].split(separator)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# if we've configured an attribute in our config
|
|
221
|
+
if Chef::Config[:knife][:ssh_attribute]
|
|
222
|
+
required_attributes[:knife_config] = Chef::Config[:knife][:ssh_attribute].split(separator)
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
@search_count = 0
|
|
226
|
+
query.search(:node, @name_args[0], filter_result: required_attributes, fuzz: true) do |item|
|
|
227
|
+
@search_count += 1
|
|
211
228
|
# we should skip the loop to next iteration if the item
|
|
212
229
|
# returned by the search is nil
|
|
213
230
|
next if item.nil?
|
|
214
231
|
# next if we couldn't find the specified attribute in the
|
|
215
232
|
# returned node object
|
|
216
|
-
host =
|
|
233
|
+
host = get_ssh_attribute(item)
|
|
217
234
|
next if host.nil?
|
|
218
235
|
ssh_port = item[:cloud].nil? ? nil : item[:cloud][:public_ssh_port]
|
|
219
236
|
srv = [host, ssh_port]
|
|
220
237
|
list.push(srv)
|
|
221
238
|
end
|
|
239
|
+
|
|
222
240
|
list
|
|
223
241
|
end
|
|
224
242
|
|
|
@@ -232,11 +250,14 @@ class Chef
|
|
|
232
250
|
# @param user [String] Optional username for this session.
|
|
233
251
|
# @return [Hash<Symbol, Object>]
|
|
234
252
|
def session_options(host, port, user = nil)
|
|
235
|
-
ssh_config = Net::SSH.configuration_for(host)
|
|
253
|
+
ssh_config = Net::SSH.configuration_for(host, true)
|
|
236
254
|
{}.tap do |opts|
|
|
237
255
|
# Chef::Config[:knife][:ssh_user] is parsed in #configure_user and written to config[:ssh_user]
|
|
238
256
|
opts[:user] = user || config[:ssh_user] || ssh_config[:user]
|
|
239
|
-
if config[:
|
|
257
|
+
if config[:ssh_gateway_identity]
|
|
258
|
+
opts[:keys] = File.expand_path(config[:ssh_gateway_identity])
|
|
259
|
+
opts[:keys_only] = true
|
|
260
|
+
elsif config[:ssh_identity_file]
|
|
240
261
|
opts[:keys] = File.expand_path(config[:ssh_identity_file])
|
|
241
262
|
opts[:keys_only] = true
|
|
242
263
|
elsif config[:ssh_password]
|
|
@@ -309,19 +330,23 @@ class Chef
|
|
|
309
330
|
subsession ||= session
|
|
310
331
|
command = fixup_sudo(command)
|
|
311
332
|
command.force_encoding("binary") if command.respond_to?(:force_encoding)
|
|
312
|
-
subsession.open_channel do |
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
ichannel
|
|
333
|
+
subsession.open_channel do |chan|
|
|
334
|
+
if config[:on_error] && exit_status != 0
|
|
335
|
+
chan.close()
|
|
336
|
+
else
|
|
337
|
+
chan.request_pty
|
|
338
|
+
chan.exec command do |ch, success|
|
|
339
|
+
raise ArgumentError, "Cannot execute #{command}" unless success
|
|
340
|
+
ch.on_data do |ichannel, data|
|
|
341
|
+
print_data(ichannel[:host], data)
|
|
342
|
+
if data =~ /^knife sudo password: /
|
|
343
|
+
print_data(ichannel[:host], "\n")
|
|
344
|
+
ichannel.send_data("#{get_password}\n")
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
ch.on_request "exit-status" do |ichannel, data|
|
|
348
|
+
exit_status = [exit_status, data.read_long].max
|
|
321
349
|
end
|
|
322
|
-
end
|
|
323
|
-
ch.on_request "exit-status" do |ichannel, data|
|
|
324
|
-
exit_status = [exit_status, data.read_long].max
|
|
325
350
|
end
|
|
326
351
|
end
|
|
327
352
|
end
|
|
@@ -532,8 +557,8 @@ class Chef
|
|
|
532
557
|
config[:ssh_identity_file] = get_stripped_unfrozen_value(config[:ssh_identity_file] || config[:identity_file] || Chef::Config[:knife][:ssh_identity_file])
|
|
533
558
|
end
|
|
534
559
|
|
|
535
|
-
def
|
|
536
|
-
|
|
560
|
+
def configure_ssh_gateway_identity
|
|
561
|
+
config[:ssh_gateway_identity] = get_stripped_unfrozen_value(config[:ssh_gateway_identity] || Chef::Config[:knife][:ssh_gateway_identity])
|
|
537
562
|
end
|
|
538
563
|
|
|
539
564
|
def run
|
|
@@ -543,6 +568,7 @@ class Chef
|
|
|
543
568
|
configure_password
|
|
544
569
|
@password = config[:ssh_password] if config[:ssh_password]
|
|
545
570
|
configure_ssh_identity_file
|
|
571
|
+
configure_ssh_gateway_identity
|
|
546
572
|
configure_gateway
|
|
547
573
|
configure_session
|
|
548
574
|
|
data/lib/chef/knife/ssl_check.rb
CHANGED
data/lib/chef/knife/xargs.rb
CHANGED
data/lib/chef/knife.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Christopher Brown (<cb@chef.io>)
|
|
4
|
-
# Copyright:: Copyright 2009-
|
|
4
|
+
# Copyright:: Copyright 2009-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");
|
|
@@ -265,8 +265,7 @@ class Chef
|
|
|
265
265
|
ui.fatal("Cannot find subcommand for: '#{args.join(' ')}'")
|
|
266
266
|
|
|
267
267
|
# Mention rehash when the subcommands cache(plugin_manifest.json) is used
|
|
268
|
-
if subcommand_loader.is_a?(Chef::Knife::SubcommandLoader::HashedCommandLoader)
|
|
269
|
-
subcommand_loader.is_a?(Chef::Knife::SubcommandLoader::CustomManifestLoader)
|
|
268
|
+
if subcommand_loader.is_a?(Chef::Knife::SubcommandLoader::HashedCommandLoader)
|
|
270
269
|
ui.info("If this is a recently installed plugin, please run 'knife rehash' to update the subcommands cache.")
|
|
271
270
|
end
|
|
272
271
|
|
|
@@ -430,11 +429,11 @@ class Chef
|
|
|
430
429
|
end
|
|
431
430
|
|
|
432
431
|
def show_usage
|
|
433
|
-
stdout.puts("USAGE: " +
|
|
432
|
+
stdout.puts("USAGE: " + opt_parser.to_s)
|
|
434
433
|
end
|
|
435
434
|
|
|
436
435
|
def run_with_pretty_exceptions(raise_exception = false)
|
|
437
|
-
unless
|
|
436
|
+
unless respond_to?(:run)
|
|
438
437
|
ui.error "You need to add a #run method to your knife command before you can use it"
|
|
439
438
|
end
|
|
440
439
|
enforce_path_sanity
|
|
@@ -553,7 +552,7 @@ class Chef
|
|
|
553
552
|
|
|
554
553
|
pretty_name ||= output
|
|
555
554
|
|
|
556
|
-
|
|
555
|
+
msg("Created #{pretty_name}")
|
|
557
556
|
|
|
558
557
|
output(output) if config[:print_after]
|
|
559
558
|
end
|
|
@@ -572,7 +571,7 @@ class Chef
|
|
|
572
571
|
output(format_for_display(object)) if config[:print_after]
|
|
573
572
|
|
|
574
573
|
obj_name = delete_name ? "#{delete_name}[#{name}]" : object
|
|
575
|
-
|
|
574
|
+
msg("Deleted #{obj_name}")
|
|
576
575
|
end
|
|
577
576
|
|
|
578
577
|
# helper method for testing if a field exists
|
data/lib/chef/mash.rb
CHANGED
|
@@ -53,7 +53,6 @@ class Chef
|
|
|
53
53
|
private
|
|
54
54
|
|
|
55
55
|
def create_dir(path)
|
|
56
|
-
begin
|
|
57
56
|
# When doing multithreaded downloads into the file cache, the following
|
|
58
57
|
# interleaving raises an error here:
|
|
59
58
|
#
|
|
@@ -62,10 +61,9 @@ class Chef
|
|
|
62
61
|
# File.directory?(create_path) <- false
|
|
63
62
|
# Dir.mkdir(create_path)
|
|
64
63
|
# Dir.mkdir(create_path) <- raises Errno::EEXIST
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
end
|
|
64
|
+
Chef::Log.debug("Creating directory #{path}")
|
|
65
|
+
Dir.mkdir(path)
|
|
66
|
+
rescue Errno::EEXIST
|
|
69
67
|
end
|
|
70
68
|
|
|
71
69
|
end
|
data/lib/chef/mixin/from_file.rb
CHANGED
|
@@ -27,7 +27,7 @@ class Chef
|
|
|
27
27
|
# Raises an IOError if the file cannot be found, or is not readable.
|
|
28
28
|
def from_file(filename)
|
|
29
29
|
if File.exists?(filename) && File.readable?(filename)
|
|
30
|
-
|
|
30
|
+
instance_eval(IO.read(filename), filename, 1)
|
|
31
31
|
else
|
|
32
32
|
raise IOError, "Cannot open or read #{filename}!"
|
|
33
33
|
end
|
|
@@ -39,7 +39,7 @@ class Chef
|
|
|
39
39
|
# Raises an IOError if the file cannot be found, or is not readable.
|
|
40
40
|
def class_from_file(filename)
|
|
41
41
|
if File.exists?(filename) && File.readable?(filename)
|
|
42
|
-
|
|
42
|
+
class_eval(IO.read(filename), filename, 1)
|
|
43
43
|
else
|
|
44
44
|
raise IOError, "Cannot open or read #{filename}!"
|
|
45
45
|
end
|