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.
Files changed (717) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -27
  3. data/README.md +7 -2
  4. data/Rakefile +1 -12
  5. data/chef-universal-mingw-ucrt.gemspec +3 -5
  6. data/chef.gemspec +22 -27
  7. data/lib/chef/action_collection.rb +3 -1
  8. data/lib/chef/api_client/registration.rb +1 -1
  9. data/lib/chef/api_client.rb +1 -1
  10. data/lib/chef/api_client_v1.rb +1 -1
  11. data/lib/chef/application/apply.rb +30 -3
  12. data/lib/chef/application/base.rb +34 -3
  13. data/lib/chef/application/client.rb +15 -1
  14. data/lib/chef/application/exit_code.rb +3 -1
  15. data/lib/chef/application/solo.rb +1 -1
  16. data/lib/chef/application.rb +6 -1
  17. data/lib/chef/chef_class.rb +1 -1
  18. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  19. data/lib/chef/chef_fs/command_line.rb +7 -6
  20. data/lib/chef/chef_fs/config.rb +1 -1
  21. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  22. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  23. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/base_fs_object.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
  27. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  28. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +1 -1
  29. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +1 -1
  30. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +1 -1
  31. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
  32. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  33. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +1 -1
  34. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +1 -1
  35. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
  36. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
  37. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +1 -1
  38. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
  39. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
  40. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +1 -1
  41. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  42. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  43. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +1 -1
  44. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  45. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +1 -1
  46. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +2 -2
  47. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +1 -1
  48. data/lib/chef/chef_fs/file_system/exceptions.rb +1 -1
  49. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +1 -1
  50. data/lib/chef/chef_fs/file_system/repository/acl.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +1 -1
  52. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +1 -1
  53. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  54. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +1 -1
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +7 -6
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +1 -1
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
  59. data/lib/chef/chef_fs/file_system/repository/client.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/client_key.rb +1 -1
  61. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +1 -1
  62. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +1 -1
  63. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +1 -1
  64. data/lib/chef/chef_fs/file_system/repository/container.rb +1 -1
  65. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +1 -1
  66. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +1 -1
  67. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  68. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +1 -1
  69. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +1 -1
  70. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +1 -1
  71. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  72. data/lib/chef/chef_fs/file_system/repository/environment.rb +1 -1
  73. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +1 -1
  74. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  75. data/lib/chef/chef_fs/file_system/repository/group.rb +1 -1
  76. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +1 -1
  77. data/lib/chef/chef_fs/file_system/repository/node.rb +1 -1
  78. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +1 -1
  79. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +1 -1
  80. data/lib/chef/chef_fs/file_system/repository/policy.rb +1 -1
  81. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +1 -1
  82. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +1 -1
  83. data/lib/chef/chef_fs/file_system/repository/role.rb +1 -1
  84. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +1 -1
  85. data/lib/chef/chef_fs/file_system/repository/user.rb +1 -1
  86. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +1 -1
  87. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +1 -1
  88. data/lib/chef/chef_fs/file_system.rb +1 -1
  89. data/lib/chef/chef_fs/file_system_cache.rb +1 -1
  90. data/lib/chef/chef_fs/path_utils.rb +1 -1
  91. data/lib/chef/client.rb +13 -3
  92. data/lib/chef/compliance/default_attributes.rb +1 -1
  93. data/lib/chef/compliance/fetcher/chef_server.rb +1 -1
  94. data/lib/chef/compliance/input.rb +1 -1
  95. data/lib/chef/compliance/input_collection.rb +1 -1
  96. data/lib/chef/compliance/profile.rb +1 -1
  97. data/lib/chef/compliance/profile_collection.rb +1 -1
  98. data/lib/chef/compliance/runner.rb +20 -20
  99. data/lib/chef/compliance/waiver.rb +1 -1
  100. data/lib/chef/compliance/waiver_collection.rb +1 -1
  101. data/lib/chef/config.rb +1 -1
  102. data/lib/chef/constants.rb +1 -1
  103. data/lib/chef/context.rb +53 -0
  104. data/lib/chef/cookbook/chefignore.rb +2 -2
  105. data/lib/chef/cookbook/cookbook_collection.rb +1 -1
  106. data/lib/chef/cookbook/cookbook_version_loader.rb +2 -1
  107. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  108. data/lib/chef/cookbook/file_vendor.rb +1 -1
  109. data/lib/chef/cookbook/gem_installer.rb +1 -1
  110. data/lib/chef/cookbook/manifest_v0.rb +1 -1
  111. data/lib/chef/cookbook/manifest_v2.rb +1 -1
  112. data/lib/chef/cookbook/metadata.rb +1 -1
  113. data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
  114. data/lib/chef/cookbook/synchronizer.rb +5 -0
  115. data/lib/chef/cookbook/syntax_check.rb +1 -1
  116. data/lib/chef/cookbook_loader.rb +1 -1
  117. data/lib/chef/cookbook_manifest.rb +1 -1
  118. data/lib/chef/cookbook_version.rb +3 -3
  119. data/lib/chef/daemon.rb +1 -1
  120. data/lib/chef/data_bag.rb +3 -3
  121. data/lib/chef/data_bag_item.rb +2 -2
  122. data/lib/chef/data_collector/config_validation.rb +1 -1
  123. data/lib/chef/data_collector/error_handlers.rb +1 -1
  124. data/lib/chef/data_collector/message_helpers.rb +1 -1
  125. data/lib/chef/data_collector/run_end_message.rb +1 -1
  126. data/lib/chef/data_collector/run_start_message.rb +2 -2
  127. data/lib/chef/data_collector.rb +2 -2
  128. data/lib/chef/decorator/lazy.rb +1 -1
  129. data/lib/chef/decorator/lazy_array.rb +1 -1
  130. data/lib/chef/decorator.rb +1 -1
  131. data/lib/chef/delayed_evaluator.rb +1 -1
  132. data/lib/chef/deprecated.rb +1 -1
  133. data/lib/chef/deprecation/warnings.rb +1 -1
  134. data/lib/chef/digester.rb +1 -1
  135. data/lib/chef/dsl/chef_vault.rb +2 -2
  136. data/lib/chef/dsl/cheffish.rb +1 -1
  137. data/lib/chef/dsl/compliance.rb +1 -1
  138. data/lib/chef/dsl/data_query.rb +1 -1
  139. data/lib/chef/dsl/declare_resource.rb +1 -1
  140. data/lib/chef/dsl/include_attribute.rb +1 -1
  141. data/lib/chef/dsl/include_recipe.rb +1 -1
  142. data/lib/chef/dsl/platform_introspection.rb +1 -1
  143. data/lib/chef/dsl/powershell.rb +1 -1
  144. data/lib/chef/dsl/reader_helpers.rb +3 -1
  145. data/lib/chef/dsl/reboot_pending.rb +1 -1
  146. data/lib/chef/dsl/recipe.rb +1 -1
  147. data/lib/chef/dsl/registry_helper.rb +1 -1
  148. data/lib/chef/dsl/render_helpers.rb +1 -1
  149. data/lib/chef/dsl/resources.rb +1 -1
  150. data/lib/chef/dsl/rest_resource.rb +17 -64
  151. data/lib/chef/dsl/secret.rb +1 -1
  152. data/lib/chef/dsl/universal.rb +1 -1
  153. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +1 -1
  154. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +1 -1
  155. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  156. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  157. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +1 -1
  158. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +1 -1
  159. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +1 -1
  160. data/lib/chef/encrypted_data_bag_item.rb +1 -1
  161. data/lib/chef/environment.rb +2 -2
  162. data/lib/chef/event_loggers/base.rb +1 -1
  163. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  164. data/lib/chef/exceptions.rb +2 -12
  165. data/lib/chef/file_access_control/unix.rb +10 -10
  166. data/lib/chef/file_access_control/windows.rb +1 -1
  167. data/lib/chef/file_access_control.rb +1 -1
  168. data/lib/chef/file_cache.rb +1 -1
  169. data/lib/chef/file_content_management/content_base.rb +1 -1
  170. data/lib/chef/file_content_management/deploy/cp.rb +1 -1
  171. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  172. data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
  173. data/lib/chef/file_content_management/deploy/target_io.rb +27 -0
  174. data/lib/chef/file_content_management/deploy.rb +5 -2
  175. data/lib/chef/file_content_management/tempfile.rb +1 -1
  176. data/lib/chef/formatters/base.rb +1 -1
  177. data/lib/chef/formatters/error_description.rb +2 -9
  178. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +1 -1
  179. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  180. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +3 -2
  181. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +3 -2
  182. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +1 -1
  183. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +1 -1
  184. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
  185. data/lib/chef/formatters/error_mapper.rb +1 -1
  186. data/lib/chef/group.rb +1 -1
  187. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +1 -1
  188. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +1 -1
  189. data/lib/chef/guard_interpreter.rb +1 -1
  190. data/lib/chef/handler/error_report.rb +1 -1
  191. data/lib/chef/handler/json_file.rb +1 -1
  192. data/lib/chef/handler/slow_report.rb +1 -1
  193. data/lib/chef/handler.rb +1 -1
  194. data/lib/chef/http/api_versions.rb +1 -1
  195. data/lib/chef/http/auth_credentials.rb +1 -1
  196. data/lib/chef/http/authenticator.rb +13 -26
  197. data/lib/chef/http/basic_client.rb +1 -2
  198. data/lib/chef/http/cookie_jar.rb +1 -1
  199. data/lib/chef/http/cookie_manager.rb +1 -1
  200. data/lib/chef/http/decompressor.rb +1 -1
  201. data/lib/chef/http/http_request.rb +17 -16
  202. data/lib/chef/http/json_input.rb +1 -1
  203. data/lib/chef/http/json_output.rb +1 -1
  204. data/lib/chef/http/json_to_model_output.rb +1 -1
  205. data/lib/chef/http/remote_request_id.rb +1 -1
  206. data/lib/chef/http/simple.rb +1 -1
  207. data/lib/chef/http/simple_json.rb +1 -1
  208. data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
  209. data/lib/chef/http/ssl_policies.rb +1 -1
  210. data/lib/chef/http/validate_content_length.rb +1 -1
  211. data/lib/chef/http.rb +1 -2
  212. data/lib/chef/json_compat.rb +1 -1
  213. data/lib/chef/key.rb +1 -1
  214. data/lib/chef/licensing.rb +105 -0
  215. data/lib/chef/licensing_config.rb +20 -0
  216. data/lib/chef/local_mode.rb +1 -1
  217. data/lib/chef/log/syslog.rb +1 -1
  218. data/lib/chef/log/winevt.rb +1 -1
  219. data/lib/chef/log.rb +1 -1
  220. data/lib/chef/mash.rb +1 -1
  221. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  222. data/lib/chef/mixin/checksum.rb +1 -1
  223. data/lib/chef/mixin/chef_utils_wiring.rb +1 -1
  224. data/lib/chef/mixin/convert_to_class_name.rb +1 -1
  225. data/lib/chef/mixin/create_path.rb +1 -1
  226. data/lib/chef/mixin/deep_merge.rb +1 -1
  227. data/lib/chef/mixin/default_paths.rb +1 -1
  228. data/lib/chef/mixin/deprecation.rb +1 -1
  229. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +1 -1
  230. data/lib/chef/mixin/file_class.rb +4 -2
  231. data/lib/chef/mixin/from_file.rb +1 -1
  232. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  233. data/lib/chef/mixin/homebrew.rb +3 -4
  234. data/lib/chef/mixin/lazy_module_include.rb +1 -1
  235. data/lib/chef/mixin/notifying_block.rb +1 -1
  236. data/lib/chef/mixin/openssl_helper.rb +1 -1
  237. data/lib/chef/mixin/params_validate.rb +1 -1
  238. data/lib/chef/mixin/path_sanity.rb +1 -1
  239. data/lib/chef/mixin/powershell_exec.rb +1 -1
  240. data/lib/chef/mixin/powershell_out.rb +1 -1
  241. data/lib/chef/mixin/powershell_type_coercions.rb +1 -1
  242. data/lib/chef/mixin/proxified_socket.rb +1 -1
  243. data/lib/chef/mixin/securable.rb +1 -1
  244. data/lib/chef/mixin/shell_out.rb +1 -1
  245. data/lib/chef/mixin/subclass_directive.rb +1 -1
  246. data/lib/chef/mixin/template.rb +3 -25
  247. data/lib/chef/mixin/unformatter.rb +1 -1
  248. data/lib/chef/mixin/uris.rb +1 -1
  249. data/lib/chef/mixin/user_context.rb +1 -1
  250. data/lib/chef/mixin/versioned_api.rb +1 -1
  251. data/lib/chef/mixin/which.rb +1 -1
  252. data/lib/chef/mixin/why_run.rb +1 -1
  253. data/lib/chef/mixin/wide_string.rb +1 -1
  254. data/lib/chef/mixin/windows_architecture_helper.rb +1 -1
  255. data/lib/chef/mixin/windows_env_helper.rb +1 -1
  256. data/lib/chef/mixin/xml_escape.rb +1 -1
  257. data/lib/chef/monkey_patches/net-http.rb +10 -11
  258. data/lib/chef/monkey_patches/win32/registry.rb +1 -1
  259. data/lib/chef/node/attribute.rb +1 -1
  260. data/lib/chef/node/attribute_collections.rb +1 -1
  261. data/lib/chef/node/common_api.rb +1 -1
  262. data/lib/chef/node/immutable_collections.rb +1 -1
  263. data/lib/chef/node/mixin/deep_merge_cache.rb +1 -1
  264. data/lib/chef/node/mixin/immutablize_array.rb +27 -1
  265. data/lib/chef/node/mixin/immutablize_hash.rb +36 -1
  266. data/lib/chef/node/mixin/mashy_array.rb +1 -1
  267. data/lib/chef/node/mixin/state_tracking.rb +1 -1
  268. data/lib/chef/node/mixin/state_tracking_array.rb +1 -1
  269. data/lib/chef/node.rb +1 -1
  270. data/lib/chef/node_map.rb +15 -3
  271. data/lib/chef/null_logger.rb +1 -1
  272. data/lib/chef/org.rb +1 -1
  273. data/lib/chef/platform/priority_map.rb +1 -1
  274. data/lib/chef/platform/provider_handler_map.rb +1 -1
  275. data/lib/chef/platform/provider_mapping.rb +1 -1
  276. data/lib/chef/platform/query_helpers.rb +1 -1
  277. data/lib/chef/platform/rebooter.rb +1 -1
  278. data/lib/chef/platform/resource_handler_map.rb +1 -1
  279. data/lib/chef/platform/service_helpers.rb +1 -1
  280. data/lib/chef/platform.rb +1 -1
  281. data/lib/chef/policy_builder/dynamic.rb +1 -1
  282. data/lib/chef/policy_builder/expand_node_object.rb +1 -1
  283. data/lib/chef/policy_builder/policyfile.rb +1 -1
  284. data/lib/chef/policy_builder.rb +1 -1
  285. data/lib/chef/property.rb +3 -3
  286. data/lib/chef/provider/batch.rb +1 -1
  287. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  288. data/lib/chef/provider/cookbook_file.rb +2 -2
  289. data/lib/chef/provider/cron/aix.rb +1 -1
  290. data/lib/chef/provider/cron/solaris.rb +1 -1
  291. data/lib/chef/provider/cron.rb +15 -5
  292. data/lib/chef/provider/directory.rb +18 -18
  293. data/lib/chef/provider/dsc_resource.rb +1 -1
  294. data/lib/chef/provider/dsc_script.rb +1 -1
  295. data/lib/chef/provider/execute.rb +3 -2
  296. data/lib/chef/provider/file/content.rb +3 -4
  297. data/lib/chef/provider/file.rb +44 -31
  298. data/lib/chef/provider/git.rb +10 -10
  299. data/lib/chef/provider/group/aix.rb +1 -1
  300. data/lib/chef/provider/group/dscl.rb +2 -2
  301. data/lib/chef/provider/group/gpasswd.rb +3 -3
  302. data/lib/chef/provider/group/groupadd.rb +2 -2
  303. data/lib/chef/provider/group/groupmod.rb +3 -3
  304. data/lib/chef/provider/group/pw.rb +3 -3
  305. data/lib/chef/provider/group/solaris.rb +3 -3
  306. data/lib/chef/provider/group/usermod.rb +3 -3
  307. data/lib/chef/provider/group.rb +2 -2
  308. data/lib/chef/provider/http_request.rb +3 -4
  309. data/lib/chef/provider/ifconfig/aix.rb +2 -2
  310. data/lib/chef/provider/ifconfig/debian.rb +3 -3
  311. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  312. data/lib/chef/provider/ifconfig.rb +1 -1
  313. data/lib/chef/provider/link.rb +22 -11
  314. data/lib/chef/provider/lwrp_base.rb +1 -1
  315. data/lib/chef/provider/mount/aix.rb +5 -5
  316. data/lib/chef/provider/mount/linux.rb +4 -4
  317. data/lib/chef/provider/mount/mount.rb +12 -12
  318. data/lib/chef/provider/mount/solaris.rb +1 -1
  319. data/lib/chef/provider/mount/windows.rb +3 -3
  320. data/lib/chef/provider/mount.rb +1 -1
  321. data/lib/chef/provider/noop.rb +1 -1
  322. data/lib/chef/provider/package/apt.rb +1 -1
  323. data/lib/chef/provider/package/bff.rb +4 -4
  324. data/lib/chef/provider/package/cab.rb +1 -1
  325. data/lib/chef/provider/package/chocolatey.rb +20 -79
  326. data/lib/chef/provider/package/deb.rb +1 -1
  327. data/lib/chef/provider/package/dnf/dnf_helper.py +65 -355
  328. data/lib/chef/provider/package/dnf/python_helper.rb +5 -8
  329. data/lib/chef/provider/package/dnf/version.rb +1 -1
  330. data/lib/chef/provider/package/dnf.rb +5 -24
  331. data/lib/chef/provider/package/dpkg.rb +6 -6
  332. data/lib/chef/provider/package/freebsd/base.rb +1 -1
  333. data/lib/chef/provider/package/habitat.rb +6 -6
  334. data/lib/chef/provider/package/homebrew.rb +1 -1
  335. data/lib/chef/provider/package/ips.rb +3 -3
  336. data/lib/chef/provider/package/msu.rb +1 -1
  337. data/lib/chef/provider/package/openbsd.rb +3 -2
  338. data/lib/chef/provider/package/pacman.rb +4 -4
  339. data/lib/chef/provider/package/paludis.rb +3 -3
  340. data/lib/chef/provider/package/portage.rb +3 -3
  341. data/lib/chef/provider/package/powershell.rb +1 -1
  342. data/lib/chef/provider/package/rpm.rb +3 -3
  343. data/lib/chef/provider/package/rubygems.rb +21 -28
  344. data/lib/chef/provider/package/smartos.rb +2 -2
  345. data/lib/chef/provider/package/snap.rb +19 -7
  346. data/lib/chef/provider/package/snap_tm.rb +79 -0
  347. data/lib/chef/provider/package/solaris.rb +5 -5
  348. data/lib/chef/provider/package/windows/exe.rb +1 -1
  349. data/lib/chef/provider/package/windows/msi.rb +1 -1
  350. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  351. data/lib/chef/provider/package/windows.rb +1 -1
  352. data/lib/chef/provider/package/yum/python_helper.rb +1 -1
  353. data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
  354. data/lib/chef/provider/package/yum/version.rb +1 -1
  355. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  356. data/lib/chef/provider/package/yum.rb +2 -2
  357. data/lib/chef/provider/package/yum_tm.rb +132 -0
  358. data/lib/chef/provider/package/zypper/version.rb +1 -1
  359. data/lib/chef/provider/package/zypper.rb +5 -5
  360. data/lib/chef/provider/package.rb +2 -2
  361. data/lib/chef/provider/powershell_script.rb +85 -85
  362. data/lib/chef/provider/registry_key.rb +2 -1
  363. data/lib/chef/provider/remote_directory.rb +6 -6
  364. data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
  365. data/lib/chef/provider/remote_file/content.rb +1 -1
  366. data/lib/chef/provider/remote_file/fetcher.rb +1 -1
  367. data/lib/chef/provider/remote_file/http.rb +2 -3
  368. data/lib/chef/provider/remote_file.rb +2 -2
  369. data/lib/chef/provider/route.rb +10 -10
  370. data/lib/chef/provider/ruby_block.rb +1 -1
  371. data/lib/chef/provider/script.rb +8 -8
  372. data/lib/chef/provider/service/aix.rb +2 -2
  373. data/lib/chef/provider/service/aixinit.rb +6 -6
  374. data/lib/chef/provider/service/arch.rb +6 -6
  375. data/lib/chef/provider/service/debian.rb +8 -8
  376. data/lib/chef/provider/service/freebsd.rb +7 -7
  377. data/lib/chef/provider/service/gentoo.rb +6 -6
  378. data/lib/chef/provider/service/init.rb +3 -3
  379. data/lib/chef/provider/service/insserv.rb +3 -3
  380. data/lib/chef/provider/service/invokercd.rb +2 -2
  381. data/lib/chef/provider/service/macosx.rb +1 -1
  382. data/lib/chef/provider/service/openbsd.rb +7 -7
  383. data/lib/chef/provider/service/redhat.rb +6 -6
  384. data/lib/chef/provider/service/solaris.rb +3 -3
  385. data/lib/chef/provider/service/systemd.rb +3 -3
  386. data/lib/chef/provider/service/upstart.rb +3 -3
  387. data/lib/chef/provider/service/windows.rb +1 -1
  388. data/lib/chef/provider/service.rb +1 -1
  389. data/lib/chef/provider/subversion.rb +10 -10
  390. data/lib/chef/provider/systemd_unit.rb +3 -3
  391. data/lib/chef/provider/template/content.rb +1 -1
  392. data/lib/chef/provider/template.rb +2 -2
  393. data/lib/chef/provider/template_finder.rb +1 -1
  394. data/lib/chef/provider/user/aix.rb +4 -4
  395. data/lib/chef/provider/user/dscl.rb +1 -1
  396. data/lib/chef/provider/user/linux.rb +8 -3
  397. data/lib/chef/provider/user/mac.rb +2 -2
  398. data/lib/chef/provider/user/pw.rb +4 -4
  399. data/lib/chef/provider/user/solaris.rb +8 -8
  400. data/lib/chef/provider/user.rb +7 -4
  401. data/lib/chef/provider/windows_script.rb +2 -2
  402. data/lib/chef/provider/yum_repository.rb +2 -4
  403. data/lib/chef/provider/zypper_repository.rb +2 -2
  404. data/lib/chef/provider.rb +1 -1
  405. data/lib/chef/providers.rb +3 -1
  406. data/lib/chef/pwsh.rb +1 -1
  407. data/lib/chef/recipe.rb +9 -6
  408. data/lib/chef/request_id.rb +1 -1
  409. data/lib/chef/resource/_rest_resource.rb +158 -15
  410. data/lib/chef/resource/action_class.rb +1 -1
  411. data/lib/chef/resource/alternatives.rb +44 -43
  412. data/lib/chef/resource/apt_package.rb +38 -33
  413. data/lib/chef/resource/apt_preference.rb +25 -24
  414. data/lib/chef/resource/apt_repository.rb +16 -11
  415. data/lib/chef/resource/apt_update.rb +5 -4
  416. data/lib/chef/resource/archive_file.rb +6 -40
  417. data/lib/chef/resource/bash.rb +132 -131
  418. data/lib/chef/resource/batch.rb +1 -1
  419. data/lib/chef/resource/bff_package.rb +18 -17
  420. data/lib/chef/resource/breakpoint.rb +46 -45
  421. data/lib/chef/resource/build_essential.rb +1 -1
  422. data/lib/chef/resource/cab_package.rb +23 -23
  423. data/lib/chef/resource/chef_client_config.rb +88 -253
  424. data/lib/chef/resource/chef_client_cron.rb +21 -19
  425. data/lib/chef/resource/chef_client_hab_ca_cert.rb +141 -0
  426. data/lib/chef/resource/chef_client_launchd.rb +6 -2
  427. data/lib/chef/resource/chef_client_scheduled_task.rb +35 -32
  428. data/lib/chef/resource/chef_client_systemd_timer.rb +21 -18
  429. data/lib/chef/resource/chef_client_trusted_certificate.rb +29 -29
  430. data/lib/chef/resource/chef_gem.rb +1 -1
  431. data/lib/chef/resource/chef_handler.rb +108 -108
  432. data/lib/chef/resource/chef_sleep.rb +3 -2
  433. data/lib/chef/resource/chef_vault_secret.rb +2 -2
  434. data/lib/chef/resource/chocolatey_config.rb +15 -15
  435. data/lib/chef/resource/chocolatey_feature.rb +2 -2
  436. data/lib/chef/resource/chocolatey_installer.rb +39 -72
  437. data/lib/chef/resource/chocolatey_package.rb +2 -2
  438. data/lib/chef/resource/chocolatey_source.rb +16 -16
  439. data/lib/chef/resource/conditional.rb +1 -1
  440. data/lib/chef/resource/cookbook_file.rb +3 -2
  441. data/lib/chef/resource/cron/_cron_shared.rb +1 -1
  442. data/lib/chef/resource/cron/cron.rb +72 -71
  443. data/lib/chef/resource/cron/cron_d.rb +3 -2
  444. data/lib/chef/resource/cron_access.rb +3 -2
  445. data/lib/chef/resource/csh.rb +3 -2
  446. data/lib/chef/resource/directory.rb +4 -3
  447. data/lib/chef/resource/dmg_package.rb +1 -1
  448. data/lib/chef/resource/dnf_package.rb +2 -2
  449. data/lib/chef/resource/dpkg_package.rb +9 -6
  450. data/lib/chef/resource/dsc_resource.rb +1 -1
  451. data/lib/chef/resource/dsc_script.rb +1 -1
  452. data/lib/chef/resource/execute.rb +8 -1
  453. data/lib/chef/resource/file/verification/json.rb +1 -1
  454. data/lib/chef/resource/file/verification/systemd_unit.rb +5 -2
  455. data/lib/chef/resource/file/verification/yaml.rb +2 -2
  456. data/lib/chef/resource/file/verification.rb +4 -1
  457. data/lib/chef/resource/file.rb +3 -2
  458. data/lib/chef/resource/freebsd_package.rb +4 -3
  459. data/lib/chef/resource/gem_package.rb +1 -1
  460. data/lib/chef/resource/group.rb +33 -30
  461. data/lib/chef/resource/habitat/_habitat_shared.rb +1 -1
  462. data/lib/chef/resource/habitat/habitat_package.rb +84 -82
  463. data/lib/chef/resource/habitat/habitat_sup.rb +98 -97
  464. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +14 -13
  465. data/lib/chef/resource/habitat/habitat_sup_windows.rb +5 -4
  466. data/lib/chef/resource/habitat_config.rb +38 -24
  467. data/lib/chef/resource/habitat_install.rb +22 -22
  468. data/lib/chef/resource/habitat_service.rb +10 -6
  469. data/lib/chef/resource/habitat_user_toml.rb +12 -12
  470. data/lib/chef/resource/helpers/cron_validations.rb +1 -1
  471. data/lib/chef/resource/helpers/path_helpers.rb +52 -0
  472. data/lib/chef/resource/homebrew_cask.rb +1 -1
  473. data/lib/chef/resource/homebrew_package.rb +21 -21
  474. data/lib/chef/resource/homebrew_tap.rb +10 -2
  475. data/lib/chef/resource/homebrew_update.rb +1 -1
  476. data/lib/chef/resource/hostname.rb +14 -11
  477. data/lib/chef/resource/http_request.rb +5 -4
  478. data/lib/chef/resource/ifconfig.rb +36 -35
  479. data/lib/chef/resource/inspec_input.rb +42 -39
  480. data/lib/chef/resource/inspec_waiver.rb +66 -65
  481. data/lib/chef/resource/inspec_waiver_file_entry.rb +28 -27
  482. data/lib/chef/resource/ips_package.rb +4 -3
  483. data/lib/chef/resource/kernel_module.rb +4 -3
  484. data/lib/chef/resource/ksh.rb +3 -2
  485. data/lib/chef/resource/launchd.rb +1 -1
  486. data/lib/chef/resource/link.rb +4 -3
  487. data/lib/chef/resource/locale.rb +11 -10
  488. data/lib/chef/resource/log.rb +3 -1
  489. data/lib/chef/resource/lwrp_base.rb +1 -1
  490. data/lib/chef/resource/macos_pkg.rb +1 -1
  491. data/lib/chef/resource/macos_userdefaults.rb +1 -1
  492. data/lib/chef/resource/macports_package.rb +1 -1
  493. data/lib/chef/resource/mdadm.rb +33 -33
  494. data/lib/chef/resource/mount.rb +7 -5
  495. data/lib/chef/resource/msu_package.rb +2 -2
  496. data/lib/chef/resource/notify_group.rb +3 -2
  497. data/lib/chef/resource/ohai.rb +37 -36
  498. data/lib/chef/resource/ohai_hint.rb +27 -26
  499. data/lib/chef/resource/openbsd_package.rb +4 -3
  500. data/lib/chef/resource/openssl_dhparam.rb +1 -1
  501. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  502. data/lib/chef/resource/openssl_ec_public_key.rb +3 -3
  503. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -2
  504. data/lib/chef/resource/openssl_rsa_public_key.rb +3 -3
  505. data/lib/chef/resource/openssl_x509_certificate.rb +7 -3
  506. data/lib/chef/resource/openssl_x509_crl.rb +16 -16
  507. data/lib/chef/resource/openssl_x509_request.rb +3 -3
  508. data/lib/chef/resource/package.rb +4 -3
  509. data/lib/chef/resource/pacman_package.rb +2 -1
  510. data/lib/chef/resource/paludis_package.rb +3 -2
  511. data/lib/chef/resource/perl.rb +3 -2
  512. data/lib/chef/resource/plist.rb +4 -4
  513. data/lib/chef/resource/portage_package.rb +3 -2
  514. data/lib/chef/resource/powershell_package.rb +1 -1
  515. data/lib/chef/resource/powershell_package_source.rb +12 -12
  516. data/lib/chef/resource/powershell_script.rb +1 -1
  517. data/lib/chef/resource/python.rb +3 -2
  518. data/lib/chef/resource/reboot.rb +3 -2
  519. data/lib/chef/resource/registry_key.rb +78 -83
  520. data/lib/chef/resource/remote_directory.rb +3 -2
  521. data/lib/chef/resource/remote_file.rb +74 -73
  522. data/lib/chef/resource/resource_notification.rb +1 -1
  523. data/lib/chef/resource/rhsm_errata.rb +3 -2
  524. data/lib/chef/resource/rhsm_errata_level.rb +3 -2
  525. data/lib/chef/resource/rhsm_register.rb +14 -5
  526. data/lib/chef/resource/rhsm_repo.rb +5 -5
  527. data/lib/chef/resource/rhsm_subscription.rb +10 -10
  528. data/lib/chef/resource/route.rb +2 -1
  529. data/lib/chef/resource/rpm_package.rb +3 -2
  530. data/lib/chef/resource/ruby.rb +4 -2
  531. data/lib/chef/resource/ruby_block.rb +3 -1
  532. data/lib/chef/resource/scm/_scm.rb +1 -1
  533. data/lib/chef/resource/scm/git.rb +82 -81
  534. data/lib/chef/resource/scm/subversion.rb +12 -11
  535. data/lib/chef/resource/script.rb +4 -2
  536. data/lib/chef/resource/selinux/common_helpers.rb +1 -1
  537. data/lib/chef/resource/selinux/selinux_debian.erb +1 -1
  538. data/lib/chef/resource/selinux/selinux_default.erb +1 -1
  539. data/lib/chef/resource/selinux_boolean.rb +14 -13
  540. data/lib/chef/resource/selinux_fcontext.rb +23 -22
  541. data/lib/chef/resource/selinux_install.rb +20 -19
  542. data/lib/chef/resource/selinux_login.rb +13 -12
  543. data/lib/chef/resource/selinux_module.rb +20 -19
  544. data/lib/chef/resource/selinux_permissive.rb +10 -9
  545. data/lib/chef/resource/selinux_port.rb +17 -16
  546. data/lib/chef/resource/selinux_state.rb +29 -28
  547. data/lib/chef/resource/selinux_user.rb +16 -15
  548. data/lib/chef/resource/service.rb +9 -6
  549. data/lib/chef/resource/smartos_package.rb +4 -3
  550. data/lib/chef/resource/snap_package.rb +32 -23
  551. data/lib/chef/resource/solaris_package.rb +3 -2
  552. data/lib/chef/resource/ssh_known_hosts_entry.rb +13 -12
  553. data/lib/chef/resource/sudo.rb +71 -70
  554. data/lib/chef/resource/swap_file.rb +20 -19
  555. data/lib/chef/resource/sysctl.rb +49 -48
  556. data/lib/chef/resource/systemd_unit.rb +42 -39
  557. data/lib/chef/resource/template.rb +3 -2
  558. data/lib/chef/resource/timezone.rb +23 -22
  559. data/lib/chef/resource/user/aix_user.rb +4 -3
  560. data/lib/chef/resource/user/linux_user.rb +4 -4
  561. data/lib/chef/resource/user/mac_user.rb +5 -4
  562. data/lib/chef/resource/user/pw_user.rb +4 -3
  563. data/lib/chef/resource/user/solaris_user.rb +4 -3
  564. data/lib/chef/resource/user/windows_user.rb +2 -1
  565. data/lib/chef/resource/user.rb +8 -7
  566. data/lib/chef/resource/user_ulimit.rb +25 -24
  567. data/lib/chef/resource/windows_ad_join.rb +23 -23
  568. data/lib/chef/resource/windows_audit_policy.rb +35 -35
  569. data/lib/chef/resource/windows_auto_run.rb +9 -9
  570. data/lib/chef/resource/windows_certificate.rb +21 -21
  571. data/lib/chef/resource/windows_defender.rb +23 -23
  572. data/lib/chef/resource/windows_defender_exclusion.rb +18 -18
  573. data/lib/chef/resource/windows_dfs_folder.rb +1 -1
  574. data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
  575. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  576. data/lib/chef/resource/windows_dns_record.rb +1 -1
  577. data/lib/chef/resource/windows_dns_zone.rb +1 -1
  578. data/lib/chef/resource/windows_env.rb +6 -6
  579. data/lib/chef/resource/windows_feature.rb +43 -43
  580. data/lib/chef/resource/windows_feature_dism.rb +9 -9
  581. data/lib/chef/resource/windows_feature_powershell.rb +21 -21
  582. data/lib/chef/resource/windows_firewall_profile.rb +29 -29
  583. data/lib/chef/resource/windows_firewall_rule.rb +48 -48
  584. data/lib/chef/resource/windows_font.rb +7 -7
  585. data/lib/chef/resource/windows_package.rb +59 -59
  586. data/lib/chef/resource/windows_pagefile.rb +30 -30
  587. data/lib/chef/resource/windows_path.rb +13 -13
  588. data/lib/chef/resource/windows_printer.rb +29 -29
  589. data/lib/chef/resource/windows_printer_port.rb +22 -22
  590. data/lib/chef/resource/windows_script.rb +1 -1
  591. data/lib/chef/resource/windows_security_policy.rb +24 -24
  592. data/lib/chef/resource/windows_service.rb +108 -108
  593. data/lib/chef/resource/windows_share.rb +17 -17
  594. data/lib/chef/resource/windows_shortcut.rb +8 -8
  595. data/lib/chef/resource/windows_task.rb +104 -106
  596. data/lib/chef/resource/windows_uac.rb +15 -15
  597. data/lib/chef/resource/windows_update_settings.rb +27 -27
  598. data/lib/chef/resource/windows_user_privilege.rb +59 -59
  599. data/lib/chef/resource/windows_workgroup.rb +11 -11
  600. data/lib/chef/resource/yum_package.rb +6 -5
  601. data/lib/chef/resource/yum_repository.rb +39 -38
  602. data/lib/chef/resource/zypper_package.rb +3 -2
  603. data/lib/chef/resource/zypper_repository.rb +4 -3
  604. data/lib/chef/resource.rb +11 -3
  605. data/lib/chef/resource_builder.rb +1 -1
  606. data/lib/chef/resource_collection/resource_collection_serialization.rb +1 -1
  607. data/lib/chef/resource_collection/resource_list.rb +1 -1
  608. data/lib/chef/resource_collection/resource_set.rb +10 -4
  609. data/lib/chef/resource_collection.rb +1 -1
  610. data/lib/chef/resource_definition.rb +1 -1
  611. data/lib/chef/resource_definition_list.rb +1 -1
  612. data/lib/chef/resource_inspector.rb +3 -1
  613. data/lib/chef/resource_reporter.rb +2 -1
  614. data/lib/chef/resource_resolver.rb +1 -1
  615. data/lib/chef/resources.rb +2 -2
  616. data/lib/chef/role.rb +1 -1
  617. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  618. data/lib/chef/run_context.rb +2 -2
  619. data/lib/chef/run_list/run_list_expansion.rb +1 -1
  620. data/lib/chef/run_list/run_list_item.rb +5 -5
  621. data/lib/chef/run_list/versioned_recipe_list.rb +1 -1
  622. data/lib/chef/run_list.rb +1 -1
  623. data/lib/chef/run_lock.rb +4 -1
  624. data/lib/chef/run_status.rb +1 -1
  625. data/lib/chef/runner.rb +1 -1
  626. data/lib/chef/scan_access_control.rb +9 -7
  627. data/lib/chef/search/query.rb +1 -1
  628. data/lib/chef/secret_fetcher/akeyless_vault.rb +1 -1
  629. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +1 -1
  630. data/lib/chef/secret_fetcher/base.rb +1 -1
  631. data/lib/chef/secret_fetcher/example.rb +1 -1
  632. data/lib/chef/secret_fetcher/hashi_vault.rb +10 -1
  633. data/lib/chef/secret_fetcher.rb +1 -1
  634. data/lib/chef/server_api.rb +1 -1
  635. data/lib/chef/server_api_versions.rb +1 -1
  636. data/lib/chef/shell/ext.rb +20 -20
  637. data/lib/chef/shell/model_wrapper.rb +1 -1
  638. data/lib/chef/shell/shell_session.rb +2 -2
  639. data/lib/chef/shell.rb +30 -15
  640. data/lib/chef/target_io/dir.rb +12 -0
  641. data/lib/chef/target_io/etc.rb +16 -0
  642. data/lib/chef/target_io/file.rb +12 -0
  643. data/lib/chef/target_io/fileutils.rb +12 -0
  644. data/lib/chef/target_io/http.rb +35 -0
  645. data/lib/chef/target_io/io.rb +12 -0
  646. data/lib/chef/target_io/shadow.rb +44 -0
  647. data/lib/chef/target_io/support.rb +73 -0
  648. data/lib/chef/target_io/train/dir.rb +86 -0
  649. data/lib/chef/target_io/train/etc.rb +108 -0
  650. data/lib/chef/target_io/train/file.rb +219 -0
  651. data/lib/chef/target_io/train/fileutils.rb +201 -0
  652. data/lib/chef/target_io/train/http.rb +117 -0
  653. data/lib/chef/target_io/train/io.rb +13 -0
  654. data/lib/chef/target_io/train/shadow.rb +54 -0
  655. data/lib/chef/target_io/train_compat.rb +7 -0
  656. data/lib/chef/target_io.rb +11 -0
  657. data/lib/chef/train_transport.rb +1 -1
  658. data/lib/chef/user.rb +1 -1
  659. data/lib/chef/user_v1.rb +1 -1
  660. data/lib/chef/util/backup.rb +2 -2
  661. data/lib/chef/util/diff.rb +15 -2
  662. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  663. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  664. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  665. data/lib/chef/util/dsc/resource_store.rb +1 -1
  666. data/lib/chef/util/editor.rb +1 -1
  667. data/lib/chef/util/file_edit.rb +5 -5
  668. data/lib/chef/util/path_helper.rb +1 -1
  669. data/lib/chef/util/powershell/ps_credential.rb +1 -1
  670. data/lib/chef/util/selinux.rb +1 -1
  671. data/lib/chef/util/threaded_job_queue.rb +1 -1
  672. data/lib/chef/util/windows/logon_session.rb +1 -1
  673. data/lib/chef/version.rb +2 -2
  674. data/lib/chef/version_class.rb +1 -1
  675. data/lib/chef/version_constraint.rb +2 -2
  676. data/lib/chef/win32/api/command_line_helper.rb +1 -1
  677. data/lib/chef/win32/api/crypto.rb +1 -1
  678. data/lib/chef/win32/api/error.rb +1 -1
  679. data/lib/chef/win32/api/file.rb +3 -2
  680. data/lib/chef/win32/api/installer.rb +1 -1
  681. data/lib/chef/win32/api/memory.rb +1 -1
  682. data/lib/chef/win32/api/net.rb +1 -1
  683. data/lib/chef/win32/api/process.rb +1 -1
  684. data/lib/chef/win32/api/psapi.rb +1 -1
  685. data/lib/chef/win32/api/registry.rb +1 -1
  686. data/lib/chef/win32/api/security.rb +1 -1
  687. data/lib/chef/win32/api/synchronization.rb +1 -1
  688. data/lib/chef/win32/api/system.rb +1 -1
  689. data/lib/chef/win32/api/unicode.rb +1 -1
  690. data/lib/chef/win32/api.rb +1 -1
  691. data/lib/chef/win32/crypto.rb +1 -1
  692. data/lib/chef/win32/error.rb +3 -2
  693. data/lib/chef/win32/eventlog.rb +1 -1
  694. data/lib/chef/win32/file/info.rb +1 -1
  695. data/lib/chef/win32/file/version_info.rb +1 -1
  696. data/lib/chef/win32/file.rb +1 -1
  697. data/lib/chef/win32/handle.rb +1 -1
  698. data/lib/chef/win32/memory.rb +1 -1
  699. data/lib/chef/win32/mutex.rb +1 -1
  700. data/lib/chef/win32/net.rb +1 -1
  701. data/lib/chef/win32/process.rb +1 -1
  702. data/lib/chef/win32/registry.rb +4 -2
  703. data/lib/chef/win32/security/ace.rb +1 -1
  704. data/lib/chef/win32/security/acl.rb +1 -1
  705. data/lib/chef/win32/security/securable_object.rb +1 -1
  706. data/lib/chef/win32/security/security_descriptor.rb +1 -1
  707. data/lib/chef/win32/security/sid.rb +1 -1
  708. data/lib/chef/win32/security/token.rb +1 -1
  709. data/lib/chef/win32/security.rb +1 -1
  710. data/lib/chef/win32/system.rb +1 -1
  711. data/lib/chef/win32/unicode.rb +1 -1
  712. data/lib/chef/win32/version.rb +2 -3
  713. data/lib/chef/workstation_config_loader.rb +1 -1
  714. data/lib/chef.rb +3 -1
  715. metadata +136 -120
  716. data/lib/chef/monkey_patches/reline-windows.rb +0 -116
  717. data/lib/chef/resource/osx_profile.rb +0 -334
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) Chef Software Inc.
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) Chef Software Inc.
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) Chef Software Inc.
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) Chef Software Inc.
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" # rubocop:disable Lint/Void
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) Chef Software Inc.
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) Chef Software Inc.
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)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
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) Chef Software Inc.
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 / Cookstyle warning
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) Chef Software Inc.
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 :yum_repository do
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) Chef Software Inc.
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) Chef Software Inc.
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");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Daniel DeLeo (<dan@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
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) Chef Software Inc.
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) Chef Software Inc.
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"].each do |rhash|
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
@@ -1,5 +1,5 @@
1
1
  # Author:: Prajakta Purohit (<prajakta@chef.io>)
2
- # Copyright:: Copyright (c) Chef Software Inc.
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:: Copyright 2008-2016, Chef, Inc.
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
- type: new_resource.name, name: id_property)
184
+ type: new_resource.name, name: id_property)
90
185
  end
91
186
  end
92
187
 
93
188
  action_class do
94
- # Override this for postprocessing device-specifics (paging, data conversion)
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
- # Override this for error handling of device-specifics (readable error messages)
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
- # Map part of a JSON (Hash) to resource property via JMESPath or user-supplied function
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
- # Map resource contents into a JSON (Hash) via JMESPath-like syntax or user-supplied function
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
- endpoint = current_resource.class.rest_api_endpoint || ""
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
- "#{endpoint}#{template.expand(property_map)}"
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
- property: property,
204
- properties: dependent_properties.join(", :"),
205
- resource_name: current_resource.to_s)
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) Chef Software Inc.
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");