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
|
@@ -19,6 +19,7 @@ require_relative "common_api"
|
|
|
19
19
|
require_relative "mixin/state_tracking"
|
|
20
20
|
require_relative "mixin/immutablize_array"
|
|
21
21
|
require_relative "mixin/immutablize_hash"
|
|
22
|
+
require_relative "../delayed_evaluator"
|
|
22
23
|
|
|
23
24
|
class Chef
|
|
24
25
|
class Node
|
|
@@ -109,6 +110,12 @@ class Chef
|
|
|
109
110
|
key
|
|
110
111
|
end
|
|
111
112
|
|
|
113
|
+
def [](*args)
|
|
114
|
+
value = super
|
|
115
|
+
value = value.call while value.is_a?(::Chef::DelayedEvaluator)
|
|
116
|
+
value
|
|
117
|
+
end
|
|
118
|
+
|
|
112
119
|
prepend Chef::Node::Mixin::StateTracking
|
|
113
120
|
prepend Chef::Node::Mixin::ImmutablizeArray
|
|
114
121
|
end
|
|
@@ -187,6 +194,12 @@ class Chef
|
|
|
187
194
|
e
|
|
188
195
|
end
|
|
189
196
|
|
|
197
|
+
def [](*args)
|
|
198
|
+
value = super
|
|
199
|
+
value = value.call while value.is_a?(::Chef::DelayedEvaluator)
|
|
200
|
+
value
|
|
201
|
+
end
|
|
202
|
+
|
|
190
203
|
prepend Chef::Node::Mixin::StateTracking
|
|
191
204
|
prepend Chef::Node::Mixin::ImmutablizeHash
|
|
192
205
|
end
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
#
|
|
17
17
|
|
|
18
|
+
require_relative "../../delayed_evaluator"
|
|
19
|
+
|
|
18
20
|
class Chef
|
|
19
21
|
class Node
|
|
20
22
|
module Mixin
|
|
@@ -46,13 +48,15 @@ class Chef
|
|
|
46
48
|
alias :reset :reset_cache
|
|
47
49
|
|
|
48
50
|
def [](key)
|
|
49
|
-
if deep_merge_cache.key?(key.to_s)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
ret = if deep_merge_cache.key?(key.to_s)
|
|
52
|
+
# return the cache of the deep merged values by top-level key
|
|
53
|
+
deep_merge_cache[key.to_s]
|
|
54
|
+
else
|
|
55
|
+
# save all the work of computing node[key]
|
|
56
|
+
deep_merge_cache.internal_set(key.to_s, merged_attributes(key))
|
|
57
|
+
end
|
|
58
|
+
ret = ret.call while ret.is_a?(::Chef::DelayedEvaluator)
|
|
59
|
+
ret
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
end
|
data/lib/chef/node.rb
CHANGED
data/lib/chef/org.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Steven Danna (steve@chef.io)
|
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc
|
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19,9 +19,10 @@
|
|
|
19
19
|
require_relative "json_compat"
|
|
20
20
|
require_relative "mixin/params_validate"
|
|
21
21
|
require_relative "server_api"
|
|
22
|
+
require_relative "group"
|
|
22
23
|
|
|
23
24
|
class Chef
|
|
24
|
-
class Org
|
|
25
|
+
class Org < Group
|
|
25
26
|
|
|
26
27
|
include Chef::Mixin::ParamsValidate
|
|
27
28
|
|
|
@@ -58,8 +58,8 @@ class Chef
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def dsc_refresh_mode_disabled?(node)
|
|
61
|
-
|
|
62
|
-
exec =
|
|
61
|
+
require_relative "../powershell"
|
|
62
|
+
exec = Chef::PowerShell.new("Get-DscLocalConfigurationManager")
|
|
63
63
|
exec.error!
|
|
64
64
|
exec.result["RefreshMode"] == "Disabled"
|
|
65
65
|
end
|
|
@@ -248,8 +248,7 @@ class Chef
|
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
def api_service
|
|
251
|
-
@api_service ||= Chef::ServerAPI.new(config[:chef_server_url],
|
|
252
|
-
{ version_class: Chef::CookbookManifestVersions })
|
|
251
|
+
@api_service ||= Chef::ServerAPI.new(config[:chef_server_url], version_class: Chef::CookbookManifestVersions )
|
|
253
252
|
end
|
|
254
253
|
|
|
255
254
|
def config
|
|
@@ -32,14 +32,8 @@ class Chef
|
|
|
32
32
|
# Policyfile is a policy builder implementation that gets run
|
|
33
33
|
# list and cookbook version information from a single document.
|
|
34
34
|
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
# policyfile, or replaced with a similar feature that has different
|
|
38
|
-
# semantics.
|
|
39
|
-
# * specific_recipes:: put more design thought into this use case.
|
|
40
|
-
# * run_list in json_attribs:: would be ignored anyway, so it raises an error.
|
|
41
|
-
# * chef-solo:: not currently supported. Need more design thought around
|
|
42
|
-
# how this should work.
|
|
35
|
+
# Does not support legacy chef-solo or roles/environments.
|
|
36
|
+
#
|
|
43
37
|
class Policyfile
|
|
44
38
|
|
|
45
39
|
class UnsupportedFeature < StandardError; end
|
|
@@ -81,10 +75,12 @@ class Chef
|
|
|
81
75
|
attr_reader :ohai_data
|
|
82
76
|
attr_reader :json_attribs
|
|
83
77
|
attr_reader :run_context
|
|
78
|
+
attr_reader :override_runlist
|
|
84
79
|
|
|
85
80
|
def initialize(node_name, ohai_data, json_attribs, override_runlist, events)
|
|
86
81
|
@node_name = node_name
|
|
87
82
|
@ohai_data = ohai_data
|
|
83
|
+
@override_runlist = override_runlist
|
|
88
84
|
@json_attribs = json_attribs
|
|
89
85
|
@events = events
|
|
90
86
|
|
|
@@ -94,32 +90,11 @@ class Chef
|
|
|
94
90
|
raise UnsupportedFeature, "Policyfile does not support chef-solo. Use #{ChefUtils::Dist::Infra::CLIENT} local mode instead."
|
|
95
91
|
end
|
|
96
92
|
|
|
97
|
-
if override_runlist
|
|
98
|
-
raise UnsupportedFeature, "Policyfile does not support override run lists. Use named run_lists instead."
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
if json_attribs && json_attribs.key?("run_list")
|
|
102
|
-
raise UnsupportedFeature, "Policyfile does not support setting the run_list in json data."
|
|
103
|
-
end
|
|
104
|
-
|
|
105
93
|
if Chef::Config[:environment] && !Chef::Config[:environment].chomp.empty?
|
|
106
94
|
raise UnsupportedFeature, "Policyfile does not work with an Environment configured."
|
|
107
95
|
end
|
|
108
96
|
end
|
|
109
97
|
|
|
110
|
-
## API Compat ##
|
|
111
|
-
# Methods related to unsupported features
|
|
112
|
-
|
|
113
|
-
# Override run_list is not supported.
|
|
114
|
-
def original_runlist
|
|
115
|
-
nil
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Override run_list is not supported.
|
|
119
|
-
def override_runlist
|
|
120
|
-
nil
|
|
121
|
-
end
|
|
122
|
-
|
|
123
98
|
# Policyfile gives you the run_list already expanded, but users of this
|
|
124
99
|
# class may expect to get a run_list expansion compatible object by
|
|
125
100
|
# calling this method.
|
|
@@ -157,13 +132,18 @@ class Chef
|
|
|
157
132
|
|
|
158
133
|
node.consume_external_attrs(ohai_data, json_attribs)
|
|
159
134
|
|
|
135
|
+
setup_run_list_override
|
|
136
|
+
|
|
160
137
|
expand_run_list
|
|
161
138
|
apply_policyfile_attributes
|
|
162
139
|
|
|
140
|
+
if persistent_run_list_set?
|
|
141
|
+
Chef::Log.warn("The node.run_list setting is overriding the Policyfile run_list")
|
|
142
|
+
end
|
|
163
143
|
Chef::Log.info("Run List is [#{run_list}]")
|
|
164
|
-
Chef::Log.info("Run List expands to [#{run_list_with_versions_for_display.join(", ")}]")
|
|
144
|
+
Chef::Log.info("Run List expands to [#{run_list_with_versions_for_display(run_list).join(", ")}]")
|
|
165
145
|
|
|
166
|
-
events.node_load_completed(node, run_list_with_versions_for_display, Chef::Config)
|
|
146
|
+
events.node_load_completed(node, run_list_with_versions_for_display(run_list), Chef::Config)
|
|
167
147
|
events.run_list_expanded(run_list_expansion_ish)
|
|
168
148
|
|
|
169
149
|
# we must do this after `node.consume_external_attrs`
|
|
@@ -199,6 +179,11 @@ class Chef
|
|
|
199
179
|
events.cookbook_compilation_start(run_context)
|
|
200
180
|
|
|
201
181
|
run_context.load(run_list_expansion_ish)
|
|
182
|
+
if specific_recipes
|
|
183
|
+
specific_recipes.each do |recipe_file|
|
|
184
|
+
run_context.load_recipe_file(recipe_file)
|
|
185
|
+
end
|
|
186
|
+
end
|
|
202
187
|
|
|
203
188
|
events.cookbook_compilation_complete(run_context)
|
|
204
189
|
|
|
@@ -211,7 +196,7 @@ class Chef
|
|
|
211
196
|
#
|
|
212
197
|
# @return [RunListExpansionIsh] A RunListExpansion duck-type.
|
|
213
198
|
def expand_run_list
|
|
214
|
-
|
|
199
|
+
validate_run_list!(run_list)
|
|
215
200
|
|
|
216
201
|
node.run_list(run_list)
|
|
217
202
|
node.automatic_attrs[:policy_revision] = revision_id
|
|
@@ -236,21 +221,25 @@ class Chef
|
|
|
236
221
|
cookbooks_to_sync
|
|
237
222
|
end
|
|
238
223
|
|
|
239
|
-
|
|
240
|
-
|
|
224
|
+
## Internal Public API ##
|
|
225
|
+
|
|
226
|
+
# @api private
|
|
241
227
|
#
|
|
242
|
-
#
|
|
243
|
-
|
|
244
|
-
|
|
228
|
+
# Validate run_list against policyfile cookbooks
|
|
229
|
+
#
|
|
230
|
+
def validate_run_list!(run_list)
|
|
231
|
+
run_list.map do |recipe_spec|
|
|
232
|
+
cookbook, recipe = parse_recipe_spec(recipe_spec)
|
|
233
|
+
lock_data = cookbook_lock_for(cookbook)
|
|
234
|
+
raise PolicyfileError, "invalid run_list item '#{recipe_spec}' not in cookbook set of PolicyFile #{policyfile_location}" unless lock_data
|
|
235
|
+
end
|
|
245
236
|
end
|
|
246
237
|
|
|
247
|
-
## Internal Public API ##
|
|
248
|
-
|
|
249
238
|
# @api private
|
|
250
239
|
#
|
|
251
240
|
# Generates an array of strings with recipe names including version and
|
|
252
241
|
# identifier info.
|
|
253
|
-
def run_list_with_versions_for_display
|
|
242
|
+
def run_list_with_versions_for_display(run_list)
|
|
254
243
|
run_list.map do |recipe_spec|
|
|
255
244
|
cookbook, recipe = parse_recipe_spec(recipe_spec)
|
|
256
245
|
lock_data = cookbook_lock_for(cookbook)
|
|
@@ -292,9 +281,14 @@ class Chef
|
|
|
292
281
|
|
|
293
282
|
# @api private
|
|
294
283
|
def parse_recipe_spec(recipe_spec)
|
|
295
|
-
rmatch = recipe_spec.match(/recipe\[([^:]+)::([^:]+)\]/)
|
|
284
|
+
rmatch = recipe_spec.to_s.match(/recipe\[([^:]+)::([^:]+)\]/)
|
|
296
285
|
if rmatch.nil?
|
|
297
|
-
|
|
286
|
+
rmatch = recipe_spec.to_s.match(/recipe\[([^:]+)\]/)
|
|
287
|
+
if rmatch.nil?
|
|
288
|
+
raise PolicyfileError, "invalid recipe specification #{recipe_spec} in Policyfile from #{policyfile_location}"
|
|
289
|
+
else
|
|
290
|
+
[rmatch[1], "default"]
|
|
291
|
+
end
|
|
298
292
|
else
|
|
299
293
|
[rmatch[1], rmatch[2]]
|
|
300
294
|
end
|
|
@@ -306,8 +300,15 @@ class Chef
|
|
|
306
300
|
end
|
|
307
301
|
|
|
308
302
|
# @api private
|
|
303
|
+
# @return [Array<String>]
|
|
309
304
|
def run_list
|
|
310
|
-
if
|
|
305
|
+
return override_runlist.map(&:to_s) if override_runlist
|
|
306
|
+
|
|
307
|
+
if json_attribs["run_list"]
|
|
308
|
+
json_attribs["run_list"]
|
|
309
|
+
elsif persistent_run_list_set?
|
|
310
|
+
node.run_list
|
|
311
|
+
elsif named_run_list_requested?
|
|
311
312
|
named_run_list || raise(ConfigurationError,
|
|
312
313
|
"Policy '#{retrieved_policy_name}' revision '#{revision_id}' does not have named_run_list '#{named_run_list_name}'" +
|
|
313
314
|
"(available named_run_lists: [#{available_named_run_lists.join(", ")}])")
|
|
@@ -463,7 +464,7 @@ class Chef
|
|
|
463
464
|
# should be reduced to a single call.
|
|
464
465
|
def cookbooks_to_sync
|
|
465
466
|
@cookbook_to_sync ||= begin
|
|
466
|
-
events.cookbook_resolution_start(run_list_with_versions_for_display)
|
|
467
|
+
events.cookbook_resolution_start(run_list_with_versions_for_display(run_list))
|
|
467
468
|
|
|
468
469
|
cookbook_versions_by_name = cookbook_locks.inject({}) do |cb_map, (name, lock_data)|
|
|
469
470
|
cb_map[name] = manifest_for(name, lock_data)
|
|
@@ -475,7 +476,7 @@ class Chef
|
|
|
475
476
|
end
|
|
476
477
|
rescue Exception => e
|
|
477
478
|
# TODO: wrap/munge exception to provide helpful error output
|
|
478
|
-
events.cookbook_resolution_failed(run_list_with_versions_for_display, e)
|
|
479
|
+
events.cookbook_resolution_failed(run_list_with_versions_for_display(run_list), e)
|
|
479
480
|
raise
|
|
480
481
|
end
|
|
481
482
|
|
|
@@ -506,7 +507,7 @@ class Chef
|
|
|
506
507
|
# @api private
|
|
507
508
|
def api_service
|
|
508
509
|
@api_service ||= Chef::ServerAPI.new(config[:chef_server_url],
|
|
509
|
-
|
|
510
|
+
version_class: Chef::CookbookManifestVersions)
|
|
510
511
|
end
|
|
511
512
|
|
|
512
513
|
# @api private
|
|
@@ -514,6 +515,13 @@ class Chef
|
|
|
514
515
|
Chef::Config
|
|
515
516
|
end
|
|
516
517
|
|
|
518
|
+
# Indicates whether the policy is temporary, which means an
|
|
519
|
+
# override_runlist was provided. Chef::Client uses this to decide whether
|
|
520
|
+
# to do the final node save at the end of the run or not.
|
|
521
|
+
def temporary_policy?
|
|
522
|
+
node.override_runlist_set?
|
|
523
|
+
end
|
|
524
|
+
|
|
517
525
|
private
|
|
518
526
|
|
|
519
527
|
# This method injects the run_context and into the Chef class.
|
|
@@ -538,6 +546,10 @@ class Chef
|
|
|
538
546
|
(policy["named_run_lists"] || {}).keys
|
|
539
547
|
end
|
|
540
548
|
|
|
549
|
+
def persistent_run_list_set?
|
|
550
|
+
Chef::Config[:policy_persist_run_list] && node.run_list && !node.run_list.empty?
|
|
551
|
+
end
|
|
552
|
+
|
|
541
553
|
def named_run_list_requested?
|
|
542
554
|
!!Chef::Config[:named_run_list]
|
|
543
555
|
end
|
|
@@ -572,6 +584,32 @@ class Chef
|
|
|
572
584
|
Chef::CookbookVersion.from_cb_artifact_data(raw_manifest)
|
|
573
585
|
end
|
|
574
586
|
|
|
587
|
+
def setup_run_list_override
|
|
588
|
+
unless override_runlist.nil?
|
|
589
|
+
runlist_override_sanity_check!
|
|
590
|
+
node.override_runlist = override_runlist
|
|
591
|
+
Chef::Log.warn "Run List override has been provided."
|
|
592
|
+
Chef::Log.warn "Original Run List: [#{node.primary_runlist}]"
|
|
593
|
+
Chef::Log.warn "Overridden Run List: [#{node.run_list}]"
|
|
594
|
+
end
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
# Ensures runlist override contains RunListItem instances
|
|
598
|
+
def runlist_override_sanity_check!
|
|
599
|
+
# Convert to array and remove whitespace
|
|
600
|
+
if override_runlist.is_a?(String)
|
|
601
|
+
@override_runlist = override_runlist.split(",").map(&:strip)
|
|
602
|
+
end
|
|
603
|
+
@override_runlist = [override_runlist].flatten.compact
|
|
604
|
+
override_runlist.map! do |item|
|
|
605
|
+
if item.is_a?(Chef::RunList::RunListItem)
|
|
606
|
+
item
|
|
607
|
+
else
|
|
608
|
+
Chef::RunList::RunListItem.new(item)
|
|
609
|
+
end
|
|
610
|
+
end
|
|
611
|
+
end
|
|
612
|
+
|
|
575
613
|
end
|
|
576
614
|
end
|
|
577
615
|
end
|
data/lib/chef/powershell.rb
CHANGED
|
@@ -33,15 +33,16 @@ class Chef
|
|
|
33
33
|
# Requires: .NET Framework 4.0 or higher on the target machine.
|
|
34
34
|
#
|
|
35
35
|
# @param script [String] script to run
|
|
36
|
+
# @param timeout [Integer, nil] timeout in seconds.
|
|
36
37
|
# @return [Object] output
|
|
37
|
-
def initialize(script)
|
|
38
|
+
def initialize(script, timeout: -1)
|
|
38
39
|
# This Powershell DLL source lives here: https://github.com/chef/chef-powershell-shim
|
|
39
40
|
# Every merge into that repo triggers a Habitat build and promotion. Running
|
|
40
41
|
# the rake :update_chef_exec_dll task in this (chef/chef) repo will pull down
|
|
41
42
|
# the built packages and copy the binaries to distro/ruby_bin_folder. Bundle install
|
|
42
43
|
# ensures that the correct architecture binaries are installed into the path.
|
|
43
44
|
@dll ||= "Chef.PowerShell.Wrapper.dll"
|
|
44
|
-
exec(script)
|
|
45
|
+
exec(script, timeout: timeout)
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
#
|
|
@@ -64,12 +65,13 @@ class Chef
|
|
|
64
65
|
raise Chef::PowerShell::CommandFailed, "Unexpected exit in PowerShell command: #{@errors}" if error?
|
|
65
66
|
end
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
private
|
|
68
69
|
|
|
69
|
-
def exec(script)
|
|
70
|
+
def exec(script, timeout: -1)
|
|
70
71
|
FFI.ffi_lib @dll
|
|
71
|
-
FFI.attach_function :execute_powershell, :ExecuteScript,
|
|
72
|
-
|
|
72
|
+
FFI.attach_function :execute_powershell, :ExecuteScript, %i{string int}, :pointer
|
|
73
|
+
timeout = -1 if timeout == 0 || timeout.nil?
|
|
74
|
+
execution = FFI.execute_powershell(script, timeout).read_utf16string
|
|
73
75
|
hashed_outcome = Chef::JSONCompat.parse(execution)
|
|
74
76
|
@result = Chef::JSONCompat.parse(hashed_outcome["result"])
|
|
75
77
|
@errors = hashed_outcome["errors"]
|
data/lib/chef/property.rb
CHANGED
|
@@ -412,6 +412,7 @@ class Chef
|
|
|
412
412
|
# Otherwise, we have to validate it now.
|
|
413
413
|
value = input_to_stored_value(resource, default, is_default: true)
|
|
414
414
|
end
|
|
415
|
+
value = deep_dup(value)
|
|
415
416
|
value = stored_value_to_output(resource, value)
|
|
416
417
|
|
|
417
418
|
# If the value is mutable (non-frozen), we set it on the instance
|
|
@@ -748,5 +749,22 @@ class Chef
|
|
|
748
749
|
|
|
749
750
|
result
|
|
750
751
|
end
|
|
752
|
+
|
|
753
|
+
# recursively dup the value
|
|
754
|
+
def deep_dup(value)
|
|
755
|
+
return value if value.is_a?(DelayedEvaluator)
|
|
756
|
+
|
|
757
|
+
visitor = lambda do |obj|
|
|
758
|
+
obj = obj.dup rescue obj
|
|
759
|
+
case obj
|
|
760
|
+
when Hash
|
|
761
|
+
obj.each { |k, v| obj[k] = visitor.call(v) }
|
|
762
|
+
when Array
|
|
763
|
+
obj.each_with_index { |v, i| obj[i] = visitor.call(v) }
|
|
764
|
+
end
|
|
765
|
+
obj
|
|
766
|
+
end
|
|
767
|
+
visitor.call(value)
|
|
768
|
+
end
|
|
751
769
|
end
|
|
752
770
|
end
|
data/lib/chef/provider/cron.rb
CHANGED
|
@@ -96,7 +96,7 @@ class Chef
|
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
action :create do
|
|
99
|
+
action :create, description: "Create an entry in a cron table file (crontab). If an entry already exists (but does not match), update that entry to match." do
|
|
100
100
|
crontab = ""
|
|
101
101
|
newcron = ""
|
|
102
102
|
cron_found = false
|
|
@@ -104,8 +104,11 @@ class Chef
|
|
|
104
104
|
newcron = get_crontab_entry
|
|
105
105
|
|
|
106
106
|
if @cron_exists
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
# Only compare the crontab if the current resource has a set command.
|
|
108
|
+
# This may not be set in cases where the Chef comment exists but the
|
|
109
|
+
# crontab command was commented out.
|
|
110
|
+
if current_resource.property_is_set?(:command) && !cron_different?
|
|
111
|
+
logger.debug("#{new_resource}: Skipping existing cron entry")
|
|
109
112
|
return
|
|
110
113
|
end
|
|
111
114
|
read_crontab.each_line do |line|
|
|
@@ -150,7 +153,7 @@ class Chef
|
|
|
150
153
|
end
|
|
151
154
|
end
|
|
152
155
|
|
|
153
|
-
action :delete do
|
|
156
|
+
action :delete, description: "Delete an entry from a cron table file (crontab)." do
|
|
154
157
|
if @cron_exists
|
|
155
158
|
crontab = ""
|
|
156
159
|
cron_found = false
|
|
@@ -32,7 +32,7 @@ class Chef
|
|
|
32
32
|
def load_current_resource
|
|
33
33
|
@current_resource = Chef::Resource::Directory.new(new_resource.name)
|
|
34
34
|
current_resource.path(new_resource.path)
|
|
35
|
-
if ::File.
|
|
35
|
+
if ::File.exist?(current_resource.path) && @action != :create_if_missing
|
|
36
36
|
load_resource_attributes_from_file(current_resource)
|
|
37
37
|
end
|
|
38
38
|
current_resource
|
|
@@ -73,7 +73,7 @@ class Chef
|
|
|
73
73
|
# make sure we have write permissions to that directory
|
|
74
74
|
is_parent_writable = lambda do |base_dir|
|
|
75
75
|
base_dir = ::File.dirname(base_dir)
|
|
76
|
-
if ::File.
|
|
76
|
+
if ::File.exist?(base_dir)
|
|
77
77
|
if Chef::FileAccessControl.writable?(base_dir)
|
|
78
78
|
true
|
|
79
79
|
elsif Chef::Util::PathHelper.is_sip_path?(base_dir, node)
|
|
@@ -89,7 +89,7 @@ class Chef
|
|
|
89
89
|
else
|
|
90
90
|
# in why run mode & parent directory does not exist no permissions check is required
|
|
91
91
|
# If not in why run, permissions must be valid and we rely on prior assertion that dir exists
|
|
92
|
-
if !whyrun_mode? || ::File.
|
|
92
|
+
if !whyrun_mode? || ::File.exist?(parent_directory)
|
|
93
93
|
if Chef::FileAccessControl.writable?(parent_directory)
|
|
94
94
|
true
|
|
95
95
|
elsif Chef::Util::PathHelper.is_sip_path?(parent_directory, node)
|
|
@@ -108,7 +108,7 @@ class Chef
|
|
|
108
108
|
|
|
109
109
|
requirements.assert(:delete) do |a|
|
|
110
110
|
a.assertion do
|
|
111
|
-
if ::File.
|
|
111
|
+
if ::File.exist?(new_resource.path)
|
|
112
112
|
::File.directory?(new_resource.path) && Chef::FileAccessControl.writable?(new_resource.path)
|
|
113
113
|
else
|
|
114
114
|
true
|
|
@@ -121,8 +121,8 @@ class Chef
|
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
action :create do
|
|
125
|
-
unless ::File.
|
|
124
|
+
action :create, description: "Create a directory. If a directory already exists (but does not match), update that directory to match." do
|
|
125
|
+
unless ::File.exist?(new_resource.path)
|
|
126
126
|
converge_by("create new directory #{new_resource.path}") do
|
|
127
127
|
if new_resource.recursive == true
|
|
128
128
|
::FileUtils.mkdir_p(new_resource.path)
|
|
@@ -137,8 +137,8 @@ class Chef
|
|
|
137
137
|
load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
|
|
138
138
|
end
|
|
139
139
|
|
|
140
|
-
action :delete do
|
|
141
|
-
if ::File.
|
|
140
|
+
action :delete, description: "Delete a directory." do
|
|
141
|
+
if ::File.exist?(new_resource.path)
|
|
142
142
|
converge_by("delete existing directory #{new_resource.path}") do
|
|
143
143
|
if new_resource.recursive == true
|
|
144
144
|
# we don't use rm_rf here because it masks all errors, including
|
|
@@ -27,7 +27,7 @@ class Chef
|
|
|
27
27
|
|
|
28
28
|
provides :execute, target_mode: true
|
|
29
29
|
|
|
30
|
-
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input
|
|
30
|
+
def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input, :login
|
|
31
31
|
|
|
32
32
|
def load_current_resource
|
|
33
33
|
current_resource = Chef::Resource::Execute.new(new_resource.name)
|
|
@@ -41,7 +41,7 @@ class Chef
|
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
action :run do
|
|
44
|
+
action :run, description: "Run a command." do
|
|
45
45
|
if creates && sentinel_file.exist?
|
|
46
46
|
logger.debug("#{new_resource} sentinel file #{sentinel_file} exists - nothing to do")
|
|
47
47
|
return false
|
|
@@ -92,6 +92,7 @@ class Chef
|
|
|
92
92
|
opts[:cwd] = cwd if cwd
|
|
93
93
|
opts[:umask] = umask if umask
|
|
94
94
|
opts[:input] = input if input
|
|
95
|
+
opts[:login] = login if login
|
|
95
96
|
opts[:default_env] = default_env
|
|
96
97
|
opts[:log_level] = :info
|
|
97
98
|
opts[:log_tag] = new_resource.to_s
|
data/lib/chef/provider/file.rb
CHANGED
|
@@ -27,6 +27,8 @@ require_relative "../scan_access_control"
|
|
|
27
27
|
require_relative "../mixin/checksum"
|
|
28
28
|
require_relative "../mixin/file_class"
|
|
29
29
|
require_relative "../mixin/enforce_ownership_and_permissions"
|
|
30
|
+
require_relative "../resource/file/verification/json"
|
|
31
|
+
require_relative "../resource/file/verification/yaml"
|
|
30
32
|
require_relative "../util/backup"
|
|
31
33
|
require_relative "../util/diff"
|
|
32
34
|
require_relative "../util/selinux"
|
|
@@ -152,12 +154,12 @@ class Chef
|
|
|
152
154
|
unless ::File.exist?(new_resource.path)
|
|
153
155
|
action_create
|
|
154
156
|
else
|
|
155
|
-
logger.
|
|
157
|
+
logger.debug("#{new_resource} exists at #{new_resource.path} taking no action.")
|
|
156
158
|
end
|
|
157
159
|
end
|
|
158
160
|
|
|
159
161
|
action :delete do
|
|
160
|
-
if ::File.
|
|
162
|
+
if ::File.exist?(new_resource.path)
|
|
161
163
|
converge_by("delete file #{new_resource.path}") do
|
|
162
164
|
do_backup unless file_class.symlink?(new_resource.path)
|
|
163
165
|
::File.delete(new_resource.path)
|
|
@@ -393,7 +395,7 @@ class Chef
|
|
|
393
395
|
# a nil tempfile is okay, means the resource has no content or no new content
|
|
394
396
|
return if tempfile.nil?
|
|
395
397
|
# but a tempfile that has no path or doesn't exist should not happen
|
|
396
|
-
if tempfile.path.nil? || !::File.
|
|
398
|
+
if tempfile.path.nil? || !::File.exist?(tempfile.path)
|
|
397
399
|
raise "#{ChefUtils::Dist::Infra::CLIENT} is confused, trying to deploy a file that has no path or does not exist..."
|
|
398
400
|
end
|
|
399
401
|
|
data/lib/chef/provider/git.rb
CHANGED
|
@@ -28,7 +28,7 @@ class Chef
|
|
|
28
28
|
extend Forwardable
|
|
29
29
|
provides :git
|
|
30
30
|
|
|
31
|
-
GIT_VERSION_PATTERN = Regexp.compile(
|
|
31
|
+
GIT_VERSION_PATTERN = Regexp.compile("git version (\\d+\\.\\d+.\\d+)")
|
|
32
32
|
|
|
33
33
|
def_delegator :new_resource, :destination, :cwd
|
|
34
34
|
|
|
@@ -94,7 +94,7 @@ class Chef
|
|
|
94
94
|
enable_submodules
|
|
95
95
|
add_remotes
|
|
96
96
|
else
|
|
97
|
-
logger.
|
|
97
|
+
logger.debug "#{new_resource} checkout destination #{cwd} already exists or is a non-empty directory"
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
|
|
@@ -281,12 +281,10 @@ class Chef
|
|
|
281
281
|
|
|
282
282
|
def target_revision
|
|
283
283
|
@target_revision ||=
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
@target_revision = remote_resolve_reference
|
|
289
|
-
end
|
|
284
|
+
if sha_hash?(new_resource.revision)
|
|
285
|
+
@target_revision = new_resource.revision
|
|
286
|
+
else
|
|
287
|
+
@target_revision = remote_resolve_reference
|
|
290
288
|
end
|
|
291
289
|
end
|
|
292
290
|
|
|
@@ -67,7 +67,7 @@ class Chef
|
|
|
67
67
|
members_to_be_added << member unless current_resource.members.include?(member)
|
|
68
68
|
end
|
|
69
69
|
members_to_be_added.each do |member|
|
|
70
|
-
logger.
|
|
70
|
+
logger.debug("#{new_resource} appending member #{member} to group #{new_resource.group_name}")
|
|
71
71
|
add_member(member)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
@@ -79,13 +79,13 @@ class Chef
|
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
members_to_be_removed.each do |member|
|
|
82
|
-
logger.
|
|
82
|
+
logger.debug("#{new_resource} removing member #{member} from group #{new_resource.group_name}")
|
|
83
83
|
remove_member(member)
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
else
|
|
87
87
|
members_description = new_resource.members.empty? ? "none" : new_resource.members.join(", ")
|
|
88
|
-
logger.
|
|
88
|
+
logger.debug("#{new_resource} setting group members to: #{members_description}")
|
|
89
89
|
set_members(new_resource.members)
|
|
90
90
|
end
|
|
91
91
|
end
|