chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -31,10 +31,9 @@ class Chef
31
31
  class Log < Chef::Resource
32
32
  unified_mode true
33
33
 
34
- resource_name :log
35
34
  provides :log, target_mode: true
36
35
 
37
- description "Use the log resource to create log entries. The log resource behaves"\
36
+ description "Use the **log** resource to create log entries. The log resource behaves"\
38
37
  " like any other resource: built into the resource collection during the"\
39
38
  " compile phase, and then run during the execution phase. (To create a log"\
40
39
  " entry that is not built into the resource collection, use Chef::Log instead"\
@@ -50,6 +49,18 @@ class Chef
50
49
 
51
50
  allowed_actions :write
52
51
  default_action :write
52
+
53
+ def suppress_up_to_date_messages?
54
+ true
55
+ end
56
+
57
+ # Write the log to Chef's log
58
+ #
59
+ # @return [true] Always returns true
60
+ action :write do
61
+ logger.send(new_resource.level, new_resource.message)
62
+ new_resource.updated_by_last_action(true) if Chef::Config[:count_log_resource_updates]
63
+ end
53
64
  end
54
65
  end
55
66
  end
@@ -67,7 +67,7 @@ class Chef
67
67
 
68
68
  # wire up the default resource name after the class is parsed only if we haven't declared one.
69
69
  # (this ordering is important for MapCollision deprecation warnings)
70
- resource_class.resource_name resource_name.to_sym if resource_class.resource_name.nil?
70
+ resource_class.provides resource_name.to_sym unless Chef::ResourceResolver.includes_handler?(resource_name.to_sym, self)
71
71
 
72
72
  resource_class
73
73
  end
@@ -20,12 +20,13 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class MacosUserDefaults < Chef::Resource
23
+ unified_mode true
24
+
23
25
  # align with apple's marketing department
24
- resource_name :macos_userdefaults
25
- provides(:mac_os_x_userdefaults) { true }
26
26
  provides(:macos_userdefaults) { true }
27
+ provides(:mac_os_x_userdefaults) { true }
27
28
 
28
- description "Use the macos_userdefaults resource to manage the macOS user defaults system. The properties of this resource are passed to the defaults command, and the parameters follow the convention of that command. See the defaults(1) man page for details on how the tool works."
29
+ description "Use the **macos_userdefaults** resource to manage the macOS user defaults system. The properties of this resource are passed to the defaults command, and the parameters follow the convention of that command. See the defaults(1) man page for details on how the tool works."
29
30
  introduced "14.0"
30
31
 
31
32
  property :domain, String,
@@ -73,12 +74,17 @@ class Chef
73
74
 
74
75
  load_current_value do |desired|
75
76
  value = coerce_booleans(desired.value)
76
- drcmd = "defaults read '#{desired.domain}' "
77
- drcmd << "'#{desired.key}' " if desired.key
78
- shell_out_opts = {}
79
- shell_out_opts[:user] = desired.user unless desired.user.nil?
80
- vc = shell_out("#{drcmd} | grep -qx '#{value}'", shell_out_opts)
81
- is_set vc.exitstatus == 0 ? true : false
77
+ cmd = "defaults read '#{desired.domain}' "
78
+ cmd << "'#{desired.key}' " if desired.key
79
+ cmd << " | grep -qx '#{value}'"
80
+
81
+ vc = if desired.user.nil?
82
+ shell_out(cmd)
83
+ else
84
+ shell_out(cmd, user: desired.user)
85
+ end
86
+
87
+ is_set !vc.error?
82
88
  end
83
89
 
84
90
  action :write do
@@ -106,7 +112,9 @@ class Chef
106
112
  cmd << "-#{type}" if type
107
113
  cmd << value
108
114
 
109
- declare_resource(:execute, cmd.join(" ")) do
115
+ # FIXME: this should use cmd directly as an array argument, but then the quoting
116
+ # of individual args above needs to be removed as well.
117
+ execute cmd.join(" ") do
110
118
  user new_resource.user unless new_resource.user.nil?
111
119
  end
112
120
  end
@@ -21,11 +21,12 @@ require_relative "service"
21
21
  class Chef
22
22
  class Resource
23
23
  class MacosxService < Chef::Resource::Service
24
- resource_name :macosx_service
24
+ unified_mode true
25
+
25
26
  provides :macosx_service
26
27
  provides :service, os: "darwin"
27
28
 
28
- description "Use the macosx_service resource to manage services on the macOS platform."
29
+ description "Use the **macosx_service** resource to manage services on the macOS platform."
29
30
 
30
31
  property :plist, String,
31
32
  description: "A plist to use in the case where the filename and label for the service do not match."
@@ -21,9 +21,17 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class MacportsPackage < Chef::Resource::Package
24
- resource_name :macports_package
24
+ unified_mode true
25
+ provides :macports_package
25
26
 
26
- description "Use the macports_package resource to manage packages for the macOS platform."
27
+ description "Use the **macports_package** resource to manage packages for the macOS platform using the MacPorts package management system."
28
+
29
+ property :package_name, String,
30
+ description: "An optional property to set the package name if it differs from the resource block's name.",
31
+ identity: true
32
+
33
+ property :version, String,
34
+ description: "The version of a package to be installed or upgraded."
27
35
  end
28
36
  end
29
37
  end
@@ -22,9 +22,11 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class Mdadm < Chef::Resource
25
- resource_name :mdadm
25
+ unified_mode true
26
26
 
27
- description "Use the mdadm resource to manage RAID devices in a Linux environment using the mdadm utility. The mdadm resource"\
27
+ provides :mdadm
28
+
29
+ description "Use the **mdadm** resource to manage RAID devices in a Linux environment using the mdadm utility. The mdadm resource"\
28
30
  " will create and assemble an array, but it will not create the config file that is used to persist the array upon"\
29
31
  " reboot. If the config file is required, it must be done by specifying a template with the correct array layout,"\
30
32
  " and then by using the mount provider to create a file systems table (fstab) entry."
@@ -57,11 +59,69 @@ class Chef
57
59
  description: "The path to a file in which a write-intent bitmap is stored."
58
60
 
59
61
  property :raid_device, String,
60
- identity: true, name_property: true,
62
+ name_property: true,
61
63
  description: "An optional property to specify the name of the RAID device if it differs from the resource block's name."
62
64
 
63
65
  property :layout, String,
64
66
  description: "The RAID5 parity algorithm. Possible values: left-asymmetric (or la), left-symmetric (or ls), right-asymmetric (or ra), or right-symmetric (or rs)."
67
+
68
+ action_class do
69
+ def load_current_resource
70
+ @current_resource = Chef::Resource::Mdadm.new(new_resource.name)
71
+ current_resource.raid_device(new_resource.raid_device)
72
+ logger.trace("#{new_resource} checking for software raid device #{current_resource.raid_device}")
73
+
74
+ device_not_found = 4
75
+ mdadm = shell_out!("mdadm", "--detail", "--test", new_resource.raid_device, returns: [0, device_not_found])
76
+ exists = (mdadm.status == 0)
77
+ current_resource.exists(exists)
78
+ end
79
+ end
80
+
81
+ action :create do
82
+ unless current_resource.exists
83
+ converge_by("create RAID device #{new_resource.raid_device}") do
84
+ command = "yes | mdadm --create #{new_resource.raid_device} --level #{new_resource.level}"
85
+ command << " --chunk=#{new_resource.chunk}" unless new_resource.level == 1
86
+ command << " --metadata=#{new_resource.metadata}"
87
+ command << " --bitmap=#{new_resource.bitmap}" if new_resource.bitmap
88
+ command << " --layout=#{new_resource.layout}" if new_resource.layout
89
+ command << " --raid-devices #{new_resource.devices.length} #{new_resource.devices.join(" ")}"
90
+ logger.trace("#{new_resource} mdadm command: #{command}")
91
+ shell_out!(command)
92
+ logger.info("#{new_resource} created raid device (#{new_resource.raid_device})")
93
+ end
94
+ else
95
+ logger.trace("#{new_resource} raid device already exists, skipping create (#{new_resource.raid_device})")
96
+ end
97
+ end
98
+
99
+ action :assemble do
100
+ unless current_resource.exists
101
+ converge_by("assemble RAID device #{new_resource.raid_device}") do
102
+ command = "yes | mdadm --assemble #{new_resource.raid_device} #{new_resource.devices.join(" ")}"
103
+ logger.trace("#{new_resource} mdadm command: #{command}")
104
+ shell_out!(command)
105
+ logger.info("#{new_resource} assembled raid device (#{new_resource.raid_device})")
106
+ end
107
+ else
108
+ logger.trace("#{new_resource} raid device already exists, skipping assemble (#{new_resource.raid_device})")
109
+ end
110
+ end
111
+
112
+ action :stop do
113
+ if current_resource.exists
114
+ converge_by("stop RAID device #{new_resource.raid_device}") do
115
+ command = "yes | mdadm --stop #{new_resource.raid_device}"
116
+ logger.trace("#{new_resource} mdadm command: #{command}")
117
+ shell_out!(command)
118
+ logger.info("#{new_resource} stopped raid device (#{new_resource.raid_device})")
119
+ end
120
+ else
121
+ logger.trace("#{new_resource} raid device doesn't exist (#{new_resource.raid_device}) - not stopping")
122
+ end
123
+ end
124
+
65
125
  end
66
126
  end
67
127
  end
@@ -22,7 +22,10 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class Mount < Chef::Resource
25
- description "Use the mount resource to manage a mounted file system."
25
+ description "Use the **mount** resource to manage a mounted file system."
26
+ unified_mode true
27
+
28
+ provides :mount
26
29
 
27
30
  default_action :mount
28
31
  allowed_actions :mount, :umount, :unmount, :remount, :enable, :disable
@@ -23,16 +23,28 @@ class Chef
23
23
  class Resource
24
24
  class MsuPackage < Chef::Resource::Package
25
25
  include Chef::Mixin::Uris
26
+ unified_mode true
26
27
 
27
- resource_name :msu_package
28
28
  provides :msu_package
29
29
 
30
- description "Use the msu_package resource to install Microsoft Update(MSU) packages on Microsoft Windows machines."
30
+ description "Use the **msu_package** resource to install Microsoft Update(MSU) packages on Microsoft Windows machines."
31
31
  introduced "12.17"
32
32
 
33
33
  allowed_actions :install, :remove
34
34
  default_action :install
35
35
 
36
+ property :package_name, String,
37
+ description: "An optional property to set the package name if it differs from the resource block's name.",
38
+ identity: true
39
+
40
+ # This is the same property as the main package resource except it has the skip docs set to true
41
+ # This resource abuses the package resource by storing the versions of all the cabs in the MSU file
42
+ # in the version attribute from load current value even though those aren't technically the version of the
43
+ # msu. Since the user wouldn't actually set this we don't want it on the docs site.
44
+ property :version, [String, Array],
45
+ skip_docs: true,
46
+ description: "The version of a package to be installed or upgraded."
47
+
36
48
  property :source, String,
37
49
  description: "The local file path or URL for the MSU package.",
38
50
  coerce: (proc do |s|
@@ -44,6 +56,11 @@ class Chef
44
56
 
45
57
  property :checksum, String, desired_state: false,
46
58
  description: "SHA-256 digest used to verify the checksum of the downloaded MSU package."
59
+
60
+ property :timeout, [String, Integer],
61
+ default: 3600,
62
+ description: "The amount of time (in seconds) to wait before timing out.",
63
+ desired_state: false
47
64
  end
48
65
  end
49
66
  end
@@ -20,18 +20,16 @@ require_relative "../dist"
20
20
  class Chef
21
21
  class Resource
22
22
  class NotifyGroup < Chef::Resource
23
- resource_name :notify_group
24
23
  provides :notify_group
25
24
 
26
25
  unified_mode true
27
26
 
28
27
  description "The notify_group resource does nothing, and always fires notifications which are set on it. Use it to DRY blocks of notifications that are common to multiple resources, and provide a single target for other resources to notify. Unlike most resources, its default action is :nothing."
29
28
  introduced "15.8"
30
-
31
29
  examples <<~DOC
32
30
  Wire up a notification from a service resource to stop and start the service with a 60 second delay.
33
31
 
34
- ```
32
+ ```ruby
35
33
  service "crude" do
36
34
  action [ :enable, :start ]
37
35
  end
@@ -64,6 +62,13 @@ class Chef
64
62
  new_resource.updated_by_last_action(true)
65
63
  end
66
64
 
65
+ # This is deliberate. Users should be sending a single notification to a notify_group resource which then
66
+ # distributes multiple notifications. Having a notify_group run by default is unnecessary indirection and
67
+ # should be replaced by just running the resources in order. If resources need to be batch run multiple times
68
+ # per invocation then the resources themselves are not properly declarative idempotent resources, and the user
69
+ # is attempting to turn Chef into an imperative language using this construct and/or the batch of resources
70
+ # need to be turned into a custom resource.
71
+ #
67
72
  default_action :nothing
68
73
  end
69
74
  end
@@ -2,6 +2,7 @@
2
2
  # Author:: Michael Leinartas (<mleinartas@gmail.com>)
3
3
  # Author:: Tyler Cloke (<tyler@chef.io>)
4
4
  # Copyright:: Copyright 2010-2016, Michael Leinartas
5
+ # Copyright:: Copyright (c) Chef Software, Inc.
5
6
  # License:: Apache License, Version 2.0
6
7
  #
7
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,22 +20,37 @@
19
20
 
20
21
  require_relative "../resource"
21
22
  require_relative "../dist"
23
+ require "ohai" unless defined?(Ohai::System)
22
24
 
23
25
  class Chef
24
26
  class Resource
25
27
  class Ohai < Chef::Resource
26
28
  unified_mode true
27
29
 
28
- resource_name :ohai
29
30
  provides :ohai
30
31
 
31
- description "Use the ohai resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{Chef::Dist::CLIENT} run."
32
+ description "Use the **ohai** resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{Chef::Dist::CLIENT} run."
32
33
 
33
34
  property :plugin, String,
34
35
  description: "The name of an Ohai plugin to be reloaded. If this property is not specified, #{Chef::Dist::PRODUCT} will reload all plugins."
35
36
 
36
- default_action :reload
37
- allowed_actions :reload
37
+ def load_current_resource
38
+ true
39
+ end
40
+
41
+ action :reload do
42
+ converge_by("re-run ohai and merge results into node attributes") do
43
+ ohai = ::Ohai::System.new
44
+
45
+ # If new_resource.plugin is nil, ohai will reload all the plugins
46
+ # Otherwise it will only reload the specified plugin
47
+ # Note that any changes to plugins, or new plugins placed on
48
+ # the path are picked up by ohai.
49
+ ohai.all_plugins new_resource.plugin
50
+ node.automatic_attrs.merge! ohai.data
51
+ logger.info("#{new_resource} reloaded")
52
+ end
53
+ end
38
54
  end
39
55
  end
40
56
  end
@@ -20,10 +20,11 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class OhaiHint < Chef::Resource
23
- resource_name :ohai_hint
23
+ unified_mode true
24
+
24
25
  provides(:ohai_hint) { true }
25
26
 
26
- description "Use the ohai_hint resource to aid in configuration detection by passing hint data to Ohai."
27
+ description "Use the **ohai_hint** resource to aid in configuration detection by passing hint data to Ohai."
27
28
  introduced "14.0"
28
29
 
29
30
  property :hint_name, String,
@@ -33,6 +34,7 @@ class Chef
33
34
  property :content, Hash,
34
35
  description: "Values to include in the hint file."
35
36
 
37
+ # override compile_time property to default to true
36
38
  property :compile_time, [TrueClass, FalseClass],
37
39
  description: "Determines whether or not the resource is executed during the compile time phase.",
38
40
  default: true, desired_state: false
@@ -83,17 +85,6 @@ class Chef
83
85
  JSON.pretty_generate(content)
84
86
  end
85
87
  end
86
-
87
- # this resource forces itself to run at compile_time
88
- #
89
- # @return [void]
90
- def after_created
91
- return unless compile_time
92
-
93
- Array(action).each do |action|
94
- run_action(action)
95
- end
96
- end
97
88
  end
98
89
  end
99
90
  end
@@ -25,11 +25,19 @@ require_relative "../provider/package/openbsd"
25
25
  class Chef
26
26
  class Resource
27
27
  class OpenbsdPackage < Chef::Resource::Package
28
- resource_name :openbsd_package
28
+ unified_mode true
29
+ provides :openbsd_package
29
30
  provides :package, os: "openbsd"
30
31
 
31
- description "Use the openbsd_package resource to manage packages for the OpenBSD platform."
32
+ description "Use the **openbsd_package** resource to manage packages for the OpenBSD platform."
32
33
  introduced "12.1"
34
+
35
+ property :package_name, String,
36
+ description: "An optional property to set the package name if it differs from the resource block's name.",
37
+ identity: true
38
+
39
+ property :version, String,
40
+ description: "The version of a package to be installed or upgraded."
33
41
  end
34
42
  end
35
43
  end
@@ -23,11 +23,20 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
- resource_name :openssl_dhparam
27
26
  provides(:openssl_dhparam) { true }
28
27
 
29
- description "Use the openssl_dhparam resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
28
+ description "Use the **openssl_dhparam** resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
30
29
  introduced "14.0"
30
+ examples <<~DOC
31
+ Create a 1024bit dhparam file
32
+
33
+ ```ruby
34
+ openssl_dhparam '/etc/ssl_files/dhparam.pem' do
35
+ key_length 1024
36
+ action :create
37
+ end
38
+ ```
39
+ DOC
31
40
 
32
41
  property :path, String,
33
42
  description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",
@@ -24,10 +24,32 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- resource_name :openssl_ec_private_key
27
+ provides :openssl_ec_private_key
28
28
 
29
- description "Use the openssl_ec_private_key resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
29
+ description "Use the **openssl_ec_private_key** resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
30
30
  introduced "14.4"
31
+ examples <<~DOC
32
+ Generate a new ec privatekey with prime256v1 key curve and default des3 cipher
33
+
34
+ ```ruby
35
+ openssl_ec_private_key '/etc/ssl_files/eckey_prime256v1_des3.pem' do
36
+ key_curve 'prime256v1'
37
+ key_pass 'something'
38
+ action :create
39
+ end
40
+ ```
41
+
42
+ Generate a new ec private key with prime256v1 key curve and aes-128-cbc cipher
43
+
44
+ ```ruby
45
+ openssl_ec_private_key '/etc/ssl_files/eckey_prime256v1_des3.pem' do
46
+ key_curve 'prime256v1'
47
+ key_cipher 'aes-128-cbc'
48
+ key_pass 'something'
49
+ action :create
50
+ end
51
+ ```
52
+ DOC
31
53
 
32
54
  property :path, String,
33
55
  description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",