chef 15.11.3-universal-mingw32 → 16.1.16-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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -106,12 +106,13 @@ class Chef
106
106
  def action_record_for_json(action_record)
107
107
  new_resource = action_record.new_resource
108
108
  current_resource = action_record.current_resource
109
+ after_resource = action_record.after_resource
109
110
 
110
111
  hash = {
111
112
  "type" => new_resource.resource_name.to_sym,
112
113
  "name" => new_resource.name.to_s,
113
114
  "id" => safe_resource_identity(new_resource),
114
- "after" => safe_state_for_resource_reporter(new_resource),
115
+ "after" => safe_state_for_resource_reporter(after_resource || new_resource),
115
116
  "before" => safe_state_for_resource_reporter(current_resource),
116
117
  "duration" => action_record.elapsed_time.nil? ? "" : (action_record.elapsed_time * 1000).to_i.to_s,
117
118
  "delta" => new_resource.respond_to?(:diff) && updated_or_failed?(action_record) ? new_resource.diff : "",
@@ -120,6 +121,11 @@ class Chef
120
121
  "status" => action_record_status_for_json(action_record),
121
122
  }
122
123
 
124
+ # don't use the new_resource for the after_resource if it is skipped or failed
125
+ if action_record.status == :skipped || action_record.status == :failed || action_record.status == :unprocessed
126
+ hash["after"] = {}
127
+ end
128
+
123
129
  if new_resource.cookbook_name
124
130
  hash["cookbook_name"] = new_resource.cookbook_name
125
131
  hash["cookbook_version"] = new_resource.cookbook_version.version
@@ -21,8 +21,8 @@ class Chef
21
21
  class Decorator
22
22
  # Lazy Array around Lazy Objects
23
23
  #
24
- # This only lazys access through `#[]`. In order to implement #each we need to
25
- # know how many items we have and what their indexes are, so we'd have to evalute
24
+ # This makes access lazy through `#[]`. In order to implement #each we need to
25
+ # know how many items we have and what their indexes are, so we'd have to evaluate
26
26
  # the proc which makes that impossible. You can call methods like #each and the
27
27
  # decorator will forward the method, but item access will not be lazy.
28
28
  #
@@ -233,6 +233,10 @@ class Chef
233
233
  target 28
234
234
  end
235
235
 
236
+ class KnifeBootstrapApis < Base
237
+ target 29
238
+ end
239
+
236
240
  class Generic < Base
237
241
  def url
238
242
  "https://docs.chef.io/chef_deprecations_client/"
@@ -39,9 +39,9 @@ class Chef
39
39
 
40
40
  def generate_checksum(file)
41
41
  if file.is_a?(StringIO)
42
- checksum_io(file, OpenSSL::Digest::SHA256.new)
42
+ checksum_io(file, OpenSSL::Digest.new("SHA256"))
43
43
  else
44
- checksum_file(file, OpenSSL::Digest::SHA256.new)
44
+ checksum_file(file, OpenSSL::Digest.new("SHA256"))
45
45
  end
46
46
  end
47
47
 
@@ -50,11 +50,11 @@ class Chef
50
50
  end
51
51
 
52
52
  def generate_md5_checksum_for_file(file)
53
- checksum_file(file, OpenSSL::Digest::MD5.new)
53
+ checksum_file(file, OpenSSL::Digest.new("MD5"))
54
54
  end
55
55
 
56
56
  def generate_md5_checksum(io)
57
- checksum_io(io, OpenSSL::Digest::MD5.new)
57
+ checksum_io(io, OpenSSL::Digest.new("MD5"))
58
58
  end
59
59
 
60
60
  private
@@ -54,6 +54,14 @@ class Chef
54
54
  # The user's configuration directory
55
55
  USER_CONF_DIR = ChefConfig::Dist::USER_CONF_DIR.freeze
56
56
 
57
+ # The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
58
+ # "cinc" => /etc/cinc, /var/cinc, C:\\cinc
59
+ DIR_SUFFIX = ChefConfig::Dist::DIR_SUFFIX.freeze
60
+
61
+ # The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
62
+ # DIR_SUFFIX is appended to it in code where relevant
63
+ LEGACY_CONF_DIR = ChefConfig::Dist::LEGACY_CONF_DIR.freeze
64
+
57
65
  # The server's configuration directory
58
66
  SERVER_CONF_DIR = "/etc/chef-server".freeze
59
67
  end
@@ -0,0 +1,84 @@
1
+ #
2
+ # Author: Joshua Timberman <joshua@chef.io>
3
+ #
4
+ # Copyright:: Copyright (c) Chef Software Inc.
5
+ # Copyright:: 2014-2015 Bloomberg Finance L.P.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require "chef-vault"
21
+ require_relative "data_query"
22
+
23
+ class Chef
24
+ module DSL
25
+ module ChefVault
26
+ include Chef::DSL::DataQuery
27
+
28
+ # Helper method which provides a Recipe/Resource DSL for wrapping
29
+ # creation of {ChefVault::Item}.
30
+ # @note
31
+ # Falls back to normal data bag item loading if the item is not
32
+ # actually a Chef Vault item. This is controlled via
33
+ # +node['chef-vault']['databag_fallback']+.
34
+ # @example
35
+ # item = chef_vault_item('secrets', 'bacon')
36
+ # log 'Yeah buddy!' if item['_default']['type']
37
+ # @param [String] bag Name of the data bag to load from.
38
+ # @param [String] id Identifier of the data bag item to load.
39
+ def chef_vault_item(bag, id)
40
+ if ::ChefVault::Item.vault?(bag, id)
41
+ ::ChefVault::Item.load(bag, id)
42
+ elsif node["chef-vault"]["databag_fallback"]
43
+ data_bag_item(bag, id)
44
+ else
45
+ raise "Trying to load a regular data bag item #{id} from #{bag}, and databag_fallback is disabled"
46
+ end
47
+ end
48
+
49
+ # Helper method that allows for listing the ids of a vault in a recipe.
50
+ # This method is needed because data_bag() returns the keys along with
51
+ # the items, so this method strips out the keys for users so that they
52
+ # don't have to do it in their recipes.
53
+ # @example
54
+ # ids = chef_vault('secrets')
55
+ # log 'Yeah buddy!' if ids[0] == 'bacon'
56
+ # @param [String] bag Name of the data bag to load from.
57
+ # @return [Array]
58
+ def chef_vault(bag)
59
+ raise "'#{bag}' is not a vault" unless Chef::DataBag.list.include? bag
60
+
61
+ pattern = Regexp.new(/_keys$/).freeze
62
+ data_bag(bag).each_with_object([]) do |id, acc|
63
+ acc << id unless pattern.match?(id)
64
+ end
65
+ end
66
+
67
+ # Helper method which provides an environment wrapper for a data bag.
68
+ # This allows for easy access to current environment secrets inside
69
+ # of an item.
70
+ # @example
71
+ # item = chef_vault_item_for_environment('secrets', 'bacon')
72
+ # log 'Yeah buddy!' if item['type'] == 'applewood_smoked'
73
+ # @param [String] bag Name of the data bag to load from.
74
+ # @param [String] id Identifier of the data bag item to load.
75
+ # @return [Hash]
76
+ def chef_vault_item_for_environment(bag, id)
77
+ item = chef_vault_item(bag, id)
78
+ return {} unless item[node.chef_environment]
79
+
80
+ item[node.chef_environment]
81
+ end
82
+ end
83
+ end
84
+ end
@@ -151,7 +151,7 @@ class Chef
151
151
  # source "y.txt.erb"
152
152
  # variables {}
153
153
  # end
154
- # resource.variables.merge!({ home: "/home/klowns" })
154
+ # resource.variables.merge!({ home: "/home/clowns" })
155
155
  #
156
156
  def edit_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
157
157
  edit_resource!(type, name, created_at: created_at, run_context: run_context, &resource_attrs_block)
@@ -267,10 +267,10 @@ class Chef
267
267
  # action :delete
268
268
  # end
269
269
  #
270
- def declare_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
270
+ def declare_resource(type, name, created_at: nil, run_context: self.run_context, enclosing_provider: nil, &resource_attrs_block)
271
271
  created_at ||= caller[0]
272
272
 
273
- resource = build_resource(type, name, created_at: created_at, &resource_attrs_block)
273
+ resource = build_resource(type, name, created_at: created_at, enclosing_provider: enclosing_provider, &resource_attrs_block)
274
274
 
275
275
  run_context.resource_collection.insert(resource, resource_type: resource.declared_type, instance_name: resource.name)
276
276
  resource
@@ -297,13 +297,15 @@ class Chef
297
297
  # action :delete
298
298
  # end
299
299
  #
300
- def build_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
300
+ def build_resource(type, name, created_at: nil, run_context: self.run_context, enclosing_provider: nil, &resource_attrs_block)
301
301
  created_at ||= caller[0]
302
302
 
303
303
  # this needs to be lazy in order to avoid circular dependencies since ResourceBuilder
304
304
  # will requires the entire provider+resolver universe
305
305
  require_relative "../resource_builder" unless defined?(Chef::ResourceBuilder)
306
306
 
307
+ enclosing_provider ||= self if is_a?(Chef::Provider)
308
+
307
309
  Chef::ResourceBuilder.new(
308
310
  type: type,
309
311
  name: name,
@@ -312,7 +314,7 @@ class Chef
312
314
  run_context: run_context,
313
315
  cookbook_name: cookbook_name,
314
316
  recipe_name: recipe_name,
315
- enclosing_provider: is_a?(Chef::Provider) ? self : nil
317
+ enclosing_provider: enclosing_provider
316
318
  ).build(&resource_attrs_block)
317
319
  end
318
320
 
@@ -248,15 +248,16 @@ class Chef
248
248
  end
249
249
 
250
250
  # a simple helper to determine if we're on a windows release pre-2012 / 8
251
+ #
252
+ # @deprecated Windows releases before Windows 2012 and 8 are no longer supported
251
253
  # @return [Boolean] Is the system older than Windows 8 / 2012
252
254
  def older_than_win_2012_or_8?(node = run_context.nil? ? nil : run_context.node)
253
- node["platform_version"].to_f < 6.2
255
+ false # we don't support platforms that would be true
254
256
  end
255
257
 
256
258
  # ^^^^^^ NOTE: PLEASE DO NOT CONTINUE TO ADD THESE KINDS OF PLATFORM_VERSION APIS WITHOUT ^^^^^^^
257
259
  # ^^^^^^ GOING THROUGH THE DESIGN REVIEW PROCESS AND ADDRESS THE EXISTING CHEF-SUGAR ONES ^^^^^^^
258
260
  # ^^^^^^ DO "THE HARD RIGHT THING" AND ADDRESS THE BROADER PROBLEM AND FIX IT ALL. ^^^^^^^
259
-
260
261
  end
261
262
  end
262
263
  end
@@ -22,23 +22,19 @@ require_relative "resources"
22
22
  require_relative "definitions"
23
23
  require_relative "include_recipe"
24
24
  require_relative "reboot_pending"
25
- require_relative "core"
25
+ require_relative "universal"
26
+ require_relative "declare_resource"
27
+ require_relative "../mixin/notifying_block"
26
28
  require_relative "../mixin/lazy_module_include"
27
29
 
28
30
  class Chef
29
31
  module DSL
30
32
  # Part of a family of DSL mixins.
31
33
  #
32
- # Chef::DSL::Recipe mixes into Recipes and LWRP Providers.
33
- # - this does not target core chef resources and providers.
34
+ # Chef::DSL::Recipe mixes into Recipes and Providers.
34
35
  # - this is restricted to recipe/resource/provider context where a resource collection exists.
35
36
  # - cookbook authors should typically include modules into here.
36
37
  #
37
- # Chef::DSL::Core mixes into Recipes, LWRP Providers and Core Providers
38
- # - this adds cores providers on top of the Recipe DSL.
39
- # - this is restricted to recipe/resource/provider context where a resource collection exists.
40
- # - core chef authors should typically include modules into here.
41
- #
42
38
  # Chef::DSL::Universal mixes into Recipes, LWRP Resources+Providers, Core Resources+Providers, and Attributes files.
43
39
  # - this adds resources and attributes files.
44
40
  # - do not add helpers which manipulate the resource collection.
@@ -46,7 +42,9 @@ class Chef
46
42
  # - it also pollutes the namespace of nearly every context, watch out.
47
43
  #
48
44
  module Recipe
49
- include Chef::DSL::Core
45
+ include Chef::DSL::Universal
46
+ include Chef::DSL::DeclareResource
47
+ include Chef::Mixin::NotifyingBlock
50
48
  include Chef::DSL::IncludeRecipe
51
49
  include Chef::DSL::RebootPending
52
50
  include Chef::DSL::Resources
@@ -69,6 +67,3 @@ class Chef
69
67
  end
70
68
  end
71
69
  end
72
-
73
- # Avoid circular references for things that are only used in instance methods
74
- require_relative "../resource"
@@ -19,6 +19,7 @@
19
19
 
20
20
  require_relative "platform_introspection"
21
21
  require_relative "data_query"
22
+ require_relative "chef_vault"
22
23
  require_relative "registry_helper"
23
24
  require_relative "powershell"
24
25
  require_relative "../mixin/powershell_exec"
@@ -30,16 +31,10 @@ class Chef
30
31
  module DSL
31
32
  # Part of a family of DSL mixins.
32
33
  #
33
- # Chef::DSL::Recipe mixes into Recipes and LWRP Providers.
34
- # - this does not target core chef resources and providers.
34
+ # Chef::DSL::Recipe mixes into Recipes and Providers.
35
35
  # - this is restricted to recipe/resource/provider context where a resource collection exists.
36
36
  # - cookbook authors should typically include modules into here.
37
37
  #
38
- # Chef::DSL::Core mixes into Recipes, LWRP Providers and Core Providers
39
- # - this adds cores providers on top of the Recipe DSL.
40
- # - this is restricted to recipe/resource/provider context where a resource collection exists.
41
- # - core chef authors should typically include modules into here.
42
- #
43
38
  # Chef::DSL::Universal mixes into Recipes, LWRP Resources+Providers, Core Resources+Providers, and Attributes files.
44
39
  # - this adds resources and attributes files.
45
40
  # - do not add helpers which manipulate the resource collection.
@@ -49,6 +44,7 @@ class Chef
49
44
  module Universal
50
45
  include Chef::DSL::PlatformIntrospection
51
46
  include Chef::DSL::DataQuery
47
+ include Chef::DSL::ChefVault
52
48
  include Chef::DSL::RegistryHelper
53
49
  include Chef::DSL::Powershell
54
50
  include Chef::Mixin::PowershellExec
@@ -158,7 +158,7 @@ class Chef::EncryptedDataBagItem
158
158
  d = OpenSSL::Cipher.new(algorithm)
159
159
  d.decrypt
160
160
  # We must set key before iv: https://bugs.ruby-lang.org/issues/8221
161
- d.key = OpenSSL::Digest::SHA256.digest(key)
161
+ d.key = OpenSSL::Digest.digest("SHA256", key)
162
162
  d.iv = iv
163
163
  d
164
164
  end
@@ -102,7 +102,7 @@ class Chef::EncryptedDataBagItem
102
102
  encryptor = OpenSSL::Cipher.new(algorithm)
103
103
  encryptor.encrypt
104
104
  # We must set key before iv: https://bugs.ruby-lang.org/issues/8221
105
- encryptor.key = OpenSSL::Digest::SHA256.digest(key)
105
+ encryptor.key = OpenSSL::Digest.digest("SHA256", key)
106
106
  @iv ||= encryptor.random_iv
107
107
  encryptor.iv = @iv
108
108
  encryptor
@@ -266,6 +266,9 @@ class Chef
266
266
  # Called after #load_current_resource has run.
267
267
  def resource_current_state_loaded(resource, action, current_resource); end
268
268
 
269
+ # Called after #load_after_resource has run.
270
+ def resource_after_state_loaded(resource, action, after_resource); end
271
+
269
272
  # Called when resource current state load is skipped due to the provider
270
273
  # not supporting whyrun mode.
271
274
  def resource_current_state_load_bypassed(resource, action, current_resource); end
@@ -142,7 +142,7 @@ class Chef
142
142
 
143
143
  # Generic callback for any attribute/library/lwrp/recipe file in a
144
144
  # cookbook getting loaded. The per-filetype callbacks for file load are
145
- # overriden so that they call this instead. This means that a subclass of
145
+ # overridden so that they call this instead. This means that a subclass of
146
146
  # Formatters::Base can implement #file_loaded to do the same thing for
147
147
  # every kind of file that Chef loads from a recipe instead of
148
148
  # implementing all the per-filetype callbacks.
@@ -273,7 +273,7 @@ class Chef
273
273
  # Called when a resource has no converge actions, e.g., it was already correct.
274
274
  def resource_up_to_date(resource, action)
275
275
  @up_to_date_resources += 1
276
- puts " (up to date)", stream: resource
276
+ puts " (up to date)", stream: resource unless resource.suppress_up_to_date_messages?
277
277
  unindent
278
278
  end
279
279
 
@@ -17,23 +17,14 @@ class Chef
17
17
  @semaphore = Mutex.new
18
18
  end
19
19
 
20
- def highline
21
- @highline ||= begin
22
- require "highline"
23
- HighLine.new
20
+ # pastel.decorate is a lightweight replacement for highline.color
21
+ def pastel
22
+ @pastel ||= begin
23
+ require "pastel"
24
+ Pastel.new
24
25
  end
25
26
  end
26
27
 
27
- # Print text. This will start a new line and indent if necessary
28
- # but will not terminate the line (future print and puts statements
29
- # will start off where this print left off).
30
- #
31
- # @param string [String]
32
- # @param args [Array<Hash,Symbol>]
33
- def color(string, *args)
34
- print(string, from_args(args))
35
- end
36
-
37
28
  # Print the start of a new line. This will terminate any existing lines and
38
29
  # cause indentation but will not move to the next line yet (future 'print'
39
30
  # and 'puts' statements will stay on this line).
@@ -83,7 +74,7 @@ class Chef
83
74
  #
84
75
  # == Alternative
85
76
  #
86
- # You may also call print('string', :red) (a list of colors a la Highline.color)
77
+ # You may also call print('string', :red) (https://github.com/piotrmurach/pastel#3-supported-colors)
87
78
  def print(string, *args)
88
79
  options = from_args(args)
89
80
 
@@ -140,7 +131,7 @@ class Chef
140
131
  end
141
132
 
142
133
  if Chef::Config[:color] && options[:colors]
143
- @out.print highline.color(line, *options[:colors])
134
+ @out.print pastel.decorate(line, *options[:colors])
144
135
  else
145
136
  @out.print line
146
137
  end
@@ -269,7 +269,7 @@ class Chef
269
269
  if keepalives && !base_url.nil?
270
270
  # only reuse the http_client if we want keepalives and have a base_url
271
271
  @http_client ||= {}
272
- # the per-host per-port cache here gets peristent connections correct when
272
+ # the per-host per-port cache here gets persistent connections correct when
273
273
  # redirecting to different servers
274
274
  if base_url.is_a?(String) # sigh, this kind of abuse can't happen with strongly typed languages
275
275
  @http_client[base_url] ||= build_http_client(base_url)
@@ -22,7 +22,7 @@ require_relative "http_request"
22
22
  class Chef
23
23
  class HTTP
24
24
 
25
- # Middleware-esque class for handling compression in HTTP responses.
25
+ # Middleware-ish class for handling compression in HTTP responses.
26
26
  class Decompressor
27
27
  class NoopInflater
28
28
  def inflate(chunk)
@@ -21,6 +21,7 @@
21
21
  # limitations under the License.
22
22
  #
23
23
  require "uri" unless defined?(URI)
24
+ require "cgi" unless defined?(CGI)
24
25
  require "net/http" unless defined?(Net::HTTP)
25
26
  require_relative "../dist"
26
27
 
@@ -176,8 +177,8 @@ class Chef
176
177
  @http_request.body = request_body if request_body && @http_request.request_body_permitted?
177
178
  # Optionally handle HTTP Basic Authentication
178
179
  if url.user
179
- user = URI.unescape(url.user)
180
- password = URI.unescape(url.password) if url.password
180
+ user = CGI.unescape(url.user)
181
+ password = CGI.unescape(url.password) if url.password
181
182
  @http_request.basic_auth(user, password)
182
183
  end
183
184