chef 16.2.44 → 16.4.35

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 (385) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +8 -8
  8. data/lib/chef/application.rb +18 -1
  9. data/lib/chef/application/apply.rb +6 -5
  10. data/lib/chef/application/base.rb +2 -0
  11. data/lib/chef/application/client.rb +3 -0
  12. data/lib/chef/application/windows_service.rb +27 -27
  13. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  14. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  15. data/lib/chef/chef_class.rb +0 -1
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  17. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  19. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  20. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  21. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  22. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  23. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  25. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  27. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  28. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  29. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  30. data/lib/chef/client.rb +14 -14
  31. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  32. data/lib/chef/cookbook/syntax_check.rb +1 -2
  33. data/lib/chef/cookbook_loader.rb +15 -29
  34. data/lib/chef/data_bag.rb +1 -2
  35. data/lib/chef/data_collector/run_end_message.rb +11 -1
  36. data/lib/chef/deprecated.rb +8 -0
  37. data/lib/chef/digester.rb +3 -2
  38. data/lib/chef/dsl/platform_introspection.rb +9 -7
  39. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  40. data/lib/chef/environment.rb +3 -4
  41. data/lib/chef/exceptions.rb +4 -1
  42. data/lib/chef/file_access_control/windows.rb +2 -2
  43. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  44. data/lib/chef/file_content_management/tempfile.rb +9 -9
  45. data/lib/chef/handler.rb +2 -0
  46. data/lib/chef/http.rb +12 -12
  47. data/lib/chef/http/authenticator.rb +3 -1
  48. data/lib/chef/json_compat.rb +1 -1
  49. data/lib/chef/knife.rb +4 -4
  50. data/lib/chef/knife/bootstrap.rb +18 -15
  51. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  52. data/lib/chef/knife/config_get.rb +1 -0
  53. data/lib/chef/knife/config_list_profiles.rb +4 -1
  54. data/lib/chef/knife/config_use_profile.rb +15 -5
  55. data/lib/chef/knife/configure.rb +1 -1
  56. data/lib/chef/knife/cookbook_download.rb +1 -1
  57. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  58. data/lib/chef/knife/cookbook_upload.rb +29 -37
  59. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  60. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  61. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  62. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  63. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  64. data/lib/chef/knife/core/ui.rb +8 -2
  65. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  66. data/lib/chef/knife/delete.rb +15 -15
  67. data/lib/chef/knife/exec.rb +2 -2
  68. data/lib/chef/knife/rehash.rb +3 -21
  69. data/lib/chef/knife/ssh.rb +11 -7
  70. data/lib/chef/knife/xargs.rb +19 -19
  71. data/lib/chef/knife/yaml_convert.rb +1 -1
  72. data/lib/chef/log.rb +7 -2
  73. data/lib/chef/mixin/checksum.rb +0 -1
  74. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  75. data/lib/chef/mixin/deep_merge.rb +35 -6
  76. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  77. data/lib/chef/mixin/openssl_helper.rb +30 -6
  78. data/lib/chef/mixin/path_sanity.rb +5 -4
  79. data/lib/chef/mixin/shell_out.rb +4 -188
  80. data/lib/chef/mixin/template.rb +1 -0
  81. data/lib/chef/mixin/which.rb +6 -3
  82. data/lib/chef/mixins.rb +1 -0
  83. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  84. data/lib/chef/node.rb +36 -12
  85. data/lib/chef/node/attribute.rb +2 -4
  86. data/lib/chef/node_map.rb +21 -18
  87. data/lib/chef/platform/service_helpers.rb +31 -28
  88. data/lib/chef/property.rb +1 -1
  89. data/lib/chef/provider/cron/unix.rb +0 -2
  90. data/lib/chef/provider/git.rb +17 -9
  91. data/lib/chef/provider/group.rb +0 -2
  92. data/lib/chef/provider/group/suse.rb +5 -5
  93. data/lib/chef/provider/ifconfig.rb +1 -4
  94. data/lib/chef/provider/mount.rb +0 -2
  95. data/lib/chef/provider/mount/solaris.rb +0 -1
  96. data/lib/chef/provider/package.rb +0 -2
  97. data/lib/chef/provider/package/rubygems.rb +1 -1
  98. data/lib/chef/provider/package/snap.rb +3 -4
  99. data/lib/chef/provider/package/windows.rb +9 -4
  100. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  101. data/lib/chef/provider/package/zypper.rb +0 -1
  102. data/lib/chef/provider/powershell_script.rb +21 -5
  103. data/lib/chef/provider/route.rb +1 -1
  104. data/lib/chef/provider/service.rb +2 -2
  105. data/lib/chef/provider/service/arch.rb +1 -1
  106. data/lib/chef/provider/service/debian.rb +1 -1
  107. data/lib/chef/provider/service/gentoo.rb +2 -2
  108. data/lib/chef/provider/service/macosx.rb +2 -2
  109. data/lib/chef/provider/service/openbsd.rb +1 -4
  110. data/lib/chef/provider/service/redhat.rb +2 -2
  111. data/lib/chef/provider/service/upstart.rb +1 -1
  112. data/lib/chef/provider/service/windows.rb +10 -10
  113. data/lib/chef/provider/systemd_unit.rb +0 -2
  114. data/lib/chef/provider/template/content.rb +1 -0
  115. data/lib/chef/provider/user/dscl.rb +2 -2
  116. data/lib/chef/provider/user/mac.rb +9 -9
  117. data/lib/chef/provider/windows_task.rb +0 -3
  118. data/lib/chef/provider/yum_repository.rb +1 -1
  119. data/lib/chef/provider/zypper_repository.rb +1 -2
  120. data/lib/chef/providers.rb +0 -1
  121. data/lib/chef/recipe.rb +1 -1
  122. data/lib/chef/resource.rb +9 -11
  123. data/lib/chef/resource/alternatives.rb +1 -1
  124. data/lib/chef/resource/apt_repository.rb +1 -10
  125. data/lib/chef/resource/build_essential.rb +2 -2
  126. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  127. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  128. data/lib/chef/resource/chef_gem.rb +57 -21
  129. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  130. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  131. data/lib/chef/resource/cron/cron_d.rb +1 -1
  132. data/lib/chef/resource/cron_access.rb +2 -2
  133. data/lib/chef/resource/dmg_package.rb +2 -2
  134. data/lib/chef/resource/execute.rb +4 -5
  135. data/lib/chef/resource/gem_package.rb +35 -2
  136. data/lib/chef/resource/homebrew_update.rb +2 -2
  137. data/lib/chef/resource/hostname.rb +18 -18
  138. data/lib/chef/resource/launchd.rb +1 -1
  139. data/lib/chef/resource/lwrp_base.rb +1 -0
  140. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  141. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  142. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  143. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  144. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  145. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  146. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  147. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  148. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  149. data/lib/chef/resource/osx_profile.rb +227 -5
  150. data/lib/chef/resource/powershell_package_source.rb +1 -1
  151. data/lib/chef/resource/powershell_script.rb +24 -30
  152. data/lib/chef/resource/service.rb +2 -2
  153. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  154. data/lib/chef/resource/sudo.rb +31 -4
  155. data/lib/chef/resource/swap_file.rb +17 -0
  156. data/lib/chef/resource/sysctl.rb +5 -5
  157. data/lib/chef/resource/timezone.rb +15 -0
  158. data/lib/chef/resource/user_ulimit.rb +1 -1
  159. data/lib/chef/resource/windows_ad_join.rb +2 -0
  160. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  161. data/lib/chef/resource/windows_auto_run.rb +2 -0
  162. data/lib/chef/resource/windows_certificate.rb +2 -0
  163. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  164. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  165. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  166. data/lib/chef/resource/windows_dns_record.rb +25 -5
  167. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  168. data/lib/chef/resource/windows_feature.rb +2 -0
  169. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  170. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  171. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  172. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  173. data/lib/chef/resource/windows_font.rb +3 -1
  174. data/lib/chef/resource/windows_pagefile.rb +4 -0
  175. data/lib/chef/resource/windows_printer.rb +17 -18
  176. data/lib/chef/resource/windows_printer_port.rb +14 -13
  177. data/lib/chef/resource/windows_security_policy.rb +52 -21
  178. data/lib/chef/resource/windows_share.rb +5 -3
  179. data/lib/chef/resource/windows_shortcut.rb +2 -0
  180. data/lib/chef/resource/windows_uac.rb +2 -0
  181. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  182. data/lib/chef/resource/windows_workgroup.rb +2 -3
  183. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  184. data/lib/chef/resource_inspector.rb +7 -1
  185. data/lib/chef/resources.rb +1 -0
  186. data/lib/chef/role.rb +3 -4
  187. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  188. data/lib/chef/run_status.rb +2 -6
  189. data/lib/chef/server_api_versions.rb +4 -0
  190. data/lib/chef/shell.rb +1 -1
  191. data/lib/chef/shell/shell_session.rb +2 -0
  192. data/lib/chef/util/backup.rb +1 -1
  193. data/lib/chef/util/diff.rb +11 -12
  194. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  195. data/lib/chef/version.rb +2 -2
  196. data/lib/chef/win32/file.rb +2 -2
  197. data/lib/chef/win32/file/version_info.rb +5 -5
  198. data/lib/chef/win32/registry.rb +1 -2
  199. data/spec/data/ssl/chef-rspec.cert +15 -15
  200. data/spec/functional/knife/configure_spec.rb +1 -1
  201. data/spec/functional/knife/ssh_spec.rb +5 -16
  202. data/spec/functional/resource/aix_service_spec.rb +9 -2
  203. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  204. data/spec/functional/resource/apt_package_spec.rb +0 -1
  205. data/spec/functional/resource/bash_spec.rb +3 -2
  206. data/spec/functional/resource/bff_spec.rb +3 -3
  207. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  208. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  209. data/spec/functional/resource/cron_spec.rb +10 -2
  210. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  211. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  212. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  213. data/spec/functional/resource/execute_spec.rb +1 -1
  214. data/spec/functional/resource/git_spec.rb +23 -1
  215. data/spec/functional/resource/group_spec.rb +21 -9
  216. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  217. data/spec/functional/resource/insserv_spec.rb +7 -7
  218. data/spec/functional/resource/link_spec.rb +22 -25
  219. data/spec/functional/resource/mount_spec.rb +9 -1
  220. data/spec/functional/resource/msu_package_spec.rb +9 -3
  221. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  222. data/spec/functional/resource/remote_file_spec.rb +7 -13
  223. data/spec/functional/resource/rpm_spec.rb +3 -3
  224. data/spec/functional/resource/timezone_spec.rb +2 -0
  225. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  226. data/spec/functional/resource/windows_font_spec.rb +49 -0
  227. data/spec/functional/resource/windows_package_spec.rb +0 -1
  228. data/spec/functional/resource/windows_path_spec.rb +4 -0
  229. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  230. data/spec/functional/resource/windows_service_spec.rb +4 -0
  231. data/spec/functional/resource/windows_task_spec.rb +4 -3
  232. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  233. data/spec/functional/resource/yum_package_spec.rb +4 -1
  234. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  235. data/spec/functional/run_lock_spec.rb +26 -25
  236. data/spec/functional/shell_spec.rb +5 -6
  237. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  238. data/spec/functional/version_spec.rb +1 -1
  239. data/spec/functional/win32/crypto_spec.rb +1 -1
  240. data/spec/functional/win32/registry_spec.rb +8 -8
  241. data/spec/functional/win32/service_manager_spec.rb +1 -1
  242. data/spec/integration/knife/common_options_spec.rb +12 -12
  243. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  244. data/spec/integration/knife/config_get_spec.rb +126 -125
  245. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  246. data/spec/integration/knife/config_use_profile_spec.rb +115 -61
  247. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  248. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  249. data/spec/integration/knife/diff_spec.rb +3 -1
  250. data/spec/integration/knife/download_spec.rb +3 -1
  251. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  252. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  253. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  254. data/spec/integration/knife/serve_spec.rb +5 -5
  255. data/spec/integration/knife/upload_spec.rb +3 -1
  256. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  257. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  258. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  259. data/spec/integration/recipes/notifies_spec.rb +1 -1
  260. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  261. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  262. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  263. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  264. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  265. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  266. data/spec/scripts/ssl-serve.rb +1 -1
  267. data/spec/spec_helper.rb +16 -10
  268. data/spec/support/chef_helpers.rb +1 -20
  269. data/spec/support/platform_helpers.rb +9 -11
  270. data/spec/support/platforms/win32/spec_service.rb +1 -1
  271. data/spec/support/shared/functional/directory_resource.rb +1 -1
  272. data/spec/support/shared/functional/execute_resource.rb +1 -1
  273. data/spec/support/shared/functional/file_resource.rb +20 -21
  274. data/spec/support/shared/functional/securable_resource.rb +1 -2
  275. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  276. data/spec/support/shared/functional/win32_service.rb +1 -1
  277. data/spec/support/shared/functional/windows_script.rb +5 -5
  278. data/spec/support/shared/integration/integration_helper.rb +22 -52
  279. data/spec/support/shared/integration/knife_support.rb +2 -9
  280. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  281. data/spec/support/shared/unit/provider/file.rb +12 -8
  282. data/spec/support/shared/unit/script_resource.rb +6 -20
  283. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  284. data/spec/unit/application/solo_spec.rb +4 -2
  285. data/spec/unit/application_spec.rb +4 -2
  286. data/spec/unit/chef_fs/config_spec.rb +2 -2
  287. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  288. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  289. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  290. data/spec/unit/client_spec.rb +4 -1
  291. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  292. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  293. data/spec/unit/data_bag_spec.rb +6 -3
  294. data/spec/unit/data_collector_spec.rb +23 -1
  295. data/spec/unit/decorator_spec.rb +23 -23
  296. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  297. data/spec/unit/environment_spec.rb +12 -8
  298. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  299. data/spec/unit/guard_interpreter_spec.rb +1 -1
  300. data/spec/unit/http/api_versions_spec.rb +20 -2
  301. data/spec/unit/json_compat_spec.rb +1 -1
  302. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  303. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  304. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  305. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  306. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  307. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  308. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  309. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  310. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  311. data/spec/unit/log/syslog_spec.rb +6 -10
  312. data/spec/unit/log/winevt_spec.rb +21 -13
  313. data/spec/unit/lwrp_spec.rb +9 -6
  314. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  315. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  316. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  317. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  318. data/spec/unit/mixin/securable_spec.rb +0 -1
  319. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  320. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  321. data/spec/unit/mixin/template_spec.rb +30 -30
  322. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  323. data/spec/unit/mixin/uris_spec.rb +1 -1
  324. data/spec/unit/mixin/which.rb +8 -0
  325. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  326. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  327. data/spec/unit/node_spec.rb +103 -16
  328. data/spec/unit/property_spec.rb +5 -5
  329. data/spec/unit/provider/batch_spec.rb +1 -1
  330. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  331. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  332. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  333. data/spec/unit/provider/execute_spec.rb +1 -8
  334. data/spec/unit/provider/git_spec.rb +3 -3
  335. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  336. data/spec/unit/provider/mdadm_spec.rb +1 -3
  337. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  338. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  339. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  340. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  341. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  342. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  343. data/spec/unit/provider/package/windows_spec.rb +30 -53
  344. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  345. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  346. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  347. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  348. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  349. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  350. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  351. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  352. data/spec/unit/provider/service/windows_spec.rb +2 -6
  353. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  354. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  355. data/spec/unit/provider/windows_env_spec.rb +5 -4
  356. data/spec/unit/provider_resolver_spec.rb +6 -6
  357. data/spec/unit/provider_spec.rb +1 -0
  358. data/spec/unit/resource/batch_spec.rb +6 -6
  359. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  360. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  361. data/spec/unit/resource/execute_spec.rb +123 -118
  362. data/spec/unit/resource/file/verification_spec.rb +2 -1
  363. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  364. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  365. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  366. data/spec/unit/resource/script_spec.rb +6 -1
  367. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  368. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  369. data/spec/unit/resource/windows_package_spec.rb +1 -0
  370. data/spec/unit/resource_reporter_spec.rb +1 -1
  371. data/spec/unit/resource_spec.rb +25 -8
  372. data/spec/unit/role_spec.rb +30 -28
  373. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  374. data/spec/unit/run_lock_spec.rb +1 -1
  375. data/spec/unit/scan_access_control_spec.rb +1 -1
  376. data/spec/unit/server_api_spec.rb +43 -16
  377. data/spec/unit/util/backup_spec.rb +1 -1
  378. data/spec/unit/util/diff_spec.rb +1 -15
  379. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  380. data/spec/unit/util/selinux_spec.rb +2 -1
  381. data/spec/unit/win32/security_spec.rb +4 -3
  382. data/tasks/rspec.rb +1 -1
  383. metadata +45 -24
  384. data/lib/chef/provider/osx_profile.rb +0 -255
  385. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -1,5 +1,4 @@
1
1
  #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
2
  # Copyright:: Copyright (c) Chef Software Inc.
4
3
  # License:: Apache License, Version 2.0
5
4
  #
@@ -16,9 +15,18 @@
16
15
  # limitations under the License.
17
16
  #
18
17
 
19
- require "tempfile"
20
- require "logger"
21
- require "spec_helper"
18
+ require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
22
19
 
23
- describe Chef::Log do
20
+ class Chef
21
+ module Mixin
22
+ module DefaultPaths
23
+ include ChefUtils::DSL::DefaultPaths
24
+
25
+ def enforce_default_paths(env = ENV)
26
+ if Chef::Config[:enforce_default_paths] || Chef::Config[:enforce_path_sanity]
27
+ env["PATH"] = default_paths(env)
28
+ end
29
+ end
30
+ end
31
+ end
24
32
  end
@@ -282,7 +282,9 @@ class Chef
282
282
  ef.issuer_certificate = info["issuer"]
283
283
  end
284
284
  ef.subject_certificate = cert
285
- ef.config = ::OpenSSL::Config.load(::OpenSSL::Config::DEFAULT_CONFIG_FILE)
285
+ if openssl_config = __openssl_config
286
+ ef.config = openssl_config
287
+ end
286
288
 
287
289
  cert.extensions = extension
288
290
  cert.add_extension ef.create_extension("subjectKeyIdentifier", "hash")
@@ -313,7 +315,9 @@ class Chef
313
315
  crl.last_update = Time.now
314
316
  crl.next_update = Time.now + 3600 * 24 * info["validity"]
315
317
 
316
- ef.config = ::OpenSSL::Config.load(::OpenSSL::Config::DEFAULT_CONFIG_FILE)
318
+ if openssl_config = __openssl_config
319
+ ef.config = openssl_config
320
+ end
317
321
  ef.issuer_certificate = info["issuer"]
318
322
 
319
323
  crl.add_extension ::OpenSSL::X509::Extension.new("crlNumber", ::OpenSSL::ASN1::Integer(1))
@@ -369,8 +373,7 @@ class Chef
369
373
  revoked.add_extension(ext)
370
374
  crl.add_revoked(revoked)
371
375
 
372
- crl = renew_x509_crl(crl, ca_private_key, info)
373
- crl
376
+ renew_x509_crl(crl, ca_private_key, info)
374
377
  end
375
378
 
376
379
  # renew a X509 crl given
@@ -391,7 +394,9 @@ class Chef
391
394
  crl.next_update = crl.last_update + 3600 * 24 * info["validity"]
392
395
 
393
396
  ef = ::OpenSSL::X509::ExtensionFactory.new
394
- ef.config = ::OpenSSL::Config.load(::OpenSSL::Config::DEFAULT_CONFIG_FILE)
397
+ if openssl_config = __openssl_config
398
+ ef.config = openssl_config
399
+ end
395
400
  ef.issuer_certificate = info["issuer"]
396
401
 
397
402
  crl.extensions = [ ::OpenSSL::X509::Extension.new("crlNumber",
@@ -407,7 +412,7 @@ class Chef
407
412
  # @param [string] cert_file path of the cert file or cert content
408
413
  # @param [integer] renew_before_expiry number of days before expiration
409
414
  # @return [true, false]
410
- def cert_need_renewall?(cert_file, renew_before_expiry)
415
+ def cert_need_renewal?(cert_file, renew_before_expiry)
411
416
  resp = true
412
417
  cert_content = ::File.exist?(cert_file) ? File.read(cert_file) : cert_file
413
418
  begin
@@ -422,6 +427,25 @@ class Chef
422
427
 
423
428
  resp
424
429
  end
430
+
431
+ alias_method :cert_need_renewall?, :cert_need_renewal?
432
+
433
+ private
434
+
435
+ def __openssl_config
436
+ path = if File.exist?(::OpenSSL::Config::DEFAULT_CONFIG_FILE)
437
+ OpenSSL::Config::DEFAULT_CONFIG_FILE
438
+ else
439
+ Dir[File.join(RbConfig::CONFIG["prefix"], "**", "openssl.cnf")].first
440
+ end
441
+
442
+ if File.exist?(path)
443
+ ::OpenSSL::Config.load(path)
444
+ else
445
+ Chef::Log.warn("Couldn't find OpenSSL config file")
446
+ nil
447
+ end
448
+ end
425
449
  end
426
450
  end
427
451
  end
@@ -16,14 +16,15 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
+ require_relative "default_paths"
20
+
19
21
  class Chef
20
22
  module Mixin
21
- # @ deprecated
22
23
  module PathSanity
24
+ include Chef::Mixin::DefaultPaths
25
+
23
26
  def enforce_path_sanity(env = ENV)
24
- if Chef::Config[:enforce_path_sanity]
25
- env["PATH"] = ChefUtils::DSL::PathSanity.sanitized_path(env)
26
- end
27
+ enforce_default_paths(env)
27
28
  end
28
29
  end
29
30
  end
@@ -15,198 +15,14 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require "mixlib/shellout" unless defined?(Mixlib::ShellOut::DEFAULT_READ_TIMEOUT)
19
- require "chef-utils/dsl/path_sanity" unless defined?(ChefUtils::DSL::PathSanity)
18
+ require "mixlib/shellout/helper" unless defined?(Mixlib::ShellOut::Helper)
19
+ require_relative "chef_utils_wiring" unless defined?(Chef::Mixin::ChefUtilsWiring)
20
20
 
21
21
  class Chef
22
22
  module Mixin
23
23
  module ShellOut
24
-
25
- # PREFERRED APIS:
26
- #
27
- # all consumers should now call shell_out!/shell_out.
28
- #
29
- # the shell_out_compacted/shell_out_compacted! APIs are private but are intended for use
30
- # in rspec tests, and should ideally always be used to make code refactoring that do not
31
- # change behavior easier:
32
- #
33
- # allow(provider).to receive(:shell_out_compacted!).with("foo", "bar", "baz")
34
- # provider.shell_out!("foo", [ "bar", nil, "baz"])
35
- # provider.shell_out!(["foo", nil, "bar" ], ["baz"])
36
- #
37
- # note that shell_out_compacted also includes adding the magical timeout option to force
38
- # people to setup expectations on that value explicitly. it does not include the default_env
39
- # mangling in order to avoid users having to setup an expectation on anything other than
40
- # setting `default_env: false` and allow us to make tweak to the default_env without breaking
41
- # a thousand unit tests.
42
- #
43
-
44
- def shell_out(*args, **options)
45
- options = options.dup
46
- options = Chef::Mixin::ShellOut.maybe_add_timeout(self, options)
47
- if options.empty?
48
- shell_out_compacted(*Chef::Mixin::ShellOut.clean_array(*args))
49
- else
50
- shell_out_compacted(*Chef::Mixin::ShellOut.clean_array(*args), **options)
51
- end
52
- end
53
-
54
- def shell_out!(*args, **options)
55
- options = options.dup
56
- options = Chef::Mixin::ShellOut.maybe_add_timeout(self, options)
57
- if options.empty?
58
- shell_out_compacted!(*Chef::Mixin::ShellOut.clean_array(*args))
59
- else
60
- shell_out_compacted!(*Chef::Mixin::ShellOut.clean_array(*args), **options)
61
- end
62
- end
63
-
64
- # helper sugar for resources that support passing timeouts to shell_out
65
- #
66
- # module method to not pollute namespaces, but that means we need self injected as an arg
67
- # @api private
68
- def self.maybe_add_timeout(obj, options)
69
- options = options.dup
70
- # historically resources have not properly declared defaults on their timeouts, so a default default of 900s was enforced here
71
- default_val = 900
72
- return options if options.key?(:timeout)
73
-
74
- # FIXME: need to nuke descendent tracker out of Chef::Provider so we can just define that class here without requiring the
75
- # world, and then just use symbol lookup
76
- if obj.class.ancestors.map(&:name).include?("Chef::Provider") && obj.respond_to?(:new_resource) && obj.new_resource.respond_to?(:timeout) && !options.key?(:timeout)
77
- options[:timeout] = obj.new_resource.timeout ? obj.new_resource.timeout.to_f : default_val
78
- end
79
- options
80
- end
81
-
82
- # helper function to mangle options when `default_env` is true
83
- #
84
- # @api private
85
- def self.apply_default_env(options)
86
- options = options.dup
87
- default_env = options.delete(:default_env)
88
- default_env = true if default_env.nil?
89
- if default_env
90
- env_key = options.key?(:env) ? :env : :environment
91
- options[env_key] = {
92
- "LC_ALL" => Chef::Config[:internal_locale],
93
- "LANGUAGE" => Chef::Config[:internal_locale],
94
- "LANG" => Chef::Config[:internal_locale],
95
- env_path => ChefUtils::DSL::PathSanity.sanitized_path,
96
- }.update(options[env_key] || {})
97
- end
98
- options
99
- end
100
-
101
- private
102
-
103
- # this SHOULD be used for setting up expectations in rspec, see banner comment at top.
104
- #
105
- # the private constraint is meant to avoid code calling this directly, rspec expectations are fine.
106
- #
107
- def shell_out_compacted(*args, **options)
108
- options = Chef::Mixin::ShellOut.apply_default_env(options)
109
- if options.empty?
110
- Chef::Mixin::ShellOut.shell_out_command(*args)
111
- else
112
- Chef::Mixin::ShellOut.shell_out_command(*args, **options)
113
- end
114
- end
115
-
116
- # this SHOULD be used for setting up expectations in rspec, see banner comment at top.
117
- #
118
- # the private constraint is meant to avoid code calling this directly, rspec expectations are fine.
119
- #
120
- def shell_out_compacted!(*args, **options)
121
- options = Chef::Mixin::ShellOut.apply_default_env(options)
122
- cmd = if options.empty?
123
- Chef::Mixin::ShellOut.shell_out_command(*args)
124
- else
125
- Chef::Mixin::ShellOut.shell_out_command(*args, **options)
126
- end
127
- cmd.error!
128
- cmd
129
- end
130
-
131
- # Helper for subclasses to reject nil out of an array. It allows
132
- # using the array form of shell_out (which avoids the need to surround arguments with
133
- # quote marks to deal with shells).
134
- #
135
- # Usage:
136
- # shell_out!(*clean_array("useradd", universal_options, useradd_options, new_resource.username))
137
- #
138
- # universal_options and useradd_options can be nil, empty array, empty string, strings or arrays
139
- # and the result makes sense.
140
- #
141
- # keeping this separate from shell_out!() makes it a bit easier to write expectations against the
142
- # shell_out args and be able to omit nils and such in the tests (and to test that the nils are
143
- # being rejected correctly).
144
- #
145
- # @param args [String] variable number of string arguments
146
- # @return [Array] array of strings with nil and null string rejection
147
-
148
- def self.clean_array(*args)
149
- args.flatten.compact.map(&:to_s)
150
- end
151
-
152
- def self.transport_connection
153
- Chef.run_context.transport_connection
154
- end
155
-
156
- def self.shell_out_command(*args, **options)
157
- if Chef::Config.target_mode?
158
- FakeShellOut.new(args, options, transport_connection.run_command(args.join(" "))) # FIXME: train should accept run_command(*args)
159
- else
160
- cmd = if options.empty?
161
- Mixlib::ShellOut.new(*args)
162
- else
163
- Mixlib::ShellOut.new(*args, **options)
164
- end
165
- cmd.live_stream ||= io_for_live_stream
166
- cmd.run_command
167
- cmd
168
- end
169
- end
170
-
171
- def self.io_for_live_stream
172
- if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.debug?
173
- STDOUT
174
- else
175
- nil
176
- end
177
- end
178
-
179
- def self.env_path
180
- if ChefUtils.windows?
181
- "Path"
182
- else
183
- "PATH"
184
- end
185
- end
186
-
187
- class FakeShellOut
188
- attr_reader :stdout, :stderr, :exitstatus, :status
189
-
190
- def initialize(args, options, result)
191
- @args = args
192
- @options = options
193
- @stdout = result.stdout
194
- @stderr = result.stderr
195
- @exitstatus = result.exit_status
196
- @status = OpenStruct.new(success?: ( exitstatus == 0 ))
197
- end
198
-
199
- def error?
200
- exitstatus != 0
201
- end
202
-
203
- def error!
204
- raise Mixlib::ShellOut::ShellCommandFailed, "Unexpected exit status of #{exitstatus} running #{@args}" if error?
205
- end
206
- end
24
+ include Mixlib::ShellOut::Helper
25
+ include Chef::Mixin::ChefUtilsWiring
207
26
  end
208
27
  end
209
28
  end
210
-
211
- # Break circular dep
212
- require_relative "../config"
@@ -213,6 +213,7 @@ class Chef
213
213
 
214
214
  class TemplateError < RuntimeError
215
215
  attr_reader :original_exception, :context, :options
216
+
216
217
  SOURCE_CONTEXT_WINDOW = 2
217
218
 
218
219
  def initialize(original_exception, template, context, options)
@@ -16,20 +16,23 @@
16
16
  # limitations under the License.
17
17
 
18
18
  require "chef-utils/dsl/which" unless defined?(ChefUtils::DSL::Which)
19
- require "chef-utils/dsl/path_sanity" unless defined?(ChefUtils::DSL::PathSanity)
19
+ require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
20
+ require_relative "chef_utils_wiring" unless defined?(Chef::Mixin::ChefUtilsWiring)
20
21
 
21
22
  class Chef
22
23
  module Mixin
23
24
  module Which
24
25
  include ChefUtils::DSL::Which
26
+ include ChefUtils::DSL::DefaultPaths
27
+ include ChefUtilsWiring
25
28
 
26
29
  private
27
30
 
28
- # we dep-inject path sanity into this API for historical reasons
31
+ # we dep-inject default paths into this API for historical reasons
29
32
  #
30
33
  # @api private
31
34
  def __extra_path
32
- ChefUtils::DSL::PathSanity.sane_paths
35
+ __default_paths
33
36
  end
34
37
  end
35
38
  end
@@ -6,6 +6,7 @@ require_relative "mixin/deep_merge"
6
6
  require_relative "mixin/enforce_ownership_and_permissions"
7
7
  require_relative "mixin/from_file"
8
8
  require_relative "mixin/params_validate"
9
+ require_relative "mixin/default_paths"
9
10
  require_relative "mixin/path_sanity"
10
11
  require_relative "mixin/template"
11
12
  require_relative "mixin/securable"
@@ -33,16 +33,16 @@ module WEBrick
33
33
  last_error = nil
34
34
  sockets = []
35
35
  res.each do |ai|
36
- begin
37
- logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
38
- sock = TCPServer.new(ai[3], port)
39
- port = sock.addr[1] if port == 0
40
- Utils.set_close_on_exec(sock)
41
- sockets << sock
42
- rescue => ex
43
- logger.warn("TCPServer Error: #{ex}") if logger
44
- last_error = ex
45
- end
36
+
37
+ logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
38
+ sock = TCPServer.new(ai[3], port)
39
+ port = sock.addr[1] if port == 0
40
+ Utils.set_close_on_exec(sock)
41
+ sockets << sock
42
+ rescue => ex
43
+ logger.warn("TCPServer Error: #{ex}") if logger
44
+ last_error = ex
45
+
46
46
  end
47
47
  raise last_error if sockets.empty?
48
48
 
@@ -34,8 +34,8 @@ require_relative "node/attribute"
34
34
  require_relative "mash"
35
35
  require_relative "json_compat"
36
36
  require_relative "search/query"
37
- require_relative "whitelist"
38
- require_relative "blacklist"
37
+ require_relative "attribute_allowlist"
38
+ require_relative "attribute_blocklist"
39
39
 
40
40
  class Chef
41
41
  class Node
@@ -706,21 +706,45 @@ class Chef
706
706
  end
707
707
  end
708
708
 
709
+ # a method to handle the renamed configuration from whitelist -> allowed
710
+ # and to throw a deprecation warning when the old configuration is set
711
+ #
712
+ # @param [String] level the attribute level
713
+ def allowlist_or_whitelist_config(level)
714
+ if Chef::Config["#{level}_attribute_whitelist".to_sym]
715
+ Chef.deprecated(:attribute_blacklist_configuration, "Attribute whitelist configurations have been deprecated. Use the allowed_LEVEL_attribute configs instead")
716
+ Chef::Config["#{level}_attribute_whitelist".to_sym]
717
+ else
718
+ Chef::Config["allowed_#{level}_attributes".to_sym]
719
+ end
720
+ end
721
+
722
+ # a method to handle the renamed configuration from blacklist -> blocked
723
+ # and to throw a deprecation warning when the old configuration is set
724
+ #
725
+ # @param [String] level the attribute level
726
+ def blocklist_or_blacklist_config(level)
727
+ if Chef::Config["#{level}_attribute_blacklist".to_sym]
728
+ Chef.deprecated(:attribute_blacklist_configuration, "Attribute blacklist configurations have been deprecated. Use the blocked_LEVEL_attribute configs instead")
729
+ Chef::Config["#{level}_attribute_blacklist".to_sym]
730
+ else
731
+ Chef::Config["blocked_#{level}_attributes".to_sym]
732
+ end
733
+ end
734
+
709
735
  def data_for_save
710
736
  data = for_json
711
737
  %w{automatic default normal override}.each do |level|
712
- whitelist_config_option = "#{level}_attribute_whitelist".to_sym
713
- whitelist = Chef::Config[whitelist_config_option]
714
- unless whitelist.nil? # nil => save everything
715
- logger.info("Whitelisting #{level} node attributes for save.")
716
- data[level] = Chef::Whitelist.filter(data[level], whitelist)
738
+ allowlist = allowlist_or_whitelist_config(level)
739
+ unless allowlist.nil? # nil => save everything
740
+ logger.info("Allowing #{level} node attributes for save.")
741
+ data[level] = Chef::AttributeAllowlist.filter(data[level], allowlist)
717
742
  end
718
743
 
719
- blacklist_config_option = "#{level}_attribute_blacklist".to_sym
720
- blacklist = Chef::Config[blacklist_config_option]
721
- unless blacklist.nil? # nil => remove nothing
722
- logger.info("Blacklisting #{level} node attributes for save")
723
- data[level] = Chef::Blacklist.filter(data[level], blacklist)
744
+ blocklist = blocklist_or_blacklist_config(level)
745
+ unless blocklist.nil? # nil => remove nothing
746
+ logger.info("Blocking #{level} node attributes for save")
747
+ data[level] = Chef::AttributeBlocklist.filter(data[level], blocklist)
724
748
  end
725
749
  end
726
750
  data