chef 16.1.16-universal-mingw32 → 16.3.45-universal-mingw32

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 (364) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +3 -16
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/lib/chef/application.rb +12 -0
  8. data/lib/chef/application/apply.rb +2 -1
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/windows_service_manager.rb +1 -1
  12. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  13. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +1 -1
  21. data/lib/chef/client.rb +3 -3
  22. data/lib/chef/cookbook/chefignore.rb +1 -1
  23. data/lib/chef/cookbook/metadata.rb +1 -1
  24. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  25. data/lib/chef/cookbook/syntax_check.rb +1 -2
  26. data/lib/chef/cookbook_loader.rb +15 -29
  27. data/lib/chef/cookbook_version.rb +2 -2
  28. data/lib/chef/data_bag.rb +5 -6
  29. data/lib/chef/deprecated.rb +12 -0
  30. data/lib/chef/digester.rb +3 -2
  31. data/lib/chef/dsl/platform_introspection.rb +2 -0
  32. data/lib/chef/environment.rb +1 -2
  33. data/lib/chef/exceptions.rb +3 -0
  34. data/lib/chef/file_access_control.rb +1 -1
  35. data/lib/chef/file_access_control/windows.rb +2 -2
  36. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  38. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +27 -13
  41. data/lib/chef/http/authenticator.rb +3 -1
  42. data/lib/chef/http/http_request.rb +1 -1
  43. data/lib/chef/http/json_output.rb +1 -1
  44. data/lib/chef/http/ssl_policies.rb +18 -0
  45. data/lib/chef/knife.rb +5 -5
  46. data/lib/chef/knife/bootstrap.rb +19 -19
  47. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  48. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  49. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  50. data/lib/chef/knife/config_get.rb +2 -1
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/config_use_profile.rb +15 -5
  53. data/lib/chef/knife/configure.rb +1 -1
  54. data/lib/chef/knife/cookbook_delete.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +6 -14
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +1 -0
  60. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  61. data/lib/chef/knife/core/ui.rb +8 -2
  62. data/lib/chef/knife/core/windows_bootstrap_context.rb +2 -3
  63. data/lib/chef/knife/data_bag_create.rb +1 -1
  64. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  65. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  68. data/lib/chef/knife/ssh.rb +6 -2
  69. data/lib/chef/knife/supermarket_share.rb +1 -1
  70. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  71. data/lib/chef/log.rb +8 -3
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +27 -5
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/securable.rb +2 -2
  77. data/lib/chef/mixin/shell_out.rb +4 -188
  78. data/lib/chef/mixin/template.rb +1 -0
  79. data/lib/chef/mixin/which.rb +6 -3
  80. data/lib/chef/mixins.rb +1 -0
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node_map.rb +21 -18
  83. data/lib/chef/platform/service_helpers.rb +31 -28
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/provider/batch.rb +3 -10
  86. data/lib/chef/provider/cron.rb +2 -14
  87. data/lib/chef/provider/execute.rb +2 -1
  88. data/lib/chef/provider/git.rb +12 -4
  89. data/lib/chef/provider/group/dscl.rb +2 -2
  90. data/lib/chef/provider/group/windows.rb +1 -1
  91. data/lib/chef/provider/ifconfig.rb +7 -7
  92. data/lib/chef/provider/mount/aix.rb +1 -1
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/mount/windows.rb +2 -2
  95. data/lib/chef/provider/noop.rb +1 -1
  96. data/lib/chef/provider/package/openbsd.rb +1 -1
  97. data/lib/chef/provider/package/portage.rb +2 -2
  98. data/lib/chef/provider/package/powershell.rb +6 -2
  99. data/lib/chef/provider/package/rubygems.rb +2 -2
  100. data/lib/chef/provider/package/snap.rb +97 -29
  101. data/lib/chef/provider/package/windows.rb +9 -4
  102. data/lib/chef/provider/package/windows/msi.rb +3 -3
  103. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  104. data/lib/chef/provider/package/zypper.rb +0 -1
  105. data/lib/chef/provider/powershell_script.rb +10 -14
  106. data/lib/chef/provider/remote_file/http.rb +4 -1
  107. data/lib/chef/provider/script.rb +4 -75
  108. data/lib/chef/provider/service.rb +2 -2
  109. data/lib/chef/provider/service/arch.rb +1 -1
  110. data/lib/chef/provider/service/debian.rb +2 -2
  111. data/lib/chef/provider/service/openbsd.rb +4 -4
  112. data/lib/chef/provider/service/redhat.rb +1 -1
  113. data/lib/chef/provider/service/windows.rb +1 -1
  114. data/lib/chef/provider/subversion.rb +2 -2
  115. data/lib/chef/provider/user/dscl.rb +4 -4
  116. data/lib/chef/provider/user/linux.rb +3 -3
  117. data/lib/chef/provider/user/mac.rb +5 -5
  118. data/lib/chef/provider/windows_script.rb +87 -25
  119. data/lib/chef/provider/yum_repository.rb +1 -1
  120. data/lib/chef/provider/zypper_repository.rb +31 -11
  121. data/lib/chef/resource.rb +24 -11
  122. data/lib/chef/resource/alternatives.rb +1 -1
  123. data/lib/chef/resource/apt_package.rb +1 -1
  124. data/lib/chef/resource/archive_file.rb +28 -8
  125. data/lib/chef/resource/bash.rb +0 -1
  126. data/lib/chef/resource/batch.rb +4 -2
  127. data/lib/chef/resource/build_essential.rb +2 -2
  128. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  129. data/lib/chef/resource/chef_gem.rb +57 -21
  130. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  131. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  132. data/lib/chef/resource/cron/cron.rb +46 -0
  133. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  134. data/lib/chef/resource/cron_access.rb +13 -5
  135. data/lib/chef/resource/csh.rb +0 -1
  136. data/lib/chef/resource/dmg_package.rb +2 -2
  137. data/lib/chef/resource/execute.rb +479 -9
  138. data/lib/chef/resource/file.rb +1 -1
  139. data/lib/chef/resource/freebsd_package.rb +1 -1
  140. data/lib/chef/resource/gem_package.rb +35 -2
  141. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  142. data/lib/chef/resource/homebrew_package.rb +30 -1
  143. data/lib/chef/resource/homebrew_update.rb +107 -0
  144. data/lib/chef/resource/hostname.rb +23 -36
  145. data/lib/chef/resource/kernel_module.rb +14 -1
  146. data/lib/chef/resource/launchd.rb +1 -1
  147. data/lib/chef/resource/lwrp_base.rb +1 -0
  148. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  149. data/lib/chef/resource/mount.rb +1 -1
  150. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  151. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  152. data/lib/chef/resource/perl.rb +0 -1
  153. data/lib/chef/resource/plist.rb +23 -4
  154. data/lib/chef/resource/powershell_script.rb +4 -2
  155. data/lib/chef/resource/python.rb +0 -1
  156. data/lib/chef/resource/remote_file.rb +26 -10
  157. data/lib/chef/resource/ruby.rb +0 -1
  158. data/lib/chef/resource/service.rb +2 -2
  159. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  160. data/lib/chef/resource/sudo.rb +30 -3
  161. data/lib/chef/resource/swap_file.rb +17 -0
  162. data/lib/chef/resource/template.rb +1 -1
  163. data/lib/chef/resource/timezone.rb +15 -0
  164. data/lib/chef/resource/user_ulimit.rb +1 -1
  165. data/lib/chef/resource/windows_ad_join.rb +30 -1
  166. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  167. data/lib/chef/resource/windows_auto_run.rb +11 -0
  168. data/lib/chef/resource/windows_certificate.rb +26 -0
  169. data/lib/chef/resource/windows_dns_record.rb +17 -0
  170. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  171. data/lib/chef/resource/windows_font.rb +3 -3
  172. data/lib/chef/resource/windows_package.rb +1 -1
  173. data/lib/chef/resource/windows_pagefile.rb +1 -1
  174. data/lib/chef/resource/windows_script.rb +2 -16
  175. data/lib/chef/resource/windows_security_policy.rb +67 -36
  176. data/lib/chef/resource/windows_shortcut.rb +1 -2
  177. data/lib/chef/resource/windows_task.rb +4 -4
  178. data/lib/chef/resource/windows_user_privilege.rb +30 -7
  179. data/lib/chef/resource/yum_repository.rb +9 -9
  180. data/lib/chef/resource_inspector.rb +7 -1
  181. data/lib/chef/resources.rb +5 -2
  182. data/lib/chef/role.rb +1 -2
  183. data/lib/chef/search/query.rb +1 -1
  184. data/lib/chef/server_api_versions.rb +4 -0
  185. data/lib/chef/shell/shell_session.rb +2 -0
  186. data/lib/chef/util/diff.rb +2 -3
  187. data/lib/chef/util/windows/net_user.rb +1 -1
  188. data/lib/chef/util/windows/volume.rb +1 -1
  189. data/lib/chef/version.rb +2 -2
  190. data/lib/chef/win32/file.rb +1 -1
  191. data/lib/chef/win32/registry.rb +3 -4
  192. data/lib/chef/win32/security.rb +1 -1
  193. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  194. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  195. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  196. data/spec/functional/knife/configure_spec.rb +1 -1
  197. data/spec/functional/knife/ssh_spec.rb +5 -16
  198. data/spec/functional/resource/aix_service_spec.rb +9 -2
  199. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  200. data/spec/functional/resource/apt_package_spec.rb +0 -1
  201. data/spec/functional/resource/bash_spec.rb +3 -2
  202. data/spec/functional/resource/bff_spec.rb +1 -1
  203. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  204. data/spec/functional/resource/cron_spec.rb +20 -2
  205. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  206. data/spec/functional/resource/execute_spec.rb +1 -1
  207. data/spec/functional/resource/git_spec.rb +23 -1
  208. data/spec/functional/resource/group_spec.rb +15 -3
  209. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  210. data/spec/functional/resource/insserv_spec.rb +3 -3
  211. data/spec/functional/resource/link_spec.rb +2 -5
  212. data/spec/functional/resource/mount_spec.rb +9 -1
  213. data/spec/functional/resource/msu_package_spec.rb +9 -3
  214. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  215. data/spec/functional/resource/remote_file_spec.rb +9 -15
  216. data/spec/functional/resource/rpm_spec.rb +1 -1
  217. data/spec/functional/resource/timezone_spec.rb +2 -0
  218. data/spec/functional/resource/windows_package_spec.rb +0 -1
  219. data/spec/functional/resource/windows_path_spec.rb +4 -0
  220. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  221. data/spec/functional/resource/windows_service_spec.rb +4 -0
  222. data/spec/functional/resource/windows_task_spec.rb +12 -11
  223. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  224. data/spec/functional/resource/yum_package_spec.rb +4 -1
  225. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  226. data/spec/functional/run_lock_spec.rb +2 -1
  227. data/spec/functional/shell_spec.rb +5 -6
  228. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  229. data/spec/functional/version_spec.rb +1 -1
  230. data/spec/functional/win32/crypto_spec.rb +1 -1
  231. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  232. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  233. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  234. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  235. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  236. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  237. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  238. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  239. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  240. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  241. data/spec/integration/recipes/notifies_spec.rb +1 -1
  242. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  243. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  244. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  245. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  246. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  247. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  248. data/spec/scripts/ssl-serve.rb +1 -1
  249. data/spec/spec_helper.rb +10 -4
  250. data/spec/support/chef_helpers.rb +1 -20
  251. data/spec/support/platform_helpers.rb +1 -3
  252. data/spec/support/platforms/win32/spec_service.rb +1 -1
  253. data/spec/support/shared/functional/execute_resource.rb +1 -1
  254. data/spec/support/shared/functional/file_resource.rb +0 -1
  255. data/spec/support/shared/functional/securable_resource.rb +1 -2
  256. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  257. data/spec/support/shared/functional/windows_script.rb +2 -2
  258. data/spec/support/shared/integration/knife_support.rb +2 -9
  259. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  260. data/spec/support/shared/unit/execute_resource.rb +1 -1
  261. data/spec/support/shared/unit/provider/file.rb +12 -8
  262. data/spec/unit/application/solo_spec.rb +4 -2
  263. data/spec/unit/application_spec.rb +11 -2
  264. data/spec/unit/chef_fs/config_spec.rb +2 -2
  265. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  266. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  267. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  268. data/spec/unit/client_spec.rb +4 -1
  269. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  270. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  271. data/spec/unit/data_bag_spec.rb +6 -3
  272. data/spec/unit/data_collector_spec.rb +1 -1
  273. data/spec/unit/decorator_spec.rb +23 -23
  274. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  275. data/spec/unit/environment_spec.rb +5 -1
  276. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  277. data/spec/unit/guard_interpreter_spec.rb +1 -1
  278. data/spec/unit/http/api_versions_spec.rb +20 -2
  279. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  280. data/spec/unit/json_compat_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  282. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  283. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  284. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  285. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  286. data/spec/unit/log/syslog_spec.rb +6 -10
  287. data/spec/unit/log/winevt_spec.rb +21 -13
  288. data/spec/unit/lwrp_spec.rb +9 -6
  289. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  290. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  291. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  292. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  293. data/spec/unit/mixin/securable_spec.rb +0 -1
  294. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  295. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  296. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  297. data/spec/unit/mixin/uris_spec.rb +1 -1
  298. data/spec/unit/mixin/user_context_spec.rb +1 -9
  299. data/spec/unit/mixin/which.rb +8 -0
  300. data/spec/unit/node_spec.rb +98 -11
  301. data/spec/unit/property_spec.rb +6 -6
  302. data/spec/unit/provider/batch_spec.rb +130 -0
  303. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  304. data/spec/unit/provider/cron_spec.rb +9 -49
  305. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  306. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  307. data/spec/unit/provider/execute_spec.rb +1 -8
  308. data/spec/unit/provider/git_spec.rb +3 -3
  309. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  310. data/spec/unit/provider/mdadm_spec.rb +1 -3
  311. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  312. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  313. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  314. data/spec/unit/provider/package/powershell_spec.rb +95 -86
  315. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  316. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  317. data/spec/unit/provider/package/snap_spec.rb +1 -1
  318. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  319. data/spec/unit/provider/package/windows_spec.rb +30 -53
  320. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  321. data/spec/unit/provider/script_spec.rb +20 -110
  322. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  323. data/spec/unit/provider/service/windows_spec.rb +2 -6
  324. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  325. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  326. data/spec/unit/provider/windows_env_spec.rb +5 -4
  327. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  328. data/spec/unit/provider_spec.rb +1 -0
  329. data/spec/unit/resource/archive_file_spec.rb +11 -2
  330. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  331. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  332. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  333. data/spec/unit/resource/cron_spec.rb +2 -2
  334. data/spec/unit/resource/execute_spec.rb +10 -0
  335. data/spec/unit/resource/file/verification_spec.rb +2 -1
  336. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  337. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  338. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  339. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  340. data/spec/unit/resource/timezone_spec.rb +1 -1
  341. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  342. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  343. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  344. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  345. data/spec/unit/resource/windows_package_spec.rb +1 -0
  346. data/spec/unit/resource/windows_task_spec.rb +1 -1
  347. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  348. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  349. data/spec/unit/resource_reporter_spec.rb +1 -1
  350. data/spec/unit/resource_spec.rb +84 -1
  351. data/spec/unit/role_spec.rb +23 -21
  352. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  353. data/spec/unit/run_lock_spec.rb +1 -1
  354. data/spec/unit/scan_access_control_spec.rb +1 -1
  355. data/spec/unit/server_api_spec.rb +43 -16
  356. data/spec/unit/util/backup_spec.rb +1 -1
  357. data/spec/unit/util/diff_spec.rb +1 -15
  358. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  359. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  360. data/spec/unit/util/selinux_spec.rb +2 -1
  361. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  362. data/spec/unit/win32/security_spec.rb +4 -3
  363. metadata +68 -40
  364. data/lib/chef/resource/cron.rb +0 -157
@@ -50,7 +50,7 @@ class Chef
50
50
  ignore_globs = []
51
51
  if @ignore_file && readable_file_or_symlink?(@ignore_file)
52
52
  File.foreach(@ignore_file) do |line|
53
- ignore_globs << line.strip unless line =~ COMMENTS_AND_WHITESPACE
53
+ ignore_globs << line.strip unless COMMENTS_AND_WHITESPACE.match?(line)
54
54
  end
55
55
  else
56
56
  Chef::Log.debug("No chefignore file found. No files will be ignored!")
@@ -391,7 +391,7 @@ class Chef
391
391
  def recipes_from_cookbook_version(cookbook)
392
392
  cookbook.fully_qualified_recipe_names.map do |recipe_name|
393
393
  unqualified_name =
394
- if recipe_name =~ /::default$/
394
+ if /::default$/.match?(recipe_name)
395
395
  name.to_s
396
396
  else
397
397
  recipe_name
@@ -72,10 +72,8 @@ class Chef
72
72
  Chef::Log.trace("Current checksum: #{current_checksum}; manifest checksum: #{found_manifest_record["checksum"]})")
73
73
  end
74
74
 
75
- full_path_cache_filename = Chef::FileCache.load(cache_filename, false)
76
-
77
75
  # return the filename, not the contents (second argument= false)
78
- full_path_cache_filename
76
+ Chef::FileCache.load(cache_filename, false)
79
77
  end
80
78
 
81
79
  def validate_cached_copy(cache_filename)
@@ -120,8 +120,7 @@ class Chef
120
120
  path = Chef::Util::PathHelper.escape_glob_dir(cookbook_path)
121
121
  files = Dir[File.join(path, "**", "*.rb")]
122
122
  files = remove_ignored_files(files)
123
- files = remove_uninteresting_ruby_files(files)
124
- files
123
+ remove_uninteresting_ruby_files(files)
125
124
  end
126
125
 
127
126
  def untested_ruby_files
@@ -44,14 +44,11 @@ class Chef
44
44
  # @return [Array<String>] the array of repo paths containing cookbook dirs
45
45
  attr_reader :repo_paths
46
46
 
47
- attr_accessor :tmp_working_dir_path
48
-
49
47
  # XXX: this is highly questionable combined with the Hash-style each method
50
48
  include Enumerable
51
49
 
52
50
  # @param repo_paths [Array<String>] the array of repo paths containing cookbook dirs
53
51
  def initialize(*repo_paths)
54
- @tmp_working_dir_path = nil
55
52
  @repo_paths = repo_paths.flatten.compact.map { |p| File.expand_path(p) }
56
53
  raise ArgumentError, "You must specify at least one cookbook repo path" if @repo_paths.empty?
57
54
  end
@@ -140,27 +137,23 @@ class Chef
140
137
 
141
138
  # This method creates tmp directory and copies all cookbooks into it and creates cookbook loader object which points to tmp directory
142
139
  def self.copy_to_tmp_dir_from_array(cookbooks)
143
- tmp_cookbook_file = Tempfile.new("tmp_working_dir_path")
144
- tmp_cookbook_file.close
145
- @tmp_working_dir_path = tmp_cookbook_file.path
146
- File.unlink(@tmp_working_dir_path)
147
- FileUtils.mkdir_p(@tmp_working_dir_path)
148
- cookbooks.each do |cookbook|
149
- checksums_to_on_disk_paths = cookbook.checksums
150
- cookbook.each_file do |manifest_record|
151
- path_in_cookbook = manifest_record[:path]
152
- on_disk_path = checksums_to_on_disk_paths[manifest_record[:checksum]]
153
- dest = File.join(@tmp_working_dir_path, cookbook.name.to_s, path_in_cookbook)
154
- FileUtils.mkdir_p(File.dirname(dest))
155
- FileUtils.cp_r(on_disk_path, dest)
140
+ Dir.mktmpdir do |tmp_dir|
141
+ cookbooks.each do |cookbook|
142
+ checksums_to_on_disk_paths = cookbook.checksums
143
+ cookbook.each_file do |manifest_record|
144
+ path_in_cookbook = manifest_record[:path]
145
+ on_disk_path = checksums_to_on_disk_paths[manifest_record[:checksum]]
146
+ dest = File.join(tmp_dir, cookbook.name.to_s, path_in_cookbook)
147
+ FileUtils.mkdir_p(File.dirname(dest))
148
+ FileUtils.cp_r(on_disk_path, dest)
149
+ end
156
150
  end
151
+ tmp_cookbook_loader ||= begin
152
+ Chef::Cookbook::FileVendor.fetch_from_disk(tmp_dir)
153
+ CookbookLoader.new(tmp_dir)
154
+ end
155
+ yield tmp_cookbook_loader
157
156
  end
158
- tmp_cookbook_loader ||= begin
159
- Chef::Cookbook::FileVendor.fetch_from_disk(@tmp_working_dir_path)
160
- CookbookLoader.new(@tmp_working_dir_path)
161
- end
162
- tmp_cookbook_loader.tmp_working_dir_path = @tmp_working_dir_path
163
- tmp_cookbook_loader
164
157
  end
165
158
 
166
159
  # generates metadata.json adds it in the manifest
@@ -181,13 +174,6 @@ class Chef
181
174
  end
182
175
  end
183
176
 
184
- # removes the tmp_dir_path
185
- def unlink!
186
- raise "Invalid directory path." if @tmp_working_dir_path.nil?
187
-
188
- FileUtils.rm_rf(@tmp_working_dir_path)
189
- end
190
-
191
177
  alias :cookbooks :values
192
178
 
193
179
  private
@@ -392,7 +392,7 @@ class Chef
392
392
  platform, version = Chef::Platform.find_platform_and_version(node)
393
393
  rescue ArgumentError => e
394
394
  # Skip platform/version if they were not found by find_platform_and_version
395
- if e.message =~ /Cannot find a (?:platform|version)/
395
+ if /Cannot find a (?:platform|version)/.match?(e.message)
396
396
  platform = "/unknown_platform/"
397
397
  version = "/unknown_platform_version/"
398
398
  else
@@ -527,7 +527,7 @@ class Chef
527
527
  cb["version"]
528
528
  end
529
529
  rescue Net::HTTPClientException => e
530
- if e.to_s =~ /^404/
530
+ if /^404/.match?(e.to_s)
531
531
  Chef::Log.error("Cannot find a cookbook named #{cookbook_name}")
532
532
  nil
533
533
  else
@@ -36,10 +36,10 @@ class Chef
36
36
  RESERVED_NAMES = /^(node|role|environment|client)$/.freeze
37
37
 
38
38
  def self.validate_name!(name)
39
- unless name =~ VALID_NAME
39
+ unless VALID_NAME.match?(name)
40
40
  raise Exceptions::InvalidDataBagName, "DataBags must have a name matching #{VALID_NAME.inspect}, you gave #{name.inspect}"
41
41
  end
42
- if name =~ RESERVED_NAMES
42
+ if RESERVED_NAMES.match?(name)
43
43
  raise Exceptions::InvalidDataBagName, "DataBags may not have a name matching #{RESERVED_NAMES.inspect}, you gave #{name.inspect}"
44
44
  end
45
45
  end
@@ -59,12 +59,11 @@ class Chef
59
59
  end
60
60
 
61
61
  def to_h
62
- result = {
62
+ {
63
63
  "name" => @name,
64
64
  "json_class" => self.class.name,
65
65
  "chef_type" => "data_bag",
66
66
  }
67
- result
68
67
  end
69
68
 
70
69
  alias_method :to_hash, :to_h
@@ -94,7 +93,7 @@ class Chef
94
93
  names = []
95
94
  paths.each do |path|
96
95
  unless File.directory?(path)
97
- raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
96
+ raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' not found. Please create this directory."
98
97
  end
99
98
 
100
99
  names += Dir.glob(File.join(
@@ -122,7 +121,7 @@ class Chef
122
121
  data_bag = {}
123
122
  paths.each do |path|
124
123
  unless File.directory?(path)
125
- raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' is invalid"
124
+ raise Chef::Exceptions::InvalidDataBagPath, "Data bag path '#{path}' not found. Please create this directory."
126
125
  end
127
126
 
128
127
  Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(path, name.to_s), "*.json")).inject({}) do |bag, f|
@@ -237,6 +237,18 @@ class Chef
237
237
  target 29
238
238
  end
239
239
 
240
+ class ArchiveFileIntegerFileMode < Base
241
+ target 30
242
+ end
243
+
244
+ class ResourceNameWithoutProvides < Base
245
+ target 31
246
+ end
247
+
248
+ class AttributeBlacklistConfiguration < Base
249
+ target 32
250
+ end
251
+
240
252
  class Generic < Base
241
253
  def url
242
254
  "https://docs.chef.io/chef_deprecations_client/"
@@ -19,6 +19,7 @@
19
19
  #
20
20
 
21
21
  require "openssl" unless defined?(OpenSSL)
22
+ require "digest" unless defined?(Digest)
22
23
  require "singleton" unless defined?(Singleton)
23
24
 
24
25
  class Chef
@@ -50,11 +51,11 @@ class Chef
50
51
  end
51
52
 
52
53
  def generate_md5_checksum_for_file(file)
53
- checksum_file(file, OpenSSL::Digest.new("MD5"))
54
+ checksum_file(file, ::Digest::MD5.new)
54
55
  end
55
56
 
56
57
  def generate_md5_checksum(io)
57
- checksum_io(io, OpenSSL::Digest.new("MD5"))
58
+ checksum_io(io, ::Digest::MD5.new)
58
59
  end
59
60
 
60
61
  private
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef-utils" unless defined?(ChefUtils::CANARY)
20
+ require "chef/mixin/chef_utils_wiring" unless defined?(Chef::Mixin::ChefUtilsWiring)
20
21
 
21
22
  class Chef
22
23
  module DSL
@@ -25,6 +26,7 @@ class Chef
25
26
  # #value_for_platform.
26
27
  module PlatformIntrospection
27
28
  include ChefUtils
29
+ include Chef::Mixin::ChefUtilsWiring
28
30
 
29
31
  # Implementation class for determining platform dependent values
30
32
  class PlatformDependentValue
@@ -119,7 +119,7 @@ class Chef
119
119
  end
120
120
 
121
121
  def to_h
122
- result = {
122
+ {
123
123
  "name" => @name,
124
124
  "description" => @description,
125
125
  "cookbook_versions" => @cookbook_versions,
@@ -128,7 +128,6 @@ class Chef
128
128
  "default_attributes" => @default_attributes,
129
129
  "override_attributes" => @override_attributes,
130
130
  }
131
- result
132
131
  end
133
132
 
134
133
  alias_method :to_hash, :to_h
@@ -198,6 +198,7 @@ class Chef
198
198
  class MetadataNotFound < StandardError
199
199
  attr_reader :install_path
200
200
  attr_reader :cookbook_name
201
+
201
202
  def initialize(install_path, cookbook_name)
202
203
  @install_path = install_path
203
204
  @cookbook_name = cookbook_name
@@ -448,6 +449,7 @@ class Chef
448
449
  # to correctly populate the backtrace with the wrapped backtraces.
449
450
  class RunFailedWrappingError < RuntimeError
450
451
  attr_reader :wrapped_errors
452
+
451
453
  def initialize(*errors)
452
454
  errors = errors.select { |e| !e.nil? }
453
455
  output = "Found #{errors.size} errors, they are stored in the backtrace"
@@ -488,6 +490,7 @@ class Chef
488
490
 
489
491
  class MultipleDscResourcesFound < RuntimeError
490
492
  attr_reader :resources_found
493
+
491
494
  def initialize(resources_found)
492
495
  @resources_found = resources_found
493
496
  matches_info = @resources_found.each do |r|
@@ -26,7 +26,7 @@ class Chef
26
26
  # the values specified by a value object, usually a Chef::Resource.
27
27
  class FileAccessControl
28
28
 
29
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
29
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
30
30
  require_relative "file_access_control/windows"
31
31
  include FileAccessControl::Windows
32
32
  else
@@ -96,7 +96,7 @@ class Chef
96
96
  self_ace.mask = securable_object.predict_rights_mask(target_ace.mask)
97
97
  new_target_acl << self_ace
98
98
  end
99
- # As there is no inheritence needed in case of WRITE permissions.
99
+ # As there is no inheritance needed in case of WRITE permissions.
100
100
  if target_ace.mask != Chef::ReservedNames::Win32::API::Security::WRITE && target_ace.flags & (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE) != 0
101
101
  children_ace = target_ace.dup
102
102
  children_ace.flags |= INHERIT_ONLY_ACE
@@ -242,7 +242,7 @@ class Chef
242
242
  flags = 0
243
243
 
244
244
  #
245
- # Configure child inheritence only if the resource is some
245
+ # Configure child inheritance only if the resource is some
246
246
  # type of a directory.
247
247
  #
248
248
  if resource.is_a? Chef::Resource::Directory
@@ -51,7 +51,7 @@ class Chef
51
51
  # in the case where i'm running chef-solo on my homedir as myself and some root-shell
52
52
  # work has caused dotfiles of mine to change to root-owned, i'm fine with this not being
53
53
  # exceptional, and i think most use cases will consider this to not be exceptional, and
54
- # the right thing is to fix the ownership of the file to the user running the commmand
54
+ # the right thing is to fix the ownership of the file to the user running the command
55
55
  # (which requires write perms to the directory, or mv will throw an exception)
56
56
  begin
57
57
  ::File.chown(uid, nil, src)
@@ -41,7 +41,7 @@ class Chef
41
41
 
42
42
  if found_error_in_cookbooks?
43
43
  traceback = filtered_bt.map { |line| " #{line}" }.join("\n")
44
- error_description.section("Cookbook Trace:", traceback)
44
+ error_description.section("Cookbook Trace: (most recent call first)", traceback)
45
45
  error_description.section("Relevant File Content:", context)
46
46
  end
47
47
 
@@ -37,7 +37,7 @@ class Chef
37
37
  error_description.section(exception.class.name, exception.message)
38
38
 
39
39
  unless filtered_bt.empty?
40
- error_description.section("Cookbook Trace:", filtered_bt.join("\n"))
40
+ error_description.section("Cookbook Trace: (most recent call first)", filtered_bt.join("\n"))
41
41
  end
42
42
 
43
43
  unless dynamic_resource?
@@ -79,8 +79,8 @@ class Chef
79
79
  loop do
80
80
 
81
81
  # low rent parser. try to gracefully handle nested blocks in resources
82
- nesting += 1 if lines[current_line] =~ /[\s]+do[\s]*/
83
- nesting -= 1 if lines[current_line] =~ /end[\s]*$/
82
+ nesting += 1 if /[\s]+do[\s]*/.match?(lines[current_line])
83
+ nesting -= 1 if /end[\s]*$/.match?(lines[current_line])
84
84
 
85
85
  relevant_lines << format_line(current_line, lines[current_line])
86
86
 
@@ -240,6 +240,8 @@ class Chef
240
240
  # This ensures that all handlers get a chance to run even if one fails.
241
241
  # This method should not be overridden by subclasses unless you know what
242
242
  # you're doing.
243
+ #
244
+ # @api private
243
245
  def run_report_safely(run_status)
244
246
  run_report_unsafe(run_status)
245
247
  rescue Exception => e
@@ -52,13 +52,12 @@ class Chef
52
52
 
53
53
  def handle_chunk(next_chunk)
54
54
  # stream handlers handle responses so must be applied in reverse order
55
- # (same as #apply_stream_complete_middleware or #apply_response_midddleware)
55
+ # (same as #apply_stream_complete_middleware or #apply_response_middleware)
56
56
  @stream_handlers.reverse.inject(next_chunk) do |chunk, handler|
57
57
  Chef::Log.trace("Chef::HTTP::StreamHandler calling #{handler.class}#handle_chunk")
58
58
  handler.handle_chunk(chunk)
59
59
  end
60
60
  end
61
-
62
61
  end
63
62
 
64
63
  def self.middlewares
@@ -155,7 +154,7 @@ class Chef
155
154
  rescue Net::HTTPClientException => e
156
155
  http_attempts += 1
157
156
  response = e.response
158
- if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
157
+ if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
159
158
  Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
160
159
  retry
161
160
  else
@@ -194,7 +193,7 @@ class Chef
194
193
  rescue Net::HTTPClientException => e
195
194
  http_attempts += 1
196
195
  response = e.response
197
- if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
196
+ if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
198
197
  Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
199
198
  retry
200
199
  else
@@ -250,7 +249,7 @@ class Chef
250
249
  rescue Net::HTTPClientException => e
251
250
  http_attempts += 1
252
251
  response = e.response
253
- if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
252
+ if response.is_a?(Net::HTTPNotAcceptable) && version_retries - http_attempts >= 0
254
253
  Chef::Log.trace("Negotiating protocol version with #{url}, retry #{http_attempts}/#{version_retries}")
255
254
  retry
256
255
  else
@@ -291,6 +290,21 @@ class Chef
291
290
 
292
291
  private
293
292
 
293
+ # @api private
294
+ def ssl_policy
295
+ return Chef::HTTP::APISSLPolicy unless @options[:ssl_verify_mode]
296
+
297
+ case @options[:ssl_verify_mode]
298
+ when :verify_none
299
+ Chef::HTTP::VerifyNoneSSLPolicy
300
+ when :verify_peer
301
+ Chef::HTTP::VerifyPeerSSLPolicy
302
+ else
303
+ Chef::Log.error("Chef::HTTP was passed an ssl_verify_mode of #{@options[:ssl_verify_mode]} which is unsupported. Falling back to the API policy")
304
+ Chef::HTTP::APISSLPolicy
305
+ end
306
+ end
307
+
294
308
  # @api private
295
309
  def build_http_client(base_url)
296
310
  if chef_zero_uri?(base_url)
@@ -304,7 +318,7 @@ class Chef
304
318
 
305
319
  SocketlessChefZeroClient.new(base_url)
306
320
  else
307
- BasicClient.new(base_url, ssl_policy: Chef::HTTP::APISSLPolicy, keepalives: keepalives)
321
+ BasicClient.new(base_url, ssl_policy: ssl_policy, keepalives: keepalives)
308
322
  end
309
323
  end
310
324
 
@@ -312,7 +326,7 @@ class Chef
312
326
  def create_url(path)
313
327
  return path if path.is_a?(URI)
314
328
 
315
- if path =~ %r{^(http|https|chefzero)://}i
329
+ if %r{^(http|https|chefzero)://}i.match?(path)
316
330
  URI.parse(path)
317
331
  elsif path.nil? || path.empty?
318
332
  URI.parse(@url)
@@ -414,7 +428,7 @@ class Chef
414
428
  response, request, return_value = yield
415
429
  # handle HTTP 50X Error
416
430
  if response.is_a?(Net::HTTPServerError) && !Chef::Config.local_mode
417
- if http_retry_count - http_attempts + 1 > 0
431
+ if http_retry_count - http_attempts >= 0
418
432
  sleep_time = 1 + (2**http_attempts) + rand(2**http_attempts)
419
433
  Chef::Log.error("Server returned error #{response.code} for #{url}, retrying #{http_attempts}/#{http_retry_count} in #{sleep_time}s")
420
434
  sleep(sleep_time)
@@ -424,7 +438,7 @@ class Chef
424
438
  return [response, request, return_value]
425
439
  end
426
440
  rescue SocketError, Errno::ETIMEDOUT, Errno::ECONNRESET => e
427
- if http_retry_count - http_attempts + 1 > 0
441
+ if http_retry_count - http_attempts >= 0
428
442
  Chef::Log.error("Error connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
429
443
  sleep(http_retry_delay)
430
444
  retry
@@ -432,21 +446,21 @@ class Chef
432
446
  e.message.replace "Error connecting to #{url} - #{e.message}"
433
447
  raise e
434
448
  rescue Errno::ECONNREFUSED
435
- if http_retry_count - http_attempts + 1 > 0
449
+ if http_retry_count - http_attempts >= 0
436
450
  Chef::Log.error("Connection refused connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
437
451
  sleep(http_retry_delay)
438
452
  retry
439
453
  end
440
454
  raise Errno::ECONNREFUSED, "Connection refused connecting to #{url}, giving up"
441
455
  rescue Timeout::Error
442
- if http_retry_count - http_attempts + 1 > 0
456
+ if http_retry_count - http_attempts >= 0
443
457
  Chef::Log.error("Timeout connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
444
458
  sleep(http_retry_delay)
445
459
  retry
446
460
  end
447
461
  raise Timeout::Error, "Timeout connecting to #{url}, giving up"
448
462
  rescue OpenSSL::SSL::SSLError => e
449
- if (http_retry_count - http_attempts + 1 > 0) && !e.message.include?("certificate verify failed")
463
+ if (http_retry_count - http_attempts >= 0) && !e.message.include?("certificate verify failed")
450
464
  Chef::Log.error("SSL Error connecting to #{url}, retry #{http_attempts}/#{http_retry_count}")
451
465
  sleep(http_retry_delay)
452
466
  retry
@@ -456,7 +470,7 @@ class Chef
456
470
  end
457
471
 
458
472
  def version_retries
459
- @version_retries ||= options[:version_class].possible_requests
473
+ @version_retries ||= options[:version_class]&.possible_requests || 1
460
474
  end
461
475
 
462
476
  # @api private