chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
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 +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -27,6 +27,7 @@ require_relative "cab"
|
|
27
27
|
require_relative "../../util/path_helper"
|
28
28
|
require_relative "../../mixin/uris"
|
29
29
|
require_relative "../../mixin/checksum"
|
30
|
+
require "cgi" unless defined?(CGI)
|
30
31
|
|
31
32
|
class Chef
|
32
33
|
class Provider
|
@@ -99,7 +100,7 @@ class Chef
|
|
99
100
|
|
100
101
|
def default_download_cache_path
|
101
102
|
uri = ::URI.parse(new_resource.source)
|
102
|
-
filename = ::File.basename(::
|
103
|
+
filename = ::File.basename(::CGI.unescape(uri.path))
|
103
104
|
file_cache_dir = Chef::FileCache.create_cache_path("package/")
|
104
105
|
Chef::Util::PathHelper.cleanpath("#{file_cache_dir}/#{filename}")
|
105
106
|
end
|
@@ -109,6 +110,7 @@ class Chef
|
|
109
110
|
@cab_files.each do |cab_file|
|
110
111
|
declare_resource(:cab_package, new_resource.name) do
|
111
112
|
source cab_file
|
113
|
+
timeout new_resource.timeout
|
112
114
|
action :install
|
113
115
|
end
|
114
116
|
end
|
@@ -119,6 +121,7 @@ class Chef
|
|
119
121
|
@cab_files.each do |cab_file|
|
120
122
|
declare_resource(:cab_package, new_resource.name) do
|
121
123
|
source cab_file
|
124
|
+
timeout new_resource.timeout
|
122
125
|
action :remove
|
123
126
|
end
|
124
127
|
end
|
@@ -27,29 +27,13 @@ class Chef
|
|
27
27
|
provides :package, platform: "arch"
|
28
28
|
provides :pacman_package
|
29
29
|
|
30
|
+
use_multipackage_api
|
31
|
+
allow_nils
|
32
|
+
|
30
33
|
def load_current_resource
|
31
34
|
@current_resource = Chef::Resource::Package.new(new_resource.name)
|
32
35
|
current_resource.package_name(new_resource.package_name)
|
33
|
-
|
34
|
-
logger.trace("#{new_resource} checking pacman for #{new_resource.package_name}")
|
35
|
-
status = shell_out("pacman", "-Qi", new_resource.package_name)
|
36
|
-
status.stdout.each_line do |line|
|
37
|
-
case line
|
38
|
-
when /^Version(\s?)*: (.+)$/
|
39
|
-
logger.trace("#{new_resource} current version is #{$2}")
|
40
|
-
current_resource.version($2)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
unless status.exitstatus == 0 || status.exitstatus == 1
|
45
|
-
raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
|
46
|
-
end
|
47
|
-
|
48
|
-
current_resource
|
49
|
-
end
|
50
|
-
|
51
|
-
def candidate_version
|
52
|
-
return @candidate_version if @candidate_version
|
36
|
+
current_resource.version = []
|
53
37
|
|
54
38
|
repos = %w{extra core community}
|
55
39
|
|
@@ -58,31 +42,38 @@ class Chef
|
|
58
42
|
repos = pacman.scan(/\[(.+)\]/).flatten
|
59
43
|
end
|
60
44
|
|
61
|
-
|
62
|
-
|
45
|
+
repos = Regexp.union(repos)
|
63
46
|
status = shell_out("pacman", "-Sl")
|
64
|
-
status.stdout.each_line do |line|
|
65
|
-
case line
|
66
|
-
when /^(#{package_repos}) #{Regexp.escape(new_resource.package_name)} (.+)$/
|
67
|
-
# $2 contains a string like "4.4.0-1" or "3.10-4 [installed]"
|
68
|
-
# simply split by space and use first token
|
69
|
-
@candidate_version = $2.split(" ").first
|
70
|
-
end
|
71
|
-
end
|
72
47
|
|
73
48
|
unless status.exitstatus == 0 || status.exitstatus == 1
|
74
49
|
raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
|
75
50
|
end
|
76
51
|
|
77
|
-
|
78
|
-
|
52
|
+
pkg_db_data = status.stdout
|
53
|
+
@candidate_version = []
|
54
|
+
package_name_array.each do |pkg|
|
55
|
+
pkg_data = pkg_db_data.match(/(#{repos}) #{pkg} (?<candidate>.*?-[0-9]+)(?<installed> \[.*?( (?<current>.*?-[0-9]+))?\])?\n/m)
|
56
|
+
unless pkg_data
|
57
|
+
raise Chef::Exceptions::Package, "pacman does not have a version of package #{pkg}"
|
58
|
+
end
|
59
|
+
|
60
|
+
@candidate_version << pkg_data[:candidate]
|
61
|
+
if pkg_data[:installed]
|
62
|
+
current_resource.version << (pkg_data[:current] || pkg_data[:candidate])
|
63
|
+
else
|
64
|
+
current_resource.version << nil
|
65
|
+
end
|
79
66
|
end
|
80
67
|
|
68
|
+
current_resource
|
69
|
+
end
|
70
|
+
|
71
|
+
def candidate_version
|
81
72
|
@candidate_version
|
82
73
|
end
|
83
74
|
|
84
75
|
def install_package(name, version)
|
85
|
-
shell_out!(
|
76
|
+
shell_out!("pacman", "--sync", "--noconfirm", "--noprogressbar", options, *name)
|
86
77
|
end
|
87
78
|
|
88
79
|
def upgrade_package(name, version)
|
@@ -90,7 +81,7 @@ class Chef
|
|
90
81
|
end
|
91
82
|
|
92
83
|
def remove_package(name, version)
|
93
|
-
shell_out!(
|
84
|
+
shell_out!("pacman", "--remove", "--noconfirm", "--noprogressbar", options, *name)
|
94
85
|
end
|
95
86
|
|
96
87
|
def purge_package(name, version)
|
@@ -70,6 +70,7 @@ class Chef
|
|
70
70
|
|
71
71
|
if pkginfo.exitstatus != 0
|
72
72
|
pkginfo.stderr.each_line do |line|
|
73
|
+
# cspell:disable-next-line
|
73
74
|
if line =~ /[Uu]nqualified atom .*match.* multiple/
|
74
75
|
raise_error_for_query("matched multiple packages (please specify a category):\n#{pkginfo.inspect}")
|
75
76
|
end
|
@@ -250,7 +250,7 @@ class Chef
|
|
250
250
|
private
|
251
251
|
|
252
252
|
def logger
|
253
|
-
Chef::Log.with_child({
|
253
|
+
Chef::Log.with_child({ subsystem: "gem_installer_environment" })
|
254
254
|
end
|
255
255
|
|
256
256
|
end
|
@@ -483,9 +483,23 @@ class Chef
|
|
483
483
|
end
|
484
484
|
end
|
485
485
|
|
486
|
+
##
|
487
|
+
# If `include_default_source` is nil, return true if the global
|
488
|
+
# `rubygems_url` was set or if `clear_sources` and `source` on the
|
489
|
+
# resource are not set.
|
490
|
+
# If `include_default_source` is not nil, it has been set explicitly on
|
491
|
+
# the resource and that value should be used.
|
492
|
+
def include_default_source?
|
493
|
+
if new_resource.include_default_source.nil?
|
494
|
+
!!Chef::Config[:rubygems_url] || !(new_resource.source || new_resource.clear_sources)
|
495
|
+
else
|
496
|
+
new_resource.include_default_source
|
497
|
+
end
|
498
|
+
end
|
499
|
+
|
486
500
|
def gem_sources
|
487
501
|
srcs = [ new_resource.source ]
|
488
|
-
srcs << Chef::Config[:rubygems_url] if
|
502
|
+
srcs << (Chef::Config[:rubygems_url] || "https://rubygems.org") if include_default_source?
|
489
503
|
srcs.flatten.compact
|
490
504
|
end
|
491
505
|
|
@@ -550,12 +564,25 @@ class Chef
|
|
550
564
|
new_resource.gem_binary || "gem"
|
551
565
|
end
|
552
566
|
|
567
|
+
##
|
568
|
+
# If `clear_sources` is nil, clearing sources is implied if a `source`
|
569
|
+
# was added or if the global rubygems URL is set. If `clear_sources`
|
570
|
+
# is not nil, it has been set explicitly on the resource and its value
|
571
|
+
# should be used.
|
572
|
+
def clear_sources?
|
573
|
+
if new_resource.clear_sources.nil?
|
574
|
+
!!(new_resource.source || Chef::Config[:rubygems_url])
|
575
|
+
else
|
576
|
+
new_resource.clear_sources
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
553
580
|
def install_via_gem_command(name, version)
|
554
581
|
src = []
|
555
582
|
if new_resource.source.is_a?(String) && new_resource.source =~ /\.gem$/i
|
556
583
|
name = new_resource.source
|
557
584
|
else
|
558
|
-
src << "--clear-sources" if
|
585
|
+
src << "--clear-sources" if clear_sources?
|
559
586
|
src += gem_sources.map { |s| "--source=#{s}" }
|
560
587
|
end
|
561
588
|
src_str = src.empty? ? "" : " #{src.join(" ")}"
|
@@ -21,6 +21,7 @@ require_relative "../../resource/windows_package"
|
|
21
21
|
require_relative "../package"
|
22
22
|
require_relative "../../util/path_helper"
|
23
23
|
require_relative "../../mixin/checksum"
|
24
|
+
require "cgi" unless defined?(CGI)
|
24
25
|
|
25
26
|
class Chef
|
26
27
|
class Provider
|
@@ -35,6 +36,13 @@ class Chef
|
|
35
36
|
require "chef/provider/package/windows/registry_uninstall_entry.rb"
|
36
37
|
|
37
38
|
def define_resource_requirements
|
39
|
+
if new_resource.checksum
|
40
|
+
requirements.assert(:install) do |a|
|
41
|
+
a.assertion { new_resource.checksum == checksum(source_location) }
|
42
|
+
a.failure_message Chef::Exceptions::Package, "Checksum on resource (#{short_cksum(new_resource.checksum)}) does not match checksum on content (#{short_cksum(source_location)})"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
38
46
|
requirements.assert(:install) do |a|
|
39
47
|
a.assertion { new_resource.source || msi? }
|
40
48
|
a.failure_message Chef::Exceptions::NoWindowsPackageSource, "Source for package #{new_resource.package_name} must be specified in the resource's source property for package to be installed because the package_name property is used to test for the package installation state for this package type."
|
@@ -49,27 +57,15 @@ class Chef
|
|
49
57
|
end
|
50
58
|
end
|
51
59
|
|
52
|
-
# load_current_resource is run in Chef::Provider#run_action when not in whyrun_mode?
|
53
60
|
def load_current_resource
|
54
|
-
|
55
|
-
|
56
|
-
logger.trace("We do not know the version of #{new_resource.source} because the file is not downloaded")
|
57
|
-
# FIXME: this label should not be used. It could be set to nil. Probably what should happen is that
|
58
|
-
# if the file hasn't been downloaded then load_current_resource must download the file here, and then
|
59
|
-
# the else clause to set current_resource.version can always be run. Relying on a side-effect here
|
60
|
-
# produces at least less readable code, if not outright buggy... (and I'm assuming that this isn't
|
61
|
-
# wholly just a bug -- since if we only need the package_name to determine if its installed then we
|
62
|
-
# need this, so I'm assuming we need to download the file to pull out the name in order to check
|
63
|
-
# the registry -- which it still feels like we get wrong in the sense we're forcing always downloading
|
64
|
-
# and then always installing(?) which violates idempotency -- and I'm having to think way too hard
|
65
|
-
# about this and would need to go surfing around the code to determine what actually happens, probably
|
66
|
-
# in every different package_provider...)
|
67
|
-
current_resource.version(:unknown.to_s)
|
68
|
-
else
|
69
|
-
current_resource.version(package_provider.installed_version)
|
70
|
-
new_resource.version(package_provider.package_version) if package_provider.package_version
|
61
|
+
if uri_scheme?(new_resource.source) && action == :install
|
62
|
+
download_source_file
|
71
63
|
end
|
72
64
|
|
65
|
+
@current_resource = Chef::Resource::WindowsPackage.new(new_resource.name)
|
66
|
+
current_resource.version(package_provider.installed_version)
|
67
|
+
new_resource.version(package_provider.package_version) if package_provider.package_version
|
68
|
+
|
73
69
|
current_resource
|
74
70
|
end
|
75
71
|
|
@@ -138,17 +134,6 @@ class Chef
|
|
138
134
|
end
|
139
135
|
end
|
140
136
|
|
141
|
-
def action_install
|
142
|
-
if uri_scheme?(new_resource.source)
|
143
|
-
download_source_file
|
144
|
-
load_current_resource
|
145
|
-
else
|
146
|
-
validate_content!
|
147
|
-
end
|
148
|
-
|
149
|
-
super
|
150
|
-
end
|
151
|
-
|
152
137
|
# Chef::Provider::Package action_install + action_remove call install_package + remove_package
|
153
138
|
# Pass those calls to the correct sub-provider
|
154
139
|
def install_package(name, version)
|
@@ -184,7 +169,7 @@ class Chef
|
|
184
169
|
# is not multipackage. The existing implementation of package_provider.installed_version should probably
|
185
170
|
# be what `uninstall_version_array` is, and then that list should be sorted and last/first'd into the
|
186
171
|
# current_resource.version. The current_version_array method was not intended to be overwritten by
|
187
|
-
#
|
172
|
+
# subclasses (but ruby provides no feature to block doing so -- it is already marked as private).
|
188
173
|
#
|
189
174
|
def current_version_array
|
190
175
|
[ current_resource.version ]
|
@@ -244,6 +229,7 @@ class Chef
|
|
244
229
|
end
|
245
230
|
|
246
231
|
def resource_for_provider
|
232
|
+
# XXX: this is crazy
|
247
233
|
@resource_for_provider = Chef::Resource::WindowsPackage.new(new_resource.name).tap do |r|
|
248
234
|
r.source(Chef::Util::PathHelper.validate_path(source_location)) unless source_location.nil?
|
249
235
|
r.cookbook_name = new_resource.cookbook_name
|
@@ -256,28 +242,27 @@ class Chef
|
|
256
242
|
end
|
257
243
|
|
258
244
|
def download_source_file
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
r.checksum(new_resource.checksum)
|
268
|
-
r.backup(false)
|
245
|
+
# It seems correct that this is a build_resource rather than declare_resource/DSL use since updating should not trigger a notification
|
246
|
+
# unless the downloaded file is actually installed. The case where the remote_file downloads the package but the package is already
|
247
|
+
# installed on the target should not trigger a notification since the running state did not change.
|
248
|
+
build_resource(:remote_file, default_download_cache_path) do
|
249
|
+
source(new_resource.source)
|
250
|
+
cookbook_name = new_resource.cookbook_name
|
251
|
+
checksum(new_resource.checksum)
|
252
|
+
backup(false)
|
269
253
|
|
270
254
|
if new_resource.remote_file_attributes
|
271
255
|
new_resource.remote_file_attributes.each do |(k, v)|
|
272
|
-
|
256
|
+
send(k.to_sym, v)
|
273
257
|
end
|
274
258
|
end
|
275
|
-
end
|
259
|
+
end.run_action(:create)
|
260
|
+
logger.trace("#{new_resource} fetched source file to #{default_download_cache_path}")
|
276
261
|
end
|
277
262
|
|
278
263
|
def default_download_cache_path
|
279
264
|
uri = ::URI.parse(new_resource.source)
|
280
|
-
filename = ::File.basename(::
|
265
|
+
filename = ::File.basename(::CGI.unescape(uri.path))
|
281
266
|
file_cache_dir = Chef::FileCache.create_cache_path("package/")
|
282
267
|
Chef::Util::PathHelper.cleanpath("#{file_cache_dir}/#{filename}")
|
283
268
|
end
|
@@ -286,22 +271,13 @@ class Chef
|
|
286
271
|
if new_resource.source.nil?
|
287
272
|
nil
|
288
273
|
elsif uri_scheme?(new_resource.source)
|
289
|
-
|
274
|
+
default_download_cache_path
|
290
275
|
else
|
291
276
|
new_source = Chef::Util::PathHelper.cleanpath(new_resource.source)
|
292
277
|
::File.exist?(new_source) ? new_source : nil
|
293
278
|
end
|
294
279
|
end
|
295
280
|
|
296
|
-
def validate_content!
|
297
|
-
if new_resource.checksum
|
298
|
-
source_checksum = checksum(source_location)
|
299
|
-
if new_resource.checksum.downcase != source_checksum
|
300
|
-
raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(source_checksum))
|
301
|
-
end
|
302
|
-
end
|
303
|
-
end
|
304
|
-
|
305
281
|
def msi?
|
306
282
|
return true if new_resource.installer_type == :msi
|
307
283
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
# TODO: Allow new_resource.source to be a Product Code as a GUID for uninstall / network install
|
20
20
|
|
21
|
-
require_relative "../../../win32/api/installer" if
|
21
|
+
require_relative "../../../win32/api/installer" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
22
22
|
require_relative "../../../mixin/shell_out"
|
23
23
|
|
24
24
|
class Chef
|
@@ -26,7 +26,7 @@ class Chef
|
|
26
26
|
class Package
|
27
27
|
class Windows
|
28
28
|
class MSI
|
29
|
-
include Chef::ReservedNames::Win32::API::Installer if
|
29
|
+
include Chef::ReservedNames::Win32::API::Installer if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
30
30
|
include Chef::Mixin::ShellOut
|
31
31
|
|
32
32
|
def initialize(resource, uninstall_entries)
|
@@ -100,7 +100,7 @@ class Chef
|
|
100
100
|
|
101
101
|
# If this is a package like the kernel that can be installed multiple times, we'll skip over this logic
|
102
102
|
if new_resource.allow_downgrade && version_gt?(iv.version_with_arch, av.version_with_arch) && !python_helper.install_only_packages(name)
|
103
|
-
# We allow downgrading only in the
|
103
|
+
# We allow downgrading only in the event of single-package
|
104
104
|
# rules where the user explicitly allowed it
|
105
105
|
method = "downgrade"
|
106
106
|
end
|
@@ -202,14 +202,6 @@ class Chef
|
|
202
202
|
python_helper.compare_versions(v1, v2)
|
203
203
|
end
|
204
204
|
|
205
|
-
# Generate the yum syntax for the package
|
206
|
-
def yum_syntax(name, version, arch)
|
207
|
-
s = name
|
208
|
-
s += "-#{version}" if version
|
209
|
-
s += ".#{arch}" if arch
|
210
|
-
s
|
211
|
-
end
|
212
|
-
|
213
205
|
def resolve_source_to_version_obj
|
214
206
|
shell_out!("rpm -qp --queryformat '%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{ARCH}\n' #{new_resource.source}").stdout.each_line do |line|
|
215
207
|
# this is another case of committing the sin of doing some lightweight mangling of RPM versions in ruby -- but the output of the rpm command
|
@@ -22,7 +22,7 @@ require "singleton" unless defined?(Singleton)
|
|
22
22
|
|
23
23
|
#
|
24
24
|
# These are largely historical APIs, the YumCache object no longer exists and this is a
|
25
|
-
#
|
25
|
+
# facade over the python helper class. It should be considered deprecated-lite and
|
26
26
|
# no new APIs should be added and should be added to the python_helper instead.
|
27
27
|
#
|
28
28
|
|
@@ -22,6 +22,7 @@ require_relative "windows_script"
|
|
22
22
|
class Chef
|
23
23
|
class Provider
|
24
24
|
class PowershellScript < Chef::Provider::WindowsScript
|
25
|
+
# FIXME: use composition not inheritance
|
25
26
|
|
26
27
|
provides :powershell_script
|
27
28
|
|
@@ -30,9 +31,9 @@ class Chef
|
|
30
31
|
add_exit_status_wrapper
|
31
32
|
end
|
32
33
|
|
33
|
-
|
34
|
+
action :run do
|
34
35
|
validate_script_syntax!
|
35
|
-
super
|
36
|
+
super()
|
36
37
|
end
|
37
38
|
|
38
39
|
def command
|
@@ -47,14 +48,7 @@ class Chef
|
|
47
48
|
# error status of a failed Windows process that ran at the
|
48
49
|
# end of the script, it gets changed to '1'.
|
49
50
|
#
|
50
|
-
#
|
51
|
-
cmd = "\"#{interpreter_path}\" #{new_resource.flags}"
|
52
|
-
if Chef::Platform.windows_nano_server?
|
53
|
-
cmd << " -Command \". '#{script_file.path}'\""
|
54
|
-
else
|
55
|
-
cmd << " -File \"#{script_file.path}\""
|
56
|
-
end
|
57
|
-
cmd
|
51
|
+
"\"#{interpreter_path}\" #{new_resource.flags} -File \"#{script_file.path}\""
|
58
52
|
end
|
59
53
|
|
60
54
|
protected
|
@@ -100,7 +94,7 @@ class Chef
|
|
100
94
|
# means a non-zero return and thus a syntactically invalid script.
|
101
95
|
|
102
96
|
with_os_architecture(node, architecture: new_resource.architecture) do
|
103
|
-
shell_out!(validation_command,
|
97
|
+
shell_out!(validation_command, returns: [0])
|
104
98
|
end
|
105
99
|
end
|
106
100
|
end
|