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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Davin Taddeo (<davin@chef.io>)
|
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require_relative "../resource"
|
|
19
|
+
autoload :YAML, "yaml"
|
|
20
|
+
require "date"
|
|
21
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Resource
|
|
25
|
+
class InspecWaiverFileEntry < Chef::Resource
|
|
26
|
+
provides :inspec_waiver_file_entry
|
|
27
|
+
unified_mode true
|
|
28
|
+
|
|
29
|
+
description "Use the **inspec_waiver_file_entry** resource to add or remove entries from an InSpec waiver file. This can be used in conjunction with the Compliance Phase."
|
|
30
|
+
introduced "17.1"
|
|
31
|
+
examples <<~DOC
|
|
32
|
+
**Add an InSpec waiver entry to a given waiver file**:
|
|
33
|
+
|
|
34
|
+
```ruby
|
|
35
|
+
inspec_waiver_file_entry 'Add waiver entry for control' do
|
|
36
|
+
file_path 'C:\\chef\\inspec_waiver_file.yml'
|
|
37
|
+
control 'my_inspec_control_01'
|
|
38
|
+
run_test false
|
|
39
|
+
justification "The subject of this control is not managed by #{ChefUtils::Dist::Infra::PRODUCT} on the systems in policy group \#{node['policy_group']}"
|
|
40
|
+
expiration '2022-01-01'
|
|
41
|
+
action :add
|
|
42
|
+
end
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Add an InSpec waiver entry to a given waiver file using the 'name' property to identify the control**:
|
|
46
|
+
|
|
47
|
+
```ruby
|
|
48
|
+
inspec_waiver_file_entry 'my_inspec_control_01' do
|
|
49
|
+
justification "The subject of this control is not managed by #{ChefUtils::Dist::Infra::PRODUCT} on the systems in policy group \#{node['policy_group']}"
|
|
50
|
+
action :add
|
|
51
|
+
end
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Remove an InSpec waiver entry to a given waiver file**:
|
|
55
|
+
|
|
56
|
+
```ruby
|
|
57
|
+
inspec_waiver_file_entry "my_inspec_control_01" do
|
|
58
|
+
action :remove
|
|
59
|
+
end
|
|
60
|
+
```
|
|
61
|
+
DOC
|
|
62
|
+
|
|
63
|
+
property :control, String,
|
|
64
|
+
name_property: true,
|
|
65
|
+
description: "The name of the control being added or removed to the waiver file"
|
|
66
|
+
|
|
67
|
+
property :file_path, String,
|
|
68
|
+
required: true,
|
|
69
|
+
description: "The path to the waiver file being modified",
|
|
70
|
+
default: "#{ChefConfig::Config.etc_chef_dir}/inspec_waivers.yml",
|
|
71
|
+
default_description: "`/etc/chef/inspec_waivers.yml` on Linux/Unix and `C:\\chef\\inspec_waivers.yml` on Windows"
|
|
72
|
+
|
|
73
|
+
property :expiration, String,
|
|
74
|
+
description: "The expiration date of the given waiver - provided in YYYY-MM-DD format",
|
|
75
|
+
callbacks: {
|
|
76
|
+
"Expiration date should be a valid calendar date and match the following format: YYYY-MM-DD" => proc { |e|
|
|
77
|
+
re = Regexp.new("\\d{4}-\\d{2}-\\d{2}$").freeze
|
|
78
|
+
if re.match?(e)
|
|
79
|
+
Date.valid_date?(*e.split("-").map(&:to_i))
|
|
80
|
+
else
|
|
81
|
+
e.nil?
|
|
82
|
+
end
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
property :run_test, [true, false],
|
|
87
|
+
description: "If present and `true`, the control will run and be reported, but failures in it won’t make the overall run fail. If absent or `false`, the control will not be run."
|
|
88
|
+
|
|
89
|
+
property :justification, String,
|
|
90
|
+
description: "Can be any text you want and might include a reason for the waiver as well as who signed off on the waiver."
|
|
91
|
+
|
|
92
|
+
property :backup, [false, Integer],
|
|
93
|
+
description: "The number of backups to be kept in `/var/chef/backup` (for UNIX- and Linux-based platforms) or `C:/chef/backup` (for the Microsoft Windows platform). Set to `false` to prevent backups from being kept.",
|
|
94
|
+
default: false
|
|
95
|
+
|
|
96
|
+
action :add do
|
|
97
|
+
if new_resource.justification.nil? || new_resource.justification == ""
|
|
98
|
+
raise Chef::Exceptions::ValidationFailed, "Entries in the InSpec waiver file must have a justification given, this parameter must have a value."
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
filename = new_resource.file_path
|
|
102
|
+
waiver_hash = load_waiver_file_to_hash(filename)
|
|
103
|
+
control_hash = {}
|
|
104
|
+
control_hash["expiration_date"] = new_resource.expiration.to_s unless new_resource.expiration.nil?
|
|
105
|
+
control_hash["run"] = new_resource.run_test unless new_resource.run_test.nil?
|
|
106
|
+
control_hash["justification"] = new_resource.justification.to_s
|
|
107
|
+
|
|
108
|
+
unless waiver_hash[new_resource.control] == control_hash
|
|
109
|
+
waiver_hash[new_resource.control] = control_hash
|
|
110
|
+
waiver_hash = waiver_hash.sort.to_h
|
|
111
|
+
|
|
112
|
+
file "Update Waiver File #{new_resource.file_path} to update waiver for control #{new_resource.control}" do
|
|
113
|
+
path new_resource.file_path
|
|
114
|
+
content ::YAML.dump(waiver_hash)
|
|
115
|
+
backup new_resource.backup
|
|
116
|
+
action :create
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
action :remove do
|
|
122
|
+
filename = new_resource.file_path
|
|
123
|
+
waiver_hash = load_waiver_file_to_hash(filename)
|
|
124
|
+
if waiver_hash.key?(new_resource.control)
|
|
125
|
+
waiver_hash.delete(new_resource.control)
|
|
126
|
+
waiver_hash = waiver_hash.sort.to_h
|
|
127
|
+
file "Update Waiver File #{new_resource.file_path} to remove waiver for control #{new_resource.control}" do
|
|
128
|
+
path new_resource.file_path
|
|
129
|
+
content ::YAML.dump(waiver_hash)
|
|
130
|
+
backup new_resource.backup
|
|
131
|
+
action :create
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
action_class do
|
|
137
|
+
def load_waiver_file_to_hash(file_name)
|
|
138
|
+
if %r{(/|C:\\).*(.yaml|.yml)}i.match?(file_name)
|
|
139
|
+
if ::File.exist?(file_name)
|
|
140
|
+
hash = ::YAML.load_file(file_name)
|
|
141
|
+
if hash == false || hash.nil? || hash == ""
|
|
142
|
+
{}
|
|
143
|
+
else
|
|
144
|
+
::YAML.load_file(file_name)
|
|
145
|
+
end
|
|
146
|
+
else
|
|
147
|
+
{}
|
|
148
|
+
end
|
|
149
|
+
else
|
|
150
|
+
raise "Waiver files needs to be a YAML file which should have a .yaml or .yml extension -\"#{file_name}\" does not have an appropriate extension"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
@@ -15,7 +15,7 @@ class Chef
|
|
|
15
15
|
|
|
16
16
|
provides :kernel_module
|
|
17
17
|
|
|
18
|
-
description "Use the **kernel_module** resource to manage kernel modules on Linux systems. This resource can load, unload, blacklist, disable, install, and uninstall modules."
|
|
18
|
+
description "Use the **kernel_module** resource to manage kernel modules on Linux systems. This resource can load, unload, blacklist, disable, enable, install, and uninstall modules."
|
|
19
19
|
introduced "14.3"
|
|
20
20
|
examples <<~DOC
|
|
21
21
|
Install and load a kernel module, and ensure it loads on reboot.
|
|
@@ -68,13 +68,21 @@ class Chef
|
|
|
68
68
|
end
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
Disable a kernel module.
|
|
71
|
+
Disable a kernel module so that it is not installable.
|
|
72
72
|
|
|
73
73
|
```ruby
|
|
74
74
|
kernel_module 'loop' do
|
|
75
75
|
action :disable
|
|
76
76
|
end
|
|
77
77
|
```
|
|
78
|
+
|
|
79
|
+
Enable a kernel module so that it is can be installed. Does not load or install.
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
kernel_module 'loop' do
|
|
83
|
+
action :enable
|
|
84
|
+
end
|
|
85
|
+
```
|
|
78
86
|
DOC
|
|
79
87
|
|
|
80
88
|
property :modname, String,
|
|
@@ -93,9 +101,7 @@ class Chef
|
|
|
93
101
|
description: "The modprobe.d directory.",
|
|
94
102
|
default: "/etc/modprobe.d"
|
|
95
103
|
|
|
96
|
-
action :install do
|
|
97
|
-
description "Load kernel module, and ensure it loads on reboot."
|
|
98
|
-
|
|
104
|
+
action :install, description: "Load kernel module, and ensure it loads on reboot." do
|
|
99
105
|
with_run_context :root do
|
|
100
106
|
find_resource(:execute, "update initramfs") do
|
|
101
107
|
command initramfs_command
|
|
@@ -103,6 +109,9 @@ class Chef
|
|
|
103
109
|
end
|
|
104
110
|
end
|
|
105
111
|
|
|
112
|
+
# Remove the "disable file" before trying to install
|
|
113
|
+
action_enable
|
|
114
|
+
|
|
106
115
|
# create options file before loading the module
|
|
107
116
|
unless new_resource.options.nil?
|
|
108
117
|
file "#{new_resource.unload_dir}/options_#{new_resource.modname}.conf" do
|
|
@@ -123,8 +132,7 @@ class Chef
|
|
|
123
132
|
end
|
|
124
133
|
end
|
|
125
134
|
|
|
126
|
-
action :uninstall do
|
|
127
|
-
description "Unload a kernel module and remove module config, so it doesn't load on reboot."
|
|
135
|
+
action :uninstall, description: "Unload a kernel module and remove module config, so it doesn't load on reboot." do
|
|
128
136
|
with_run_context :root do
|
|
129
137
|
find_resource(:execute, "update initramfs") do
|
|
130
138
|
command initramfs_command
|
|
@@ -149,9 +157,7 @@ class Chef
|
|
|
149
157
|
action_unload
|
|
150
158
|
end
|
|
151
159
|
|
|
152
|
-
action :blacklist do
|
|
153
|
-
description "Blacklist a kernel module."
|
|
154
|
-
|
|
160
|
+
action :blacklist, description: "Blacklist a kernel module." do
|
|
155
161
|
with_run_context :root do
|
|
156
162
|
find_resource(:execute, "update initramfs") do
|
|
157
163
|
command initramfs_command
|
|
@@ -167,9 +173,7 @@ class Chef
|
|
|
167
173
|
action_unload
|
|
168
174
|
end
|
|
169
175
|
|
|
170
|
-
action :disable do
|
|
171
|
-
description "Disable a kernel module."
|
|
172
|
-
|
|
176
|
+
action :disable, description: "Disable a kernel module. **New in Chef Infra Client 15.2.**" do
|
|
173
177
|
with_run_context :root do
|
|
174
178
|
find_resource(:execute, "update initramfs") do
|
|
175
179
|
command initramfs_command
|
|
@@ -185,9 +189,21 @@ class Chef
|
|
|
185
189
|
action_unload
|
|
186
190
|
end
|
|
187
191
|
|
|
188
|
-
action :
|
|
189
|
-
|
|
192
|
+
action :enable, description: "Enable a kernel module. Reverse :disable actions" do
|
|
193
|
+
with_run_context :root do
|
|
194
|
+
find_resource(:execute, "update initramfs") do
|
|
195
|
+
command initramfs_command
|
|
196
|
+
action :nothing
|
|
197
|
+
end
|
|
198
|
+
end
|
|
190
199
|
|
|
200
|
+
file "#{new_resource.unload_dir}/disable_#{new_resource.modname}.conf" do
|
|
201
|
+
action :delete
|
|
202
|
+
notifies :run, "execute[update initramfs]", :delayed
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
action :load, description: "Load a kernel module." do
|
|
191
207
|
unless module_loaded?
|
|
192
208
|
converge_by("load kernel module #{new_resource.modname}") do
|
|
193
209
|
shell_out!("modprobe #{new_resource.modname}")
|
|
@@ -195,9 +211,7 @@ class Chef
|
|
|
195
211
|
end
|
|
196
212
|
end
|
|
197
213
|
|
|
198
|
-
action :unload do
|
|
199
|
-
description "Unload kernel module."
|
|
200
|
-
|
|
214
|
+
action :unload, description: "Unload kernel module." do
|
|
201
215
|
if module_loaded?
|
|
202
216
|
converge_by("unload kernel module #{new_resource.modname}") do
|
|
203
217
|
shell_out!("modprobe -r #{new_resource.modname}")
|
|
@@ -36,7 +36,7 @@ class Chef
|
|
|
36
36
|
|
|
37
37
|
property :backup, [Integer, FalseClass],
|
|
38
38
|
desired_state: false,
|
|
39
|
-
description: "The number of backups to be kept in
|
|
39
|
+
description: "The number of backups to be kept in `/var/chef/backup`. Set to `false` to prevent backups from being kept."
|
|
40
40
|
|
|
41
41
|
property :cookbook, String,
|
|
42
42
|
desired_state: false,
|
|
@@ -84,7 +84,7 @@ class Chef
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
# Check to make sure that our array only has hashes
|
|
87
|
-
unless array.all?
|
|
87
|
+
unless array.all?(Hash)
|
|
88
88
|
error_msg = "start_calendar_interval must be a single hash or an array of hashes!"
|
|
89
89
|
raise Chef::Exceptions::ValidationFailed, error_msg
|
|
90
90
|
end
|
|
@@ -98,7 +98,7 @@ class Chef
|
|
|
98
98
|
raise Chef::Exceptions::ValidationFailed, error_msg
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
unless entry.values.all?
|
|
101
|
+
unless entry.values.all?(Integer)
|
|
102
102
|
failed_values = entry.values.reject { |val| val.is_a?(Integer) }.join(", ")
|
|
103
103
|
error_msg = "Invalid value(s) (#{failed_values}) for start_calendar_interval item. Values must be integers!"
|
|
104
104
|
raise Chef::Exceptions::ValidationFailed, error_msg
|
|
@@ -197,10 +197,10 @@ class Chef
|
|
|
197
197
|
description: "The intended purpose of the job: `Adaptive`, `Background`, `Interactive`, or `Standard`."
|
|
198
198
|
|
|
199
199
|
property :program, String,
|
|
200
|
-
description: "The first argument of execvp
|
|
200
|
+
description: "The first argument of `execvp`, typically the file name associated with the file to be executed. This value must be specified if `program_arguments` is not specified, and vice-versa."
|
|
201
201
|
|
|
202
202
|
property :program_arguments, Array,
|
|
203
|
-
description: "The second argument of execvp
|
|
203
|
+
description: "The second argument of `execvp`. If program is not specified, this property must be specified and will be handled as if it were the first argument."
|
|
204
204
|
|
|
205
205
|
property :queue_directories, Array,
|
|
206
206
|
description: "An array of non-empty directories which, if any are modified, will cause a job to be started."
|
|
@@ -238,9 +238,6 @@ class Chef
|
|
|
238
238
|
property :time_out, Integer,
|
|
239
239
|
description: "The amount of time (in seconds) a job may be idle before it times out. If no value is specified, the default timeout value for launchd will be used."
|
|
240
240
|
|
|
241
|
-
property :umask, Integer,
|
|
242
|
-
description: "A decimal value to pass to `umask` before running a job."
|
|
243
|
-
|
|
244
241
|
property :username, String,
|
|
245
242
|
description: "When launchd is run as the root user, the user to run the job as."
|
|
246
243
|
|
data/lib/chef/resource/locale.rb
CHANGED
|
@@ -49,7 +49,7 @@ class Chef
|
|
|
49
49
|
|
|
50
50
|
property :lc_env, Hash,
|
|
51
51
|
description: "A Hash of LC_* env variables in the form of `({ 'LC_ENV_VARIABLE' => 'VALUE' })`.",
|
|
52
|
-
default:
|
|
52
|
+
default: {},
|
|
53
53
|
coerce: proc { |h|
|
|
54
54
|
if h.respond_to?(:keys)
|
|
55
55
|
invalid_keys = h.keys - LC_VARIABLES
|
|
@@ -97,8 +97,7 @@ class Chef
|
|
|
97
97
|
powershell_exec("Get-WinSystemLocale").result["Name"]
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
action :update do
|
|
101
|
-
description "Update the system's locale."
|
|
100
|
+
action :update, description: "Update the system's locale." do
|
|
102
101
|
converge_if_changed do
|
|
103
102
|
set_system_locale
|
|
104
103
|
end
|
|
@@ -114,8 +113,11 @@ class Chef
|
|
|
114
113
|
end
|
|
115
114
|
|
|
116
115
|
requirements.assert(:all_actions) do |a|
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
a.assertion do
|
|
117
|
+
# RHEL/CentOS type platforms don't have locale-gen
|
|
118
|
+
# Windows has locale-gen as part of the install, but not in the path
|
|
119
|
+
which("locale-gen") || windows?
|
|
120
|
+
end
|
|
119
121
|
a.failure_message(Chef::Exceptions::ProviderNotFound, "The locale resource requires the locale-gen tool")
|
|
120
122
|
end
|
|
121
123
|
end
|
|
@@ -26,6 +26,7 @@ require_relative "../exceptions"
|
|
|
26
26
|
require_relative "../mixin/convert_to_class_name"
|
|
27
27
|
require_relative "../mixin/from_file"
|
|
28
28
|
require_relative "../mixin/params_validate" # for DelayedEvaluator
|
|
29
|
+
require_relative "../version"
|
|
29
30
|
|
|
30
31
|
class Chef
|
|
31
32
|
class Resource
|
|
@@ -36,7 +37,7 @@ class Chef
|
|
|
36
37
|
class LWRPBase < Resource
|
|
37
38
|
|
|
38
39
|
# Class methods
|
|
39
|
-
class <<self
|
|
40
|
+
class << self
|
|
40
41
|
|
|
41
42
|
include Chef::Mixin::ConvertToClassName
|
|
42
43
|
include Chef::Mixin::FromFile
|
|
@@ -53,6 +54,10 @@ class Chef
|
|
|
53
54
|
resource_class.run_context = run_context
|
|
54
55
|
resource_class.class_from_file(filename)
|
|
55
56
|
|
|
57
|
+
if !resource_class.unified_mode && !deprecated_class(resource_class) && cookbook_name.to_s != "chef_client_updater"
|
|
58
|
+
Chef.deprecated :unified_mode, "The #{resource_class.resource_name} resource in the #{cookbook_name} cookbook should declare `unified_mode true`", filename
|
|
59
|
+
end
|
|
60
|
+
|
|
56
61
|
# Make a useful string for the class (rather than <Class:312894723894>)
|
|
57
62
|
resource_class.instance_eval do
|
|
58
63
|
define_singleton_method(:to_s) do
|
|
@@ -117,6 +122,20 @@ class Chef
|
|
|
117
122
|
|
|
118
123
|
superclass.respond_to?(m) ? superclass.send(m) : default
|
|
119
124
|
end
|
|
125
|
+
|
|
126
|
+
# Return true if the resource has been deprecated on this version.
|
|
127
|
+
#
|
|
128
|
+
# XXX: for now we only look at chef_version_for_provides, reversing the
|
|
129
|
+
# resource node_map to determine if the resource provides anything which is
|
|
130
|
+
# wired up is difficult.
|
|
131
|
+
#
|
|
132
|
+
def deprecated_class(resource_class)
|
|
133
|
+
if resource_class.chef_version_for_provides && Chef::VERSION !~ resource_class.chef_version_for_provides
|
|
134
|
+
return true
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
false
|
|
138
|
+
end
|
|
120
139
|
end
|
|
121
140
|
end
|
|
122
141
|
end
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
require_relative "../resource"
|
|
19
19
|
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
20
|
+
require "corefoundation" if RUBY_PLATFORM.match?(/darwin/)
|
|
20
21
|
autoload :Plist, "plist"
|
|
21
22
|
|
|
22
23
|
class Chef
|
|
@@ -50,15 +51,17 @@ class Chef
|
|
|
50
51
|
end
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
**
|
|
54
|
+
**Setting a value for specific user and hosts**
|
|
54
55
|
|
|
55
56
|
```ruby
|
|
56
|
-
macos_userdefaults '
|
|
57
|
-
key '
|
|
58
|
-
value
|
|
59
|
-
|
|
57
|
+
macos_userdefaults 'Enable macOS firewall' do
|
|
58
|
+
key 'globalstate'
|
|
59
|
+
value 1
|
|
60
|
+
user 'jane'
|
|
61
|
+
host :current
|
|
60
62
|
end
|
|
61
63
|
```
|
|
64
|
+
|
|
62
65
|
DOC
|
|
63
66
|
|
|
64
67
|
property :domain, String,
|
|
@@ -78,177 +81,84 @@ class Chef
|
|
|
78
81
|
required: true
|
|
79
82
|
|
|
80
83
|
property :host, [String, Symbol],
|
|
81
|
-
description: "Set either :current or a hostname to set the user default at the host level.",
|
|
84
|
+
description: "Set either :current, :all or a hostname to set the user default at the host level.",
|
|
85
|
+
default: :all,
|
|
82
86
|
desired_state: false,
|
|
83
87
|
introduced: "16.3"
|
|
84
88
|
|
|
85
89
|
property :value, [Integer, Float, String, TrueClass, FalseClass, Hash, Array],
|
|
86
90
|
description: "The value of the key. Note: With the `type` property set to `bool`, `String` forms of Boolean true/false values that Apple accepts in the defaults command will be coerced: 0/1, 'TRUE'/'FALSE,' 'true'/false', 'YES'/'NO', or 'yes'/'no'.",
|
|
87
|
-
required: [:write]
|
|
88
|
-
coerce: proc { |v| v.is_a?(Hash) ? v.transform_keys(&:to_s) : v } # make sure keys are all strings for comparison
|
|
91
|
+
required: [:write]
|
|
89
92
|
|
|
90
93
|
property :type, String,
|
|
91
94
|
description: "The value type of the preference key.",
|
|
92
95
|
equal_to: %w{bool string int float array dict},
|
|
93
|
-
desired_state: false
|
|
96
|
+
desired_state: false,
|
|
97
|
+
deprecated: true
|
|
94
98
|
|
|
95
|
-
property :user, String,
|
|
96
|
-
description: "The system user that the default will be applied to.",
|
|
99
|
+
property :user, [String, Symbol],
|
|
100
|
+
description: "The system user that the default will be applied to. Set :current for current user, :all for all users or pass a valid username",
|
|
101
|
+
default: :current,
|
|
97
102
|
desired_state: false
|
|
98
103
|
|
|
99
104
|
property :sudo, [TrueClass, FalseClass],
|
|
100
|
-
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the
|
|
105
|
+
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the `/usr/bin/defaults` command to be setup for the user running #{ChefUtils::Dist::Infra::PRODUCT}.",
|
|
101
106
|
default: false,
|
|
102
|
-
desired_state: false
|
|
103
|
-
|
|
104
|
-
load_current_value do |desired|
|
|
105
|
-
Chef::Log.debug "#load_current_value: shelling out \"#{defaults_export_cmd(desired).join(" ")}\" to determine state"
|
|
106
|
-
state = shell_out(defaults_export_cmd(desired), user: desired.user)
|
|
107
|
-
|
|
108
|
-
if state.error? || state.stdout.empty?
|
|
109
|
-
Chef::Log.debug "#load_current_value: #{defaults_export_cmd(desired).join(" ")} returned stdout: #{state.stdout} and stderr: #{state.stderr}"
|
|
110
|
-
current_value_does_not_exist!
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
plist_data = ::Plist.parse_xml(state.stdout)
|
|
114
|
-
|
|
115
|
-
# handle the situation where the key doesn't exist in the domain
|
|
116
|
-
if plist_data.key?(desired.key)
|
|
117
|
-
key desired.key
|
|
118
|
-
else
|
|
119
|
-
current_value_does_not_exist!
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
value plist_data[desired.key]
|
|
123
|
-
end
|
|
107
|
+
desired_state: false,
|
|
108
|
+
deprecated: true
|
|
124
109
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
#
|
|
128
|
-
# @return [Array] defaults command
|
|
129
|
-
#
|
|
130
|
-
def defaults_export_cmd(resource)
|
|
131
|
-
state_cmd = ["/usr/bin/defaults"]
|
|
110
|
+
load_current_value do |new_resource|
|
|
111
|
+
Chef::Log.debug "#load_current_value: attempting to read \"#{new_resource.domain}\" value from preferences to determine state"
|
|
132
112
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
elsif resource.host # they specified a non-nil value, which is a hostname
|
|
136
|
-
state_cmd.concat(["-host", resource.host])
|
|
137
|
-
end
|
|
113
|
+
pref = get_preference(new_resource)
|
|
114
|
+
current_value_does_not_exist! if pref.nil?
|
|
138
115
|
|
|
139
|
-
|
|
140
|
-
|
|
116
|
+
key new_resource.key
|
|
117
|
+
value pref
|
|
141
118
|
end
|
|
142
119
|
|
|
143
|
-
action :write do
|
|
144
|
-
description "Write the value to the specified domain/key."
|
|
145
|
-
|
|
120
|
+
action :write, description: "Write the value to the specified domain/key." do
|
|
146
121
|
converge_if_changed do
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
shell_out!(cmd, user: new_resource.user)
|
|
122
|
+
Chef::Log.debug("Updating defaults value for #{new_resource.key} in #{new_resource.domain}")
|
|
123
|
+
CF::Preferences.set!(new_resource.key, new_resource.value, new_resource.domain, to_cf_user(new_resource.user), to_cf_host(new_resource.host))
|
|
151
124
|
end
|
|
152
125
|
end
|
|
153
126
|
|
|
154
|
-
action :delete do
|
|
155
|
-
description "Delete a key from a domain."
|
|
156
|
-
|
|
127
|
+
action :delete, description: "Delete a key from a domain." do
|
|
157
128
|
# if it's not there there's nothing to remove
|
|
158
|
-
return
|
|
129
|
+
return if current_resource.nil?
|
|
159
130
|
|
|
160
131
|
converge_by("delete domain:#{new_resource.domain} key:#{new_resource.key}") do
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
Chef::Log.debug("Removing defaults key by shelling out: #{cmd.join(" ")}")
|
|
164
|
-
|
|
165
|
-
shell_out!(cmd, user: new_resource.user)
|
|
132
|
+
Chef::Log.debug("Removing defaults key: #{new_resource.key}")
|
|
133
|
+
CF::Preferences.set!(new_resource.key, nil, new_resource.domain, to_cf_user(new_resource.user), to_cf_host(new_resource.host))
|
|
166
134
|
end
|
|
167
135
|
end
|
|
168
136
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
#
|
|
173
|
-
# @return [Array] Array representation of defaults command to run
|
|
174
|
-
#
|
|
175
|
-
def defaults_modify_cmd
|
|
176
|
-
cmd = ["/usr/bin/defaults"]
|
|
177
|
-
|
|
178
|
-
if new_resource.host == :current
|
|
179
|
-
cmd.concat(["-currentHost"])
|
|
180
|
-
elsif new_resource.host # they specified a non-nil value, which is a hostname
|
|
181
|
-
cmd.concat(["-host", new_resource.host])
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
cmd.concat([action.to_s, new_resource.domain, new_resource.key])
|
|
185
|
-
cmd.concat(processed_value) if action == :write
|
|
186
|
-
cmd.prepend("sudo") if new_resource.sudo
|
|
187
|
-
cmd
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
#
|
|
191
|
-
# convert the provided value into the format defaults expects
|
|
192
|
-
#
|
|
193
|
-
# @return [array] array of values starting with the type if applicable
|
|
194
|
-
#
|
|
195
|
-
def processed_value
|
|
196
|
-
type = new_resource.type || value_type(new_resource.value)
|
|
197
|
-
|
|
198
|
-
# when dict this creates an array of values ["Key1", "Value1", "Key2", "Value2" ...]
|
|
199
|
-
cmd_values = ["-#{type}"]
|
|
200
|
-
|
|
201
|
-
case type
|
|
202
|
-
when "dict"
|
|
203
|
-
cmd_values.concat(new_resource.value.flatten)
|
|
204
|
-
when "array"
|
|
205
|
-
cmd_values.concat(new_resource.value)
|
|
206
|
-
when "bool"
|
|
207
|
-
cmd_values.concat(bool_to_defaults_bool(new_resource.value))
|
|
208
|
-
else
|
|
209
|
-
cmd_values.concat([new_resource.value])
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
cmd_values
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
#
|
|
216
|
-
# defaults booleans on the CLI must be 'TRUE' or 'FALSE' so convert various inputs to that
|
|
217
|
-
#
|
|
218
|
-
# @param [String, Integer, Boolean] input <description>
|
|
219
|
-
#
|
|
220
|
-
# @return [String] TRUE or FALSE
|
|
221
|
-
#
|
|
222
|
-
def bool_to_defaults_bool(input)
|
|
223
|
-
return ["TRUE"] if [true, "TRUE", "1", "true", "YES", "yes"].include?(input)
|
|
224
|
-
return ["FALSE"] if [false, "FALSE", "0", "false", "NO", "no"].include?(input)
|
|
137
|
+
def get_preference(new_resource)
|
|
138
|
+
CF::Preferences.get(new_resource.key, new_resource.domain, to_cf_user(new_resource.user), to_cf_host(new_resource.host))
|
|
139
|
+
end
|
|
225
140
|
|
|
226
|
-
|
|
227
|
-
|
|
141
|
+
# Return valid hostname based on the input from host property
|
|
142
|
+
def to_cf_host(value)
|
|
143
|
+
case value
|
|
144
|
+
when :all
|
|
145
|
+
CF::Preferences::ALL_HOSTS
|
|
146
|
+
when :current
|
|
147
|
+
CF::Preferences::CURRENT_HOST
|
|
148
|
+
else
|
|
149
|
+
value
|
|
228
150
|
end
|
|
151
|
+
end
|
|
229
152
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
when true, false
|
|
240
|
-
"bool"
|
|
241
|
-
when Integer
|
|
242
|
-
"int"
|
|
243
|
-
when Float
|
|
244
|
-
"float"
|
|
245
|
-
when Hash
|
|
246
|
-
"dict"
|
|
247
|
-
when Array
|
|
248
|
-
"array"
|
|
249
|
-
when String
|
|
250
|
-
"string"
|
|
251
|
-
end
|
|
153
|
+
# Return valid username based on the input from user property
|
|
154
|
+
def to_cf_user(value)
|
|
155
|
+
case value
|
|
156
|
+
when :all
|
|
157
|
+
CF::Preferences::ALL_USERS
|
|
158
|
+
when :current
|
|
159
|
+
CF::Preferences::CURRENT_USER
|
|
160
|
+
else
|
|
161
|
+
value
|
|
252
162
|
end
|
|
253
163
|
end
|
|
254
164
|
end
|