chef 16.2.73-universal-mingw32 → 16.4.41-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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +1 -1
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +5 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  21. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  24. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  26. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  27. data/lib/chef/client.rb +14 -14
  28. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  29. data/lib/chef/cookbook/syntax_check.rb +1 -2
  30. data/lib/chef/cookbook_loader.rb +15 -29
  31. data/lib/chef/data_bag.rb +1 -2
  32. data/lib/chef/data_collector/run_end_message.rb +11 -1
  33. data/lib/chef/deprecated.rb +8 -0
  34. data/lib/chef/dsl/platform_introspection.rb +9 -7
  35. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  36. data/lib/chef/environment.rb +3 -4
  37. data/lib/chef/exceptions.rb +4 -1
  38. data/lib/chef/file_content_management/tempfile.rb +9 -9
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +11 -11
  41. data/lib/chef/http/authenticator.rb +3 -1
  42. data/lib/chef/json_compat.rb +1 -1
  43. data/lib/chef/knife.rb +4 -4
  44. data/lib/chef/knife/bootstrap.rb +6 -12
  45. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  46. data/lib/chef/knife/config_get.rb +1 -0
  47. data/lib/chef/knife/config_list_profiles.rb +4 -1
  48. data/lib/chef/knife/configure.rb +3 -1
  49. data/lib/chef/knife/cookbook_download.rb +1 -1
  50. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  51. data/lib/chef/knife/cookbook_upload.rb +28 -33
  52. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  53. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  54. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  55. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  56. data/lib/chef/knife/core/ui.rb +8 -2
  57. data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -25
  58. data/lib/chef/knife/delete.rb +15 -15
  59. data/lib/chef/knife/exec.rb +2 -2
  60. data/lib/chef/knife/rehash.rb +3 -21
  61. data/lib/chef/knife/ssh.rb +11 -7
  62. data/lib/chef/knife/xargs.rb +19 -19
  63. data/lib/chef/knife/yaml_convert.rb +1 -1
  64. data/lib/chef/log.rb +7 -2
  65. data/lib/chef/mixin/checksum.rb +0 -1
  66. data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
  67. data/lib/chef/mixin/deep_merge.rb +35 -6
  68. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  69. data/lib/chef/mixin/openssl_helper.rb +30 -6
  70. data/lib/chef/mixin/path_sanity.rb +5 -4
  71. data/lib/chef/mixin/shell_out.rb +4 -188
  72. data/lib/chef/mixin/template.rb +1 -0
  73. data/lib/chef/mixin/which.rb +6 -3
  74. data/lib/chef/mixins.rb +1 -0
  75. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  76. data/lib/chef/node.rb +36 -12
  77. data/lib/chef/node/attribute.rb +2 -4
  78. data/lib/chef/node_map.rb +21 -18
  79. data/lib/chef/platform/service_helpers.rb +31 -28
  80. data/lib/chef/property.rb +1 -1
  81. data/lib/chef/provider/cron/unix.rb +0 -2
  82. data/lib/chef/provider/git.rb +17 -9
  83. data/lib/chef/provider/group.rb +0 -2
  84. data/lib/chef/provider/group/suse.rb +5 -5
  85. data/lib/chef/provider/ifconfig.rb +1 -4
  86. data/lib/chef/provider/mount.rb +0 -2
  87. data/lib/chef/provider/mount/solaris.rb +0 -1
  88. data/lib/chef/provider/package.rb +0 -2
  89. data/lib/chef/provider/package/rubygems.rb +1 -1
  90. data/lib/chef/provider/package/snap.rb +3 -4
  91. data/lib/chef/provider/package/windows.rb +9 -4
  92. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  93. data/lib/chef/provider/package/zypper.rb +0 -1
  94. data/lib/chef/provider/powershell_script.rb +21 -5
  95. data/lib/chef/provider/route.rb +1 -1
  96. data/lib/chef/provider/service.rb +2 -2
  97. data/lib/chef/provider/service/arch.rb +1 -1
  98. data/lib/chef/provider/service/debian.rb +1 -1
  99. data/lib/chef/provider/service/gentoo.rb +2 -2
  100. data/lib/chef/provider/service/macosx.rb +2 -2
  101. data/lib/chef/provider/service/openbsd.rb +1 -4
  102. data/lib/chef/provider/service/redhat.rb +2 -2
  103. data/lib/chef/provider/service/upstart.rb +1 -1
  104. data/lib/chef/provider/service/windows.rb +10 -10
  105. data/lib/chef/provider/systemd_unit.rb +0 -2
  106. data/lib/chef/provider/template/content.rb +1 -0
  107. data/lib/chef/provider/user/dscl.rb +2 -2
  108. data/lib/chef/provider/user/mac.rb +9 -9
  109. data/lib/chef/provider/windows_task.rb +0 -3
  110. data/lib/chef/provider/yum_repository.rb +1 -1
  111. data/lib/chef/provider/zypper_repository.rb +1 -2
  112. data/lib/chef/providers.rb +0 -1
  113. data/lib/chef/recipe.rb +1 -1
  114. data/lib/chef/resource.rb +8 -10
  115. data/lib/chef/resource/apt_repository.rb +1 -10
  116. data/lib/chef/resource/build_essential.rb +2 -2
  117. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  118. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  119. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  120. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  121. data/lib/chef/resource/cron/cron_d.rb +1 -1
  122. data/lib/chef/resource/cron_access.rb +2 -2
  123. data/lib/chef/resource/execute.rb +4 -5
  124. data/lib/chef/resource/homebrew_update.rb +2 -2
  125. data/lib/chef/resource/hostname.rb +18 -18
  126. data/lib/chef/resource/lwrp_base.rb +1 -0
  127. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  128. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  129. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  130. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  131. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  132. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  133. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  134. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  135. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  136. data/lib/chef/resource/osx_profile.rb +227 -5
  137. data/lib/chef/resource/powershell_package_source.rb +1 -1
  138. data/lib/chef/resource/powershell_script.rb +24 -30
  139. data/lib/chef/resource/service.rb +2 -2
  140. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  141. data/lib/chef/resource/sudo.rb +2 -2
  142. data/lib/chef/resource/sysctl.rb +5 -5
  143. data/lib/chef/resource/timezone.rb +112 -73
  144. data/lib/chef/resource/user_ulimit.rb +1 -1
  145. data/lib/chef/resource/windows_ad_join.rb +2 -0
  146. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  147. data/lib/chef/resource/windows_auto_run.rb +2 -0
  148. data/lib/chef/resource/windows_certificate.rb +2 -0
  149. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  150. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  151. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  152. data/lib/chef/resource/windows_dns_record.rb +25 -5
  153. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  154. data/lib/chef/resource/windows_feature.rb +2 -0
  155. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  156. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  157. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  158. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  159. data/lib/chef/resource/windows_font.rb +3 -1
  160. data/lib/chef/resource/windows_pagefile.rb +4 -0
  161. data/lib/chef/resource/windows_printer.rb +17 -18
  162. data/lib/chef/resource/windows_printer_port.rb +14 -13
  163. data/lib/chef/resource/windows_security_policy.rb +51 -20
  164. data/lib/chef/resource/windows_share.rb +5 -3
  165. data/lib/chef/resource/windows_shortcut.rb +2 -0
  166. data/lib/chef/resource/windows_uac.rb +2 -0
  167. data/lib/chef/resource/windows_user_privilege.rb +2 -0
  168. data/lib/chef/resource/windows_workgroup.rb +2 -3
  169. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  170. data/lib/chef/resource_inspector.rb +7 -1
  171. data/lib/chef/resources.rb +1 -0
  172. data/lib/chef/role.rb +3 -4
  173. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  174. data/lib/chef/run_status.rb +2 -6
  175. data/lib/chef/server_api_versions.rb +4 -0
  176. data/lib/chef/shell.rb +1 -1
  177. data/lib/chef/shell/shell_session.rb +2 -0
  178. data/lib/chef/util/backup.rb +1 -1
  179. data/lib/chef/util/diff.rb +11 -12
  180. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  181. data/lib/chef/version.rb +2 -2
  182. data/lib/chef/win32/file.rb +2 -2
  183. data/lib/chef/win32/file/version_info.rb +5 -5
  184. data/lib/chef/win32/registry.rb +1 -2
  185. data/spec/data/ssl/chef-rspec.cert +15 -15
  186. data/spec/functional/knife/ssh_spec.rb +5 -16
  187. data/spec/functional/resource/aix_service_spec.rb +0 -2
  188. data/spec/functional/resource/aixinit_service_spec.rb +7 -8
  189. data/spec/functional/resource/apt_package_spec.rb +0 -1
  190. data/spec/functional/resource/bff_spec.rb +2 -2
  191. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  192. data/spec/functional/resource/cron_spec.rb +0 -1
  193. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  194. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  195. data/spec/functional/resource/git_spec.rb +23 -1
  196. data/spec/functional/resource/group_spec.rb +12 -8
  197. data/spec/functional/resource/insserv_spec.rb +4 -5
  198. data/spec/functional/resource/link_spec.rb +20 -20
  199. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  200. data/spec/functional/resource/remote_file_spec.rb +1 -7
  201. data/spec/functional/resource/rpm_spec.rb +2 -2
  202. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  203. data/spec/functional/resource/windows_font_spec.rb +49 -0
  204. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  205. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
  206. data/spec/functional/run_lock_spec.rb +26 -25
  207. data/spec/functional/shell_spec.rb +5 -5
  208. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  209. data/spec/functional/version_spec.rb +1 -1
  210. data/spec/functional/win32/registry_spec.rb +8 -8
  211. data/spec/functional/win32/service_manager_spec.rb +1 -1
  212. data/spec/integration/knife/common_options_spec.rb +12 -12
  213. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  214. data/spec/integration/knife/config_get_spec.rb +126 -125
  215. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  216. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  217. data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
  218. data/spec/integration/knife/diff_spec.rb +3 -1
  219. data/spec/integration/knife/download_spec.rb +3 -1
  220. data/spec/integration/knife/serve_spec.rb +5 -5
  221. data/spec/integration/knife/upload_spec.rb +3 -1
  222. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  223. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  224. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  225. data/spec/integration/recipes/notifies_spec.rb +1 -1
  226. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  227. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
  228. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  229. data/spec/integration/recipes/resource_load_spec.rb +2 -0
  230. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  231. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  232. data/spec/scripts/ssl-serve.rb +1 -1
  233. data/spec/spec_helper.rb +16 -10
  234. data/spec/support/chef_helpers.rb +1 -20
  235. data/spec/support/platform_helpers.rb +9 -11
  236. data/spec/support/platforms/win32/spec_service.rb +1 -1
  237. data/spec/support/shared/functional/directory_resource.rb +1 -1
  238. data/spec/support/shared/functional/execute_resource.rb +1 -1
  239. data/spec/support/shared/functional/file_resource.rb +20 -21
  240. data/spec/support/shared/functional/win32_service.rb +1 -1
  241. data/spec/support/shared/functional/windows_script.rb +3 -3
  242. data/spec/support/shared/integration/integration_helper.rb +22 -52
  243. data/spec/support/shared/integration/knife_support.rb +2 -9
  244. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  245. data/spec/support/shared/unit/script_resource.rb +6 -20
  246. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  247. data/spec/unit/application_spec.rb +4 -2
  248. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  249. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  250. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  251. data/spec/unit/data_collector_spec.rb +29 -1
  252. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  253. data/spec/unit/environment_spec.rb +7 -7
  254. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  255. data/spec/unit/http/api_versions_spec.rb +19 -1
  256. data/spec/unit/json_compat_spec.rb +1 -1
  257. data/spec/unit/knife/bootstrap_spec.rb +16 -20
  258. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  259. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  260. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  261. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  262. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  263. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  264. data/spec/unit/log/syslog_spec.rb +6 -10
  265. data/spec/unit/log/winevt_spec.rb +21 -13
  266. data/spec/unit/lwrp_spec.rb +4 -4
  267. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  268. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  269. data/spec/unit/mixin/securable_spec.rb +0 -1
  270. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  271. data/spec/unit/mixin/template_spec.rb +30 -30
  272. data/spec/unit/mixin/which.rb +8 -0
  273. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  274. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  275. data/spec/unit/node_spec.rb +103 -16
  276. data/spec/unit/property_spec.rb +5 -5
  277. data/spec/unit/provider/execute_spec.rb +0 -7
  278. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  279. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  280. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  281. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  282. data/spec/unit/provider/package/windows_spec.rb +30 -53
  283. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  284. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  285. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  286. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  287. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  288. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  289. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  290. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  291. data/spec/unit/provider/service/windows_spec.rb +2 -6
  292. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  293. data/spec/unit/provider_resolver_spec.rb +6 -6
  294. data/spec/unit/provider_spec.rb +1 -0
  295. data/spec/unit/resource/batch_spec.rb +6 -6
  296. data/spec/unit/resource/execute_spec.rb +123 -118
  297. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  298. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  299. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  300. data/spec/unit/resource/script_spec.rb +6 -1
  301. data/spec/unit/resource/timezone_spec.rb +63 -0
  302. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  303. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  304. data/spec/unit/resource/windows_package_spec.rb +1 -0
  305. data/spec/unit/resource_reporter_spec.rb +1 -1
  306. data/spec/unit/role_spec.rb +11 -11
  307. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  308. data/spec/unit/run_lock_spec.rb +1 -1
  309. data/spec/unit/scan_access_control_spec.rb +1 -1
  310. data/spec/unit/server_api_spec.rb +43 -16
  311. data/spec/unit/util/diff_spec.rb +1 -15
  312. data/spec/unit/win32/security_spec.rb +4 -3
  313. data/tasks/rspec.rb +1 -1
  314. metadata +39 -31
  315. data/lib/chef/provider/osx_profile.rb +0 -255
  316. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -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
@@ -563,11 +563,10 @@ class Chef
563
563
  # @param path [Array] Array of args to method chain to descend into the node object
564
564
  # @return [attr] Deep Merged values (may be VividMash, Hash, Array, etc) from the node object
565
565
  def merge_defaults(path)
566
- ret = DEFAULT_COMPONENTS.inject(NIL) do |merged, component_ivar|
566
+ DEFAULT_COMPONENTS.inject(NIL) do |merged, component_ivar|
567
567
  component_value = apply_path(instance_variable_get(component_ivar), path)
568
568
  deep_merge!(merged, component_value)
569
569
  end
570
- ret
571
570
  end
572
571
 
573
572
  # Deep merge the override attribute levels with array merging.
@@ -577,11 +576,10 @@ class Chef
577
576
  # @param path [Array] Array of args to method chain to descend into the node object
578
577
  # @return [attr] Deep Merged values (may be VividMash, Hash, Array, etc) from the node object
579
578
  def merge_overrides(path)
580
- ret = OVERRIDE_COMPONENTS.inject(NIL) do |merged, component_ivar|
579
+ OVERRIDE_COMPONENTS.inject(NIL) do |merged, component_ivar|
581
580
  component_value = apply_path(instance_variable_get(component_ivar), path)
582
581
  deep_merge!(merged, component_value)
583
582
  end
584
- ret
585
583
  end
586
584
 
587
585
  # needed for __path__
@@ -35,10 +35,13 @@
35
35
  #
36
36
  # XXX: confusingly, in the *_priority_map the :klass may be an array of Strings of class names
37
37
  #
38
+
39
+ require_relative "dist"
40
+
38
41
  class Chef
39
42
  class NodeMap
40
43
  COLLISION_WARNING = <<~EOH.gsub(/\s+/, " ").strip
41
- %{type_caps} %{key} from the client is overriding the %{type} from a cookbook. Please upgrade your cookbook
44
+ %{type_caps} %{key} built into %{client_name} is being overridden by the %{type} from a cookbook. Please upgrade your cookbook
42
45
  or remove the cookbook from your run_list.
43
46
  EOH
44
47
 
@@ -83,7 +86,7 @@ class Chef
83
86
  else
84
87
  klass.superclass.to_s
85
88
  end
86
- Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize } )
89
+ Chef::Log.warn( COLLISION_WARNING % { type: type_of_thing, key: key, type_caps: type_of_thing.capitalize, client_name: Chef::Dist::PRODUCT } )
87
90
  end
88
91
 
89
92
  # The map is sorted in order of preference already; we just need to find
@@ -209,7 +212,7 @@ class Chef
209
212
  # - no negative matches (!value)
210
213
  # - at least one positive match (value or :all), or no positive filters
211
214
  #
212
- def matches_black_white_list?(node, filters, attribute)
215
+ def matches_block_allow_list?(node, filters, attribute)
213
216
  # It's super common for the filter to be nil. Catch that so we don't
214
217
  # spend any time here.
215
218
  return true unless filters[attribute]
@@ -217,21 +220,21 @@ class Chef
217
220
  filter_values = Array(filters[attribute])
218
221
  value = node[attribute]
219
222
 
220
- # Split the blacklist and whitelist
221
- blacklist, whitelist = filter_values.partition { |v| v.is_a?(String) && v.start_with?("!") }
223
+ # Split the blocklist and allowlist
224
+ blocklist, allowlist = filter_values.partition { |v| v.is_a?(String) && v.start_with?("!") }
222
225
 
223
226
  if attribute == :platform_family
224
- # If any blacklist value matches, we don't match
225
- return false if blacklist.any? { |v| v[1..-1] == value || platform_family_query_helper?(node, v[1..-1]) }
227
+ # If any blocklist value matches, we don't match
228
+ return false if blocklist.any? { |v| v[1..-1] == value || platform_family_query_helper?(node, v[1..-1]) }
226
229
 
227
- # If the whitelist is empty, or anything matches, we match.
228
- whitelist.empty? || whitelist.any? { |v| v == :all || v == value || platform_family_query_helper?(node, v) }
230
+ # If the allowlist is empty, or anything matches, we match.
231
+ allowlist.empty? || allowlist.any? { |v| v == :all || v == value || platform_family_query_helper?(node, v) }
229
232
  else
230
- # If any blacklist value matches, we don't match
231
- return false if blacklist.any? { |v| v[1..-1] == value }
233
+ # If any blocklist value matches, we don't match
234
+ return false if blocklist.any? { |v| v[1..-1] == value }
232
235
 
233
- # If the whitelist is empty, or anything matches, we match.
234
- whitelist.empty? || whitelist.any? { |v| v == :all || v == value }
236
+ # If the allowlist is empty, or anything matches, we match.
237
+ allowlist.empty? || allowlist.any? { |v| v == :all || v == value }
235
238
  end
236
239
  end
237
240
 
@@ -260,9 +263,9 @@ class Chef
260
263
  end
261
264
 
262
265
  def filters_match?(node, filters)
263
- matches_black_white_list?(node, filters, :os) &&
264
- matches_black_white_list?(node, filters, :platform_family) &&
265
- matches_black_white_list?(node, filters, :platform) &&
266
+ matches_block_allow_list?(node, filters, :os) &&
267
+ matches_block_allow_list?(node, filters, :platform_family) &&
268
+ matches_block_allow_list?(node, filters, :platform) &&
266
269
  matches_version_list?(node, filters, :platform_version) &&
267
270
  matches_target_mode?(filters)
268
271
  end
@@ -311,8 +314,8 @@ class Chef
311
314
  return -1 if !b && a
312
315
  return 0 if !a && !b
313
316
 
314
- # Check for blacklists ('!windows'). Those always come *after* positive
315
- # whitelists.
317
+ # Check for blocklists ('!windows'). Those always come *after* positive
318
+ # allowlists.
316
319
  a_negated = Array(a).any? { |f| f.is_a?(String) && f.start_with?("!") }
317
320
  b_negated = Array(b).any? { |f| f.is_a?(String) && f.start_with?("!") }
318
321
  return 1 if a_negated && !b_negated
@@ -17,38 +17,41 @@
17
17
  #
18
18
 
19
19
  require_relative "../chef_class"
20
- require "chef-utils" if defined?(ChefUtils::CANARY)
20
+ require "chef-utils" unless defined?(ChefUtils::CANARY)
21
+ require_relative "../mixin/chef_utils_wiring" unless defined?(Chef::Mixin::ChefUtilsWiring)
21
22
 
22
23
  class Chef
23
24
  class Platform
24
- # @deprecated, use ChefUtils::DSL::Service instead (via the ChefUtils Universal DSL)
25
- class ServiceHelpers
26
- class << self
27
- def service_resource_providers
28
- providers = []
29
-
30
- providers << :debian if ChefUtils::DSL::Service.debianrcd?
31
- providers << :invokercd if ChefUtils::DSL::Service.invokercd?
32
- providers << :upstart if ChefUtils::DSL::Service.upstart?
33
- providers << :insserv if ChefUtils::DSL::Service.insserv?
34
- providers << :systemd if ChefUtils.systemd?
35
- providers << :redhat if ChefUtils::DSL::Service.redhatrcd?
36
-
37
- providers
38
- end
39
-
40
- def config_for_service(service_name)
41
- configs = []
42
-
43
- configs << :initd if ChefUtils::DSL::Service.service_script_exist?(:initd, service_name)
44
- configs << :upstart if ChefUtils::DSL::Service.service_script_exist?(:upstart, service_name)
45
- configs << :xinetd if ChefUtils::DSL::Service.service_script_exist?(:xinetd, service_name)
46
- configs << :systemd if ChefUtils::DSL::Service.service_script_exist?(:systemd, service_name)
47
- configs << :etc_rcd if ChefUtils::DSL::Service.service_script_exist?(:etc_rcd, service_name)
48
-
49
- configs
50
- end
25
+ module ServiceHelpers
26
+ include ChefUtils::DSL::Service
27
+ include Chef::Mixin::ChefUtilsWiring
28
+
29
+ def service_resource_providers
30
+ providers = []
31
+
32
+ providers << :debian if debianrcd?
33
+ providers << :invokercd if invokercd?
34
+ providers << :upstart if upstart?
35
+ providers << :insserv if insserv?
36
+ providers << :systemd if systemd?
37
+ providers << :redhat if redhatrcd?
38
+
39
+ providers
40
+ end
41
+
42
+ def config_for_service(service_name)
43
+ configs = []
44
+
45
+ configs << :initd if service_script_exist?(:initd, service_name)
46
+ configs << :upstart if service_script_exist?(:upstart, service_name)
47
+ configs << :xinetd if service_script_exist?(:xinetd, service_name)
48
+ configs << :systemd if service_script_exist?(:systemd, service_name)
49
+ configs << :etc_rcd if service_script_exist?(:etc_rcd, service_name)
50
+
51
+ configs
51
52
  end
53
+
54
+ extend self
52
55
  end
53
56
  end
54
57
  end
@@ -706,7 +706,7 @@ class Chef
706
706
  # As of this writing, `name` is the only Chef::Resource property created with the
707
707
  # `property` definition, but this will allow for future properties to be extended
708
708
  # as needed.
709
- !Chef::Resource.properties.keys.include?(name)
709
+ !Chef::Resource.properties.key?(name)
710
710
  end
711
711
 
712
712
  def exec_in_resource(resource, proc, *args)
@@ -26,8 +26,6 @@ class Chef
26
26
  class Provider
27
27
  class Cron
28
28
  class Unix < Chef::Provider::Cron
29
- include Chef::Mixin::ShellOut
30
-
31
29
  provides :cron, os: "solaris2"
32
30
 
33
31
  private
@@ -44,11 +44,11 @@ class Chef
44
44
  unless new_resource.user.nil?
45
45
  requirements.assert(:all_actions) do |a|
46
46
  a.assertion do
47
- begin
48
- get_homedir(new_resource.user)
49
- rescue ArgumentError
50
- false
51
- end
47
+
48
+ get_homedir(new_resource.user)
49
+ rescue ArgumentError
50
+ false
51
+
52
52
  end
53
53
  a.whyrun("User #{new_resource.user} does not exist, this run will fail unless it has been previously created. Assuming it would have been created.")
54
54
  a.failure_message(Chef::Exceptions::User, "#{new_resource.user} required by resource #{new_resource.name} does not exist")
@@ -154,6 +154,11 @@ class Chef
154
154
  sha_hash?(result) ? result : nil
155
155
  end
156
156
 
157
+ def already_on_target_branch?
158
+ current_branch = git("rev-parse", "--abbrev-ref", "HEAD", cwd: cwd, returns: [0, 128]).stdout.strip
159
+ current_branch == (new_resource.checkout_branch || new_resource.revision)
160
+ end
161
+
157
162
  def add_remotes
158
163
  if new_resource.additional_remotes.length > 0
159
164
  new_resource.additional_remotes.each_pair do |remote_name, remote_url|
@@ -193,6 +198,9 @@ class Chef
193
198
  # detached head
194
199
  git("checkout", target_revision, cwd: cwd)
195
200
  logger.info "#{new_resource} checked out reference: #{target_revision}"
201
+ elsif already_on_target_branch?
202
+ # we are already on the proper branch
203
+ git("reset", "--hard", target_revision, cwd: cwd)
196
204
  else
197
205
  # need a branch with a tracking branch
198
206
  git("branch", "-f", new_resource.revision, target_revision, cwd: cwd)
@@ -222,13 +230,13 @@ class Chef
222
230
  logger.trace "Fetching updates from #{new_resource.remote} and resetting to revision #{target_revision}"
223
231
  git("fetch", "--prune", new_resource.remote, cwd: cwd)
224
232
  git("fetch", new_resource.remote, "--tags", cwd: cwd)
225
- if new_resource.checkout_branch
233
+ if sha_hash?(new_resource.revision) || is_tag? || already_on_target_branch?
234
+ # detached head or if we are already on the proper branch
235
+ git("reset", "--hard", target_revision, cwd: cwd)
236
+ elsif new_resource.checkout_branch
226
237
  # check out to a local branch
227
238
  git("branch", "-f", new_resource.checkout_branch, target_revision, cwd: cwd)
228
239
  git("checkout", new_resource.checkout_branch, cwd: cwd)
229
- elsif sha_hash?(new_resource.revision) || is_tag?
230
- # detached head
231
- git("reset", "--hard", target_revision, cwd: cwd)
232
240
  else
233
241
  # need a branch with a tracking branch
234
242
  git("branch", "-f", new_resource.revision, target_revision, cwd: cwd)
@@ -17,13 +17,11 @@
17
17
  #
18
18
 
19
19
  require_relative "../provider"
20
- require_relative "../mixin/shell_out"
21
20
  require "etc" unless defined?(Etc)
22
21
 
23
22
  class Chef
24
23
  class Provider
25
24
  class Group < Chef::Provider
26
- include Chef::Mixin::ShellOut
27
25
  attr_accessor :group_exists
28
26
  attr_accessor :change_desc
29
27
 
@@ -39,11 +39,11 @@ class Chef
39
39
 
40
40
  requirements.assert(:create, :manage, :modify) do |a|
41
41
  a.assertion do
42
- begin
43
- to_add(new_resource.members).all? { |member| Etc.getpwnam(member) }
44
- rescue
45
- false
46
- end
42
+
43
+ to_add(new_resource.members).all? { |member| Etc.getpwnam(member) }
44
+ rescue
45
+ false
46
+
47
47
  end
48
48
  a.failure_message Chef::Exceptions::Group, "Could not add users #{to_add(new_resource.members).join(", ")} to #{new_resource.group_name}: one of these users does not exist"
49
49
  a.whyrun "Could not find one of these users: #{to_add(new_resource.members).join(", ")}. Assuming it will be created by a prior step"
@@ -17,11 +17,10 @@
17
17
  #
18
18
 
19
19
  require_relative "../log"
20
- require_relative "../mixin/shell_out"
21
20
  require_relative "../provider"
22
21
  require_relative "../resource/file"
23
22
  require_relative "../exceptions"
24
- require "erb"
23
+ require "erb" unless defined?(Erb)
25
24
 
26
25
  class Chef
27
26
  class Provider
@@ -34,8 +33,6 @@ class Chef
34
33
  class Ifconfig < Chef::Provider
35
34
  provides :ifconfig
36
35
 
37
- include Chef::Mixin::ShellOut
38
-
39
36
  attr_accessor :config_template
40
37
  attr_accessor :config_path
41
38
 
@@ -18,13 +18,11 @@
18
18
  #
19
19
 
20
20
  require_relative "../log"
21
- require_relative "../mixin/shell_out"
22
21
  require_relative "../provider"
23
22
 
24
23
  class Chef
25
24
  class Provider
26
25
  class Mount < Chef::Provider
27
- include Chef::Mixin::ShellOut
28
26
 
29
27
  attr_accessor :unmount_retries
30
28
 
@@ -1,4 +1,3 @@
1
- # Encoding: utf-8
2
1
  # Author:: Hugo Fichter
3
2
  # Author:: Lamont Granquist (<lamont@chef.io>)
4
3
  # Author:: Joshua Timberman (<joshua@chef.io>)
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require_relative "../mixin/shell_out"
20
19
  require_relative "../mixin/subclass_directive"
21
20
  require_relative "../log"
22
21
  require_relative "../file_cache"
@@ -27,7 +26,6 @@ require "shellwords" unless defined?(Shellwords)
27
26
  class Chef
28
27
  class Provider
29
28
  class Package < Chef::Provider
30
- include Chef::Mixin::ShellOut
31
29
  extend Chef::Mixin::SubclassDirective
32
30
 
33
31
  # subclasses declare this if they want all their arguments as arrays of packages and names