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
@@ -27,7 +27,7 @@ describe "knife data bag show", :workstation do
27
27
 
28
28
  when_the_chef_server "is empty" do
29
29
  it "raises error if try to retrieve it" do
30
- expect { knife("data bag show bag") }.to raise_error(Net::HTTPServerException)
30
+ expect { knife("data bag show bag") }.to raise_error(Net::HTTPClientException)
31
31
  end
32
32
  end
33
33
 
@@ -143,7 +143,21 @@ describe "knife raw", :workstation do
143
143
  /roles/x.json:
144
144
  {
145
145
  "name": "x",
146
- "description": "eek"
146
+ "description": "eek",
147
+ "json_class": "Chef::Role",
148
+ "chef_type": "role",
149
+ "default_attributes": {
150
+
151
+ },
152
+ "override_attributes": {
153
+
154
+ },
155
+ "run_list": [
156
+
157
+ ],
158
+ "env_run_lists": {
159
+
160
+ }
147
161
  }
148
162
  EOM
149
163
  end
@@ -179,15 +193,29 @@ describe "knife raw", :workstation do
179
193
  /roles/y.json:
180
194
  {
181
195
  "name": "y",
182
- "description": "eek"
196
+ "description": "eek",
197
+ "json_class": "Chef::Role",
198
+ "chef_type": "role",
199
+ "default_attributes": {
200
+
201
+ },
202
+ "override_attributes": {
203
+
204
+ },
205
+ "run_list": [
206
+
207
+ ],
208
+ "env_run_lists": {
209
+
210
+ }
183
211
  }
184
212
  EOM
185
213
  end
186
214
  end
187
215
 
188
216
  context "When a server returns raw json" do
189
- def start_tiny_server(server_opts = {})
190
- @server = TinyServer::Manager.new(server_opts)
217
+ def start_tiny_server(**server_opts)
218
+ @server = TinyServer::Manager.new(**server_opts)
191
219
  @server.start
192
220
  @api = TinyServer::API.instance
193
221
  @api.clear
@@ -228,8 +256,8 @@ describe "knife raw", :workstation do
228
256
  end
229
257
 
230
258
  context "When a server returns text" do
231
- def start_tiny_server(server_opts = {})
232
- @server = TinyServer::Manager.new(server_opts)
259
+ def start_tiny_server(**server_opts)
260
+ @server = TinyServer::Manager.new(**server_opts)
233
261
  @server.start
234
262
  @api = TinyServer::API.instance
235
263
  @api.clear
@@ -25,8 +25,8 @@ describe "redirection", :workstation do
25
25
  include IntegrationSupport
26
26
  include KnifeSupport
27
27
 
28
- def start_tiny_server(real_chef_server_url, server_opts = {})
29
- @server = TinyServer::Manager.new(server_opts)
28
+ def start_tiny_server(real_chef_server_url, **server_opts)
29
+ @server = TinyServer::Manager.new(**server_opts)
30
30
  @server.start
31
31
  @api = TinyServer::API.instance
32
32
  @api.clear
@@ -81,7 +81,19 @@ describe "knife show", :workstation do
81
81
  knife("show /environments/x.json").should_succeed <<~EOM
82
82
  /environments/x.json:
83
83
  {
84
- "name": "x"
84
+ "name": "x",
85
+ "description": "",
86
+ "cookbook_versions": {
87
+
88
+ },
89
+ "default_attributes": {
90
+
91
+ },
92
+ "override_attributes": {
93
+
94
+ },
95
+ "json_class": "Chef::Environment",
96
+ "chef_type": "environment"
85
97
  }
86
98
  EOM
87
99
  end
@@ -97,7 +109,22 @@ describe "knife show", :workstation do
97
109
  knife("show /roles/x.json").should_succeed <<~EOM
98
110
  /roles/x.json:
99
111
  {
100
- "name": "x"
112
+ "name": "x",
113
+ "description": "",
114
+ "json_class": "Chef::Role",
115
+ "chef_type": "role",
116
+ "default_attributes": {
117
+
118
+ },
119
+ "override_attributes": {
120
+
121
+ },
122
+ "run_list": [
123
+
124
+ ],
125
+ "env_run_lists": {
126
+
127
+ }
101
128
  }
102
129
  EOM
103
130
  end
@@ -150,7 +177,9 @@ describe "knife show", :workstation do
150
177
  },
151
178
  "override_attributes": {
152
179
  "x": "y"
153
- }
180
+ },
181
+ "json_class": "Chef::Environment",
182
+ "chef_type": "environment"
154
183
  }
155
184
  EOM
156
185
  end
@@ -21,7 +21,7 @@ describe "LWRPs with inline resources" do
21
21
 
22
22
  context "with a use_inline_resources provider with 'def action_a' instead of action :a" do
23
23
  class LwrpInlineResourcesTest < Chef::Resource
24
- resource_name :lwrp_inline_resources_test
24
+ provides :lwrp_inline_resources_test
25
25
  allowed_actions :a, :nothing
26
26
  default_action :a
27
27
  property :ran_a
@@ -47,8 +47,8 @@ describe "LWRPs with inline resources" do
47
47
 
48
48
  context "with an inline resource with a property that shadows the enclosing provider's property" do
49
49
  class LwrpShadowedPropertyTest < Chef::Resource
50
+ provides :lwrp_shadowed_property_test
50
51
  PATH = ::File.join(Dir.tmpdir, "shadow-property.txt")
51
- use_automatic_resource_name
52
52
  allowed_actions :fiddle
53
53
  property :content
54
54
  action :fiddle do
@@ -74,7 +74,7 @@ describe "LWRPs with inline resources" do
74
74
 
75
75
  context "with an inline_resources provider with two actions, one calling the other" do
76
76
  class LwrpInlineResourcesTest2 < Chef::Resource
77
- resource_name :lwrp_inline_resources_test2
77
+ provides :lwrp_inline_resources_test2
78
78
  allowed_actions :a, :b, :nothing
79
79
  default_action :b
80
80
  property :ran_a
@@ -6,7 +6,7 @@ describe "Resources with a no-op provider" do
6
6
  context "with noop provider providing foo" do
7
7
  before(:each) do
8
8
  class NoOpFoo < Chef::Resource
9
- resource_name "hi_there"
9
+ provides "hi_there"
10
10
  default_action :update
11
11
  end
12
12
  Chef::Provider::Noop.provides :hi_there
@@ -1,3 +1,19 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
1
17
  require "spec_helper"
2
18
  require "support/shared/integration/integration_helper"
3
19
  require "chef/mixin/shell_out"
@@ -16,11 +32,13 @@ describe "notifications" do
16
32
  apt_update do
17
33
  action :nothing
18
34
  end
19
- log "foo" do
35
+ notify_group "foo" do
20
36
  notifies :nothing, 'apt_update', :delayed
37
+ action :run
21
38
  end
22
- log "bar" do
39
+ notify_group "bar" do
23
40
  notifies :nothing, 'apt_update[]', :delayed
41
+ action :run
24
42
  end
25
43
  EOM
26
44
  end
@@ -35,7 +53,7 @@ describe "notifications" do
35
53
 
36
54
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
37
55
  # our delayed notification should run at the end of the parent run_context after the baz resource
38
- expect(result.stdout).to match(/\* apt_update\[\] action nothing \(skipped due to action :nothing\)\s+\* log\[foo\] action write\s+\* log\[bar\] action write\s+\* apt_update\[\] action nothing \(skipped due to action :nothing\)/)
56
+ expect(result.stdout).to match(/\* apt_update\[\] action nothing \(skipped due to action :nothing\)\s+\* notify_group\[foo\] action run\s+\* notify_group\[bar\] action run\s+\* apt_update\[\] action nothing \(skipped due to action :nothing\)/)
39
57
  result.error!
40
58
  end
41
59
  end
@@ -50,8 +68,9 @@ describe "notifications" do
50
68
  resource_name :notifying_test
51
69
 
52
70
  action :run do
53
- log "bar" do
71
+ notify_group "bar" do
54
72
  notifies :write, 'log[foo]', :delayed
73
+ action :run
55
74
  end
56
75
  end
57
76
  EOM
@@ -76,7 +95,7 @@ describe "notifications" do
76
95
 
77
96
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
78
97
  # our delayed notification should run at the end of the parent run_context after the baz resource
79
- expect(result.stdout).to match(/\* log\[bar\] action write\s+\* log\[baz\] action write\s+\* log\[foo\] action write/)
98
+ expect(result.stdout).to match(/\* notify_group\[bar\] action run\s+\* log\[baz\] action write\s+\* log\[foo\] action write/)
80
99
  result.error!
81
100
  end
82
101
  end
@@ -91,8 +110,9 @@ describe "notifications" do
91
110
  resource_name :notifying_test
92
111
 
93
112
  action :run do
94
- log "bar" do
113
+ notify_group "bar" do
95
114
  notifies :write, 'log[foo]', :delayed
115
+ action :run
96
116
  end
97
117
  end
98
118
  EOM
@@ -102,8 +122,9 @@ describe "notifications" do
102
122
  action :nothing
103
123
  end
104
124
  notifying_test "whatever"
105
- log "baz" do
125
+ notify_group "baz" do
106
126
  notifies :write, 'log[foo]', :delayed
127
+ action :run
107
128
  end
108
129
  EOM
109
130
 
@@ -119,7 +140,7 @@ describe "notifications" do
119
140
 
120
141
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
121
142
  # our delayed notification should run at the end of the parent run_context after the baz resource
122
- expect(result.stdout).to match(/\* log\[bar\] action write\s+\* log\[baz\] action write\s+\* log\[foo\] action write/)
143
+ expect(result.stdout).to match(/\* notify_group\[bar\] action run\s+\* notify_group\[baz\] action run\s+\* log\[foo\] action write/)
123
144
  # and only run once
124
145
  expect(result.stdout).not_to match(/\* log\[foo\] action write.*\* log\[foo\] action write/)
125
146
  result.error!
@@ -136,8 +157,9 @@ describe "notifications" do
136
157
  resource_name :notifying_test
137
158
 
138
159
  action :run do
139
- log "bar" do
160
+ notify_group "bar" do
140
161
  notifies :write, 'log[foo]', :delayed
162
+ action :run
141
163
  end
142
164
  end
143
165
  EOM
@@ -146,9 +168,10 @@ describe "notifications" do
146
168
  log "foo" do
147
169
  action :nothing
148
170
  end
149
- log "quux" do
171
+ notify_group "quux" do
150
172
  notifies :write, 'log[foo]', :delayed
151
173
  notifies :write, 'log[baz]', :delayed
174
+ action :run
152
175
  end
153
176
  notifying_test "whatever"
154
177
  log "baz"
@@ -166,7 +189,7 @@ describe "notifications" do
166
189
 
167
190
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
168
191
  # the delayed notification from the sub-resource is de-duplicated by the notification already in the parent run_context
169
- expect(result.stdout).to match(/\* log\[quux\] action write\s+\* notifying_test\[whatever\] action run\s+\* log\[bar\] action write\s+\* log\[baz\] action write\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
192
+ expect(result.stdout).to match(/\* notify_group\[quux\] action run\s+\* notifying_test\[whatever\] action run\s+\* notify_group\[bar\] action run\s+\* log\[baz\] action write\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
170
193
  # and only run once
171
194
  expect(result.stdout).not_to match(/\* log\[foo\] action write.*\* log\[foo\] action write/)
172
195
  result.error!
@@ -180,11 +203,13 @@ describe "notifications" do
180
203
  log "foo" do
181
204
  action :nothing
182
205
  end
183
- log "bar" do
206
+ notify_group "bar" do
184
207
  notifies :write, 'log[foo]', :delayed
208
+ action :run
185
209
  end
186
- log "baz" do
210
+ notify_group "baz" do
187
211
  notifies :write, 'log[foo]', :delayed
212
+ action :run
188
213
  end
189
214
  EOM
190
215
 
@@ -200,7 +225,7 @@ describe "notifications" do
200
225
 
201
226
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
202
227
  # the delayed notification from the sub-resource is de-duplicated by the notification already in the parent run_context
203
- expect(result.stdout).to match(/\* log\[bar\] action write\s+\* log\[baz\] action write\s+\* log\[foo\] action write/)
228
+ expect(result.stdout).to match(/\* notify_group\[bar\] action run\s+\* notify_group\[baz\] action run\s+\* log\[foo\] action write/)
204
229
  # and only run once
205
230
  expect(result.stdout).not_to match(/\* log\[foo\] action write.*\* log\[foo\] action write/)
206
231
  result.error!
@@ -217,8 +242,9 @@ describe "notifications" do
217
242
  resource_name :notifying_test
218
243
 
219
244
  action :run do
220
- log "bar" do
245
+ notify_group "bar" do
221
246
  notifies :write, 'log[foo]', :immediately
247
+ action :run
222
248
  end
223
249
  end
224
250
  EOM
@@ -242,7 +268,7 @@ describe "notifications" do
242
268
  EOM
243
269
 
244
270
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
245
- expect(result.stdout).to match(/\* log\[bar\] action write\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
271
+ expect(result.stdout).to match(/\* notify_group\[bar\] action run\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
246
272
  result.error!
247
273
  end
248
274
  end
@@ -257,8 +283,9 @@ describe "notifications" do
257
283
  resource_name :notifying_test
258
284
 
259
285
  action :run do
260
- log "bar" do
286
+ notify_group "bar" do
261
287
  notifies :write, resources(log: "foo"), :immediately
288
+ action :run
262
289
  end
263
290
  end
264
291
  EOM
@@ -282,7 +309,7 @@ describe "notifications" do
282
309
  EOM
283
310
 
284
311
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
285
- expect(result.stdout).to match(/\* log\[bar\] action write\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
312
+ expect(result.stdout).to match(/\* notify_group\[bar\] action run\s+\* log\[foo\] action write\s+\* log\[baz\] action write/)
286
313
  result.error!
287
314
  end
288
315
  end
@@ -297,8 +324,9 @@ describe "notifications" do
297
324
  resource_name :notifying_test
298
325
 
299
326
  action :run do
300
- log "bar" do
327
+ notify_group "bar" do
301
328
  notifies :write, "log[foo]"
329
+ action :run
302
330
  end
303
331
  end
304
332
  EOM
@@ -372,8 +400,9 @@ describe "notifications" do
372
400
  action :nothing
373
401
  end
374
402
 
375
- log "doit" do
403
+ notify_group "doit" do
376
404
  notifies :write, "log[a, b]"
405
+ action :run
377
406
  end
378
407
  EOM
379
408
  end
@@ -34,11 +34,13 @@ describe "notifying_block" do
34
34
  log "gamma" do
35
35
  action :nothing
36
36
  end
37
- log "alpha" do
37
+ notify_group "alpha" do
38
38
  notifies :write, "log[gamma]", :delayed
39
+ action :run
39
40
  end
40
- log "beta" do
41
+ notify_group "beta" do
41
42
  notifies :write, "log[gamma]", :delayed
43
+ action :run
42
44
  end
43
45
  end
44
46
  log "delta"
@@ -57,7 +59,7 @@ describe "notifying_block" do
57
59
  # 3. delayed notifications (to resources inside the subcontext) are run at the end of the subcontext
58
60
  it "should run alpha, beta, gamma, and delta in that order" do
59
61
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
60
- expect(result.stdout).to match(/\* log\[alpha\] action write\s+\* log\[beta\] action write\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
62
+ expect(result.stdout).to match(/\* notify_group\[alpha\] action run\s+\* notify_group\[beta\] action run\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
61
63
  result.error!
62
64
  end
63
65
  end
@@ -72,8 +74,9 @@ describe "notifying_block" do
72
74
 
73
75
  action :run do
74
76
  notifying_block do
75
- log "foo" do
77
+ notify_group "foo" do
76
78
  notifies :write, 'log[bar]', :delayed
79
+ action :run
77
80
  end
78
81
  end
79
82
  end
@@ -105,7 +108,7 @@ describe "notifying_block" do
105
108
  # 2. delayed notifications from a subcontext inside a resource will notify resources in their outer run_context
106
109
  it "should run foo, quux, bar, and baz in that order" do
107
110
  result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
108
- expect(result.stdout).to match(/\* log\[foo\] action write\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
111
+ expect(result.stdout).to match(/\* notify_group\[foo\] action run\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
109
112
  result.error!
110
113
  end
111
114
  end
@@ -16,6 +16,8 @@ describe "Recipe DSL methods" do
16
16
  context "And class Chef::Provider::ProviderThingy with no provides" do
17
17
  before :context do
18
18
  class Chef::Provider::ProviderThingy < Chef::Provider
19
+ provides :provider_thingy
20
+
19
21
  def load_current_resource; end
20
22
 
21
23
  def action_create
@@ -16,7 +16,7 @@ describe "Recipe DSL methods" do
16
16
  before(:each) do
17
17
 
18
18
  class BaseThingy < Chef::Resource
19
- resource_name "base_thingy"
19
+ provides :base_thingy
20
20
  default_action :create
21
21
 
22
22
  class<<self
@@ -68,7 +68,6 @@ describe "Recipe DSL methods" do
68
68
  context "nameless resources" do
69
69
  before(:each) do
70
70
  class NamelessThingy < BaseThingy
71
- resource_name :nameless_thingy
72
71
  provides :nameless_thingy
73
72
 
74
73
  property :name, String, default: ""
@@ -125,7 +124,7 @@ describe "Recipe DSL methods" do
125
124
  before(:each) do
126
125
 
127
126
  class AnotherNoNameThingy < BaseThingy
128
- resource_name :another_thingy_name
127
+ provides :another_thingy_name
129
128
  end
130
129
 
131
130
  end
@@ -149,8 +148,8 @@ describe "Recipe DSL methods" do
149
148
  before(:each) do
150
149
 
151
150
  class AnotherNoNameThingy2 < BaseThingy
152
- resource_name :another_thingy_name2
153
- resource_name :another_thingy_name3
151
+ provides :another_thingy_name2
152
+ provides :another_thingy_name3
154
153
  end
155
154
 
156
155
  end
@@ -161,10 +160,12 @@ describe "Recipe DSL methods" do
161
160
  end.to raise_error(NoMethodError)
162
161
  end
163
162
 
164
- it "another_thingy_name2 does not work" do
165
- expect_converge do
163
+ it "another_thingy_name2 works" do
164
+ recipe = converge do
166
165
  another_thingy_name2("blah") {}
167
- end.to raise_error(NoMethodError)
166
+ end
167
+ expect(recipe.logged_warnings).to eq ""
168
+ expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy2)
168
169
  end
169
170
 
170
171
  it "yet_another_thingy_name3 works" do
@@ -181,7 +182,7 @@ describe "Recipe DSL methods" do
181
182
  before(:each) do
182
183
 
183
184
  class AnotherNoNameThingy3 < BaseThingy
184
- resource_name :another_no_name_thingy_3
185
+ provides :another_no_name_thingy_3
185
186
  provides :another_no_name_thingy3, os: "blarghle"
186
187
  end
187
188
 
@@ -210,7 +211,7 @@ describe "Recipe DSL methods" do
210
211
  before(:each) do
211
212
 
212
213
  class AnotherNoNameThingy4 < BaseThingy
213
- resource_name :another_no_name_thingy_4
214
+ provides :another_no_name_thingy_4
214
215
  provides :another_no_name_thingy4, os: "blarghle"
215
216
  provides :another_no_name_thingy4, platform_family: "foo"
216
217
  end
@@ -250,7 +251,7 @@ describe "Recipe DSL methods" do
250
251
  before(:each) do
251
252
 
252
253
  class AnotherNoNameThingy5 < BaseThingy
253
- resource_name :another_thingy_name_for_another_no_name_thingy5
254
+ provides :another_thingy_name_for_another_no_name_thingy5
254
255
  provides :another_no_name_thingy5, os: "blarghle"
255
256
  end
256
257
 
@@ -288,7 +289,7 @@ describe "Recipe DSL methods" do
288
289
 
289
290
  class AnotherNoNameThingy6 < BaseThingy
290
291
  provides :another_no_name_thingy6, os: "blarghle"
291
- resource_name :another_thingy_name_for_another_no_name_thingy6
292
+ provides :another_thingy_name_for_another_no_name_thingy6
292
293
  end
293
294
 
294
295
  end
@@ -324,18 +325,20 @@ describe "Recipe DSL methods" do
324
325
  before(:each) do
325
326
 
326
327
  class AnotherNoNameThingy7 < BaseThingy
327
- resource_name :another_thingy_name_for_another_no_name_thingy7
328
+ provides :another_thingy_name_for_another_no_name_thingy7
328
329
  provides :another_thingy_name_for_another_no_name_thingy7, os: "blarghle"
329
330
  end
330
331
 
331
332
  end
332
333
 
333
- it "and os = linux, another_thingy_name_for_another_no_name_thingy7 does not work" do
334
- expect_converge do
334
+ it "and os = linux, another_thingy_name_for_another_no_name_thingy7 works" do
335
+ recipe = converge do
335
336
  # this is an ugly way to test, make Cheffish expose node attrs
336
337
  run_context.node.automatic[:os] = "linux"
337
338
  another_thingy_name_for_another_no_name_thingy7("blah") {}
338
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
339
+ end
340
+ expect(recipe.logged_warnings).to eq ""
341
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy7)
339
342
  end
340
343
 
341
344
  it "and os = blarghle, another_thingy_name_for_another_no_name_thingy7 works" do
@@ -357,43 +360,6 @@ describe "Recipe DSL methods" do
357
360
  end
358
361
  end
359
362
 
360
- # opposite order from the previous test (provides, then resource_name)
361
- context "with a resource named AnotherNoNameThingy8, a provides with a new resource name, and resource_name with that new resource name" do
362
- before(:each) do
363
-
364
- class AnotherNoNameThingy8 < BaseThingy
365
- provides :another_thingy_name_for_another_no_name_thingy8, os: "blarghle"
366
- resource_name :another_thingy_name_for_another_no_name_thingy8
367
- end
368
-
369
- end
370
-
371
- it "and os = linux, another_thingy_name_for_another_no_name_thingy8 does not work" do
372
- expect_converge do
373
- # this is an ugly way to test, make Cheffish expose node attrs
374
- run_context.node.automatic[:os] = "linux"
375
- another_thingy_name_for_another_no_name_thingy8("blah") {}
376
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
377
- end
378
-
379
- it "and os = blarghle, another_thingy_name_for_another_no_name_thingy8 works" do
380
- recipe = converge do
381
- # this is an ugly way to test, make Cheffish expose node attrs
382
- run_context.node.automatic[:os] = "blarghle"
383
- another_thingy_name_for_another_no_name_thingy8("blah") {}
384
- end
385
- expect(recipe.logged_warnings).to eq ""
386
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy8)
387
- end
388
-
389
- it "the old resource name does not work" do
390
- expect_converge do
391
- # this is an ugly way to test, make Cheffish expose node attrs
392
- run_context.node.automatic[:os] = "linux"
393
- another_thingy_name8("blah") {}
394
- end.to raise_error(NoMethodError)
395
- end
396
- end
397
363
  end
398
364
  end
399
365
 
@@ -402,7 +368,7 @@ describe "Recipe DSL methods" do
402
368
  before(:each) do
403
369
 
404
370
  class RecipeDSLSpecNamespace::MySupplier < BaseThingy
405
- resource_name :hemlock
371
+ provides :hemlock
406
372
  end
407
373
 
408
374
  end
@@ -425,7 +391,7 @@ describe "Recipe DSL methods" do
425
391
  before(:each) do
426
392
 
427
393
  class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
428
- resource_name :thingy3
394
+ provides :thingy3
429
395
  end
430
396
 
431
397
  end
@@ -441,7 +407,7 @@ describe "Recipe DSL methods" do
441
407
  before(:each) do
442
408
 
443
409
  class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
444
- resource_name :thingy3
410
+ provides :thingy3
445
411
  end
446
412
 
447
413
  end
@@ -469,7 +435,7 @@ describe "Recipe DSL methods" do
469
435
  before(:each) do
470
436
 
471
437
  class RecipeDSLSpecNamespace::Thingy5 < BaseThingy
472
- resource_name :thingy5
438
+ provides :thingy5
473
439
  provides :thingy5reverse
474
440
  provides :thingy5_2
475
441
  provides :thingy5_2reverse
@@ -488,7 +454,7 @@ describe "Recipe DSL methods" do
488
454
  before(:each) do
489
455
 
490
456
  class RecipeDSLSpecNamespace::Thingy6 < BaseThingy
491
- resource_name :thingy6
457
+ provides :thingy6
492
458
  provides :thingy5
493
459
  end
494
460
 
@@ -509,14 +475,14 @@ describe "Recipe DSL methods" do
509
475
  end
510
476
 
511
477
  it "resource_matching_short_name returns Thingy6" do
512
- expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy5
478
+ expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy6
513
479
  end
514
480
 
515
481
  context "and AThingy5 provides :thingy5reverse" do
516
482
  before(:each) do
517
483
 
518
484
  class RecipeDSLSpecNamespace::AThingy5 < BaseThingy
519
- resource_name :thingy5reverse
485
+ provides :thingy5reverse
520
486
  end
521
487
 
522
488
  end
@@ -534,7 +500,7 @@ describe "Recipe DSL methods" do
534
500
 
535
501
  module ZRecipeDSLSpecNamespace
536
502
  class Thingy5 < BaseThingy
537
- resource_name :thingy5_2
503
+ provides :thingy5_2
538
504
  end
539
505
  end
540
506
 
@@ -553,7 +519,7 @@ describe "Recipe DSL methods" do
553
519
 
554
520
  module ARecipeDSLSpecNamespace
555
521
  class Thingy5 < BaseThingy
556
- resource_name :thingy5_2reverse
522
+ provides :thingy5_2reverse
557
523
  end
558
524
  end
559
525
 
@@ -572,7 +538,7 @@ describe "Recipe DSL methods" do
572
538
  before(:each) do
573
539
 
574
540
  class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
575
- resource_name :thingy3
541
+ provides :thingy3
576
542
  end
577
543
 
578
544
  end
@@ -588,7 +554,7 @@ describe "Recipe DSL methods" do
588
554
  before(:each) do
589
555
 
590
556
  class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
591
- resource_name :thingy3
557
+ provides :thingy3
592
558
  end
593
559
 
594
560
  end
@@ -615,7 +581,7 @@ describe "Recipe DSL methods" do
615
581
  before(:each) do
616
582
 
617
583
  class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
618
- resource_name :thingy3
584
+ provides :thingy3
619
585
  end
620
586
 
621
587
  end
@@ -645,7 +611,7 @@ describe "Recipe DSL methods" do
645
611
  before(:each) do
646
612
 
647
613
  class RecipeDSLSpecNamespace::Thingy7 < BaseThingy
648
- resource_name :thingy7
614
+ provides :thingy7
649
615
  provides :thingy8
650
616
  end
651
617
 
@@ -655,7 +621,7 @@ describe "Recipe DSL methods" do
655
621
  before(:each) do
656
622
 
657
623
  class RecipeDSLSpecNamespace::Thingy8 < BaseThingy
658
- resource_name :thingy8
624
+ provides :thingy8
659
625
  end
660
626
 
661
627
  end
@@ -684,7 +650,7 @@ describe "Recipe DSL methods" do
684
650
  before(:each) do
685
651
 
686
652
  class RecipeDSLSpecNamespace::Thingy12 < BaseThingy
687
- resource_name :thingy12
653
+ provides :thingy12
688
654
  provides :twizzle
689
655
  provides :twizzle2
690
656
  end
@@ -716,12 +682,12 @@ describe "Recipe DSL methods" do
716
682
  context "with platform-specific resources 'my_super_thingy_foo' and 'my_super_thingy_bar'" do
717
683
  before(:each) do
718
684
  class MySuperThingyFoo < BaseThingy
719
- resource_name :my_super_thingy_foo
685
+ provides :my_super_thingy_foo
720
686
  provides :my_super_thingy, platform: "foo"
721
687
  end
722
688
 
723
689
  class MySuperThingyBar < BaseThingy
724
- resource_name :my_super_thingy_bar
690
+ provides :my_super_thingy_bar
725
691
  provides :my_super_thingy, platform: "bar"
726
692
  end
727
693
  end
@@ -762,7 +728,7 @@ describe "Recipe DSL methods" do
762
728
  context "when Thingy10 provides :thingy10" do
763
729
  before(:each) do
764
730
  class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
765
- resource_name :thingy10
731
+ provides :thingy10
766
732
  end
767
733
  end
768
734
 
@@ -777,7 +743,7 @@ describe "Recipe DSL methods" do
777
743
  context "when Thingy11 provides :thingy11" do
778
744
  before(:each) do
779
745
  class RecipeDSLSpecNamespace::Thingy11 < BaseThingy
780
- resource_name :thingy10
746
+ provides :thingy10
781
747
  end
782
748
  end
783
749
 
@@ -802,7 +768,7 @@ describe "Recipe DSL methods" do
802
768
 
803
769
  def self.inspect; name.inspect; end
804
770
  end
805
- result.resource_name two_classes_one_dsl
771
+ result.provides two_classes_one_dsl
806
772
  result
807
773
  end
808
774
  before { resource_class } # pull on it so it gets defined before the recipe runs
@@ -818,7 +784,7 @@ describe "Recipe DSL methods" do
818
784
 
819
785
  def self.inspect; name.inspect; end
820
786
  end
821
- result.resource_name two_classes_one_dsl
787
+ result.provides two_classes_one_dsl
822
788
  result
823
789
  end
824
790
  before { resource_class_a } # pull on it so it gets defined before the recipe runs
@@ -848,7 +814,7 @@ describe "Recipe DSL methods" do
848
814
 
849
815
  def self.inspect; name.inspect; end
850
816
  end
851
- result.resource_name two_classes_one_dsl
817
+ result.provides two_classes_one_dsl
852
818
  result
853
819
  end
854
820
  before { resource_class_z } # pull on it so it gets defined before the recipe runs
@@ -883,25 +849,6 @@ describe "Recipe DSL methods" do
883
849
  it "resource_matching_short_name returns Z" do
884
850
  expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
885
851
  end
886
-
887
- context "when Z provides(:two_classes_one_dsl) { false }" do
888
- before do
889
- resource_class_z.provides(two_classes_one_dsl) { false }
890
- end
891
-
892
- it "two_classes_one_dsl resolves to B (picks the next thing in the priority array)" do
893
- temp_two_classes_one_dsl = two_classes_one_dsl
894
- recipe = converge do
895
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
896
- end
897
- expect(recipe.logged_warnings).to eq ""
898
- expect(BaseThingy.created_resource).to eq resource_class
899
- end
900
-
901
- it "resource_matching_short_name returns B" do
902
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
903
- end
904
- end
905
852
  end
906
853
 
907
854
  context "and priority arrays [ B ] and [ Z ]" do
@@ -922,52 +869,7 @@ describe "Recipe DSL methods" do
922
869
  it "resource_matching_short_name returns Z" do
923
870
  expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_z
924
871
  end
925
-
926
- context "when Z provides(:two_classes_one_dsl) { false }" do
927
- before do
928
- resource_class_z.provides(two_classes_one_dsl) { false }
929
- end
930
-
931
- it "two_classes_one_dsl resolves to B (picks the first match from the other priority array)" do
932
- temp_two_classes_one_dsl = two_classes_one_dsl
933
- recipe = converge do
934
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
935
- end
936
- expect(recipe.logged_warnings).to eq ""
937
- expect(BaseThingy.created_resource).to eq resource_class
938
- end
939
-
940
- it "resource_matching_short_name returns B" do
941
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
942
- end
943
- end
944
872
  end
945
-
946
- context "and a priority array [ Z ]" do
947
- before do
948
- Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
949
- end
950
-
951
- context "when Z provides(:two_classes_one_dsl) { false }" do
952
- before do
953
- resource_class_z.provides(two_classes_one_dsl) { false }
954
- end
955
-
956
- it "two_classes_one_dsl resolves to B (picks the first match outside the priority array)" do
957
- temp_two_classes_one_dsl = two_classes_one_dsl
958
- recipe = converge do
959
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
960
- end
961
- expect(recipe.logged_warnings).to eq ""
962
- expect(BaseThingy.created_resource).to eq resource_class
963
- end
964
-
965
- it "resource_matching_short_name returns B" do
966
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
967
- end
968
- end
969
- end
970
-
971
873
  end
972
874
 
973
875
  context "and a provider named 'B' which provides :two_classes_one_dsl" do
@@ -1114,7 +1016,7 @@ describe "Recipe DSL methods" do
1114
1016
 
1115
1017
  def self.inspect; name.inspect; end
1116
1018
  end
1117
- result.resource_name two_classes_one_dsl
1019
+ result.provides two_classes_one_dsl
1118
1020
  result.provides two_classes_one_dsl, os: "blarghle"
1119
1021
  result
1120
1022
  end
@@ -1139,7 +1041,7 @@ describe "Recipe DSL methods" do
1139
1041
  instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
1140
1042
  end
1141
1043
  expect(recipe.logged_warnings).to eq ""
1142
- expect(BaseThingy.created_resource).to eq resource_class
1044
+ expect(BaseThingy.created_resource).to eq resource_class_blarghle
1143
1045
  end
1144
1046
  end
1145
1047
  end
@@ -1161,7 +1063,7 @@ describe "Recipe DSL methods" do
1161
1063
 
1162
1064
  context "with resource_name :my_resource" do
1163
1065
  before do
1164
- resource_class.resource_name my_resource
1066
+ resource_class.provides my_resource
1165
1067
  end
1166
1068
 
1167
1069
  context "with provides? returning true to my_resource" do
@@ -1312,7 +1214,7 @@ describe "Recipe DSL methods" do
1312
1214
  context "with UTF-8 provides" do
1313
1215
  before(:each) do
1314
1216
  class UTF8Thingy < BaseThingy
1315
- resource_name :Straße
1217
+ provides :Straße
1316
1218
  provides :Straße
1317
1219
  end
1318
1220
  end