chef 18.11.11 → 19.1.164
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 +25 -27
- data/README.md +7 -2
- data/Rakefile +1 -12
- data/chef-universal-mingw-ucrt.gemspec +3 -5
- data/chef.gemspec +22 -27
- data/lib/chef/action_collection.rb +3 -1
- data/lib/chef/api_client/registration.rb +1 -1
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client_v1.rb +1 -1
- data/lib/chef/application/apply.rb +30 -3
- data/lib/chef/application/base.rb +34 -3
- data/lib/chef/application/client.rb +15 -1
- data/lib/chef/application/exit_code.rb +3 -1
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/application.rb +6 -1
- data/lib/chef/chef_class.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +7 -6
- data/lib/chef/chef_fs/config.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +1 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/exceptions.rb +1 -1
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/acl.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +7 -6
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/client.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/client_key.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/container.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/environment.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/group.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/node.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/policy.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/policy_group.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/role.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/user.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/users_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/file_system_cache.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/client.rb +13 -3
- data/lib/chef/compliance/default_attributes.rb +1 -1
- data/lib/chef/compliance/fetcher/chef_server.rb +1 -1
- data/lib/chef/compliance/input.rb +1 -1
- data/lib/chef/compliance/input_collection.rb +1 -1
- data/lib/chef/compliance/profile.rb +1 -1
- data/lib/chef/compliance/profile_collection.rb +1 -1
- data/lib/chef/compliance/runner.rb +20 -20
- data/lib/chef/compliance/waiver.rb +1 -1
- data/lib/chef/compliance/waiver_collection.rb +1 -1
- data/lib/chef/config.rb +1 -1
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/context.rb +53 -0
- data/lib/chef/cookbook/chefignore.rb +2 -2
- data/lib/chef/cookbook/cookbook_collection.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +2 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/manifest_v0.rb +1 -1
- data/lib/chef/cookbook/manifest_v2.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +5 -0
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_version.rb +3 -3
- data/lib/chef/daemon.rb +1 -1
- data/lib/chef/data_bag.rb +3 -3
- data/lib/chef/data_bag_item.rb +2 -2
- data/lib/chef/data_collector/config_validation.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/message_helpers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +1 -1
- data/lib/chef/data_collector/run_start_message.rb +2 -2
- data/lib/chef/data_collector.rb +2 -2
- data/lib/chef/decorator/lazy.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +1 -1
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/delayed_evaluator.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +1 -1
- data/lib/chef/digester.rb +1 -1
- data/lib/chef/dsl/chef_vault.rb +2 -2
- data/lib/chef/dsl/cheffish.rb +1 -1
- data/lib/chef/dsl/compliance.rb +1 -1
- data/lib/chef/dsl/data_query.rb +1 -1
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/include_attribute.rb +1 -1
- data/lib/chef/dsl/include_recipe.rb +1 -1
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/dsl/powershell.rb +1 -1
- data/lib/chef/dsl/reader_helpers.rb +3 -1
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -1
- data/lib/chef/dsl/registry_helper.rb +1 -1
- data/lib/chef/dsl/render_helpers.rb +1 -1
- data/lib/chef/dsl/resources.rb +1 -1
- data/lib/chef/dsl/rest_resource.rb +17 -64
- data/lib/chef/dsl/secret.rb +1 -1
- data/lib/chef/dsl/universal.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_loggers/base.rb +1 -1
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +2 -12
- data/lib/chef/file_access_control/unix.rb +10 -10
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/file_cache.rb +1 -1
- data/lib/chef/file_content_management/content_base.rb +1 -1
- data/lib/chef/file_content_management/deploy/cp.rb +1 -1
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
- data/lib/chef/file_content_management/deploy/target_io.rb +27 -0
- data/lib/chef/file_content_management/deploy.rb +5 -2
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_description.rb +2 -9
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +3 -2
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +3 -2
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_mapper.rb +1 -1
- data/lib/chef/group.rb +1 -1
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +1 -1
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +1 -1
- data/lib/chef/guard_interpreter.rb +1 -1
- data/lib/chef/handler/error_report.rb +1 -1
- data/lib/chef/handler/json_file.rb +1 -1
- data/lib/chef/handler/slow_report.rb +1 -1
- data/lib/chef/handler.rb +1 -1
- data/lib/chef/http/api_versions.rb +1 -1
- data/lib/chef/http/auth_credentials.rb +1 -1
- data/lib/chef/http/authenticator.rb +13 -26
- data/lib/chef/http/basic_client.rb +1 -2
- data/lib/chef/http/cookie_jar.rb +1 -1
- data/lib/chef/http/cookie_manager.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +17 -16
- data/lib/chef/http/json_input.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/json_to_model_output.rb +1 -1
- data/lib/chef/http/remote_request_id.rb +1 -1
- data/lib/chef/http/simple.rb +1 -1
- data/lib/chef/http/simple_json.rb +1 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/http/validate_content_length.rb +1 -1
- data/lib/chef/http.rb +1 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/licensing.rb +105 -0
- data/lib/chef/licensing_config.rb +20 -0
- data/lib/chef/local_mode.rb +1 -1
- data/lib/chef/log/syslog.rb +1 -1
- data/lib/chef/log/winevt.rb +1 -1
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +1 -1
- data/lib/chef/mixin/chef_utils_wiring.rb +1 -1
- data/lib/chef/mixin/convert_to_class_name.rb +1 -1
- data/lib/chef/mixin/create_path.rb +1 -1
- data/lib/chef/mixin/deep_merge.rb +1 -1
- data/lib/chef/mixin/default_paths.rb +1 -1
- data/lib/chef/mixin/deprecation.rb +1 -1
- data/lib/chef/mixin/enforce_ownership_and_permissions.rb +1 -1
- data/lib/chef/mixin/file_class.rb +4 -2
- data/lib/chef/mixin/from_file.rb +1 -1
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/homebrew.rb +3 -4
- data/lib/chef/mixin/lazy_module_include.rb +1 -1
- data/lib/chef/mixin/notifying_block.rb +1 -1
- data/lib/chef/mixin/openssl_helper.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +1 -1
- data/lib/chef/mixin/path_sanity.rb +1 -1
- data/lib/chef/mixin/powershell_exec.rb +1 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/powershell_type_coercions.rb +1 -1
- data/lib/chef/mixin/proxified_socket.rb +1 -1
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/mixin/subclass_directive.rb +1 -1
- data/lib/chef/mixin/template.rb +3 -25
- data/lib/chef/mixin/unformatter.rb +1 -1
- data/lib/chef/mixin/uris.rb +1 -1
- data/lib/chef/mixin/user_context.rb +1 -1
- data/lib/chef/mixin/versioned_api.rb +1 -1
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/mixin/why_run.rb +1 -1
- data/lib/chef/mixin/wide_string.rb +1 -1
- data/lib/chef/mixin/windows_architecture_helper.rb +1 -1
- data/lib/chef/mixin/windows_env_helper.rb +1 -1
- data/lib/chef/mixin/xml_escape.rb +1 -1
- data/lib/chef/monkey_patches/net-http.rb +10 -11
- data/lib/chef/monkey_patches/win32/registry.rb +1 -1
- data/lib/chef/node/attribute.rb +1 -1
- data/lib/chef/node/attribute_collections.rb +1 -1
- data/lib/chef/node/common_api.rb +1 -1
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/deep_merge_cache.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +27 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +36 -1
- data/lib/chef/node/mixin/mashy_array.rb +1 -1
- data/lib/chef/node/mixin/state_tracking.rb +1 -1
- data/lib/chef/node/mixin/state_tracking_array.rb +1 -1
- data/lib/chef/node.rb +1 -1
- data/lib/chef/node_map.rb +15 -3
- data/lib/chef/null_logger.rb +1 -1
- data/lib/chef/org.rb +1 -1
- data/lib/chef/platform/priority_map.rb +1 -1
- data/lib/chef/platform/provider_handler_map.rb +1 -1
- data/lib/chef/platform/provider_mapping.rb +1 -1
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -1
- data/lib/chef/platform/resource_handler_map.rb +1 -1
- data/lib/chef/platform/service_helpers.rb +1 -1
- data/lib/chef/platform.rb +1 -1
- data/lib/chef/policy_builder/dynamic.rb +1 -1
- data/lib/chef/policy_builder/expand_node_object.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/policy_builder.rb +1 -1
- data/lib/chef/property.rb +3 -3
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/cookbook_file/content.rb +1 -1
- data/lib/chef/provider/cookbook_file.rb +2 -2
- data/lib/chef/provider/cron/aix.rb +1 -1
- data/lib/chef/provider/cron/solaris.rb +1 -1
- data/lib/chef/provider/cron.rb +15 -5
- data/lib/chef/provider/directory.rb +18 -18
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -2
- data/lib/chef/provider/file/content.rb +3 -4
- data/lib/chef/provider/file.rb +44 -31
- data/lib/chef/provider/git.rb +10 -10
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/gpasswd.rb +3 -3
- data/lib/chef/provider/group/groupadd.rb +2 -2
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/group/solaris.rb +3 -3
- data/lib/chef/provider/group/usermod.rb +3 -3
- data/lib/chef/provider/group.rb +2 -2
- data/lib/chef/provider/http_request.rb +3 -4
- data/lib/chef/provider/ifconfig/aix.rb +2 -2
- data/lib/chef/provider/ifconfig/debian.rb +3 -3
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +1 -1
- data/lib/chef/provider/link.rb +22 -11
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount/aix.rb +5 -5
- data/lib/chef/provider/mount/linux.rb +4 -4
- data/lib/chef/provider/mount/mount.rb +12 -12
- data/lib/chef/provider/mount/solaris.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +3 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/apt.rb +1 -1
- data/lib/chef/provider/package/bff.rb +4 -4
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +20 -79
- data/lib/chef/provider/package/deb.rb +1 -1
- data/lib/chef/provider/package/dnf/dnf_helper.py +65 -355
- data/lib/chef/provider/package/dnf/python_helper.rb +5 -8
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +5 -24
- data/lib/chef/provider/package/dpkg.rb +6 -6
- data/lib/chef/provider/package/freebsd/base.rb +1 -1
- data/lib/chef/provider/package/habitat.rb +6 -6
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/ips.rb +3 -3
- data/lib/chef/provider/package/msu.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +3 -2
- data/lib/chef/provider/package/pacman.rb +4 -4
- data/lib/chef/provider/package/paludis.rb +3 -3
- data/lib/chef/provider/package/portage.rb +3 -3
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rpm.rb +3 -3
- data/lib/chef/provider/package/rubygems.rb +21 -28
- data/lib/chef/provider/package/smartos.rb +2 -2
- data/lib/chef/provider/package/snap.rb +19 -7
- data/lib/chef/provider/package/snap_tm.rb +79 -0
- data/lib/chef/provider/package/solaris.rb +5 -5
- data/lib/chef/provider/package/windows/exe.rb +1 -1
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/windows.rb +1 -1
- data/lib/chef/provider/package/yum/python_helper.rb +1 -1
- data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
- data/lib/chef/provider/package/yum/version.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/yum.rb +2 -2
- data/lib/chef/provider/package/yum_tm.rb +132 -0
- data/lib/chef/provider/package/zypper/version.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +5 -5
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/powershell_script.rb +85 -85
- data/lib/chef/provider/registry_key.rb +2 -1
- data/lib/chef/provider/remote_directory.rb +6 -6
- data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
- data/lib/chef/provider/remote_file/content.rb +1 -1
- data/lib/chef/provider/remote_file/fetcher.rb +1 -1
- data/lib/chef/provider/remote_file/http.rb +2 -3
- data/lib/chef/provider/remote_file.rb +2 -2
- data/lib/chef/provider/route.rb +10 -10
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +8 -8
- data/lib/chef/provider/service/aix.rb +2 -2
- data/lib/chef/provider/service/aixinit.rb +6 -6
- data/lib/chef/provider/service/arch.rb +6 -6
- data/lib/chef/provider/service/debian.rb +8 -8
- data/lib/chef/provider/service/freebsd.rb +7 -7
- data/lib/chef/provider/service/gentoo.rb +6 -6
- data/lib/chef/provider/service/init.rb +3 -3
- data/lib/chef/provider/service/insserv.rb +3 -3
- data/lib/chef/provider/service/invokercd.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +1 -1
- data/lib/chef/provider/service/openbsd.rb +7 -7
- data/lib/chef/provider/service/redhat.rb +6 -6
- data/lib/chef/provider/service/solaris.rb +3 -3
- data/lib/chef/provider/service/systemd.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +3 -3
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/service.rb +1 -1
- data/lib/chef/provider/subversion.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +3 -3
- data/lib/chef/provider/template/content.rb +1 -1
- data/lib/chef/provider/template.rb +2 -2
- data/lib/chef/provider/template_finder.rb +1 -1
- data/lib/chef/provider/user/aix.rb +4 -4
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/linux.rb +8 -3
- data/lib/chef/provider/user/mac.rb +2 -2
- data/lib/chef/provider/user/pw.rb +4 -4
- data/lib/chef/provider/user/solaris.rb +8 -8
- data/lib/chef/provider/user.rb +7 -4
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/yum_repository.rb +2 -4
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/providers.rb +3 -1
- data/lib/chef/pwsh.rb +1 -1
- data/lib/chef/recipe.rb +9 -6
- data/lib/chef/request_id.rb +1 -1
- data/lib/chef/resource/_rest_resource.rb +158 -15
- data/lib/chef/resource/action_class.rb +1 -1
- data/lib/chef/resource/alternatives.rb +44 -43
- data/lib/chef/resource/apt_package.rb +38 -33
- data/lib/chef/resource/apt_preference.rb +25 -24
- data/lib/chef/resource/apt_repository.rb +16 -11
- data/lib/chef/resource/apt_update.rb +5 -4
- data/lib/chef/resource/archive_file.rb +6 -40
- data/lib/chef/resource/bash.rb +132 -131
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +18 -17
- data/lib/chef/resource/breakpoint.rb +46 -45
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +23 -23
- data/lib/chef/resource/chef_client_config.rb +88 -253
- data/lib/chef/resource/chef_client_cron.rb +21 -19
- data/lib/chef/resource/chef_client_hab_ca_cert.rb +141 -0
- data/lib/chef/resource/chef_client_launchd.rb +6 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +35 -32
- data/lib/chef/resource/chef_client_systemd_timer.rb +21 -18
- data/lib/chef/resource/chef_client_trusted_certificate.rb +29 -29
- data/lib/chef/resource/chef_gem.rb +1 -1
- data/lib/chef/resource/chef_handler.rb +108 -108
- data/lib/chef/resource/chef_sleep.rb +3 -2
- data/lib/chef/resource/chef_vault_secret.rb +2 -2
- data/lib/chef/resource/chocolatey_config.rb +15 -15
- data/lib/chef/resource/chocolatey_feature.rb +2 -2
- data/lib/chef/resource/chocolatey_installer.rb +39 -72
- data/lib/chef/resource/chocolatey_package.rb +2 -2
- data/lib/chef/resource/chocolatey_source.rb +16 -16
- data/lib/chef/resource/conditional.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +3 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -1
- data/lib/chef/resource/cron/cron.rb +72 -71
- data/lib/chef/resource/cron/cron_d.rb +3 -2
- data/lib/chef/resource/cron_access.rb +3 -2
- data/lib/chef/resource/csh.rb +3 -2
- data/lib/chef/resource/directory.rb +4 -3
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dpkg_package.rb +9 -6
- data/lib/chef/resource/dsc_resource.rb +1 -1
- data/lib/chef/resource/dsc_script.rb +1 -1
- data/lib/chef/resource/execute.rb +8 -1
- data/lib/chef/resource/file/verification/json.rb +1 -1
- data/lib/chef/resource/file/verification/systemd_unit.rb +5 -2
- data/lib/chef/resource/file/verification/yaml.rb +2 -2
- data/lib/chef/resource/file/verification.rb +4 -1
- data/lib/chef/resource/file.rb +3 -2
- data/lib/chef/resource/freebsd_package.rb +4 -3
- data/lib/chef/resource/gem_package.rb +1 -1
- data/lib/chef/resource/group.rb +33 -30
- data/lib/chef/resource/habitat/_habitat_shared.rb +1 -1
- data/lib/chef/resource/habitat/habitat_package.rb +84 -82
- data/lib/chef/resource/habitat/habitat_sup.rb +98 -97
- data/lib/chef/resource/habitat/habitat_sup_systemd.rb +14 -13
- data/lib/chef/resource/habitat/habitat_sup_windows.rb +5 -4
- data/lib/chef/resource/habitat_config.rb +38 -24
- data/lib/chef/resource/habitat_install.rb +22 -22
- data/lib/chef/resource/habitat_service.rb +10 -6
- data/lib/chef/resource/habitat_user_toml.rb +12 -12
- data/lib/chef/resource/helpers/cron_validations.rb +1 -1
- data/lib/chef/resource/helpers/path_helpers.rb +52 -0
- data/lib/chef/resource/homebrew_cask.rb +1 -1
- data/lib/chef/resource/homebrew_package.rb +21 -21
- data/lib/chef/resource/homebrew_tap.rb +10 -2
- data/lib/chef/resource/homebrew_update.rb +1 -1
- data/lib/chef/resource/hostname.rb +14 -11
- data/lib/chef/resource/http_request.rb +5 -4
- data/lib/chef/resource/ifconfig.rb +36 -35
- data/lib/chef/resource/inspec_input.rb +42 -39
- data/lib/chef/resource/inspec_waiver.rb +66 -65
- data/lib/chef/resource/inspec_waiver_file_entry.rb +28 -27
- data/lib/chef/resource/ips_package.rb +4 -3
- data/lib/chef/resource/kernel_module.rb +4 -3
- data/lib/chef/resource/ksh.rb +3 -2
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/link.rb +4 -3
- data/lib/chef/resource/locale.rb +11 -10
- data/lib/chef/resource/log.rb +3 -1
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_pkg.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +1 -1
- data/lib/chef/resource/macports_package.rb +1 -1
- data/lib/chef/resource/mdadm.rb +33 -33
- data/lib/chef/resource/mount.rb +7 -5
- data/lib/chef/resource/msu_package.rb +2 -2
- data/lib/chef/resource/notify_group.rb +3 -2
- data/lib/chef/resource/ohai.rb +37 -36
- data/lib/chef/resource/ohai_hint.rb +27 -26
- data/lib/chef/resource/openbsd_package.rb +4 -3
- data/lib/chef/resource/openssl_dhparam.rb +1 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +3 -3
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +3 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +7 -3
- data/lib/chef/resource/openssl_x509_crl.rb +16 -16
- data/lib/chef/resource/openssl_x509_request.rb +3 -3
- data/lib/chef/resource/package.rb +4 -3
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -2
- data/lib/chef/resource/perl.rb +3 -2
- data/lib/chef/resource/plist.rb +4 -4
- data/lib/chef/resource/portage_package.rb +3 -2
- data/lib/chef/resource/powershell_package.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +12 -12
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/python.rb +3 -2
- data/lib/chef/resource/reboot.rb +3 -2
- data/lib/chef/resource/registry_key.rb +78 -83
- data/lib/chef/resource/remote_directory.rb +3 -2
- data/lib/chef/resource/remote_file.rb +74 -73
- data/lib/chef/resource/resource_notification.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +3 -2
- data/lib/chef/resource/rhsm_errata_level.rb +3 -2
- data/lib/chef/resource/rhsm_register.rb +14 -5
- data/lib/chef/resource/rhsm_repo.rb +5 -5
- data/lib/chef/resource/rhsm_subscription.rb +10 -10
- data/lib/chef/resource/route.rb +2 -1
- data/lib/chef/resource/rpm_package.rb +3 -2
- data/lib/chef/resource/ruby.rb +4 -2
- data/lib/chef/resource/ruby_block.rb +3 -1
- data/lib/chef/resource/scm/_scm.rb +1 -1
- data/lib/chef/resource/scm/git.rb +82 -81
- data/lib/chef/resource/scm/subversion.rb +12 -11
- data/lib/chef/resource/script.rb +4 -2
- data/lib/chef/resource/selinux/common_helpers.rb +1 -1
- data/lib/chef/resource/selinux/selinux_debian.erb +1 -1
- data/lib/chef/resource/selinux/selinux_default.erb +1 -1
- data/lib/chef/resource/selinux_boolean.rb +14 -13
- data/lib/chef/resource/selinux_fcontext.rb +23 -22
- data/lib/chef/resource/selinux_install.rb +20 -19
- data/lib/chef/resource/selinux_login.rb +13 -12
- data/lib/chef/resource/selinux_module.rb +20 -19
- data/lib/chef/resource/selinux_permissive.rb +10 -9
- data/lib/chef/resource/selinux_port.rb +17 -16
- data/lib/chef/resource/selinux_state.rb +29 -28
- data/lib/chef/resource/selinux_user.rb +16 -15
- data/lib/chef/resource/service.rb +9 -6
- data/lib/chef/resource/smartos_package.rb +4 -3
- data/lib/chef/resource/snap_package.rb +32 -23
- data/lib/chef/resource/solaris_package.rb +3 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +13 -12
- data/lib/chef/resource/sudo.rb +71 -70
- data/lib/chef/resource/swap_file.rb +20 -19
- data/lib/chef/resource/sysctl.rb +49 -48
- data/lib/chef/resource/systemd_unit.rb +42 -39
- data/lib/chef/resource/template.rb +3 -2
- data/lib/chef/resource/timezone.rb +23 -22
- data/lib/chef/resource/user/aix_user.rb +4 -3
- data/lib/chef/resource/user/linux_user.rb +4 -4
- data/lib/chef/resource/user/mac_user.rb +5 -4
- data/lib/chef/resource/user/pw_user.rb +4 -3
- data/lib/chef/resource/user/solaris_user.rb +4 -3
- data/lib/chef/resource/user/windows_user.rb +2 -1
- data/lib/chef/resource/user.rb +8 -7
- data/lib/chef/resource/user_ulimit.rb +25 -24
- data/lib/chef/resource/windows_ad_join.rb +23 -23
- data/lib/chef/resource/windows_audit_policy.rb +35 -35
- data/lib/chef/resource/windows_auto_run.rb +9 -9
- data/lib/chef/resource/windows_certificate.rb +21 -21
- data/lib/chef/resource/windows_defender.rb +23 -23
- data/lib/chef/resource/windows_defender_exclusion.rb +18 -18
- data/lib/chef/resource/windows_dfs_folder.rb +1 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_dns_record.rb +1 -1
- data/lib/chef/resource/windows_dns_zone.rb +1 -1
- data/lib/chef/resource/windows_env.rb +6 -6
- data/lib/chef/resource/windows_feature.rb +43 -43
- data/lib/chef/resource/windows_feature_dism.rb +9 -9
- data/lib/chef/resource/windows_feature_powershell.rb +21 -21
- data/lib/chef/resource/windows_firewall_profile.rb +29 -29
- data/lib/chef/resource/windows_firewall_rule.rb +48 -48
- data/lib/chef/resource/windows_font.rb +7 -7
- data/lib/chef/resource/windows_package.rb +59 -59
- data/lib/chef/resource/windows_pagefile.rb +30 -30
- data/lib/chef/resource/windows_path.rb +13 -13
- data/lib/chef/resource/windows_printer.rb +29 -29
- data/lib/chef/resource/windows_printer_port.rb +22 -22
- data/lib/chef/resource/windows_script.rb +1 -1
- data/lib/chef/resource/windows_security_policy.rb +24 -24
- data/lib/chef/resource/windows_service.rb +108 -108
- data/lib/chef/resource/windows_share.rb +17 -17
- data/lib/chef/resource/windows_shortcut.rb +8 -8
- data/lib/chef/resource/windows_task.rb +104 -106
- data/lib/chef/resource/windows_uac.rb +15 -15
- data/lib/chef/resource/windows_update_settings.rb +27 -27
- data/lib/chef/resource/windows_user_privilege.rb +59 -59
- data/lib/chef/resource/windows_workgroup.rb +11 -11
- data/lib/chef/resource/yum_package.rb +6 -5
- data/lib/chef/resource/yum_repository.rb +39 -38
- data/lib/chef/resource/zypper_package.rb +3 -2
- data/lib/chef/resource/zypper_repository.rb +4 -3
- data/lib/chef/resource.rb +11 -3
- data/lib/chef/resource_builder.rb +1 -1
- data/lib/chef/resource_collection/resource_collection_serialization.rb +1 -1
- data/lib/chef/resource_collection/resource_list.rb +1 -1
- data/lib/chef/resource_collection/resource_set.rb +10 -4
- data/lib/chef/resource_collection.rb +1 -1
- data/lib/chef/resource_definition.rb +1 -1
- data/lib/chef/resource_definition_list.rb +1 -1
- data/lib/chef/resource_inspector.rb +3 -1
- data/lib/chef/resource_reporter.rb +2 -1
- data/lib/chef/resource_resolver.rb +1 -1
- data/lib/chef/resources.rb +2 -2
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_list/run_list_item.rb +5 -5
- data/lib/chef/run_list/versioned_recipe_list.rb +1 -1
- data/lib/chef/run_list.rb +1 -1
- data/lib/chef/run_lock.rb +4 -1
- data/lib/chef/run_status.rb +1 -1
- data/lib/chef/runner.rb +1 -1
- data/lib/chef/scan_access_control.rb +9 -7
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/secret_fetcher/akeyless_vault.rb +1 -1
- data/lib/chef/secret_fetcher/aws_secrets_manager.rb +1 -1
- data/lib/chef/secret_fetcher/base.rb +1 -1
- data/lib/chef/secret_fetcher/example.rb +1 -1
- data/lib/chef/secret_fetcher/hashi_vault.rb +10 -1
- data/lib/chef/secret_fetcher.rb +1 -1
- data/lib/chef/server_api.rb +1 -1
- data/lib/chef/server_api_versions.rb +1 -1
- data/lib/chef/shell/ext.rb +20 -20
- data/lib/chef/shell/model_wrapper.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/shell.rb +30 -15
- data/lib/chef/target_io/dir.rb +12 -0
- data/lib/chef/target_io/etc.rb +16 -0
- data/lib/chef/target_io/file.rb +12 -0
- data/lib/chef/target_io/fileutils.rb +12 -0
- data/lib/chef/target_io/http.rb +35 -0
- data/lib/chef/target_io/io.rb +12 -0
- data/lib/chef/target_io/shadow.rb +44 -0
- data/lib/chef/target_io/support.rb +73 -0
- data/lib/chef/target_io/train/dir.rb +86 -0
- data/lib/chef/target_io/train/etc.rb +108 -0
- data/lib/chef/target_io/train/file.rb +219 -0
- data/lib/chef/target_io/train/fileutils.rb +201 -0
- data/lib/chef/target_io/train/http.rb +117 -0
- data/lib/chef/target_io/train/io.rb +13 -0
- data/lib/chef/target_io/train/shadow.rb +54 -0
- data/lib/chef/target_io/train_compat.rb +7 -0
- data/lib/chef/target_io.rb +11 -0
- data/lib/chef/train_transport.rb +1 -1
- data/lib/chef/user.rb +1 -1
- data/lib/chef/user_v1.rb +1 -1
- data/lib/chef/util/backup.rb +2 -2
- data/lib/chef/util/diff.rb +15 -2
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/util/dsc/resource_store.rb +1 -1
- data/lib/chef/util/editor.rb +1 -1
- data/lib/chef/util/file_edit.rb +5 -5
- data/lib/chef/util/path_helper.rb +1 -1
- data/lib/chef/util/powershell/ps_credential.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/threaded_job_queue.rb +1 -1
- data/lib/chef/util/windows/logon_session.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +2 -2
- data/lib/chef/win32/api/command_line_helper.rb +1 -1
- data/lib/chef/win32/api/crypto.rb +1 -1
- data/lib/chef/win32/api/error.rb +1 -1
- data/lib/chef/win32/api/file.rb +3 -2
- data/lib/chef/win32/api/installer.rb +1 -1
- data/lib/chef/win32/api/memory.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -1
- data/lib/chef/win32/api/process.rb +1 -1
- data/lib/chef/win32/api/psapi.rb +1 -1
- data/lib/chef/win32/api/registry.rb +1 -1
- data/lib/chef/win32/api/security.rb +1 -1
- data/lib/chef/win32/api/synchronization.rb +1 -1
- data/lib/chef/win32/api/system.rb +1 -1
- data/lib/chef/win32/api/unicode.rb +1 -1
- data/lib/chef/win32/api.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/error.rb +3 -2
- data/lib/chef/win32/eventlog.rb +1 -1
- data/lib/chef/win32/file/info.rb +1 -1
- data/lib/chef/win32/file/version_info.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/handle.rb +1 -1
- data/lib/chef/win32/memory.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -1
- data/lib/chef/win32/process.rb +1 -1
- data/lib/chef/win32/registry.rb +4 -2
- data/lib/chef/win32/security/ace.rb +1 -1
- data/lib/chef/win32/security/acl.rb +1 -1
- data/lib/chef/win32/security/securable_object.rb +1 -1
- data/lib/chef/win32/security/security_descriptor.rb +1 -1
- data/lib/chef/win32/security/sid.rb +1 -1
- data/lib/chef/win32/security/token.rb +1 -1
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/system.rb +1 -1
- data/lib/chef/win32/unicode.rb +1 -1
- data/lib/chef/win32/version.rb +2 -3
- data/lib/chef/workstation_config_loader.rb +1 -1
- data/lib/chef.rb +3 -1
- metadata +136 -120
- data/lib/chef/monkey_patches/reline-windows.rb +0 -116
- data/lib/chef/resource/osx_profile.rb +0 -334
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright:: Copyright (c)
|
|
2
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
3
3
|
# License:: Apache License, Version 2.0
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20,8 +20,8 @@ class Chef
|
|
|
20
20
|
class Provider
|
|
21
21
|
class User
|
|
22
22
|
class Aix < Chef::Provider::User
|
|
23
|
-
provides :user, os: "aix"
|
|
24
|
-
provides :aix_user
|
|
23
|
+
provides :user, os: "aix", target_mode: true
|
|
24
|
+
provides :aix_user, target_mode: true
|
|
25
25
|
|
|
26
26
|
# The ruby-shadow gem is not supported on aix.
|
|
27
27
|
def supports_ruby_shadow?
|
|
@@ -124,7 +124,7 @@ class Chef
|
|
|
124
124
|
return unless updating_home? && new_resource.manage_home
|
|
125
125
|
|
|
126
126
|
# -m option does not work on aix, so move dir.
|
|
127
|
-
if ::File.directory?(current_resource.home)
|
|
127
|
+
if ::TargetIO::File.directory?(current_resource.home)
|
|
128
128
|
logger.trace("Changing users home directory from #{current_resource.home} to #{new_resource.home}")
|
|
129
129
|
FileUtils.mv current_resource.home, new_resource.home
|
|
130
130
|
else
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Dreamcat4 (<dreamcat4@gmail.com>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright:: Copyright (c)
|
|
2
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
3
3
|
# License:: Apache License, Version 2.0
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20,14 +20,19 @@ class Chef
|
|
|
20
20
|
class Provider
|
|
21
21
|
class User
|
|
22
22
|
class Linux < Chef::Provider::User
|
|
23
|
-
provides :linux_user
|
|
24
|
-
provides :user, os: "linux"
|
|
23
|
+
provides :linux_user, target_mode: true
|
|
24
|
+
provides :user, os: "linux", target_mode: true
|
|
25
25
|
|
|
26
26
|
def load_current_resource
|
|
27
27
|
super
|
|
28
28
|
load_shadow_options
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
def supports_ruby_shadow?
|
|
32
|
+
# For target mode, ruby-shadow is redirected to a file-based implementation
|
|
33
|
+
true unless ChefConfig::Config.target_mode?
|
|
34
|
+
end
|
|
35
|
+
|
|
31
36
|
def compare_user
|
|
32
37
|
user_changed = super
|
|
33
38
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Ryan Cragun (<ryan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -307,7 +307,7 @@ class Chef
|
|
|
307
307
|
|
|
308
308
|
def remove_user
|
|
309
309
|
cmd = ["-deleteUser", new_resource.username]
|
|
310
|
-
cmd << new_resource.manage_home ? "-secure" : "-keepHome"
|
|
310
|
+
cmd << (new_resource.manage_home ? "-secure" : "-keepHome")
|
|
311
311
|
if %i{admin_username admin_password}.all? { |p| prop_is_set?(p) }
|
|
312
312
|
cmd += ["-adminUser", new_resource.admin_username]
|
|
313
313
|
cmd += ["-adminPassword", new_resource.admin_password]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Stephen Haynes (<sh@nomitor.com>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -22,12 +22,12 @@ class Chef
|
|
|
22
22
|
class Provider
|
|
23
23
|
class User
|
|
24
24
|
class Pw < Chef::Provider::User
|
|
25
|
-
provides :pw_user
|
|
26
|
-
provides :user, os: "freebsd"
|
|
25
|
+
provides :pw_user, target_mode: true
|
|
26
|
+
provides :user, os: "freebsd", target_mode: true
|
|
27
27
|
|
|
28
28
|
def load_current_resource
|
|
29
29
|
super
|
|
30
|
-
raise Chef::Exceptions::User, "Could not find binary /usr/sbin/pw for #{new_resource}" unless ::File.exist?("/usr/sbin/pw")
|
|
30
|
+
raise Chef::Exceptions::User, "Could not find binary /usr/sbin/pw for #{new_resource}" unless ::TargetIO::File.exist?("/usr/sbin/pw")
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def create_user
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Author:: Stephen Nelson-Smith (<sns@chef.io>)
|
|
3
3
|
# Author:: Jon Ramsey (<jonathon.ramsey@gmail.com>)
|
|
4
4
|
# Author:: Dave Eddy (<dave@daveeddy.com>)
|
|
5
|
-
# Copyright:: Copyright (c)
|
|
5
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
6
6
|
# Copyright:: Copyright 2015-2016, Dave Eddy
|
|
7
7
|
# License:: Apache License, Version 2.0
|
|
8
8
|
#
|
|
@@ -24,8 +24,8 @@ class Chef
|
|
|
24
24
|
class Provider
|
|
25
25
|
class User
|
|
26
26
|
class Solaris < Chef::Provider::User
|
|
27
|
-
provides :solaris_user
|
|
28
|
-
provides :user, os: %w{openindiana illumos omnios solaris2 smartos}
|
|
27
|
+
provides :solaris_user, target_mode: true
|
|
28
|
+
provides :user, os: %w{openindiana illumos omnios solaris2 smartos}, target_mode: true
|
|
29
29
|
|
|
30
30
|
PASSWORD_FILE = "/etc/shadow".freeze
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def check_lock
|
|
49
|
-
user = IO.read(PASSWORD_FILE).match(/^#{Regexp.escape(new_resource.username)}:([^:]*):/)
|
|
49
|
+
user = TargetIO::IO.read(PASSWORD_FILE).match(/^#{Regexp.escape(new_resource.username)}:([^:]*):/)
|
|
50
50
|
|
|
51
51
|
# If we're in whyrun mode, and the user is not created, we assume it will be
|
|
52
52
|
return false if whyrun_mode? && user.nil?
|
|
@@ -122,7 +122,7 @@ class Chef
|
|
|
122
122
|
# a pipe to passwd(1) or evaluating modern ruby-shadow. See https://github.com/chef/chef/pull/721
|
|
123
123
|
def write_shadow_file
|
|
124
124
|
buffer = Tempfile.new("shadow", "/etc")
|
|
125
|
-
::File.open(PASSWORD_FILE) do |shadow_file|
|
|
125
|
+
::TargetIO::File.open(PASSWORD_FILE) do |shadow_file|
|
|
126
126
|
shadow_file.each do |entry|
|
|
127
127
|
user = entry.split(":").first
|
|
128
128
|
if user == new_resource.username
|
|
@@ -140,10 +140,10 @@ class Chef
|
|
|
140
140
|
uid = s.uid
|
|
141
141
|
gid = s.gid
|
|
142
142
|
|
|
143
|
-
FileUtils.chown uid, gid, buffer.path
|
|
144
|
-
FileUtils.chmod mode, buffer.path
|
|
143
|
+
TargetIO::FileUtils.chown uid, gid, buffer.path
|
|
144
|
+
TargetIO::FileUtils.chmod mode, buffer.path
|
|
145
145
|
|
|
146
|
-
FileUtils.mv buffer.path, PASSWORD_FILE
|
|
146
|
+
TargetIO::FileUtils.mv buffer.path, PASSWORD_FILE
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
def updated_password(entry)
|
data/lib/chef/provider/user.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -36,7 +36,7 @@ class Chef
|
|
|
36
36
|
|
|
37
37
|
def convert_group_name
|
|
38
38
|
if new_resource.gid.is_a?(String) && new_resource.gid.to_i == 0
|
|
39
|
-
new_resource.gid(Etc.getgrnam(new_resource.gid).gid)
|
|
39
|
+
new_resource.gid(TargetIO::Etc.getgrnam(new_resource.gid).gid)
|
|
40
40
|
end
|
|
41
41
|
rescue ArgumentError
|
|
42
42
|
@group_name_resolved = false
|
|
@@ -47,7 +47,7 @@ class Chef
|
|
|
47
47
|
current_resource.username(new_resource.username)
|
|
48
48
|
|
|
49
49
|
begin
|
|
50
|
-
user_info = Etc.getpwnam(new_resource.username)
|
|
50
|
+
user_info = TargetIO::Etc.getpwnam(new_resource.username)
|
|
51
51
|
rescue ArgumentError
|
|
52
52
|
@user_exists = false
|
|
53
53
|
logger.trace("#{new_resource} user does not exist")
|
|
@@ -68,10 +68,13 @@ class Chef
|
|
|
68
68
|
|
|
69
69
|
begin
|
|
70
70
|
require "shadow"
|
|
71
|
+
|
|
72
|
+
# Cannot use this library remotely
|
|
73
|
+
@shadow_lib_ok = false if ChefConfig::Config.target_mode?
|
|
71
74
|
rescue LoadError
|
|
72
75
|
@shadow_lib_ok = false
|
|
73
76
|
else
|
|
74
|
-
@shadow_info = Shadow::Passwd.getspnam(new_resource.username)
|
|
77
|
+
@shadow_info = TargetIO::Shadow::Passwd.getspnam(new_resource.username)
|
|
75
78
|
# This conditional remains in place until we can sort out whether we need it.
|
|
76
79
|
# Currently removing it causes tests to fail, but that /seems/ to be mocking/setup issues.
|
|
77
80
|
# Some notes for context:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Edwards (<adamed@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -94,7 +94,7 @@ class Chef
|
|
|
94
94
|
acl = Chef::ReservedNames::Win32::Security::ACL.create(aces)
|
|
95
95
|
|
|
96
96
|
# This actually applies the modified DACL to the file
|
|
97
|
-
# Use parentheses to bypass RuboCop /
|
|
97
|
+
# Use parentheses to bypass RuboCop / ChefStyle warning
|
|
98
98
|
# about useless setter
|
|
99
99
|
(securable_object.dacl = acl)
|
|
100
100
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Thom May (<thom@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -25,9 +25,7 @@ class Chef
|
|
|
25
25
|
class YumRepository < Chef::Provider
|
|
26
26
|
extend Chef::Mixin::Which
|
|
27
27
|
|
|
28
|
-
provides
|
|
29
|
-
which "yum"
|
|
30
|
-
end
|
|
28
|
+
provides(:yum_repository, target_mode: true) { which "yum" }
|
|
31
29
|
|
|
32
30
|
def load_current_resource; end
|
|
33
31
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -25,7 +25,7 @@ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
|
25
25
|
class Chef
|
|
26
26
|
class Provider
|
|
27
27
|
class ZypperRepository < Chef::Provider
|
|
28
|
-
provides :zypper_repository, platform_family: "suse"
|
|
28
|
+
provides :zypper_repository, platform_family: "suse", target_mode: true
|
|
29
29
|
|
|
30
30
|
def load_current_resource; end
|
|
31
31
|
|
data/lib/chef/provider.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Christopher Walters (<cw@chef.io>)
|
|
4
|
-
# Copyright:: Copyright (c)
|
|
4
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
data/lib/chef/providers.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -66,6 +66,7 @@ require_relative "provider/package/paludis"
|
|
|
66
66
|
require_relative "provider/package/rpm"
|
|
67
67
|
require_relative "provider/package/rubygems"
|
|
68
68
|
require_relative "provider/package/yum"
|
|
69
|
+
require_relative "provider/package/yum_tm"
|
|
69
70
|
require_relative "provider/package/zypper"
|
|
70
71
|
require_relative "provider/package/solaris"
|
|
71
72
|
require_relative "provider/package/smartos"
|
|
@@ -74,6 +75,7 @@ require_relative "provider/package/cab"
|
|
|
74
75
|
require_relative "provider/package/powershell"
|
|
75
76
|
require_relative "provider/package/msu"
|
|
76
77
|
require_relative "provider/package/snap"
|
|
78
|
+
require_relative "provider/package/snap_tm"
|
|
77
79
|
require_relative "provider/package/habitat"
|
|
78
80
|
|
|
79
81
|
require_relative "provider/service/arch"
|
data/lib/chef/pwsh.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Matt Wrock (<mwrock@chef.io>)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
data/lib/chef/recipe.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Christopher Walters (<cw@chef.io>)
|
|
4
|
-
# Copyright:: Copyright (c)
|
|
4
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -97,8 +97,8 @@ class Chef
|
|
|
97
97
|
|
|
98
98
|
def from_yaml(string)
|
|
99
99
|
res = ::YAML.safe_load(string, permitted_classes: [Date])
|
|
100
|
-
unless res.is_a?(Hash) && res.key?("resources")
|
|
101
|
-
raise ArgumentError, "YAML recipe '#{source_file}' must contain a top-level 'resources' hash (YAML sequence), i.e. 'resources:'"
|
|
100
|
+
unless res.is_a?(Hash) && (res.key?("resources") || res.key?("include_recipes"))
|
|
101
|
+
raise ArgumentError, "YAML recipe '#{source_file}' must contain a top-level 'resources' or 'include_recipes' hash (YAML sequence), i.e. 'resources:'"
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
from_hash(res)
|
|
@@ -116,15 +116,15 @@ class Chef
|
|
|
116
116
|
|
|
117
117
|
def from_json(string)
|
|
118
118
|
res = JSONCompat.from_json(string)
|
|
119
|
-
unless res.is_a?(Hash) && res.key?("resources")
|
|
120
|
-
raise ArgumentError, "JSON recipe '#{source_file}' must contain a top-level 'resources' hash"
|
|
119
|
+
unless res.is_a?(Hash) && (res.key?("resources") || res.key?("include_recipes"))
|
|
120
|
+
raise ArgumentError, "JSON recipe '#{source_file}' must contain a top-level 'resources' or 'include_recipes' hash key"
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
from_hash(res)
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
def from_hash(hash)
|
|
127
|
-
hash["resources"]
|
|
127
|
+
hash["resources"]&.each do |rhash|
|
|
128
128
|
type = rhash.delete("type").to_sym
|
|
129
129
|
name = rhash.delete("name")
|
|
130
130
|
res = declare_resource(type, name)
|
|
@@ -133,6 +133,9 @@ class Chef
|
|
|
133
133
|
res.send(key, value)
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
|
+
hash["include_recipes"]&.each do |recipe|
|
|
137
|
+
run_context.include_recipe recipe
|
|
138
|
+
end
|
|
136
139
|
end
|
|
137
140
|
|
|
138
141
|
def to_s
|
data/lib/chef/request_id.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Author:: Prajakta Purohit (<prajakta@chef.io>)
|
|
2
|
-
# Copyright:: Copyright (c)
|
|
2
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
3
3
|
# License:: Apache License, Version 2.0
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright
|
|
2
|
+
# Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
3
3
|
# License:: Apache License, Version 2.0
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -15,6 +15,101 @@
|
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
#
|
|
17
17
|
|
|
18
|
+
unified_mode true
|
|
19
|
+
|
|
20
|
+
provides :rest_resource
|
|
21
|
+
|
|
22
|
+
description "Base resource for interacting with REST APIs. Extend this resource to create custom resources that manage REST API endpoints."
|
|
23
|
+
|
|
24
|
+
introduced "18.0"
|
|
25
|
+
|
|
26
|
+
examples <<~'DOC'
|
|
27
|
+
**Create a custom REST resource for managing users in an API**
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
class Chef::Resource::ApiUser < Chef::Resource::RestResource
|
|
31
|
+
resource_name :api_user
|
|
32
|
+
provides :api_user
|
|
33
|
+
|
|
34
|
+
rest_api_endpoint "https://api.example.com"
|
|
35
|
+
rest_api_collection "/api/v1/users"
|
|
36
|
+
rest_identity_property :username
|
|
37
|
+
|
|
38
|
+
property :username, String, name_property: true
|
|
39
|
+
property :email, String
|
|
40
|
+
property :full_name, String
|
|
41
|
+
property :active, [true, false], default: true
|
|
42
|
+
|
|
43
|
+
rest_property_map({
|
|
44
|
+
username: "username",
|
|
45
|
+
email: "email",
|
|
46
|
+
full_name: "profile.fullName",
|
|
47
|
+
active: "status.active"
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
rest_post_only_properties [:username]
|
|
51
|
+
end
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Use the custom resource to create a user**
|
|
55
|
+
|
|
56
|
+
```ruby
|
|
57
|
+
api_user "testuser" do
|
|
58
|
+
email "testuser@example.com"
|
|
59
|
+
full_name "Test User"
|
|
60
|
+
active true
|
|
61
|
+
action :configure
|
|
62
|
+
end
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Delete a user via the API**
|
|
66
|
+
|
|
67
|
+
```ruby
|
|
68
|
+
api_user "testuser" do
|
|
69
|
+
action :delete
|
|
70
|
+
end
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Use JMESPath for complex JSON mapping**
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
class Chef::Resource::ApiProject < Chef::Resource::RestResource
|
|
77
|
+
resource_name :api_project
|
|
78
|
+
|
|
79
|
+
rest_api_endpoint "https://api.example.com"
|
|
80
|
+
rest_api_collection "/projects"
|
|
81
|
+
rest_identity_property :project_id
|
|
82
|
+
|
|
83
|
+
property :project_id, String, name_property: true
|
|
84
|
+
property :member_emails, Array
|
|
85
|
+
|
|
86
|
+
# Extract email addresses from nested members array
|
|
87
|
+
rest_property_map({
|
|
88
|
+
project_id: "id",
|
|
89
|
+
member_emails: "members[*].email"
|
|
90
|
+
})
|
|
91
|
+
end
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Configure authentication with custom headers**
|
|
95
|
+
|
|
96
|
+
```ruby
|
|
97
|
+
class Chef::Resource::ApiResource < Chef::Resource::RestResource
|
|
98
|
+
rest_api_endpoint "https://api.example.com"
|
|
99
|
+
rest_api_collection "/resources"
|
|
100
|
+
|
|
101
|
+
action_class do
|
|
102
|
+
def rest_headers
|
|
103
|
+
{
|
|
104
|
+
"Authorization" => "Bearer #{node['api_token']}",
|
|
105
|
+
"X-API-Version" => "2024-01-01"
|
|
106
|
+
}
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
```
|
|
111
|
+
DOC
|
|
112
|
+
|
|
18
113
|
require "addressable/template" unless defined?(Addressable::Template)
|
|
19
114
|
require "rest-client" unless defined?(RestClient)
|
|
20
115
|
require "jmespath" unless defined?(JMESPath)
|
|
@@ -48,7 +143,7 @@ action_class do
|
|
|
48
143
|
end
|
|
49
144
|
end
|
|
50
145
|
|
|
51
|
-
action :configure do
|
|
146
|
+
action :configure, description: "Create or update the resource via the REST API. If the resource doesn't exist, this performs a POST to create it. If the resource exists and properties changed, this performs a PATCH to update it." do
|
|
52
147
|
if resource_exists?
|
|
53
148
|
converge_if_changed do
|
|
54
149
|
data = {}
|
|
@@ -79,24 +174,36 @@ action :configure do
|
|
|
79
174
|
end
|
|
80
175
|
end
|
|
81
176
|
|
|
82
|
-
action :delete do
|
|
177
|
+
action :delete, description: "Delete the resource via the REST API. If the resource doesn't exist, this action takes no action." do
|
|
83
178
|
if resource_exists?
|
|
84
179
|
converge_by "deleting resource" do
|
|
85
180
|
rest_delete
|
|
86
181
|
end
|
|
87
182
|
else
|
|
88
183
|
logger.debug format("REST resource %<name>s of type %<type>s does not exist. Skipping.",
|
|
89
|
-
|
|
184
|
+
type: new_resource.name, name: id_property)
|
|
90
185
|
end
|
|
91
186
|
end
|
|
92
187
|
|
|
93
188
|
action_class do
|
|
94
|
-
#
|
|
189
|
+
#
|
|
190
|
+
# Postprocess API responses. Override in custom resources to transform
|
|
191
|
+
# or extract data from responses, handle pagination, etc.
|
|
192
|
+
#
|
|
193
|
+
# @param response [RestClient::Response] The API response object
|
|
194
|
+
# @return [RestClient::Response] The processed response
|
|
195
|
+
#
|
|
95
196
|
def rest_postprocess(response)
|
|
96
197
|
response
|
|
97
198
|
end
|
|
98
199
|
|
|
99
|
-
#
|
|
200
|
+
#
|
|
201
|
+
# Handle REST API errors. Override in custom resources to provide
|
|
202
|
+
# user-friendly error messages or handle specific error codes.
|
|
203
|
+
#
|
|
204
|
+
# @param error_obj [RestClient::Exception] The exception object
|
|
205
|
+
# @return [RestClient::Exception] The processed error
|
|
206
|
+
#
|
|
100
207
|
def rest_errorhandler(error_obj)
|
|
101
208
|
error_obj
|
|
102
209
|
end
|
|
@@ -111,7 +218,9 @@ action_class do
|
|
|
111
218
|
current_resource.class.properties.select { |_, v| v.required? }.except(:name).keys
|
|
112
219
|
end
|
|
113
220
|
|
|
221
|
+
#
|
|
114
222
|
# Return changed value or nil for delta current->new
|
|
223
|
+
#
|
|
115
224
|
def changed_value(property)
|
|
116
225
|
new_value = new_resource.send(property)
|
|
117
226
|
return new_value if current_resource.nil?
|
|
@@ -127,7 +236,9 @@ action_class do
|
|
|
127
236
|
current_resource.class.identity_attr
|
|
128
237
|
end
|
|
129
238
|
|
|
239
|
+
#
|
|
130
240
|
# Map properties to their current values
|
|
241
|
+
#
|
|
131
242
|
def property_map
|
|
132
243
|
map = {}
|
|
133
244
|
|
|
@@ -142,7 +253,15 @@ action_class do
|
|
|
142
253
|
map
|
|
143
254
|
end
|
|
144
255
|
|
|
145
|
-
#
|
|
256
|
+
#
|
|
257
|
+
# Convert JSON API response to a resource property value.
|
|
258
|
+
# Supports JMESPath expressions (String) or custom functions (Symbol).
|
|
259
|
+
#
|
|
260
|
+
# @param match_instruction [String, Symbol] How to extract the value
|
|
261
|
+
# @param property [Symbol] The property name
|
|
262
|
+
# @param resource_data [Hash] The JSON response data
|
|
263
|
+
# @return [Object] The extracted property value
|
|
264
|
+
#
|
|
146
265
|
def json_to_property(match_instruction, property, resource_data)
|
|
147
266
|
case match_instruction
|
|
148
267
|
when String
|
|
@@ -157,7 +276,14 @@ action_class do
|
|
|
157
276
|
end
|
|
158
277
|
end
|
|
159
278
|
|
|
160
|
-
#
|
|
279
|
+
#
|
|
280
|
+
# Convert a resource property value to JSON for API request.
|
|
281
|
+
# Supports JMESPath-like notation (String) or custom functions (Symbol).
|
|
282
|
+
#
|
|
283
|
+
# @param property [Symbol] The property name
|
|
284
|
+
# @param match_instruction [String, Symbol] How to structure the value
|
|
285
|
+
# @return [Hash] A hash representing the JSON structure
|
|
286
|
+
#
|
|
161
287
|
def property_to_json(property, match_instruction)
|
|
162
288
|
case match_instruction
|
|
163
289
|
when String
|
|
@@ -174,18 +300,20 @@ action_class do
|
|
|
174
300
|
end
|
|
175
301
|
|
|
176
302
|
def rest_url_collection
|
|
177
|
-
|
|
178
|
-
"#{endpoint}#{current_resource.class.rest_api_collection}"
|
|
303
|
+
current_resource.class.rest_api_collection
|
|
179
304
|
end
|
|
180
305
|
|
|
306
|
+
#
|
|
181
307
|
# Resource document URL after RFC 6570 template evaluation via properties substitution
|
|
308
|
+
#
|
|
182
309
|
def rest_url_document
|
|
183
|
-
endpoint = current_resource.class.rest_api_endpoint || ""
|
|
184
310
|
template = ::Addressable::Template.new(current_resource.class.rest_api_document)
|
|
185
|
-
|
|
311
|
+
template.expand(property_map).to_s
|
|
186
312
|
end
|
|
187
313
|
|
|
314
|
+
#
|
|
188
315
|
# Convenience method for conditional requires
|
|
316
|
+
#
|
|
189
317
|
def conditionally_require_on_setting(property, dependent_properties)
|
|
190
318
|
dependent_properties = Array(dependent_properties)
|
|
191
319
|
|
|
@@ -200,9 +328,9 @@ action_class do
|
|
|
200
328
|
end
|
|
201
329
|
|
|
202
330
|
message = format("Setting property :%<property>s requires properties :%<properties>s to be set as well on resource %<resource_name>s",
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
331
|
+
property: property,
|
|
332
|
+
properties: dependent_properties.join(", :"),
|
|
333
|
+
resource_name: current_resource.to_s)
|
|
206
334
|
|
|
207
335
|
a.failure_message message
|
|
208
336
|
end
|
|
@@ -269,12 +397,16 @@ action_class do
|
|
|
269
397
|
|
|
270
398
|
# REST parameter mapping
|
|
271
399
|
|
|
400
|
+
#
|
|
272
401
|
# Return number of parameters needed to identify a resource (pre- and post-creation)
|
|
402
|
+
#
|
|
273
403
|
def rest_arity
|
|
274
404
|
rest_identity_map.keys.count
|
|
275
405
|
end
|
|
276
406
|
|
|
407
|
+
#
|
|
277
408
|
# Return mapping of template placeholders to property value of identity parameters
|
|
409
|
+
#
|
|
278
410
|
def rest_identity_values
|
|
279
411
|
data = {}
|
|
280
412
|
|
|
@@ -290,11 +422,14 @@ action_class do
|
|
|
290
422
|
rest_identity_explicit || rest_identity_implicit
|
|
291
423
|
end
|
|
292
424
|
|
|
425
|
+
#
|
|
293
426
|
# Accept direct mapping like { "svm.name" => :name } for specifying the x-ary identity of a resource
|
|
427
|
+
#
|
|
294
428
|
def rest_identity_explicit
|
|
295
429
|
current_resource.class.rest_identity_map
|
|
296
430
|
end
|
|
297
431
|
|
|
432
|
+
#
|
|
298
433
|
# Parse document URL for RFC 6570 templates and map them to resource properties.
|
|
299
434
|
#
|
|
300
435
|
# Examples:
|
|
@@ -353,8 +488,11 @@ action_class do
|
|
|
353
488
|
Chef.run_context.transport.connection
|
|
354
489
|
end
|
|
355
490
|
|
|
491
|
+
#
|
|
356
492
|
# Remove all empty keys (recursively) from Hash.
|
|
493
|
+
#
|
|
357
494
|
# @see https://stackoverflow.com/questions/56457020/#answer-56458673
|
|
495
|
+
#
|
|
358
496
|
def deep_compact!(hsh)
|
|
359
497
|
raise TypeError unless hsh.is_a? Hash
|
|
360
498
|
|
|
@@ -363,15 +501,20 @@ action_class do
|
|
|
363
501
|
end.reject! { |_, v| v.nil? || (v.respond_to?(:empty?) && v.empty?) }
|
|
364
502
|
end
|
|
365
503
|
|
|
504
|
+
#
|
|
366
505
|
# Deep merge two hashes
|
|
506
|
+
#
|
|
367
507
|
# @see https://stackoverflow.com/questions/41109599#answer-41109737
|
|
508
|
+
#
|
|
368
509
|
def deep_merge!(hsh1, hsh2)
|
|
369
510
|
raise TypeError unless hsh1.is_a?(Hash) && hsh2.is_a?(Hash)
|
|
370
511
|
|
|
371
512
|
hsh1.merge!(hsh2) { |_, v1, v2| deep_merge!(v1, v2) }
|
|
372
513
|
end
|
|
373
514
|
|
|
515
|
+
#
|
|
374
516
|
# Create nested hashes from JMESPath syntax.
|
|
517
|
+
#
|
|
375
518
|
def bury(path, value)
|
|
376
519
|
raise TypeError unless path.is_a?(String)
|
|
377
520
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: John Keiser (<jkeiser@chef.io)
|
|
3
|
-
# Copyright:: Copyright (c)
|
|
3
|
+
# Copyright:: Copyright (c) 2009-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|