chef 16.18.30 → 17.10.163
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 +24 -33
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/chef-universal-mingw32.gemspec +3 -3
- data/chef.gemspec +25 -30
- data/lib/chef/action_collection.rb +6 -26
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application/base.rb +28 -3
- data/lib/chef/application/exit_code.rb +7 -21
- data/lib/chef/application.rb +3 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_pattern.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/client.rb +10 -20
- data/lib/chef/compliance/default_attributes.rb +20 -7
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/input.rb +115 -0
- data/lib/chef/compliance/input_collection.rb +139 -0
- data/lib/chef/compliance/profile.rb +122 -0
- data/lib/chef/compliance/profile_collection.rb +109 -0
- data/lib/chef/compliance/reporter/automate.rb +18 -8
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +5 -1
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +177 -37
- data/lib/chef/compliance/waiver.rb +115 -0
- data/lib/chef/compliance/waiver_collection.rb +143 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +1 -2
- data/lib/chef/cookbook_version.rb +1 -1
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/data_collector.rb +0 -1
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +6 -2
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/{knife/group_list.rb → dsl/compliance.rb} +11 -16
- data/lib/chef/dsl/declare_resource.rb +5 -10
- data/lib/chef/{knife/client_show.rb → dsl/reader_helpers.rb} +24 -21
- data/lib/chef/dsl/reboot_pending.rb +2 -3
- data/lib/chef/dsl/recipe.rb +4 -2
- data/lib/chef/{knife/data_bag_list.rb → dsl/render_helpers.rb} +19 -17
- data/lib/chef/dsl/secret.rb +170 -0
- data/lib/chef/dsl/toml.rb +116 -0
- data/lib/chef/dsl/universal.rb +7 -0
- data/lib/chef/dsl.rb +1 -0
- data/lib/chef/event_dispatch/base.rb +46 -3
- data/lib/chef/exceptions.rb +30 -0
- data/lib/chef/formatters/doc.rb +62 -14
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/formatters/minimal.rb +6 -5
- data/lib/chef/group.rb +75 -0
- data/lib/chef/handler/slow_report.rb +66 -0
- data/lib/chef/handler.rb +46 -8
- data/lib/chef/http/basic_client.rb +15 -7
- data/lib/chef/http/ssl_policies.rb +3 -3
- data/lib/chef/http.rb +7 -3
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/mixin/homebrew_user.rb +15 -5
- data/lib/chef/mixin/openssl_helper.rb +17 -13
- data/lib/chef/mixin/powershell_exec.rb +27 -7
- data/lib/chef/mixin/properties.rb +6 -0
- data/lib/chef/mixin/why_run.rb +8 -2
- data/lib/chef/node/attribute.rb +6 -4
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
- data/lib/chef/node.rb +1 -1
- data/lib/chef/org.rb +3 -2
- data/lib/chef/platform/query_helpers.rb +2 -2
- data/lib/chef/policy_builder/expand_node_object.rb +1 -2
- data/lib/chef/policy_builder/policyfile.rb +84 -46
- data/lib/chef/powershell.rb +8 -6
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider/cron.rb +7 -4
- data/lib/chef/provider/directory.rb +8 -8
- data/lib/chef/provider/execute.rb +3 -2
- data/lib/chef/provider/file.rb +5 -3
- data/lib/chef/provider/git.rb +6 -8
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig/debian.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +6 -6
- data/lib/chef/provider/link.rb +5 -5
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/linux.rb +16 -2
- data/lib/chef/provider/mount/mount.rb +6 -6
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/chocolatey.rb +14 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
- data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
- data/lib/chef/provider/package/dnf.rb +1 -1
- data/lib/chef/provider/package/habitat.rb +168 -0
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +13 -10
- data/lib/chef/provider/package/rubygems.rb +15 -21
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/python_helper.rb +109 -35
- data/lib/chef/provider/package/yum/yum_helper.py +42 -60
- data/lib/chef/provider/package/yum.rb +40 -16
- data/lib/chef/provider/package/zypper.rb +7 -0
- data/lib/chef/provider/package.rb +80 -49
- data/lib/chef/provider/registry_key.rb +4 -3
- data/lib/chef/provider/remote_file/http.rb +1 -1
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +16 -16
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/subversion.rb +18 -20
- data/lib/chef/provider/support/yum_repo.erb +1 -1
- data/lib/chef/provider/support/zypper_repo.erb +4 -2
- data/lib/chef/provider/systemd_unit.rb +53 -26
- data/lib/chef/provider/template/content.rb +2 -6
- data/lib/chef/provider/template.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +23 -26
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +3 -3
- data/lib/chef/provider/user.rb +7 -3
- data/lib/chef/provider/windows_script.rb +1 -1
- data/lib/chef/provider/yum_repository.rb +27 -43
- data/lib/chef/provider/zypper_repository.rb +31 -35
- data/lib/chef/provider.rb +32 -4
- data/lib/chef/provider_resolver.rb +8 -2
- data/lib/chef/providers.rb +1 -2
- data/lib/chef/pwsh.rb +3 -2
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +3 -3
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +5 -4
- data/lib/chef/resource/archive_file.rb +19 -17
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +38 -6
- data/lib/chef/resource/chef_client_cron.rb +5 -5
- data/lib/chef/resource/chef_client_launchd.rb +7 -7
- data/lib/chef/resource/chef_client_scheduled_task.rb +61 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +6 -6
- data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +5 -10
- data/lib/chef/resource/chocolatey_config.rb +16 -20
- data/lib/chef/resource/chocolatey_feature.rb +3 -7
- data/lib/chef/resource/chocolatey_package.rb +3 -3
- data/lib/chef/resource/chocolatey_source.rb +28 -12
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron/cron.rb +75 -1
- data/lib/chef/resource/cron/cron_d.rb +5 -6
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/directory.rb +1 -1
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dnf_package.rb +4 -6
- data/lib/chef/resource/dpkg_package.rb +6 -1
- data/lib/chef/resource/dsc_resource.rb +1 -1
- data/lib/chef/resource/execute.rb +14 -12
- data/lib/chef/resource/file/verification/json.rb +50 -0
- data/lib/chef/resource/{user/dscl_user.rb → file/verification/yaml.rb} +26 -9
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/group.rb +6 -6
- data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
- data/lib/chef/resource/habitat/habitat_package.rb +129 -0
- data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
- data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
- data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
- data/lib/chef/resource/habitat_config.rb +107 -0
- data/lib/chef/resource/habitat_install.rb +247 -0
- data/lib/chef/resource/habitat_service.rb +451 -0
- data/lib/chef/resource/habitat_user_toml.rb +92 -0
- data/lib/chef/resource/homebrew_cask.rb +10 -10
- data/lib/chef/resource/homebrew_package.rb +1 -1
- data/lib/chef/resource/homebrew_tap.rb +9 -16
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +68 -22
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/inspec_input.rb +127 -0
- data/lib/chef/resource/inspec_waiver.rb +184 -0
- data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
- data/lib/chef/resource/kernel_module.rb +32 -18
- data/lib/chef/resource/launchd.rb +5 -8
- data/lib/chef/resource/locale.rb +7 -5
- data/lib/chef/resource/lwrp_base.rb +20 -1
- data/lib/chef/resource/macos_userdefaults.rb +54 -144
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +2 -1
- data/lib/chef/resource/ohai_hint.rb +2 -6
- data/lib/chef/resource/openbsd_package.rb +17 -0
- data/lib/chef/resource/openssl_dhparam.rb +1 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
- data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
- data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +4 -7
- data/lib/chef/resource/openssl_x509_crl.rb +1 -3
- data/lib/chef/resource/openssl_x509_request.rb +1 -3
- data/lib/chef/resource/osx_profile.rb +3 -3
- data/lib/chef/resource/plist.rb +8 -8
- data/lib/chef/resource/powershell_package_source.rb +235 -73
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/reboot.rb +38 -9
- data/lib/chef/resource/registry_key.rb +36 -48
- data/lib/chef/resource/remote_directory.rb +2 -2
- data/lib/chef/resource/remote_file.rb +103 -7
- data/lib/chef/resource/rhsm_errata.rb +16 -3
- data/lib/chef/resource/rhsm_errata_level.rb +11 -6
- data/lib/chef/resource/rhsm_register.rb +42 -3
- data/lib/chef/resource/rhsm_repo.rb +17 -6
- data/lib/chef/resource/rhsm_subscription.rb +2 -6
- data/lib/chef/resource/ruby_block.rb +100 -0
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/scm/subversion.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
- data/lib/chef/resource/sudo.rb +8 -12
- data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
- data/lib/chef/resource/support/client.erb +11 -1
- data/lib/chef/resource/support/sup.toml.erb +179 -0
- data/lib/chef/resource/swap_file.rb +2 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +3 -5
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +2 -2
- data/lib/chef/resource/windows_auto_run.rb +3 -6
- data/lib/chef/resource/windows_certificate.rb +235 -90
- data/lib/chef/resource/windows_defender.rb +163 -0
- data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +4 -8
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +6 -5
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +3 -9
- data/lib/chef/resource/windows_feature_powershell.rb +11 -12
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +20 -9
- data/lib/chef/resource/windows_font.rb +3 -5
- data/lib/chef/resource/windows_pagefile.rb +111 -69
- data/lib/chef/resource/windows_path.rb +4 -4
- data/lib/chef/resource/windows_printer.rb +80 -61
- data/lib/chef/resource/windows_printer_port.rb +49 -66
- data/lib/chef/resource/windows_security_policy.rb +10 -10
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +44 -17
- data/lib/chef/resource/windows_uac.rb +3 -5
- data/lib/chef/resource/windows_update_settings.rb +259 -0
- data/lib/chef/resource/windows_workgroup.rb +3 -4
- data/lib/chef/resource/yum_package.rb +11 -15
- data/lib/chef/resource/zypper_package.rb +4 -4
- data/lib/chef/resource/zypper_repository.rb +28 -8
- data/lib/chef/resource.rb +24 -27
- data/lib/chef/resource_builder.rb +8 -2
- data/lib/chef/resource_inspector.rb +6 -2
- data/lib/chef/resource_reporter.rb +1 -2
- data/lib/chef/resources.rb +15 -2
- data/lib/chef/run_context/cookbook_compiler.rb +112 -28
- data/lib/chef/run_context.rb +47 -1
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/runner.rb +1 -1
- data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
- data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
- data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
- data/lib/chef/secret_fetcher/base.rb +76 -0
- data/lib/chef/secret_fetcher/example.rb +46 -0
- data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
- data/lib/chef/secret_fetcher.rb +60 -0
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +2 -1
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +1 -1
- data/lib/chef/win32/registry.rb +4 -2
- data/spec/data/archive_file/test_archive.tar.gz +0 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/trusted_certs/example.crt +29 -20
- data/spec/data/trusted_certs/example_no_cn.crt +30 -34
- data/spec/data/trusted_certs/opscode.pem +33 -54
- data/spec/functional/assets/yumrepo/repodata/01a3b-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/401dc-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/5dc1e-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/6bf96-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/7c365-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/dabe2-primary.xml.gz +0 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
- data/spec/functional/dsl/registry_helper_spec.rb +2 -2
- data/spec/functional/mixin/from_file_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/archive_file_spec.rb +88 -0
- data/spec/functional/resource/chocolatey_package_spec.rb +41 -20
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dnf_package_spec.rb +997 -645
- data/spec/functional/resource/dpkg_package_spec.rb +16 -0
- data/spec/functional/resource/dsc_script_spec.rb +5 -5
- data/spec/functional/resource/group_spec.rb +39 -19
- data/spec/functional/resource/link_spec.rb +1 -1
- data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
- data/spec/functional/resource/powershell_package_source_spec.rb +5 -6
- data/spec/functional/resource/registry_spec.rb +89 -89
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/template_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +122 -37
- data/spec/functional/resource/windows_env_spec.rb +2 -2
- data/spec/functional/resource/windows_font_spec.rb +1 -2
- data/spec/functional/resource/windows_hostname_spec.rb +91 -0
- data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
- data/spec/functional/resource/yum_package_spec.rb +1197 -451
- data/spec/functional/resource/zypper_package_spec.rb +17 -0
- data/spec/functional/shell_spec.rb +1 -0
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +12 -9
- data/spec/integration/client/client_spec.rb +37 -23
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/fips_spec.rb +9 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/client/open_ssl_spec.rb +20 -0
- data/spec/integration/compliance/compliance_spec.rb +62 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
- data/spec/integration/recipes/resource_action_spec.rb +6 -6
- data/spec/integration/recipes/unified_mode_spec.rb +71 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +20 -18
- data/spec/support/chef_helpers.rb +1 -17
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +14 -13
- data/spec/support/ruby_installer.rb +51 -0
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +2 -2
- data/spec/support/shared/functional/http.rb +9 -9
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +3 -9
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/base_spec.rb +40 -0
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +0 -16
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/input_spec.rb +104 -0
- data/spec/unit/compliance/profile_spec.rb +120 -0
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +21 -1
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +4 -3
- data/spec/unit/compliance/runner_spec.rb +137 -6
- data/spec/unit/compliance/waiver_spec.rb +104 -0
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +3 -3
- data/spec/unit/dsl/registry_helper_spec.rb +7 -7
- data/spec/unit/dsl/render_helpers_spec.rb +102 -0
- data/spec/unit/dsl/secret_spec.rb +175 -0
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/formatters/doc_spec.rb +1 -1
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
- data/spec/unit/handler_spec.rb +8 -2
- data/spec/unit/http/basic_client_spec.rb +30 -0
- data/spec/unit/http_spec.rb +8 -2
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/default_paths_spec.rb +1 -1
- data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
- data/spec/unit/mixin/powershell_out_spec.rb +2 -2
- data/spec/unit/mixin/securable_spec.rb +3 -3
- data/spec/unit/mixin/why_run_spec.rb +53 -0
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/platform/query_helpers_spec.rb +5 -5
- data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
- data/spec/unit/policy_builder/policyfile_spec.rb +133 -55
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/apt_update_spec.rb +3 -1
- data/spec/unit/provider/cron_spec.rb +46 -1
- data/spec/unit/provider/dsc_script_spec.rb +8 -8
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupadd_spec.rb +1 -0
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group/usermod_spec.rb +4 -4
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/ifconfig/aix_spec.rb +14 -14
- data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
- data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
- data/spec/unit/provider/ifconfig_spec.rb +5 -3
- data/spec/unit/provider/link_spec.rb +14 -8
- data/spec/unit/provider/mount/aix_spec.rb +1 -1
- data/spec/unit/provider/mount/linux_spec.rb +16 -3
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/bff_spec.rb +1 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +20 -3
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
- data/spec/unit/provider/package/powershell_spec.rb +114 -114
- data/spec/unit/provider/package/rubygems_spec.rb +27 -36
- data/spec/unit/provider/package/solaris_spec.rb +1 -0
- data/spec/unit/provider/package/windows_spec.rb +1 -1
- data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
- data/spec/unit/provider/registry_key_spec.rb +4 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +3 -3
- data/spec/unit/provider/remote_file/http_spec.rb +10 -0
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +2 -0
- data/spec/unit/provider/service/gentoo_service_spec.rb +3 -2
- data/spec/unit/provider/service/macosx_spec.rb +3 -2
- data/spec/unit/provider/service/redhat_spec.rb +4 -1
- data/spec/unit/provider/service/simple_service_spec.rb +6 -4
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -32
- data/spec/unit/provider/service/windows_spec.rb +7 -7
- data/spec/unit/provider/subversion_spec.rb +6 -6
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/template_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +55 -0
- data/spec/unit/provider/user/solaris_spec.rb +1 -1
- data/spec/unit/provider/user_spec.rb +2 -0
- data/spec/unit/provider/windows_env_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +6 -13
- data/spec/unit/provider_spec.rb +23 -8
- data/spec/unit/resource/archive_file_spec.rb +400 -2
- data/spec/unit/resource/chef_client_config_spec.rb +8 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/dpkg_package_spec.rb +12 -0
- data/spec/unit/resource/file/verification/json_spec.rb +72 -0
- data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
- data/spec/unit/resource/inspec_input_spec.rb +300 -0
- data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
- data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
- data/spec/unit/resource/kernel_module_spec.rb +2 -1
- data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
- data/spec/unit/resource/powershell_package_source_spec.rb +63 -62
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/registry_key_spec.rb +10 -10
- data/spec/unit/resource/rhsm_register_spec.rb +42 -0
- data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
- data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
- data/spec/unit/resource/windows_defender_spec.rb +71 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
- data/spec/unit/resource/windows_firewall_rule_spec.rb +14 -9
- data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
- data/spec/unit/resource/windows_task_spec.rb +4 -4
- data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
- data/spec/unit/resource/zypper_repository_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +56 -23
- data/spec/unit/run_context_spec.rb +16 -0
- data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
- data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
- data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
- data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
- data/spec/unit/secret_fetcher_spec.rb +82 -0
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
- data/spec/unit/win32/registry_spec.rb +3 -3
- data/tasks/rspec.rb +10 -6
- metadata +181 -532
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/provider/group/suse.rb +0 -82
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1616
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/group/suse_spec.rb +0 -90
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
- /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.nupkg → test-A.1.0.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.nupkg → test-A.1.5.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.nupkg → test-A.2.0.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.nupkg → test-B.1.0.0.nupkg} +0 -0
|
@@ -2,45 +2,26 @@
|
|
|
2
2
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
|
3
3
|
|
|
4
4
|
#
|
|
5
|
-
# NOTE: this actually needs to run under python2.
|
|
6
|
-
# please manually test changes on
|
|
5
|
+
# NOTE: this actually needs to run under python2.7 and centos 6.x through python3 and centos 7.x
|
|
6
|
+
# please manually test changes on centos6 boxes or you will almost certainly break things.
|
|
7
7
|
#
|
|
8
8
|
|
|
9
9
|
import sys
|
|
10
10
|
import yum
|
|
11
11
|
import signal
|
|
12
12
|
import os
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
except ImportError: import simplejson as json
|
|
13
|
+
import fcntl
|
|
14
|
+
import json
|
|
16
15
|
import re
|
|
17
16
|
from rpmUtils.miscutils import stringToVersion,compareEVR
|
|
18
17
|
from rpmUtils.arch import getBaseArch, getArchList
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
try: from yum.misc import string_to_prco_tuple
|
|
22
|
-
except ImportError:
|
|
23
|
-
# RHEL5 compat
|
|
24
|
-
def string_to_prco_tuple(prcoString):
|
|
25
|
-
prco_split = prcoString.split()
|
|
26
|
-
n, f, v = prco_split
|
|
27
|
-
(prco_e, prco_v, prco_r) = stringToVersion(v)
|
|
28
|
-
return (n, f, (prco_e, prco_v, prco_r))
|
|
18
|
+
from yum.misc import string_to_prco_tuple
|
|
29
19
|
|
|
30
20
|
# hack to work around https://github.com/chef/chef/issues/7126
|
|
31
21
|
# see https://bugzilla.redhat.com/show_bug.cgi?id=1396248
|
|
32
22
|
if not hasattr(yum.packages.FakeRepository, 'compare_providers_priority'):
|
|
33
23
|
yum.packages.FakeRepository.compare_providers_priority = 99
|
|
34
24
|
|
|
35
|
-
base = None
|
|
36
|
-
|
|
37
|
-
def get_base():
|
|
38
|
-
global base
|
|
39
|
-
if base is None:
|
|
40
|
-
base = yum.YumBase()
|
|
41
|
-
setup_exit_handler()
|
|
42
|
-
return base
|
|
43
|
-
|
|
44
25
|
def versioncompare(versions):
|
|
45
26
|
arch_list = getArchList()
|
|
46
27
|
candidate_arch1 = versions[0].split(".")[-1]
|
|
@@ -51,9 +32,9 @@ def versioncompare(versions):
|
|
|
51
32
|
# then we'll chop the arch component (assuming it *is* a valid one) from the first version string
|
|
52
33
|
# so we're only comparing the evr portions.
|
|
53
34
|
if (candidate_arch2 not in arch_list) and (candidate_arch1 in arch_list):
|
|
54
|
-
|
|
35
|
+
final_version1 = versions[0].replace("." + candidate_arch1,"")
|
|
55
36
|
else:
|
|
56
|
-
|
|
37
|
+
final_version1 = versions[0]
|
|
57
38
|
|
|
58
39
|
final_version2 = versions[1]
|
|
59
40
|
|
|
@@ -64,37 +45,22 @@ def versioncompare(versions):
|
|
|
64
45
|
outpipe.write("%(e)s\n" % { 'e': evr_comparison })
|
|
65
46
|
outpipe.flush()
|
|
66
47
|
|
|
67
|
-
def install_only_packages(name):
|
|
68
|
-
base = get_base()
|
|
48
|
+
def install_only_packages(base, name):
|
|
69
49
|
if name in base.conf.installonlypkgs:
|
|
70
|
-
|
|
50
|
+
outpipe.write('True\n')
|
|
71
51
|
else:
|
|
72
|
-
|
|
52
|
+
outpipe.write('False\n')
|
|
73
53
|
outpipe.flush()
|
|
74
54
|
|
|
75
|
-
|
|
76
|
-
try:
|
|
77
|
-
any
|
|
78
|
-
except NameError:
|
|
79
|
-
def any(s):
|
|
80
|
-
for v in s:
|
|
81
|
-
if v:
|
|
82
|
-
return True
|
|
83
|
-
return False
|
|
84
|
-
|
|
85
|
-
def query(command):
|
|
86
|
-
base = get_base()
|
|
87
|
-
|
|
88
|
-
enabled_repos = base.repos.listEnabled()
|
|
89
|
-
|
|
55
|
+
def query(base, command):
|
|
90
56
|
# Handle any repocontrols passed in with our options
|
|
91
57
|
|
|
92
58
|
if 'repos' in command:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
59
|
+
for repo in command['repos']:
|
|
60
|
+
if 'enable' in repo:
|
|
61
|
+
base.repos.enableRepo(repo['enable'])
|
|
62
|
+
if 'disable' in repo:
|
|
63
|
+
base.repos.disableRepo(repo['disable'])
|
|
98
64
|
|
|
99
65
|
args = { 'name': command['provides'] }
|
|
100
66
|
do_nevra = False
|
|
@@ -136,7 +102,7 @@ def query(command):
|
|
|
136
102
|
# returnPackages and searchProvides and then apply the Nevra filters to those results.
|
|
137
103
|
pkgs = obj.searchNevra(**args)
|
|
138
104
|
if (command['action'] == "whatinstalled") and (not pkgs):
|
|
139
|
-
|
|
105
|
+
pkgs = obj.searchNevra(name=args['name'], arch=desired_arch)
|
|
140
106
|
else:
|
|
141
107
|
pats = [command['provides']]
|
|
142
108
|
pkgs = obj.returnPackages(patterns=pats)
|
|
@@ -169,21 +135,29 @@ def setup_exit_handler():
|
|
|
169
135
|
signal.signal(signal.SIGPIPE, exit_handler)
|
|
170
136
|
signal.signal(signal.SIGQUIT, exit_handler)
|
|
171
137
|
|
|
138
|
+
def set_blocking(fd):
|
|
139
|
+
old_flags = fcntl.fcntl(fd, fcntl.F_GETFL)
|
|
140
|
+
fcntl.fcntl(fd, fcntl.F_SETFL, old_flags & ~os.O_NONBLOCK)
|
|
141
|
+
|
|
142
|
+
base = None
|
|
143
|
+
|
|
172
144
|
if len(sys.argv) < 3:
|
|
173
|
-
|
|
174
|
-
|
|
145
|
+
inpipe = sys.stdin
|
|
146
|
+
outpipe = sys.stdout
|
|
175
147
|
else:
|
|
176
|
-
|
|
177
|
-
|
|
148
|
+
set_blocking(int(sys.argv[1]))
|
|
149
|
+
set_blocking(int(sys.argv[2]))
|
|
150
|
+
inpipe = os.fdopen(int(sys.argv[1]), "r")
|
|
151
|
+
outpipe = os.fdopen(int(sys.argv[2]), "w")
|
|
178
152
|
|
|
179
153
|
try:
|
|
154
|
+
setup_exit_handler()
|
|
180
155
|
while 1:
|
|
181
|
-
#
|
|
156
|
+
# stop the process if the parent proc goes away
|
|
182
157
|
ppid = os.getppid()
|
|
183
158
|
if ppid == 1:
|
|
184
159
|
raise RuntimeError("orphaned")
|
|
185
160
|
|
|
186
|
-
setup_exit_handler()
|
|
187
161
|
line = inpipe.readline()
|
|
188
162
|
|
|
189
163
|
# only way to detect EOF in python
|
|
@@ -195,14 +169,22 @@ try:
|
|
|
195
169
|
except ValueError, e:
|
|
196
170
|
raise RuntimeError("bad json parse")
|
|
197
171
|
|
|
172
|
+
if base is None:
|
|
173
|
+
base = yum.YumBase()
|
|
174
|
+
|
|
198
175
|
if command['action'] == "whatinstalled":
|
|
199
|
-
query(command)
|
|
176
|
+
query(base, command)
|
|
200
177
|
elif command['action'] == "whatavailable":
|
|
201
|
-
query(command)
|
|
178
|
+
query(base, command)
|
|
202
179
|
elif command['action'] == "versioncompare":
|
|
203
180
|
versioncompare(command['versions'])
|
|
204
181
|
elif command['action'] == "installonlypkgs":
|
|
205
|
-
|
|
182
|
+
install_only_packages(base, command['package'])
|
|
183
|
+
elif command['action'] == "close_rpmdb":
|
|
184
|
+
base.closeRpmDB()
|
|
185
|
+
base = None
|
|
186
|
+
outpipe.write('nil nil nil\n')
|
|
187
|
+
outpipe.flush()
|
|
206
188
|
else:
|
|
207
189
|
raise RuntimeError("bad command")
|
|
208
190
|
finally:
|
|
@@ -36,6 +36,7 @@ class Chef
|
|
|
36
36
|
allow_nils
|
|
37
37
|
use_multipackage_api
|
|
38
38
|
use_package_name_for_source
|
|
39
|
+
use_magic_version
|
|
39
40
|
|
|
40
41
|
provides :package, platform_family: "fedora_derived"
|
|
41
42
|
|
|
@@ -64,6 +65,16 @@ class Chef
|
|
|
64
65
|
current_resource
|
|
65
66
|
end
|
|
66
67
|
|
|
68
|
+
def load_after_resource
|
|
69
|
+
# force the installed version array to repopulate
|
|
70
|
+
@current_version = []
|
|
71
|
+
@after_resource = Chef::Resource::YumPackage.new(new_resource.name)
|
|
72
|
+
after_resource.package_name(new_resource.package_name)
|
|
73
|
+
after_resource.version(get_current_versions)
|
|
74
|
+
|
|
75
|
+
after_resource
|
|
76
|
+
end
|
|
77
|
+
|
|
67
78
|
def define_resource_requirements
|
|
68
79
|
requirements.assert(:install, :upgrade, :remove, :purge) do |a|
|
|
69
80
|
a.assertion { !new_resource.source || ::File.exist?(new_resource.source) }
|
|
@@ -80,9 +91,15 @@ class Chef
|
|
|
80
91
|
end
|
|
81
92
|
end
|
|
82
93
|
|
|
94
|
+
def magic_version_array
|
|
95
|
+
package_name_array.each_with_index.map do |pkg, i|
|
|
96
|
+
magical_version(i).version_with_arch
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
83
100
|
def get_current_versions
|
|
84
101
|
package_name_array.each_with_index.map do |pkg, i|
|
|
85
|
-
|
|
102
|
+
current_version(i).version_with_arch
|
|
86
103
|
end
|
|
87
104
|
end
|
|
88
105
|
|
|
@@ -127,7 +144,7 @@ class Chef
|
|
|
127
144
|
alias upgrade_package install_package
|
|
128
145
|
|
|
129
146
|
def remove_package(names, versions)
|
|
130
|
-
resolved_names = names.each_with_index.map { |name, i|
|
|
147
|
+
resolved_names = names.each_with_index.map { |name, i| magical_version(i).to_s unless name.nil? }
|
|
131
148
|
yum(options, "-y", "remove", resolved_names)
|
|
132
149
|
flushcache
|
|
133
150
|
end
|
|
@@ -157,10 +174,10 @@ class Chef
|
|
|
157
174
|
def resolved_package_lock_names(names)
|
|
158
175
|
names.each_with_index.map do |name, i|
|
|
159
176
|
unless name.nil?
|
|
160
|
-
if
|
|
177
|
+
if magical_version(i).version.nil?
|
|
161
178
|
available_version(i).name
|
|
162
179
|
else
|
|
163
|
-
|
|
180
|
+
magical_version(i).name
|
|
164
181
|
end
|
|
165
182
|
end
|
|
166
183
|
end
|
|
@@ -226,22 +243,29 @@ class Chef
|
|
|
226
243
|
@available_version[index]
|
|
227
244
|
end
|
|
228
245
|
|
|
246
|
+
def magical_version(index)
|
|
247
|
+
@magical_version ||= []
|
|
248
|
+
@magical_version[index] ||= if new_resource.source
|
|
249
|
+
python_helper.package_query(:whatinstalled, available_version(index).name, version: safe_version_array[index], arch: safe_arch_array[index], options: options)
|
|
250
|
+
else
|
|
251
|
+
python_helper.package_query(:whatinstalled, package_name_array[index], version: safe_version_array[index], arch: safe_arch_array[index], options: options)
|
|
252
|
+
end
|
|
253
|
+
@magical_version[index]
|
|
254
|
+
end
|
|
255
|
+
|
|
229
256
|
# @return Array<Version>
|
|
230
|
-
def
|
|
231
|
-
@
|
|
232
|
-
@
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
@
|
|
257
|
+
def current_version(index)
|
|
258
|
+
@current_version ||= []
|
|
259
|
+
@current_version[index] ||= if new_resource.source
|
|
260
|
+
python_helper.package_query(:whatinstalled, available_version(index).name, arch: safe_arch_array[index], options: options)
|
|
261
|
+
else
|
|
262
|
+
python_helper.package_query(:whatinstalled, package_name_array[index], arch: safe_arch_array[index], options: options)
|
|
263
|
+
end
|
|
264
|
+
@current_version[index]
|
|
238
265
|
end
|
|
239
266
|
|
|
240
|
-
# cache flushing is accomplished by simply restarting the python helper. this produces a roughly
|
|
241
|
-
# 15% hit to the runtime of installing/removing/upgrading packages. correctly using multipackage
|
|
242
|
-
# array installs (and the multipackage cookbook) can produce 600% improvements in runtime.
|
|
243
267
|
def flushcache
|
|
244
|
-
python_helper.
|
|
268
|
+
python_helper.close_rpmdb
|
|
245
269
|
end
|
|
246
270
|
|
|
247
271
|
def yum_binary
|
|
@@ -93,6 +93,11 @@ class Chef
|
|
|
93
93
|
end
|
|
94
94
|
current_version ||= latest_version if is_installed
|
|
95
95
|
current_version
|
|
96
|
+
rescue Mixlib::ShellOut::ShellCommandFailed => e
|
|
97
|
+
# zypper returns a '104' code if info is called for a non-existent package
|
|
98
|
+
return nil if e.message =~ /'104'/
|
|
99
|
+
|
|
100
|
+
raise
|
|
96
101
|
end
|
|
97
102
|
|
|
98
103
|
def resolve_available_version(package_name, new_version)
|
|
@@ -113,6 +118,8 @@ class Chef
|
|
|
113
118
|
end
|
|
114
119
|
end
|
|
115
120
|
nil
|
|
121
|
+
rescue
|
|
122
|
+
nil
|
|
116
123
|
end
|
|
117
124
|
|
|
118
125
|
def available_version(index)
|
|
@@ -107,9 +107,9 @@ class Chef
|
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
action :install do
|
|
110
|
+
action :install, description: "Install a package. If a version is specified, install the specified version of the package." do
|
|
111
111
|
unless target_version_array.any?
|
|
112
|
-
logger.
|
|
112
|
+
logger.debug("#{new_resource} is already installed - nothing to do")
|
|
113
113
|
return
|
|
114
114
|
end
|
|
115
115
|
|
|
@@ -136,9 +136,9 @@ class Chef
|
|
|
136
136
|
|
|
137
137
|
private :install_description
|
|
138
138
|
|
|
139
|
-
action :upgrade do
|
|
139
|
+
action :upgrade, description: "Install a package and ensure that a package is the latest version." do
|
|
140
140
|
unless target_version_array.any?
|
|
141
|
-
logger.
|
|
141
|
+
logger.debug("#{new_resource} no versions to upgrade - nothing to do")
|
|
142
142
|
return
|
|
143
143
|
end
|
|
144
144
|
|
|
@@ -167,7 +167,7 @@ class Chef
|
|
|
167
167
|
|
|
168
168
|
private :upgrade_description
|
|
169
169
|
|
|
170
|
-
action :remove do
|
|
170
|
+
action :remove, description: "Remove a package." do
|
|
171
171
|
if removing_package?
|
|
172
172
|
description = new_resource.version ? "version #{new_resource.version} of " : ""
|
|
173
173
|
converge_by("remove #{description}package #{current_resource.package_name}") do
|
|
@@ -177,7 +177,7 @@ class Chef
|
|
|
177
177
|
logger.info("#{new_resource} removed")
|
|
178
178
|
end
|
|
179
179
|
else
|
|
180
|
-
logger.
|
|
180
|
+
logger.debug("#{new_resource} package does not exist - nothing to do")
|
|
181
181
|
end
|
|
182
182
|
end
|
|
183
183
|
|
|
@@ -202,7 +202,7 @@ class Chef
|
|
|
202
202
|
end
|
|
203
203
|
end
|
|
204
204
|
|
|
205
|
-
action :purge do
|
|
205
|
+
action :purge, description: "Purge a package. This action typically removes the configuration files as well as the package." do
|
|
206
206
|
if removing_package?
|
|
207
207
|
description = new_resource.version ? "version #{new_resource.version} of" : ""
|
|
208
208
|
converge_by("purge #{description} package #{current_resource.package_name}") do
|
|
@@ -229,7 +229,7 @@ class Chef
|
|
|
229
229
|
end
|
|
230
230
|
end
|
|
231
231
|
else
|
|
232
|
-
logger.
|
|
232
|
+
logger.debug("#{new_resource} is already locked")
|
|
233
233
|
end
|
|
234
234
|
end
|
|
235
235
|
|
|
@@ -248,7 +248,7 @@ class Chef
|
|
|
248
248
|
end
|
|
249
249
|
end
|
|
250
250
|
else
|
|
251
|
-
logger.
|
|
251
|
+
logger.debug("#{new_resource} is already unlocked")
|
|
252
252
|
end
|
|
253
253
|
end
|
|
254
254
|
|
|
@@ -438,47 +438,81 @@ class Chef
|
|
|
438
438
|
@target_version_array ||=
|
|
439
439
|
begin
|
|
440
440
|
target_version_array = []
|
|
441
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
|
441
|
+
each_package do |package_name, new_version, current_version, candidate_version, magic_version|
|
|
442
442
|
case action
|
|
443
443
|
when :upgrade
|
|
444
|
-
if current_version
|
|
445
|
-
#
|
|
446
|
-
#
|
|
444
|
+
if version_equals?(current_version, new_version)
|
|
445
|
+
# This is a short-circuit (mostly for the rubygems provider) to avoid needing to
|
|
446
|
+
# expensively query the candidate_version which must come later. This only checks
|
|
447
|
+
# exact matching, the check for fuzzy matching is later.
|
|
448
|
+
logger.trace("#{new_resource} #{package_name} #{new_version} is already installed")
|
|
449
|
+
target_version_array.push(nil)
|
|
450
|
+
elsif current_version.nil?
|
|
451
|
+
# This is a simple check to see if we have any currently installed version at all, this is
|
|
452
|
+
# safe to do before the allow_downgrade check so we check this before.
|
|
447
453
|
logger.trace("#{new_resource} has no existing installed version. Installing install #{candidate_version}")
|
|
448
454
|
target_version_array.push(candidate_version)
|
|
449
|
-
elsif !
|
|
450
|
-
#
|
|
451
|
-
|
|
455
|
+
elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
|
|
456
|
+
# This check for downgrading when allow_downgrade is false uses the current_version rather
|
|
457
|
+
# than the magic_version since we never want to downgrade even if the constraints are not met
|
|
458
|
+
# if the version is higher. This check does use the candidate_version and unlazies this so
|
|
459
|
+
# there will a perf hit on idempotent use when allow_downgrade is false which is unavoidable.
|
|
460
|
+
logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
|
|
452
461
|
target_version_array.push(nil)
|
|
462
|
+
elsif magic_version.nil?
|
|
463
|
+
# This is the check for fuzzy matching of the installed_version, where if the installed version
|
|
464
|
+
# does not match the desired version constraints (but is not an exact match) then we need to
|
|
465
|
+
# install the candidate_version (this must come after the allow_downgrade check)
|
|
466
|
+
logger.trace("#{new_resource} has an installed version that does not match the version constraint. Installing install #{candidate_version}")
|
|
467
|
+
target_version_array.push(candidate_version)
|
|
453
468
|
elsif candidate_version.nil?
|
|
469
|
+
# This check necessarily unlazies the candidate_version and may be expensive (connecting to
|
|
470
|
+
# rubygems.org or whatever). It comes as late as possible.
|
|
454
471
|
logger.trace("#{new_resource} #{package_name} has no candidate_version to upgrade to")
|
|
455
472
|
target_version_array.push(nil)
|
|
456
473
|
elsif version_equals?(current_version, candidate_version)
|
|
474
|
+
# This check sees if the candidate_version is already installed or if we should upgrade/update the
|
|
475
|
+
# package. This is the normal idempotent behavior of :upgrade and is inherently expensive due to
|
|
476
|
+
# unlazying the candidate_version. To prevent the perf hit the version may be specified with a full
|
|
477
|
+
# version constraint. Then the cookbook can roll the version forward and use :upgrade to force version
|
|
478
|
+
# pinning.
|
|
457
479
|
logger.trace("#{new_resource} #{package_name} #{candidate_version} is already installed")
|
|
458
480
|
target_version_array.push(nil)
|
|
459
|
-
elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
|
|
460
|
-
logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
|
|
461
|
-
target_version_array.push(nil)
|
|
462
481
|
else
|
|
463
|
-
logger.trace("#{new_resource} #{package_name} is out of date, will
|
|
482
|
+
logger.trace("#{new_resource} #{package_name} is out of date, will update to #{candidate_version}")
|
|
464
483
|
target_version_array.push(candidate_version)
|
|
465
484
|
end
|
|
466
485
|
|
|
467
486
|
when :install
|
|
468
|
-
if new_version && !
|
|
487
|
+
if current_version && new_version && !allow_downgrade && version_compare(current_version, new_version) == 1
|
|
488
|
+
# This is the idempotency guard for downgrades when downgrades are not allowed. This should perhaps raise
|
|
489
|
+
# an exception since we were told to install an exact package version but we are silently refusing to do so
|
|
490
|
+
# because a higher version is already installed. Maybe we need a flag for users to apply their preferred
|
|
491
|
+
# declarative philosophy? This has to come early and outside of the two code paths below.
|
|
492
|
+
logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
|
|
493
|
+
target_version_array.push(nil)
|
|
494
|
+
elsif new_version && !use_magic_version?
|
|
495
|
+
# This is for "non magic version using" subclasses to do comparisons between the current_version and the
|
|
496
|
+
# desired new_version. XXX: If we converted this to current_version_requirement_satisfied? and made it specific
|
|
497
|
+
# to the current version check and then eliminated the magic_version, we might be able to eliminate separate codepaths
|
|
498
|
+
# here, and eliminate the semantic confusion around the magic_version?
|
|
469
499
|
if version_requirement_satisfied?(current_version, new_version)
|
|
470
500
|
logger.trace("#{new_resource} #{package_name} #{current_version} satisfies #{new_version} requirement")
|
|
471
501
|
target_version_array.push(nil)
|
|
472
|
-
elsif current_version && !allow_downgrade && version_compare(current_version, new_version) == 1
|
|
473
|
-
logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
|
|
474
|
-
target_version_array.push(nil)
|
|
475
502
|
else
|
|
503
|
+
# XXX: some subclasses seem to depend on this behavior where the new_version can be different from the
|
|
504
|
+
# candidate_version and we install the new_version, it seems like the candidate_version should be fixed to
|
|
505
|
+
# be resolved correctly to the new_version for those providers. although it may just be unit test bugs.
|
|
506
|
+
# it would be more correct to use the candidate_version here, but then it needs to be the correctly resolved
|
|
507
|
+
# candidate_version against the new_version constraint.
|
|
476
508
|
logger.trace("#{new_resource} #{package_name} #{current_version} needs updating to #{new_version}")
|
|
477
509
|
target_version_array.push(new_version)
|
|
478
510
|
end
|
|
479
|
-
elsif
|
|
480
|
-
#
|
|
481
|
-
#
|
|
511
|
+
elsif magic_version.nil?
|
|
512
|
+
# This is for when we have a "magic version using" subclass and where the installed version does not match the
|
|
513
|
+
# constraint specified in the new_version, so we need to upgrade to the candidate_version. This is the only
|
|
514
|
+
# codepath in the :install branch which references the candidate_version so it is slow, but it is the path where
|
|
515
|
+
# we need to do work anyway. XXX: should we check for candidate_version.nil? somewhere around here?
|
|
482
516
|
logger.trace("#{new_resource} #{package_name} not installed, installing #{candidate_version}")
|
|
483
517
|
target_version_array.push(candidate_version)
|
|
484
518
|
else
|
|
@@ -512,8 +546,8 @@ class Chef
|
|
|
512
546
|
@packages_missing_candidates ||=
|
|
513
547
|
begin
|
|
514
548
|
missing = []
|
|
515
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
|
516
|
-
missing.push(package_name) if
|
|
549
|
+
each_package do |package_name, new_version, current_version, candidate_version, magic_version|
|
|
550
|
+
missing.push(package_name) if magic_version.nil? && candidate_version.nil?
|
|
517
551
|
end
|
|
518
552
|
missing
|
|
519
553
|
end
|
|
@@ -536,7 +570,7 @@ class Chef
|
|
|
536
570
|
@forced_packages_missing_candidates ||=
|
|
537
571
|
begin
|
|
538
572
|
missing = []
|
|
539
|
-
each_package do |package_name, new_version, current_version, candidate_version|
|
|
573
|
+
each_package do |package_name, new_version, current_version, candidate_version, magic_version|
|
|
540
574
|
next if new_version.nil? || current_version.nil?
|
|
541
575
|
|
|
542
576
|
if use_magic_version?
|
|
@@ -559,9 +593,10 @@ class Chef
|
|
|
559
593
|
def each_package
|
|
560
594
|
package_name_array.each_with_index do |package_name, i|
|
|
561
595
|
candidate_version = candidate_version_array[i]
|
|
562
|
-
current_version =
|
|
596
|
+
current_version = current_version_array[i]
|
|
597
|
+
magic_version = use_magic_version? ? magic_version_array[i] : current_version_array[i]
|
|
563
598
|
new_version = new_version_array[i]
|
|
564
|
-
yield package_name, new_version, current_version, candidate_version
|
|
599
|
+
yield package_name, new_version, current_version, candidate_version, magic_version
|
|
565
600
|
end
|
|
566
601
|
end
|
|
567
602
|
|
|
@@ -598,12 +633,10 @@ class Chef
|
|
|
598
633
|
# @return [Array] new_resource.source as an array
|
|
599
634
|
def source_array
|
|
600
635
|
@source_array ||=
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
[ new_resource.source ].flatten
|
|
606
|
-
end
|
|
636
|
+
if new_resource.source.nil?
|
|
637
|
+
package_name_array.map { nil }
|
|
638
|
+
else
|
|
639
|
+
[ new_resource.source ].flatten
|
|
607
640
|
end
|
|
608
641
|
end
|
|
609
642
|
|
|
@@ -612,22 +645,20 @@ class Chef
|
|
|
612
645
|
# @return [Array] Array of sources with package_names converted to sources
|
|
613
646
|
def resolved_source_array
|
|
614
647
|
@resolved_source_array ||=
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
source
|
|
624
|
-
end
|
|
648
|
+
source_array.each_with_index.map do |source, i|
|
|
649
|
+
package_name = package_name_array[i]
|
|
650
|
+
# we require at least one '/' in the package_name to avoid [XXX_]package 'foo' breaking due to a random 'foo' file in cwd
|
|
651
|
+
if use_package_name_for_source? && source.nil? && package_name.match(/#{::File::SEPARATOR}/) && ::File.exist?(package_name)
|
|
652
|
+
logger.trace("No package source specified, but #{package_name} exists on filesystem, using #{package_name} as source.")
|
|
653
|
+
package_name
|
|
654
|
+
else
|
|
655
|
+
source
|
|
625
656
|
end
|
|
626
657
|
end
|
|
627
658
|
end
|
|
628
659
|
|
|
629
660
|
def allow_downgrade
|
|
630
|
-
if new_resource.respond_to?(
|
|
661
|
+
if new_resource.respond_to?(:allow_downgrade)
|
|
631
662
|
new_resource.allow_downgrade
|
|
632
663
|
else
|
|
633
664
|
true
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
require_relative "../config"
|
|
21
21
|
require_relative "../log"
|
|
22
|
-
require_relative "../resource/
|
|
22
|
+
require_relative "../resource/registry_key"
|
|
23
23
|
require_relative "../mixin/checksum"
|
|
24
24
|
require_relative "../provider"
|
|
25
25
|
require "etc" unless defined?(Etc)
|
|
@@ -50,7 +50,8 @@ class Chef
|
|
|
50
50
|
current_resource.architecture(new_resource.architecture)
|
|
51
51
|
current_resource.recursive(new_resource.recursive)
|
|
52
52
|
if registry.key_exists?(new_resource.key)
|
|
53
|
-
|
|
53
|
+
current_registry_values = registry.get_values(new_resource.key) || []
|
|
54
|
+
current_resource.values(current_registry_values)
|
|
54
55
|
end
|
|
55
56
|
values_to_hash(current_resource.unscrubbed_values)
|
|
56
57
|
current_resource
|
|
@@ -78,7 +79,7 @@ class Chef
|
|
|
78
79
|
def define_resource_requirements
|
|
79
80
|
requirements.assert(:create, :create_if_missing, :delete, :delete_key) do |a|
|
|
80
81
|
a.assertion { registry.hive_exists?(new_resource.key) }
|
|
81
|
-
a.failure_message(Chef::Exceptions::Win32RegHiveMissing, "Hive #{new_resource.key.split(
|
|
82
|
+
a.failure_message(Chef::Exceptions::Win32RegHiveMissing, "Hive #{new_resource.key.split("\\").shift} does not exist")
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
requirements.assert(:create) do |a|
|
data/lib/chef/provider/route.rb
CHANGED
|
@@ -131,7 +131,7 @@ class Chef
|
|
|
131
131
|
action :add do
|
|
132
132
|
# check to see if load_current_resource found the route
|
|
133
133
|
if is_running
|
|
134
|
-
logger.
|
|
134
|
+
logger.debug("#{new_resource} route already active - nothing to do")
|
|
135
135
|
else
|
|
136
136
|
command = generate_command(:add)
|
|
137
137
|
converge_by("run #{command.join(" ")} to add route") do
|
|
@@ -152,7 +152,7 @@ class Chef
|
|
|
152
152
|
logger.info("#{new_resource} removed")
|
|
153
153
|
end
|
|
154
154
|
else
|
|
155
|
-
logger.
|
|
155
|
+
logger.debug("#{new_resource} route does not exist - nothing to do")
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
# for now we always write the file (ugly but its what it is)
|
|
@@ -45,7 +45,7 @@ class Chef
|
|
|
45
45
|
priority_ok = @current_resource.priority == @new_resource.priority
|
|
46
46
|
end
|
|
47
47
|
if @current_resource.enabled && priority_ok
|
|
48
|
-
logger.
|
|
48
|
+
logger.debug("#{@new_resource} already enabled - nothing to do")
|
|
49
49
|
else
|
|
50
50
|
converge_by("enable service #{@new_resource}") do
|
|
51
51
|
enable_service
|
|
@@ -138,7 +138,7 @@ class Chef
|
|
|
138
138
|
priority_ok = @current_resource.priority == new_resource.priority
|
|
139
139
|
end
|
|
140
140
|
if current_resource.enabled && priority_ok
|
|
141
|
-
logger.
|
|
141
|
+
logger.debug("#{new_resource} already enabled - nothing to do")
|
|
142
142
|
else
|
|
143
143
|
converge_by("enable service #{new_resource}") do
|
|
144
144
|
enable_service
|