chef 16.2.50-universal-mingw32 → 16.4.38-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 (377) 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 +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +6 -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/cookbook_file.rb +2 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  25. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  27. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  28. data/lib/chef/client.rb +14 -14
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +15 -29
  32. data/lib/chef/data_bag.rb +1 -2
  33. data/lib/chef/data_collector/run_end_message.rb +11 -1
  34. data/lib/chef/deprecated.rb +8 -0
  35. data/lib/chef/digester.rb +3 -2
  36. data/lib/chef/dsl/platform_introspection.rb +9 -7
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  38. data/lib/chef/environment.rb +3 -4
  39. data/lib/chef/exceptions.rb +4 -1
  40. data/lib/chef/file_access_control/windows.rb +2 -2
  41. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  42. data/lib/chef/file_content_management/tempfile.rb +9 -9
  43. data/lib/chef/handler.rb +2 -0
  44. data/lib/chef/http.rb +12 -12
  45. data/lib/chef/http/authenticator.rb +3 -1
  46. data/lib/chef/json_compat.rb +1 -1
  47. data/lib/chef/knife.rb +4 -4
  48. data/lib/chef/knife/bootstrap.rb +18 -15
  49. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  50. data/lib/chef/knife/config_get.rb +1 -0
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/configure.rb +1 -1
  53. data/lib/chef/knife/cookbook_download.rb +1 -1
  54. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +29 -37
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  58. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  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 +33 -26
  63. data/lib/chef/knife/delete.rb +15 -15
  64. data/lib/chef/knife/exec.rb +2 -2
  65. data/lib/chef/knife/rehash.rb +3 -21
  66. data/lib/chef/knife/ssh.rb +11 -7
  67. data/lib/chef/knife/xargs.rb +19 -19
  68. data/lib/chef/knife/yaml_convert.rb +1 -1
  69. data/lib/chef/log.rb +7 -2
  70. data/lib/chef/mixin/checksum.rb +0 -1
  71. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  72. data/lib/chef/mixin/deep_merge.rb +35 -6
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +30 -6
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/shell_out.rb +4 -188
  77. data/lib/chef/mixin/template.rb +1 -0
  78. data/lib/chef/mixin/which.rb +6 -3
  79. data/lib/chef/mixins.rb +1 -0
  80. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node/attribute.rb +2 -4
  83. data/lib/chef/node_map.rb +21 -18
  84. data/lib/chef/platform/service_helpers.rb +31 -28
  85. data/lib/chef/property.rb +1 -1
  86. data/lib/chef/provider/cron/unix.rb +0 -2
  87. data/lib/chef/provider/git.rb +17 -9
  88. data/lib/chef/provider/group.rb +0 -2
  89. data/lib/chef/provider/group/suse.rb +5 -5
  90. data/lib/chef/provider/ifconfig.rb +1 -4
  91. data/lib/chef/provider/mount.rb +0 -2
  92. data/lib/chef/provider/mount/solaris.rb +0 -1
  93. data/lib/chef/provider/package.rb +0 -2
  94. data/lib/chef/provider/package/rubygems.rb +1 -1
  95. data/lib/chef/provider/package/snap.rb +3 -4
  96. data/lib/chef/provider/package/windows.rb +9 -4
  97. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  98. data/lib/chef/provider/package/zypper.rb +0 -1
  99. data/lib/chef/provider/powershell_script.rb +21 -5
  100. data/lib/chef/provider/route.rb +1 -1
  101. data/lib/chef/provider/service.rb +2 -2
  102. data/lib/chef/provider/service/arch.rb +1 -1
  103. data/lib/chef/provider/service/debian.rb +1 -1
  104. data/lib/chef/provider/service/gentoo.rb +2 -2
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/service/openbsd.rb +1 -4
  107. data/lib/chef/provider/service/redhat.rb +2 -2
  108. data/lib/chef/provider/service/upstart.rb +1 -1
  109. data/lib/chef/provider/service/windows.rb +10 -10
  110. data/lib/chef/provider/systemd_unit.rb +0 -2
  111. data/lib/chef/provider/template/content.rb +1 -0
  112. data/lib/chef/provider/user/dscl.rb +2 -2
  113. data/lib/chef/provider/user/mac.rb +9 -9
  114. data/lib/chef/provider/windows_task.rb +0 -3
  115. data/lib/chef/provider/yum_repository.rb +1 -1
  116. data/lib/chef/provider/zypper_repository.rb +1 -2
  117. data/lib/chef/providers.rb +0 -1
  118. data/lib/chef/recipe.rb +1 -1
  119. data/lib/chef/resource.rb +9 -11
  120. data/lib/chef/resource/apt_repository.rb +1 -10
  121. data/lib/chef/resource/build_essential.rb +2 -2
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  124. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  125. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  126. data/lib/chef/resource/cron/cron_d.rb +1 -1
  127. data/lib/chef/resource/cron_access.rb +2 -2
  128. data/lib/chef/resource/dmg_package.rb +1 -1
  129. data/lib/chef/resource/execute.rb +4 -5
  130. data/lib/chef/resource/homebrew_update.rb +2 -2
  131. data/lib/chef/resource/hostname.rb +18 -18
  132. data/lib/chef/resource/launchd.rb +1 -1
  133. data/lib/chef/resource/lwrp_base.rb +1 -0
  134. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  135. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  136. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  137. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  138. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  139. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  140. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  141. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  142. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  143. data/lib/chef/resource/osx_profile.rb +227 -5
  144. data/lib/chef/resource/powershell_package_source.rb +1 -1
  145. data/lib/chef/resource/powershell_script.rb +24 -30
  146. data/lib/chef/resource/service.rb +2 -2
  147. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  148. data/lib/chef/resource/sudo.rb +2 -2
  149. data/lib/chef/resource/sysctl.rb +5 -5
  150. data/lib/chef/resource/user_ulimit.rb +1 -1
  151. data/lib/chef/resource/windows_ad_join.rb +2 -0
  152. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  153. data/lib/chef/resource/windows_auto_run.rb +2 -0
  154. data/lib/chef/resource/windows_certificate.rb +2 -0
  155. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  156. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  157. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  158. data/lib/chef/resource/windows_dns_record.rb +25 -5
  159. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  160. data/lib/chef/resource/windows_feature.rb +2 -0
  161. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  162. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  163. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  164. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  165. data/lib/chef/resource/windows_font.rb +3 -1
  166. data/lib/chef/resource/windows_pagefile.rb +4 -0
  167. data/lib/chef/resource/windows_printer.rb +17 -18
  168. data/lib/chef/resource/windows_printer_port.rb +14 -13
  169. data/lib/chef/resource/windows_security_policy.rb +51 -20
  170. data/lib/chef/resource/windows_share.rb +5 -3
  171. data/lib/chef/resource/windows_shortcut.rb +2 -0
  172. data/lib/chef/resource/windows_uac.rb +2 -0
  173. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  174. data/lib/chef/resource/windows_workgroup.rb +2 -3
  175. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  176. data/lib/chef/resource_inspector.rb +7 -1
  177. data/lib/chef/resources.rb +1 -0
  178. data/lib/chef/role.rb +3 -4
  179. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  180. data/lib/chef/run_status.rb +2 -6
  181. data/lib/chef/server_api_versions.rb +4 -0
  182. data/lib/chef/shell.rb +1 -1
  183. data/lib/chef/shell/shell_session.rb +2 -0
  184. data/lib/chef/util/backup.rb +1 -1
  185. data/lib/chef/util/diff.rb +11 -12
  186. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  187. data/lib/chef/version.rb +2 -2
  188. data/lib/chef/win32/file.rb +2 -2
  189. data/lib/chef/win32/file/version_info.rb +5 -5
  190. data/lib/chef/win32/registry.rb +1 -2
  191. data/spec/data/ssl/chef-rspec.cert +15 -15
  192. data/spec/functional/knife/configure_spec.rb +1 -1
  193. data/spec/functional/knife/ssh_spec.rb +5 -16
  194. data/spec/functional/resource/aix_service_spec.rb +9 -2
  195. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  196. data/spec/functional/resource/apt_package_spec.rb +0 -1
  197. data/spec/functional/resource/bash_spec.rb +3 -2
  198. data/spec/functional/resource/bff_spec.rb +3 -3
  199. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  200. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  201. data/spec/functional/resource/cron_spec.rb +10 -2
  202. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  203. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  204. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  205. data/spec/functional/resource/execute_spec.rb +1 -1
  206. data/spec/functional/resource/git_spec.rb +23 -1
  207. data/spec/functional/resource/group_spec.rb +21 -9
  208. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  209. data/spec/functional/resource/insserv_spec.rb +7 -7
  210. data/spec/functional/resource/link_spec.rb +22 -25
  211. data/spec/functional/resource/mount_spec.rb +9 -1
  212. data/spec/functional/resource/msu_package_spec.rb +9 -3
  213. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  214. data/spec/functional/resource/remote_file_spec.rb +7 -13
  215. data/spec/functional/resource/rpm_spec.rb +3 -3
  216. data/spec/functional/resource/timezone_spec.rb +2 -0
  217. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  218. data/spec/functional/resource/windows_font_spec.rb +49 -0
  219. data/spec/functional/resource/windows_package_spec.rb +0 -1
  220. data/spec/functional/resource/windows_path_spec.rb +4 -0
  221. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  222. data/spec/functional/resource/windows_service_spec.rb +4 -0
  223. data/spec/functional/resource/windows_task_spec.rb +4 -3
  224. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  225. data/spec/functional/resource/yum_package_spec.rb +4 -1
  226. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  227. data/spec/functional/run_lock_spec.rb +26 -25
  228. data/spec/functional/shell_spec.rb +5 -6
  229. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  230. data/spec/functional/version_spec.rb +1 -1
  231. data/spec/functional/win32/crypto_spec.rb +1 -1
  232. data/spec/functional/win32/registry_spec.rb +8 -8
  233. data/spec/functional/win32/service_manager_spec.rb +1 -1
  234. data/spec/integration/knife/common_options_spec.rb +12 -12
  235. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  236. data/spec/integration/knife/config_get_spec.rb +126 -125
  237. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  238. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  239. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  240. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  241. data/spec/integration/knife/diff_spec.rb +3 -1
  242. data/spec/integration/knife/download_spec.rb +3 -1
  243. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  245. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  246. data/spec/integration/knife/serve_spec.rb +5 -5
  247. data/spec/integration/knife/upload_spec.rb +3 -1
  248. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  249. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  250. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  251. data/spec/integration/recipes/notifies_spec.rb +1 -1
  252. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  253. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  254. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  255. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  256. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  257. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  258. data/spec/scripts/ssl-serve.rb +1 -1
  259. data/spec/spec_helper.rb +16 -10
  260. data/spec/support/chef_helpers.rb +1 -20
  261. data/spec/support/platform_helpers.rb +9 -11
  262. data/spec/support/platforms/win32/spec_service.rb +1 -1
  263. data/spec/support/shared/functional/directory_resource.rb +1 -1
  264. data/spec/support/shared/functional/execute_resource.rb +1 -1
  265. data/spec/support/shared/functional/file_resource.rb +20 -21
  266. data/spec/support/shared/functional/securable_resource.rb +1 -2
  267. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  268. data/spec/support/shared/functional/win32_service.rb +1 -1
  269. data/spec/support/shared/functional/windows_script.rb +5 -5
  270. data/spec/support/shared/integration/integration_helper.rb +22 -52
  271. data/spec/support/shared/integration/knife_support.rb +2 -9
  272. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  273. data/spec/support/shared/unit/provider/file.rb +12 -8
  274. data/spec/support/shared/unit/script_resource.rb +6 -20
  275. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  276. data/spec/unit/application/solo_spec.rb +4 -2
  277. data/spec/unit/application_spec.rb +4 -2
  278. data/spec/unit/chef_fs/config_spec.rb +2 -2
  279. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  280. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  281. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  282. data/spec/unit/client_spec.rb +4 -1
  283. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  284. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  285. data/spec/unit/data_bag_spec.rb +6 -3
  286. data/spec/unit/data_collector_spec.rb +29 -1
  287. data/spec/unit/decorator_spec.rb +23 -23
  288. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  289. data/spec/unit/environment_spec.rb +12 -8
  290. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  291. data/spec/unit/guard_interpreter_spec.rb +1 -1
  292. data/spec/unit/http/api_versions_spec.rb +20 -2
  293. data/spec/unit/json_compat_spec.rb +1 -1
  294. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  295. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  296. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  297. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  298. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  299. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  300. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  301. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  302. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  303. data/spec/unit/log/syslog_spec.rb +6 -10
  304. data/spec/unit/log/winevt_spec.rb +21 -13
  305. data/spec/unit/lwrp_spec.rb +9 -6
  306. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  307. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  308. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  309. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  310. data/spec/unit/mixin/securable_spec.rb +0 -1
  311. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  312. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  313. data/spec/unit/mixin/template_spec.rb +30 -30
  314. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  315. data/spec/unit/mixin/uris_spec.rb +1 -1
  316. data/spec/unit/mixin/which.rb +8 -0
  317. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  318. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  319. data/spec/unit/node_spec.rb +103 -16
  320. data/spec/unit/property_spec.rb +5 -5
  321. data/spec/unit/provider/batch_spec.rb +1 -1
  322. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  323. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  324. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  325. data/spec/unit/provider/execute_spec.rb +1 -8
  326. data/spec/unit/provider/git_spec.rb +3 -3
  327. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  328. data/spec/unit/provider/mdadm_spec.rb +1 -3
  329. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  330. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  331. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  332. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  333. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  334. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  335. data/spec/unit/provider/package/windows_spec.rb +30 -53
  336. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  337. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  338. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  339. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  340. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  341. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  342. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  343. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  344. data/spec/unit/provider/service/windows_spec.rb +2 -6
  345. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  346. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  347. data/spec/unit/provider/windows_env_spec.rb +5 -4
  348. data/spec/unit/provider_resolver_spec.rb +6 -6
  349. data/spec/unit/provider_spec.rb +1 -0
  350. data/spec/unit/resource/batch_spec.rb +6 -6
  351. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  352. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  353. data/spec/unit/resource/execute_spec.rb +123 -118
  354. data/spec/unit/resource/file/verification_spec.rb +2 -1
  355. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  356. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  357. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  358. data/spec/unit/resource/script_spec.rb +6 -1
  359. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  360. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  361. data/spec/unit/resource/windows_package_spec.rb +1 -0
  362. data/spec/unit/resource_reporter_spec.rb +1 -1
  363. data/spec/unit/resource_spec.rb +25 -8
  364. data/spec/unit/role_spec.rb +30 -28
  365. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  366. data/spec/unit/run_lock_spec.rb +1 -1
  367. data/spec/unit/scan_access_control_spec.rb +1 -1
  368. data/spec/unit/server_api_spec.rb +43 -16
  369. data/spec/unit/util/backup_spec.rb +1 -1
  370. data/spec/unit/util/diff_spec.rb +1 -15
  371. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  372. data/spec/unit/util/selinux_spec.rb +2 -1
  373. data/spec/unit/win32/security_spec.rb +4 -3
  374. data/tasks/rspec.rb +1 -1
  375. metadata +53 -40
  376. data/lib/chef/provider/osx_profile.rb +0 -255
  377. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -76,7 +76,7 @@ class Chef::Knife::Exec < Chef::Knife
76
76
  def find_script(x)
77
77
  # Try to find a script. First try expanding the path given.
78
78
  script = File.expand_path(x)
79
- return script if File.exists?(script)
79
+ return script if File.exist?(script)
80
80
 
81
81
  # Failing that, try searching the script path. If we can't find
82
82
  # anything, fail gracefully.
@@ -86,7 +86,7 @@ class Chef::Knife::Exec < Chef::Knife
86
86
  path = File.expand_path(path)
87
87
  test = File.join(path, x)
88
88
  Chef::Log.trace("Testing: #{test}")
89
- if File.exists?(test)
89
+ if File.exist?(test)
90
90
  script = test
91
91
  Chef::Log.trace("Found: #{test}")
92
92
  return script
@@ -34,7 +34,9 @@ class Chef
34
34
  else
35
35
  reload_plugins
36
36
  end
37
- write_hash(generate_hash)
37
+
38
+ ui.msg "Knife subcommands are cached in #{Chef::Knife::SubcommandLoader.plugin_manifest_path}. Delete this file to disable the caching."
39
+ Chef::Knife::SubcommandLoader.write_hash(Chef::Knife::SubcommandLoader.generate_hash)
38
40
  end
39
41
 
40
42
  def reload_plugins
@@ -43,26 +45,6 @@ class Chef
43
45
  # loaded plugins and `load_commands` shouldn't have an effect.
44
46
  Chef::Knife.subcommand_loader.load_commands
45
47
  end
46
-
47
- def generate_hash
48
- output = if Chef::Knife::SubcommandLoader.plugin_manifest?
49
- Chef::Knife::SubcommandLoader.plugin_manifest
50
- else
51
- { Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY => {} }
52
- end
53
- output[Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY]["plugins_paths"] = Chef::Knife.subcommand_files
54
- output[Chef::Knife::SubcommandLoader::HashedCommandLoader::KEY]["plugins_by_category"] = Chef::Knife.subcommands_by_category
55
- output
56
- end
57
-
58
- def write_hash(data)
59
- plugin_manifest_dir = File.expand_path("..", Chef::Knife::SubcommandLoader.plugin_manifest_path)
60
- FileUtils.mkdir_p(plugin_manifest_dir) unless File.directory?(plugin_manifest_dir)
61
- File.open(Chef::Knife::SubcommandLoader.plugin_manifest_path, "w") do |f|
62
- f.write(Chef::JSONCompat.to_json_pretty(data))
63
- ui.msg "Knife subcommands are cached in #{Chef::Knife::SubcommandLoader.plugin_manifest_path}. Delete this file to disable the caching."
64
- end
65
- end
66
48
  end
67
49
  end
68
50
  end
@@ -296,6 +296,10 @@ class Chef
296
296
  opts[:keepalive] = true
297
297
  opts[:keepalive_interval] = ssh_config[:keepalive_interval]
298
298
  end
299
+ # maintain support for legacy key types / ciphers / key exchange algorithms.
300
+ # most importantly this adds back support for DSS host keys
301
+ # See https://github.com/net-ssh/net-ssh/pull/709
302
+ opts[:append_all_supported_algorithms] = true
299
303
  end
300
304
  end
301
305
 
@@ -384,7 +388,7 @@ class Chef
384
388
  end
385
389
 
386
390
  def prompt_for_password(prompt = "Enter your password: ")
387
- ui.ask(prompt) { |q| q.echo = false }
391
+ ui.ask(prompt, echo: false)
388
392
  end
389
393
 
390
394
  # Present the prompt and read a single line from the console. It also
@@ -521,12 +525,12 @@ class Chef
521
525
  def cssh
522
526
  cssh_cmd = nil
523
527
  %w{csshX cssh}.each do |cmd|
524
- begin
525
- # Unix and Mac only
526
- cssh_cmd = shell_out!("which #{cmd}").stdout.strip
527
- break
528
- rescue Mixlib::ShellOut::ShellCommandFailed
529
- end
528
+
529
+ # Unix and Mac only
530
+ cssh_cmd = shell_out!("which #{cmd}").stdout.strip
531
+ break
532
+ rescue Mixlib::ShellOut::ShellCommandFailed
533
+
530
534
  end
531
535
  raise Chef::Exceptions::Exec, "no command found for cssh" unless cssh_cmd
532
536
 
@@ -204,25 +204,25 @@ class Chef
204
204
  error = false
205
205
  # Create the temporary files
206
206
  tempfiles.each_pair do |tempfile, file|
207
- begin
208
- value = file[:file].read
209
- file[:value] = value
210
- tempfile.open
211
- tempfile.write(value)
212
- tempfile.close
213
- rescue Chef::ChefFS::FileSystem::OperationNotAllowedError => e
214
- ui.error "#{format_path(e.entry)}: #{e.reason}."
215
- error = true
216
- tempfile.close!
217
- tempfiles.delete(tempfile)
218
- next
219
- rescue Chef::ChefFS::FileSystem::NotFoundError => e
220
- ui.error "#{format_path(e.entry)}: No such file or directory"
221
- error = true
222
- tempfile.close!
223
- tempfiles.delete(tempfile)
224
- next
225
- end
207
+
208
+ value = file[:file].read
209
+ file[:value] = value
210
+ tempfile.open
211
+ tempfile.write(value)
212
+ tempfile.close
213
+ rescue Chef::ChefFS::FileSystem::OperationNotAllowedError => e
214
+ ui.error "#{format_path(e.entry)}: #{e.reason}."
215
+ error = true
216
+ tempfile.close!
217
+ tempfiles.delete(tempfile)
218
+ next
219
+ rescue Chef::ChefFS::FileSystem::NotFoundError => e
220
+ ui.error "#{format_path(e.entry)}: No such file or directory"
221
+ error = true
222
+ tempfile.close!
223
+ tempfiles.delete(tempfile)
224
+ next
225
+
226
226
  end
227
227
 
228
228
  return error if error && tempfiles.size == 0
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "yaml"
19
+ require "yaml" unless defined?(YAML)
20
20
  require_relative "../knife"
21
21
  class Chef::Knife::YamlConvert < Chef::Knife
22
22
 
@@ -28,8 +28,13 @@ class Chef
28
28
  class Log
29
29
  extend Mixlib::Log
30
30
 
31
+ def self.setup!
32
+ init(MonoLogger.new(STDOUT))
33
+ nil
34
+ end
35
+
31
36
  # Force initialization of the primary log device (@logger)
32
- init(MonoLogger.new(STDOUT))
37
+ setup!
33
38
 
34
39
  class Formatter
35
40
  def self.show_time=(*args)
@@ -47,7 +52,7 @@ class Chef
47
52
  def self.caller_location
48
53
  # Pick the first caller that is *not* part of the Chef gem, that's the
49
54
  # thing the user wrote. Or failing that, the most recent caller.
50
- chef_gem_path = File.expand_path("../..", __FILE__)
55
+ chef_gem_path = File.expand_path("..", __dir__)
51
56
  caller(0..20).find { |c| !c.start_with?(chef_gem_path) } || caller(0..1)[0]
52
57
  end
53
58
 
@@ -31,7 +31,6 @@ class Chef
31
31
 
32
32
  checksum.slice(0, 6)
33
33
  end
34
-
35
34
  end
36
35
  end
37
36
  end
@@ -1,5 +1,4 @@
1
- #
2
- # Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
1
+ #--
3
2
  # Copyright:: Copyright (c) Chef Software Inc.
4
3
  # License:: Apache License, Version 2.0
5
4
  #
@@ -7,22 +6,35 @@
7
6
  # you may not use this file except in compliance with the License.
8
7
  # You may obtain a copy of the License at
9
8
  #
10
- # http://www.apache.org/licenses/LICENSE-2.0
9
+ # http://www.apache.org/licenses/LICENSE-2.0
11
10
  #
12
11
  # Unless required by applicable law or agreed to in writing, software
13
12
  # distributed under the License is distributed on an "AS IS" BASIS,
14
13
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
14
  # See the License for the specific language governing permissions and
16
15
  # limitations under the License.
17
- #
18
16
 
19
- def run_context
20
- @run_context ||= begin
21
- node = Chef::Node.new
22
- node.default[:platform] = ohai[:platform]
23
- node.default[:platform_version] = ohai[:platform_version]
24
- node.default[:os] = ohai[:os]
25
- events = Chef::EventDispatch::Dispatcher.new
26
- Chef::RunContext.new(node, {}, events)
17
+ require_relative "../log"
18
+ require_relative "../config"
19
+ require_relative "../chef_class"
20
+
21
+ class Chef
22
+ module Mixin
23
+ # Common Dependency Injection wiring for ChefUtils-related modules
24
+ module ChefUtilsWiring
25
+ private
26
+
27
+ def __config
28
+ Chef::Config
29
+ end
30
+
31
+ def __log
32
+ Chef::Log
33
+ end
34
+
35
+ def __transport_connection
36
+ Chef.run_context&.transport_connection
37
+ end
38
+ end
27
39
  end
28
40
  end
@@ -19,16 +19,33 @@
19
19
 
20
20
  class Chef
21
21
  module Mixin
22
- # == Chef::Mixin::DeepMerge
23
22
  # Implements a deep merging algorithm for nested data structures.
24
- # ==== Notice:
25
- # This code was originally imported from deep_merge by Steve Midgley.
26
- # deep_merge is available under the MIT license from
27
- # http://trac.misuse.org/science/wiki/DeepMerge
23
+ #
24
+ # This code was originally imported from deep_merge by Steve Midgley.
25
+ # deep_merge is available under the MIT license from
26
+ # http://trac.misuse.org/science/wiki/DeepMerge
27
+ #
28
+ # Note that this is not considered a public interface. It is technically
29
+ # public and has been used and we cannot break the API, but continued
30
+ # external use is discouraged. We are unlikely to change the shape of
31
+ # the API and break anyone, but this code does not serve the purposes of
32
+ # cookbook authors and customers. It is intended only for the purposes
33
+ # of the internal use in the chef-client codebase. We do not accept
34
+ # pull requests to extend the functionality of this algorithm. Users
35
+ # who find this does nearly what they want, should copy and paste the
36
+ # algorithm and tune to their needs. We will not maintain any additional
37
+ # use cases.
38
+ #
39
+ # "It is what it is, and if it isn't what you want, you need to build
40
+ # that yourself"
41
+ #
42
+ # @api private
43
+ #
28
44
  module DeepMerge
29
45
 
30
46
  extend self
31
47
 
48
+ # @api private
32
49
  def merge(first, second)
33
50
  first = Mash.new(first) unless first.is_a?(Mash)
34
51
  second = Mash.new(second) unless second.is_a?(Mash)
@@ -38,20 +55,25 @@ class Chef
38
55
 
39
56
  class InvalidParameter < StandardError; end
40
57
 
41
- # Deep Merge core documentation.
42
58
  # deep_merge! method permits merging of arbitrary child elements. The two top level
43
59
  # elements must be hashes. These hashes can contain unlimited (to stack limit) levels
44
60
  # of child elements. These child elements to not have to be of the same types.
45
61
  # Where child elements are of the same type, deep_merge will attempt to merge them together.
46
62
  # Where child elements are not of the same type, deep_merge will skip or optionally overwrite
47
63
  # the destination element with the contents of the source element at that level.
64
+ #
48
65
  # So if you have two hashes like this:
66
+ #
49
67
  # source = {:x => [1,2,3], :y => 2}
50
68
  # dest = {:x => [4,5,'6'], :y => [7,8,9]}
51
69
  # dest.deep_merge!(source)
52
70
  # Results: {:x => [1,2,3,4,5,'6'], :y => 2}
71
+ #
53
72
  # By default, "deep_merge!" will overwrite any unmergeables and merge everything else.
54
73
  # To avoid this, use "deep_merge" (no bang/exclamation mark)
74
+ #
75
+ # @api private
76
+ #
55
77
  def deep_merge!(source, dest)
56
78
  # if dest doesn't exist, then simply copy source to it
57
79
  if dest.nil?
@@ -87,10 +109,12 @@ class Chef
87
109
  dest
88
110
  end # deep_merge!
89
111
 
112
+ # @api private
90
113
  def hash_only_merge(merge_onto, merge_with)
91
114
  hash_only_merge!(safe_dup(merge_onto), safe_dup(merge_with))
92
115
  end
93
116
 
117
+ # @api private
94
118
  def safe_dup(thing)
95
119
  thing.dup
96
120
  rescue TypeError
@@ -101,6 +125,9 @@ class Chef
101
125
  # `merge_onto` is the object that will "lose" in case of conflict.
102
126
  # `merge_with` is the object whose values will replace `merge_onto`s
103
127
  # values when there is a conflict.
128
+ #
129
+ # @api private
130
+ #
104
131
  def hash_only_merge!(merge_onto, merge_with)
105
132
  # If there are two Hashes, recursively merge.
106
133
  if merge_onto.is_a?(Hash) && merge_with.is_a?(Hash)
@@ -131,6 +158,8 @@ class Chef
131
158
  end
132
159
  end
133
160
 
161
+ # @api private
162
+ #
134
163
  def deep_merge(source, dest)
135
164
  deep_merge!(safe_dup(source), safe_dup(dest))
136
165
  end
@@ -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