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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Authors:: Adam Jacob (<adam@chef.io>)
|
|
4
4
|
# Ionuț Arțăriși (<iartarisi@suse.cz>)
|
|
5
|
-
# Copyright:: Copyright 2008-
|
|
5
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
6
6
|
# Copyright 2013-2016, SUSE Linux GmbH
|
|
7
7
|
# License:: Apache License, Version 2.0
|
|
8
8
|
#
|
|
@@ -35,7 +35,7 @@ class Chef
|
|
|
35
35
|
candidate_version = current_version = nil
|
|
36
36
|
is_installed = false
|
|
37
37
|
Chef::Log.debug("#{new_resource} checking zypper")
|
|
38
|
-
status =
|
|
38
|
+
status = shell_out_compact_timeout!("zypper", "--non-interactive", "info", package_name)
|
|
39
39
|
status.stdout.each_line do |line|
|
|
40
40
|
case line
|
|
41
41
|
when /^Version *: (.+) *$/
|
|
@@ -77,14 +77,14 @@ class Chef
|
|
|
77
77
|
|
|
78
78
|
def package_locked(name, version)
|
|
79
79
|
islocked = false
|
|
80
|
-
locked =
|
|
80
|
+
locked = shell_out_compact_timeout!("zypper", "locks")
|
|
81
81
|
locked.stdout.each_line do |line|
|
|
82
82
|
line_package = line.split("|").shift(2).last.strip
|
|
83
83
|
if line_package == name
|
|
84
84
|
islocked = true
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
|
-
|
|
87
|
+
islocked
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def load_current_resource
|
|
@@ -103,7 +103,7 @@ class Chef
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
def install_package(name, version)
|
|
106
|
-
zypper_package("install --auto-agree-with-licenses", name, version)
|
|
106
|
+
zypper_package("install", "--auto-agree-with-licenses", name, version)
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
def upgrade_package(name, version)
|
|
@@ -116,7 +116,7 @@ class Chef
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
def purge_package(name, version)
|
|
119
|
-
zypper_package("remove --clean-deps", name, version)
|
|
119
|
+
zypper_package("remove", "--clean-deps", name, version)
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
def lock_package(name, version)
|
|
@@ -135,27 +135,17 @@ class Chef
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
def zypper_package(command, names, versions)
|
|
138
|
+
def zypper_package(command, *options, names, versions)
|
|
139
139
|
zipped_names = zip(names, versions)
|
|
140
140
|
if zypper_version < 1.0
|
|
141
|
-
|
|
141
|
+
shell_out_compact_timeout!("zypper", gpg_checks, command, *options, "-y", names)
|
|
142
142
|
else
|
|
143
|
-
|
|
143
|
+
shell_out_compact_timeout!("zypper", "--non-interactive", gpg_checks, command, *options, zipped_names)
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
def gpg_checks
|
|
148
|
-
|
|
149
|
-
when true
|
|
150
|
-
""
|
|
151
|
-
when false
|
|
152
|
-
"--no-gpg-checks"
|
|
153
|
-
when nil
|
|
154
|
-
Chef::Log.warn("Chef::Config[:zypper_check_gpg] was not set. " +
|
|
155
|
-
"All packages will be installed without gpg signature checks. " +
|
|
156
|
-
"This is a security hazard.")
|
|
157
|
-
"--no-gpg-checks"
|
|
158
|
-
end
|
|
148
|
+
"--no-gpg-checks" unless new_resource.gpg_check
|
|
159
149
|
end
|
|
160
150
|
end
|
|
161
151
|
end
|
|
@@ -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");
|
|
@@ -17,22 +17,19 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require "chef/mixin/shell_out"
|
|
20
|
-
require "chef/mixin/command"
|
|
21
20
|
require "chef/mixin/subclass_directive"
|
|
22
21
|
require "chef/log"
|
|
23
22
|
require "chef/file_cache"
|
|
24
23
|
require "chef/platform"
|
|
25
24
|
require "chef/decorator/lazy_array"
|
|
25
|
+
require "shellwords"
|
|
26
26
|
|
|
27
27
|
class Chef
|
|
28
28
|
class Provider
|
|
29
29
|
class Package < Chef::Provider
|
|
30
|
-
include Chef::Mixin::Command
|
|
31
30
|
include Chef::Mixin::ShellOut
|
|
32
31
|
extend Chef::Mixin::SubclassDirective
|
|
33
32
|
|
|
34
|
-
use_inline_resources
|
|
35
|
-
|
|
36
33
|
# subclasses declare this if they want all their arguments as arrays of packages and names
|
|
37
34
|
subclass_directive :use_multipackage_api
|
|
38
35
|
# subclasses declare this if they want sources (filenames) pulled from their package names
|
|
@@ -52,8 +49,8 @@ class Chef
|
|
|
52
49
|
@candidate_version = nil
|
|
53
50
|
end
|
|
54
51
|
|
|
55
|
-
def
|
|
56
|
-
|
|
52
|
+
def options
|
|
53
|
+
new_resource.options
|
|
57
54
|
end
|
|
58
55
|
|
|
59
56
|
def check_resource_semantics!
|
|
@@ -64,16 +61,15 @@ class Chef
|
|
|
64
61
|
end
|
|
65
62
|
end
|
|
66
63
|
|
|
67
|
-
def load_current_resource
|
|
68
|
-
end
|
|
64
|
+
def load_current_resource; end
|
|
69
65
|
|
|
70
66
|
def define_resource_requirements
|
|
71
67
|
# XXX: upgrade with a specific version doesn't make a whole lot of sense, but why don't we throw this anyway if it happens?
|
|
72
68
|
# if not, shouldn't we raise to tell the user to use install instead of upgrade if they want to pin a version?
|
|
73
69
|
requirements.assert(:install) do |a|
|
|
74
70
|
a.assertion { candidates_exist_for_all_forced_changes? }
|
|
75
|
-
a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(
|
|
76
|
-
a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(
|
|
71
|
+
a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(', ')}")
|
|
72
|
+
a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(', ')} would have been configured")
|
|
77
73
|
end
|
|
78
74
|
|
|
79
75
|
# XXX: Does it make sense to pass in a source with :upgrade? Probably
|
|
@@ -81,19 +77,19 @@ class Chef
|
|
|
81
77
|
# so we'll just leave things as-is for now.
|
|
82
78
|
requirements.assert(:upgrade, :install) do |a|
|
|
83
79
|
a.assertion { candidates_exist_for_all_uninstalled? || new_resource.source }
|
|
84
|
-
a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(
|
|
85
|
-
a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(
|
|
80
|
+
a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(', ')}")
|
|
81
|
+
a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(', ')} would have been configured")
|
|
86
82
|
end
|
|
87
83
|
end
|
|
88
84
|
|
|
89
85
|
action :install do
|
|
90
86
|
unless target_version_array.any?
|
|
91
|
-
Chef::Log.debug("#{
|
|
87
|
+
Chef::Log.debug("#{new_resource} is already installed - nothing to do")
|
|
92
88
|
return
|
|
93
89
|
end
|
|
94
90
|
|
|
95
91
|
# @todo: move the preseed code out of the base class (and complete the fix for Array of preseeds? ugh...)
|
|
96
|
-
if
|
|
92
|
+
if new_resource.response_file
|
|
97
93
|
if preseed_file = get_preseed_file(package_names_for_targets, versions_for_targets)
|
|
98
94
|
converge_by("preseed package #{package_names_for_targets}") do
|
|
99
95
|
preseed_package(preseed_file)
|
|
@@ -105,7 +101,7 @@ class Chef
|
|
|
105
101
|
multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
|
|
106
102
|
install_package(name, version)
|
|
107
103
|
end
|
|
108
|
-
Chef::Log.info("#{
|
|
104
|
+
Chef::Log.info("#{new_resource} installed #{package_names_for_targets} at #{versions_for_targets}")
|
|
109
105
|
end
|
|
110
106
|
end
|
|
111
107
|
|
|
@@ -122,8 +118,8 @@ class Chef
|
|
|
122
118
|
private :install_description
|
|
123
119
|
|
|
124
120
|
action :upgrade do
|
|
125
|
-
|
|
126
|
-
Chef::Log.debug("#{
|
|
121
|
+
unless target_version_array.any?
|
|
122
|
+
Chef::Log.debug("#{new_resource} no versions to upgrade - nothing to do")
|
|
127
123
|
return
|
|
128
124
|
end
|
|
129
125
|
|
|
@@ -132,7 +128,7 @@ class Chef
|
|
|
132
128
|
upgrade_package(name, version)
|
|
133
129
|
end
|
|
134
130
|
log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
|
|
135
|
-
Chef::Log.info("#{
|
|
131
|
+
Chef::Log.info("#{new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
|
|
136
132
|
end
|
|
137
133
|
end
|
|
138
134
|
|
|
@@ -153,15 +149,15 @@ class Chef
|
|
|
153
149
|
|
|
154
150
|
action :remove do
|
|
155
151
|
if removing_package?
|
|
156
|
-
description =
|
|
157
|
-
converge_by("remove #{description}package #{
|
|
158
|
-
multipackage_api_adapter(
|
|
152
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
|
153
|
+
converge_by("remove #{description}package #{current_resource.package_name}") do
|
|
154
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
|
159
155
|
remove_package(name, version)
|
|
160
156
|
end
|
|
161
|
-
Chef::Log.info("#{
|
|
157
|
+
Chef::Log.info("#{new_resource} removed")
|
|
162
158
|
end
|
|
163
159
|
else
|
|
164
|
-
Chef::Log.debug("#{
|
|
160
|
+
Chef::Log.debug("#{new_resource} package does not exist - nothing to do")
|
|
165
161
|
end
|
|
166
162
|
end
|
|
167
163
|
|
|
@@ -188,48 +184,48 @@ class Chef
|
|
|
188
184
|
|
|
189
185
|
action :purge do
|
|
190
186
|
if removing_package?
|
|
191
|
-
description =
|
|
192
|
-
converge_by("purge #{description} package #{
|
|
193
|
-
multipackage_api_adapter(
|
|
187
|
+
description = new_resource.version ? "version #{new_resource.version} of" : ""
|
|
188
|
+
converge_by("purge #{description} package #{current_resource.package_name}") do
|
|
189
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
|
194
190
|
purge_package(name, version)
|
|
195
191
|
end
|
|
196
|
-
Chef::Log.info("#{
|
|
192
|
+
Chef::Log.info("#{new_resource} purged")
|
|
197
193
|
end
|
|
198
194
|
end
|
|
199
195
|
end
|
|
200
196
|
|
|
201
197
|
action :reconfig do
|
|
202
|
-
if
|
|
203
|
-
Chef::Log.debug("#{
|
|
198
|
+
if current_resource.version.nil?
|
|
199
|
+
Chef::Log.debug("#{new_resource} is NOT installed - nothing to do")
|
|
204
200
|
return
|
|
205
201
|
end
|
|
206
202
|
|
|
207
|
-
unless
|
|
208
|
-
Chef::Log.debug("#{
|
|
203
|
+
unless new_resource.response_file
|
|
204
|
+
Chef::Log.debug("#{new_resource} no response_file provided - nothing to do")
|
|
209
205
|
return
|
|
210
206
|
end
|
|
211
207
|
|
|
212
|
-
if preseed_file = get_preseed_file(
|
|
213
|
-
converge_by("reconfigure package #{
|
|
208
|
+
if preseed_file = get_preseed_file(new_resource.package_name, current_resource.version)
|
|
209
|
+
converge_by("reconfigure package #{new_resource.package_name}") do
|
|
214
210
|
preseed_package(preseed_file)
|
|
215
|
-
multipackage_api_adapter(
|
|
211
|
+
multipackage_api_adapter(new_resource.package_name, current_resource.version) do |name, version|
|
|
216
212
|
reconfig_package(name, version)
|
|
217
213
|
|
|
218
214
|
end
|
|
219
|
-
Chef::Log.info("#{
|
|
215
|
+
Chef::Log.info("#{new_resource} reconfigured")
|
|
220
216
|
end
|
|
221
217
|
else
|
|
222
|
-
Chef::Log.debug("#{
|
|
218
|
+
Chef::Log.debug("#{new_resource} preseeding has not changed - nothing to do")
|
|
223
219
|
end
|
|
224
220
|
end
|
|
225
221
|
|
|
226
222
|
def action_lock
|
|
227
|
-
if package_locked(
|
|
228
|
-
description =
|
|
229
|
-
converge_by("lock #{description}package #{
|
|
230
|
-
multipackage_api_adapter(
|
|
223
|
+
if package_locked(new_resource.name, new_resource.version) == false
|
|
224
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
|
225
|
+
converge_by("lock #{description}package #{current_resource.package_name}") do
|
|
226
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
|
231
227
|
lock_package(name, version)
|
|
232
|
-
Chef::Log.info("#{
|
|
228
|
+
Chef::Log.info("#{new_resource} locked")
|
|
233
229
|
end
|
|
234
230
|
end
|
|
235
231
|
else
|
|
@@ -238,12 +234,12 @@ class Chef
|
|
|
238
234
|
end
|
|
239
235
|
|
|
240
236
|
def action_unlock
|
|
241
|
-
if package_locked(
|
|
242
|
-
description =
|
|
243
|
-
converge_by("unlock #{description}package #{
|
|
244
|
-
multipackage_api_adapter(
|
|
237
|
+
if package_locked(new_resource.name, new_resource.version) == true
|
|
238
|
+
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
|
239
|
+
converge_by("unlock #{description}package #{current_resource.package_name}") do
|
|
240
|
+
multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
|
|
245
241
|
unlock_package(name, version)
|
|
246
|
-
Chef::Log.info("#{
|
|
242
|
+
Chef::Log.info("#{new_resource} unlocked")
|
|
247
243
|
end
|
|
248
244
|
end
|
|
249
245
|
else
|
|
@@ -251,6 +247,10 @@ class Chef
|
|
|
251
247
|
end
|
|
252
248
|
end
|
|
253
249
|
|
|
250
|
+
def package_locked(name, version)
|
|
251
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self} has no way to detect if package is locked"
|
|
252
|
+
end
|
|
253
|
+
|
|
254
254
|
# @todo use composition rather than inheritance
|
|
255
255
|
|
|
256
256
|
def multipackage_api_adapter(name, version)
|
|
@@ -295,7 +295,13 @@ class Chef
|
|
|
295
295
|
|
|
296
296
|
# used by subclasses. deprecated. use #a_to_s instead.
|
|
297
297
|
def expand_options(options)
|
|
298
|
-
|
|
298
|
+
# its deprecated but still work to do to deprecate it fully
|
|
299
|
+
#Chef.deprecated(:package_misc, "expand_options is deprecated, use shell_out_compact or shell_out_compact_timeout instead")
|
|
300
|
+
if options
|
|
301
|
+
" #{options.is_a?(Array) ? Shellwords.join(options) : options}"
|
|
302
|
+
else
|
|
303
|
+
""
|
|
304
|
+
end
|
|
299
305
|
end
|
|
300
306
|
|
|
301
307
|
# Check the current_version against either the candidate_version or the new_version
|
|
@@ -339,7 +345,7 @@ class Chef
|
|
|
339
345
|
def get_preseed_file(name, version)
|
|
340
346
|
resource = preseed_resource(name, version)
|
|
341
347
|
resource.run_action(:create)
|
|
342
|
-
Chef::Log.debug("#{
|
|
348
|
+
Chef::Log.debug("#{new_resource} fetched preseed file to #{resource.path}")
|
|
343
349
|
|
|
344
350
|
if resource.updated_by_last_action?
|
|
345
351
|
resource.path
|
|
@@ -351,26 +357,26 @@ class Chef
|
|
|
351
357
|
# @todo: extract apt/dpkg specific preseeding to a helper class
|
|
352
358
|
def preseed_resource(name, version)
|
|
353
359
|
# A directory in our cache to store this cookbook's preseed files in
|
|
354
|
-
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{
|
|
360
|
+
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{new_resource.cookbook_name}")
|
|
355
361
|
# The full path where the preseed file will be stored
|
|
356
362
|
cache_seed_to = "#{file_cache_dir}/#{name}-#{version}.seed"
|
|
357
363
|
|
|
358
|
-
Chef::Log.debug("#{
|
|
364
|
+
Chef::Log.debug("#{new_resource} fetching preseed file to #{cache_seed_to}")
|
|
359
365
|
|
|
360
|
-
if template_available?(
|
|
361
|
-
Chef::Log.debug("#{
|
|
366
|
+
if template_available?(new_resource.response_file)
|
|
367
|
+
Chef::Log.debug("#{new_resource} fetching preseed file via Template")
|
|
362
368
|
remote_file = Chef::Resource::Template.new(cache_seed_to, run_context)
|
|
363
|
-
remote_file.variables(
|
|
364
|
-
elsif cookbook_file_available?(
|
|
365
|
-
Chef::Log.debug("#{
|
|
369
|
+
remote_file.variables(new_resource.response_file_variables)
|
|
370
|
+
elsif cookbook_file_available?(new_resource.response_file)
|
|
371
|
+
Chef::Log.debug("#{new_resource} fetching preseed file via cookbook_file")
|
|
366
372
|
remote_file = Chef::Resource::CookbookFile.new(cache_seed_to, run_context)
|
|
367
373
|
else
|
|
368
|
-
message = "No template or cookbook file found for response file #{
|
|
374
|
+
message = "No template or cookbook file found for response file #{new_resource.response_file}"
|
|
369
375
|
raise Chef::Exceptions::FileNotFound, message
|
|
370
376
|
end
|
|
371
377
|
|
|
372
|
-
remote_file.cookbook_name =
|
|
373
|
-
remote_file.source(
|
|
378
|
+
remote_file.cookbook_name = new_resource.cookbook_name
|
|
379
|
+
remote_file.source(new_resource.response_file)
|
|
374
380
|
remote_file.backup(false)
|
|
375
381
|
remote_file
|
|
376
382
|
end
|
|
@@ -608,8 +614,8 @@ class Chef
|
|
|
608
614
|
end
|
|
609
615
|
|
|
610
616
|
def allow_downgrade
|
|
611
|
-
if
|
|
612
|
-
|
|
617
|
+
if new_resource.respond_to?("allow_downgrade")
|
|
618
|
+
new_resource.allow_downgrade
|
|
613
619
|
else
|
|
614
620
|
false
|
|
615
621
|
end
|
|
@@ -624,14 +630,16 @@ class Chef
|
|
|
624
630
|
end
|
|
625
631
|
|
|
626
632
|
def add_timeout_option(command_args)
|
|
633
|
+
# this is deprecated but its not quite done yet
|
|
634
|
+
#Chef.deprecated(:package_misc, "shell_out_with_timeout and add_timeout_option are deprecated methods, use shell_out_compact_timeout instead")
|
|
627
635
|
args = command_args.dup
|
|
628
636
|
if args.last.is_a?(Hash)
|
|
629
637
|
options = args.pop.dup
|
|
630
638
|
options[:timeout] = new_resource.timeout if new_resource.timeout
|
|
631
|
-
options[:timeout] = 900 unless options.
|
|
639
|
+
options[:timeout] = 900 unless options.key?(:timeout)
|
|
632
640
|
args << options
|
|
633
641
|
else
|
|
634
|
-
args << { :
|
|
642
|
+
args << { timeout: new_resource.timeout ? new_resource.timeout : 900 }
|
|
635
643
|
end
|
|
636
644
|
args
|
|
637
645
|
end
|
|
@@ -60,8 +60,8 @@ class Chef
|
|
|
60
60
|
def flags
|
|
61
61
|
interpreter_flags = [*default_interpreter_flags].join(" ")
|
|
62
62
|
|
|
63
|
-
if ! (
|
|
64
|
-
interpreter_flags = [
|
|
63
|
+
if ! (new_resource.flags.nil?)
|
|
64
|
+
interpreter_flags = [new_resource.flags, interpreter_flags].join(" ")
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
interpreter_flags
|
|
@@ -73,8 +73,8 @@ class Chef
|
|
|
73
73
|
# special handling to cover common use cases.
|
|
74
74
|
def add_exit_status_wrapper
|
|
75
75
|
self.code = wrapper_script
|
|
76
|
-
Chef::Log.debug("powershell_script provider called with script code:\n\n#{
|
|
77
|
-
Chef::Log.debug("powershell_script provider will execute transformed code:\n\n#{
|
|
76
|
+
Chef::Log.debug("powershell_script provider called with script code:\n\n#{new_resource.code}\n")
|
|
77
|
+
Chef::Log.debug("powershell_script provider will execute transformed code:\n\n#{code}\n")
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
def validate_script_syntax!
|
|
@@ -87,7 +87,7 @@ class Chef
|
|
|
87
87
|
# actually running the script.
|
|
88
88
|
user_code_wrapped_in_powershell_script_block = <<-EOH
|
|
89
89
|
{
|
|
90
|
-
#{
|
|
90
|
+
#{new_resource.code}
|
|
91
91
|
}
|
|
92
92
|
EOH
|
|
93
93
|
user_script_file.puts user_code_wrapped_in_powershell_script_block
|
|
@@ -149,6 +149,14 @@ EOH
|
|
|
149
149
|
<<-EOH
|
|
150
150
|
# Chef Client wrapper for powershell_script resources
|
|
151
151
|
|
|
152
|
+
# In rare cases, such as when PowerShell is executed
|
|
153
|
+
# as an alternate user, the new-variable cmdlet is not
|
|
154
|
+
# available, so import it just in case
|
|
155
|
+
if ( get-module -ListAvailable Microsoft.PowerShell.Utility )
|
|
156
|
+
{
|
|
157
|
+
Import-Module Microsoft.PowerShell.Utility
|
|
158
|
+
}
|
|
159
|
+
|
|
152
160
|
# LASTEXITCODE can be uninitialized -- make it explictly 0
|
|
153
161
|
# to avoid incorrect detection of failure (non-zero) codes
|
|
154
162
|
$global:LASTEXITCODE = 0
|
|
@@ -159,7 +167,7 @@ $global:LASTEXITCODE = 0
|
|
|
159
167
|
trap [Exception] {write-error ($_.Exception.Message);exit 1}
|
|
160
168
|
|
|
161
169
|
# Variable state that should not be accessible to the user code
|
|
162
|
-
new-variable -name interpolatedexitcode -visibility private -value $#{
|
|
170
|
+
new-variable -name interpolatedexitcode -visibility private -value $#{new_resource.convert_boolean_return}
|
|
163
171
|
new-variable -name chefscriptresult -visibility private
|
|
164
172
|
|
|
165
173
|
# Initialize a variable we use to capture $? inside a block
|
|
@@ -168,7 +176,7 @@ $global:lastcmdlet = $null
|
|
|
168
176
|
# Execute the user's code in a script block --
|
|
169
177
|
$chefscriptresult =
|
|
170
178
|
{
|
|
171
|
-
#{
|
|
179
|
+
#{new_resource.code}
|
|
172
180
|
|
|
173
181
|
# This assignment doesn't affect the block's return value
|
|
174
182
|
$global:lastcmdlet = $?
|
data/lib/chef/provider/reboot.rb
CHANGED
|
@@ -24,36 +24,32 @@ class Chef
|
|
|
24
24
|
class Reboot < Chef::Provider
|
|
25
25
|
provides :reboot
|
|
26
26
|
|
|
27
|
-
def whyrun_supported?
|
|
28
|
-
true
|
|
29
|
-
end
|
|
30
|
-
|
|
31
27
|
def load_current_resource
|
|
32
|
-
@current_resource ||= Chef::Resource::Reboot.new(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
@current_resource ||= Chef::Resource::Reboot.new(new_resource.name)
|
|
29
|
+
current_resource.reason(new_resource.reason)
|
|
30
|
+
current_resource.delay_mins(new_resource.delay_mins)
|
|
31
|
+
current_resource
|
|
36
32
|
end
|
|
37
33
|
|
|
38
34
|
def request_reboot
|
|
39
35
|
node.run_context.request_reboot(
|
|
40
|
-
:delay_mins =>
|
|
41
|
-
:reason =>
|
|
36
|
+
:delay_mins => new_resource.delay_mins,
|
|
37
|
+
:reason => new_resource.reason,
|
|
42
38
|
:timestamp => Time.now,
|
|
43
|
-
:requested_by =>
|
|
39
|
+
:requested_by => new_resource.name
|
|
44
40
|
)
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
def action_request_reboot
|
|
48
44
|
converge_by("request a system reboot to occur if the run succeeds") do
|
|
49
|
-
Chef::Log.warn "Reboot requested:'#{
|
|
45
|
+
Chef::Log.warn "Reboot requested:'#{new_resource.name}'"
|
|
50
46
|
request_reboot
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
49
|
|
|
54
50
|
def action_reboot_now
|
|
55
51
|
converge_by("rebooting the system immediately") do
|
|
56
|
-
Chef::Log.warn "Rebooting system immediately, requested by '#{
|
|
52
|
+
Chef::Log.warn "Rebooting system immediately, requested by '#{new_resource.name}'"
|
|
57
53
|
request_reboot
|
|
58
54
|
throw :end_client_run_early
|
|
59
55
|
end
|
|
@@ -61,7 +57,7 @@ class Chef
|
|
|
61
57
|
|
|
62
58
|
def action_cancel
|
|
63
59
|
converge_by("cancel any existing end-of-run reboot request") do
|
|
64
|
-
Chef::Log.warn "Reboot canceled: '#{
|
|
60
|
+
Chef::Log.warn "Reboot canceled: '#{new_resource.name}'"
|
|
65
61
|
node.run_context.cancel_reboot
|
|
66
62
|
end
|
|
67
63
|
end
|