chef 15.17.4-universal-mingw32 → 16.0.257-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +14 -20
  3. data/README.md +6 -6
  4. data/Rakefile +18 -23
  5. data/chef-universal-mingw32.gemspec +4 -4
  6. data/chef.gemspec +10 -26
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/action_collection.rb +16 -5
  10. data/lib/chef/api_client/registration.rb +2 -2
  11. data/lib/chef/application.rb +33 -54
  12. data/lib/chef/application/apply.rb +20 -3
  13. data/lib/chef/application/base.rb +8 -3
  14. data/lib/chef/application/exit_code.rb +2 -2
  15. data/lib/chef/application/knife.rb +1 -1
  16. data/lib/chef/chef_class.rb +4 -4
  17. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  21. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  22. data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
  26. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  27. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  28. data/lib/chef/chef_fs/path_utils.rb +3 -3
  29. data/lib/chef/client.rb +16 -14
  30. data/lib/chef/config.rb +1 -1
  31. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  32. data/lib/chef/cookbook/gem_installer.rb +1 -1
  33. data/lib/chef/cookbook/metadata.rb +45 -22
  34. data/lib/chef/cookbook_version.rb +40 -5
  35. data/lib/chef/data_bag.rb +2 -2
  36. data/lib/chef/data_collector/error_handlers.rb +1 -1
  37. data/lib/chef/data_collector/run_end_message.rb +7 -1
  38. data/lib/chef/deprecated.rb +1 -9
  39. data/lib/chef/dist.rb +8 -0
  40. data/lib/chef/dsl/chef_vault.rb +84 -0
  41. data/lib/chef/dsl/declare_resource.rb +7 -5
  42. data/lib/chef/dsl/platform_introspection.rb +2 -3
  43. data/lib/chef/dsl/recipe.rb +7 -12
  44. data/lib/chef/dsl/universal.rb +3 -7
  45. data/lib/chef/environment.rb +2 -2
  46. data/lib/chef/event_dispatch/base.rb +3 -0
  47. data/lib/chef/exceptions.rb +0 -3
  48. data/lib/chef/formatters/doc.rb +1 -1
  49. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  50. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  51. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  52. data/lib/chef/http.rb +1 -2
  53. data/lib/chef/http/http_request.rb +3 -2
  54. data/lib/chef/knife.rb +1 -3
  55. data/lib/chef/knife/acl_add.rb +57 -0
  56. data/lib/chef/knife/acl_base.rb +183 -0
  57. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  58. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  59. data/lib/chef/knife/acl_remove.rb +62 -0
  60. data/lib/chef/knife/acl_show.rb +56 -0
  61. data/lib/chef/knife/bootstrap.rb +93 -97
  62. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  63. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
  66. data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
  67. data/lib/chef/knife/cookbook_download.rb +1 -1
  68. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  69. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  70. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  71. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  72. data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
  73. data/lib/chef/knife/core/node_presenter.rb +2 -2
  74. data/lib/chef/knife/core/status_presenter.rb +5 -5
  75. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  76. data/lib/chef/knife/core/ui.rb +17 -1
  77. data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
  78. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  79. data/lib/chef/knife/environment_compare.rb +1 -1
  80. data/lib/chef/knife/exec.rb +2 -2
  81. data/lib/chef/knife/group_add.rb +55 -0
  82. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  83. data/lib/chef/knife/group_destroy.rb +53 -0
  84. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  85. data/lib/chef/knife/group_remove.rb +56 -0
  86. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  87. data/lib/chef/knife/list.rb +1 -1
  88. data/lib/chef/knife/ssh.rb +12 -50
  89. data/lib/chef/knife/status.rb +3 -3
  90. data/lib/chef/knife/supermarket_download.rb +1 -2
  91. data/lib/chef/knife/supermarket_install.rb +1 -2
  92. data/lib/chef/knife/supermarket_list.rb +1 -2
  93. data/lib/chef/knife/supermarket_search.rb +1 -2
  94. data/lib/chef/knife/supermarket_share.rb +1 -2
  95. data/lib/chef/knife/supermarket_show.rb +1 -2
  96. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  97. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  98. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  99. data/lib/chef/knife/user_invite_list.rb +34 -0
  100. data/lib/chef/knife/user_invite_recind.rb +63 -0
  101. data/lib/chef/knife/yaml_convert.rb +91 -0
  102. data/lib/chef/log.rb +1 -1
  103. data/lib/chef/mixin/create_path.rb +8 -8
  104. data/lib/chef/mixin/openssl_helper.rb +3 -26
  105. data/lib/chef/mixin/powershell_exec.rb +10 -1
  106. data/lib/chef/mixin/powershell_out.rb +1 -1
  107. data/lib/chef/mixin/properties.rb +13 -1
  108. data/lib/chef/mixin/shell_out.rb +0 -4
  109. data/lib/chef/mixin/template.rb +0 -1
  110. data/lib/chef/monkey_patches/net_http.rb +0 -4
  111. data/lib/chef/node.rb +18 -6
  112. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  113. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  114. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  115. data/lib/chef/node_map.rb +7 -36
  116. data/lib/chef/platform/priority_map.rb +4 -4
  117. data/lib/chef/platform/query_helpers.rb +6 -34
  118. data/lib/chef/powershell.rb +14 -0
  119. data/lib/chef/property.rb +22 -4
  120. data/lib/chef/provider.rb +40 -6
  121. data/lib/chef/provider/cron.rb +2 -2
  122. data/lib/chef/provider/directory.rb +2 -2
  123. data/lib/chef/provider/dsc_resource.rb +1 -1
  124. data/lib/chef/provider/dsc_script.rb +1 -1
  125. data/lib/chef/provider/execute.rb +2 -8
  126. data/lib/chef/provider/file.rb +5 -5
  127. data/lib/chef/provider/git.rb +84 -27
  128. data/lib/chef/provider/group.rb +4 -4
  129. data/lib/chef/provider/http_request.rb +6 -6
  130. data/lib/chef/provider/ifconfig.rb +4 -4
  131. data/lib/chef/provider/launchd.rb +36 -51
  132. data/lib/chef/provider/link.rb +2 -2
  133. data/lib/chef/provider/mount.rb +5 -5
  134. data/lib/chef/provider/mount/solaris.rb +1 -0
  135. data/lib/chef/provider/osx_profile.rb +7 -3
  136. data/lib/chef/provider/package.rb +2 -2
  137. data/lib/chef/provider/package/cab.rb +3 -4
  138. data/lib/chef/provider/package/chocolatey.rb +1 -3
  139. data/lib/chef/provider/package/dnf.rb +66 -10
  140. data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
  141. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  142. data/lib/chef/provider/package/dnf/version.rb +5 -1
  143. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
  144. data/lib/chef/provider/package/homebrew.rb +106 -42
  145. data/lib/chef/provider/package/msu.rb +3 -1
  146. data/lib/chef/provider/package/pacman.rb +25 -34
  147. data/lib/chef/provider/package/powershell.rb +2 -6
  148. data/lib/chef/provider/package/rubygems.rb +29 -2
  149. data/lib/chef/provider/package/snap.rb +27 -96
  150. data/lib/chef/provider/package/windows.rb +3 -2
  151. data/lib/chef/provider/package/windows/msi.rb +2 -2
  152. data/lib/chef/provider/package/yum.rb +0 -8
  153. data/lib/chef/provider/package/yum/yum_helper.py +0 -4
  154. data/lib/chef/provider/package/zypper.rb +1 -1
  155. data/lib/chef/provider/powershell_script.rb +4 -10
  156. data/lib/chef/provider/registry_key.rb +4 -4
  157. data/lib/chef/provider/remote_directory.rb +3 -3
  158. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  159. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  160. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  161. data/lib/chef/provider/route.rb +5 -3
  162. data/lib/chef/provider/ruby_block.rb +1 -1
  163. data/lib/chef/provider/script.rb +2 -2
  164. data/lib/chef/provider/service.rb +8 -8
  165. data/lib/chef/provider/service/aixinit.rb +1 -1
  166. data/lib/chef/provider/service/arch.rb +2 -2
  167. data/lib/chef/provider/service/debian.rb +31 -29
  168. data/lib/chef/provider/service/gentoo.rb +2 -2
  169. data/lib/chef/provider/service/macosx.rb +7 -12
  170. data/lib/chef/provider/service/openbsd.rb +1 -1
  171. data/lib/chef/provider/service/redhat.rb +2 -2
  172. data/lib/chef/provider/service/simple.rb +3 -3
  173. data/lib/chef/provider/service/systemd.rb +12 -12
  174. data/lib/chef/provider/service/upstart.rb +1 -1
  175. data/lib/chef/provider/service/windows.rb +5 -11
  176. data/lib/chef/provider/subversion.rb +25 -5
  177. data/lib/chef/provider/systemd_unit.rb +26 -25
  178. data/lib/chef/provider/user.rb +6 -6
  179. data/lib/chef/provider/user/dscl.rb +3 -3
  180. data/lib/chef/provider/user/mac.rb +10 -9
  181. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  182. data/lib/chef/provider/windows_env.rb +3 -3
  183. data/lib/chef/provider/windows_script.rb +2 -2
  184. data/lib/chef/provider/windows_task.rb +7 -9
  185. data/lib/chef/provider/yum_repository.rb +1 -1
  186. data/lib/chef/provider/zypper_repository.rb +11 -31
  187. data/lib/chef/providers.rb +0 -6
  188. data/lib/chef/recipe.rb +36 -0
  189. data/lib/chef/resource.rb +41 -56
  190. data/lib/chef/resource/action_class.rb +24 -22
  191. data/lib/chef/resource/alternatives.rb +149 -0
  192. data/lib/chef/resource/apt_package.rb +2 -1
  193. data/lib/chef/resource/apt_preference.rb +69 -2
  194. data/lib/chef/resource/apt_repository.rb +337 -5
  195. data/lib/chef/resource/apt_update.rb +52 -1
  196. data/lib/chef/resource/archive_file.rb +9 -29
  197. data/lib/chef/resource/bash.rb +2 -0
  198. data/lib/chef/resource/bff_package.rb +9 -1
  199. data/lib/chef/resource/breakpoint.rb +0 -1
  200. data/lib/chef/resource/build_essential.rb +42 -48
  201. data/lib/chef/resource/cab_package.rb +8 -1
  202. data/lib/chef/resource/chef_client_cron.rb +225 -0
  203. data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
  204. data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
  205. data/lib/chef/resource/chef_gem.rb +9 -16
  206. data/lib/chef/resource/chef_handler.rb +2 -1
  207. data/lib/chef/resource/chef_sleep.rb +0 -1
  208. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  209. data/lib/chef/resource/chocolatey_config.rb +3 -1
  210. data/lib/chef/resource/chocolatey_feature.rb +2 -1
  211. data/lib/chef/resource/chocolatey_package.rb +2 -1
  212. data/lib/chef/resource/chocolatey_source.rb +2 -1
  213. data/lib/chef/resource/cookbook_file.rb +1 -1
  214. data/lib/chef/resource/cron.rb +22 -68
  215. data/lib/chef/resource/cron_access.rb +8 -15
  216. data/lib/chef/resource/cron_d.rb +9 -75
  217. data/lib/chef/resource/csh.rb +2 -0
  218. data/lib/chef/resource/directory.rb +2 -2
  219. data/lib/chef/resource/dmg_package.rb +4 -4
  220. data/lib/chef/resource/dnf_package.rb +2 -3
  221. data/lib/chef/resource/dpkg_package.rb +2 -1
  222. data/lib/chef/resource/dsc_resource.rb +6 -4
  223. data/lib/chef/resource/dsc_script.rb +3 -2
  224. data/lib/chef/resource/execute.rb +13 -12
  225. data/lib/chef/resource/file.rb +3 -1
  226. data/lib/chef/resource/freebsd_package.rb +2 -1
  227. data/lib/chef/resource/gem_package.rb +14 -6
  228. data/lib/chef/resource/group.rb +4 -1
  229. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  230. data/lib/chef/resource/homebrew_cask.rb +5 -4
  231. data/lib/chef/resource/homebrew_package.rb +4 -2
  232. data/lib/chef/resource/homebrew_tap.rb +2 -1
  233. data/lib/chef/resource/hostname.rb +41 -36
  234. data/lib/chef/resource/http_request.rb +0 -1
  235. data/lib/chef/resource/ifconfig.rb +1 -1
  236. data/lib/chef/resource/ips_package.rb +10 -2
  237. data/lib/chef/resource/kernel_module.rb +29 -29
  238. data/lib/chef/resource/ksh.rb +2 -0
  239. data/lib/chef/resource/launchd.rb +6 -6
  240. data/lib/chef/resource/link.rb +1 -23
  241. data/lib/chef/resource/locale.rb +58 -24
  242. data/lib/chef/resource/log.rb +12 -1
  243. data/lib/chef/resource/lwrp_base.rb +1 -8
  244. data/lib/chef/resource/macos_userdefaults.rb +9 -6
  245. data/lib/chef/resource/macosx_service.rb +2 -1
  246. data/lib/chef/resource/macports_package.rb +10 -2
  247. data/lib/chef/resource/mdadm.rb +62 -2
  248. data/lib/chef/resource/mount.rb +3 -0
  249. data/lib/chef/resource/msu_package.rb +13 -1
  250. data/lib/chef/resource/notify_group.rb +8 -3
  251. data/lib/chef/resource/ohai.rb +19 -3
  252. data/lib/chef/resource/ohai_hint.rb +3 -12
  253. data/lib/chef/resource/openbsd_package.rb +9 -1
  254. data/lib/chef/resource/openssl_dhparam.rb +10 -1
  255. data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
  256. data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
  257. data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
  258. data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
  259. data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
  260. data/lib/chef/resource/openssl_x509_crl.rb +12 -1
  261. data/lib/chef/resource/openssl_x509_request.rb +37 -1
  262. data/lib/chef/resource/osx_profile.rb +3 -2
  263. data/lib/chef/resource/package.rb +2 -1
  264. data/lib/chef/resource/pacman_package.rb +2 -1
  265. data/lib/chef/resource/paludis_package.rb +12 -3
  266. data/lib/chef/resource/perl.rb +2 -0
  267. data/lib/chef/resource/plist.rb +207 -0
  268. data/lib/chef/resource/portage_package.rb +13 -3
  269. data/lib/chef/resource/powershell_package.rb +1 -3
  270. data/lib/chef/resource/powershell_package_source.rb +3 -1
  271. data/lib/chef/resource/powershell_script.rb +7 -17
  272. data/lib/chef/resource/python.rb +2 -0
  273. data/lib/chef/resource/reboot.rb +0 -1
  274. data/lib/chef/resource/registry_key.rb +1 -2
  275. data/lib/chef/resource/remote_directory.rb +2 -0
  276. data/lib/chef/resource/remote_file.rb +2 -0
  277. data/lib/chef/resource/rhsm_errata.rb +0 -1
  278. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  279. data/lib/chef/resource/rhsm_register.rb +2 -1
  280. data/lib/chef/resource/rhsm_repo.rb +3 -1
  281. data/lib/chef/resource/rhsm_subscription.rb +4 -1
  282. data/lib/chef/resource/route.rb +5 -1
  283. data/lib/chef/resource/rpm_package.rb +9 -2
  284. data/lib/chef/resource/ruby.rb +2 -0
  285. data/lib/chef/resource/ruby_block.rb +1 -1
  286. data/lib/chef/resource/scm/_scm.rb +48 -0
  287. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  288. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
  289. data/lib/chef/resource/script.rb +6 -3
  290. data/lib/chef/resource/service.rb +6 -7
  291. data/lib/chef/resource/smartos_package.rb +9 -1
  292. data/lib/chef/resource/snap_package.rb +3 -1
  293. data/lib/chef/resource/solaris_package.rb +9 -1
  294. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  295. data/lib/chef/resource/sudo.rb +9 -9
  296. data/lib/chef/resource/support/cron.d.erb +1 -1
  297. data/lib/chef/resource/support/cron_access.erb +1 -1
  298. data/lib/chef/resource/support/sudoer.erb +1 -2
  299. data/lib/chef/resource/support/ulimit.erb +41 -0
  300. data/lib/chef/resource/swap_file.rb +5 -3
  301. data/lib/chef/resource/sysctl.rb +2 -2
  302. data/lib/chef/resource/systemd_unit.rb +4 -2
  303. data/lib/chef/resource/template.rb +0 -1
  304. data/lib/chef/resource/timezone.rb +7 -18
  305. data/lib/chef/resource/user.rb +1 -3
  306. data/lib/chef/resource/user/aix_user.rb +0 -2
  307. data/lib/chef/resource/user/dscl_user.rb +1 -1
  308. data/lib/chef/resource/user/linux_user.rb +0 -2
  309. data/lib/chef/resource/user/mac_user.rb +1 -1
  310. data/lib/chef/resource/user/pw_user.rb +0 -2
  311. data/lib/chef/resource/user/solaris_user.rb +0 -2
  312. data/lib/chef/resource/user/windows_user.rb +0 -2
  313. data/lib/chef/resource/user_ulimit.rb +114 -0
  314. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  315. data/lib/chef/resource/windows_ad_join.rb +19 -6
  316. data/lib/chef/resource/windows_auto_run.rb +0 -1
  317. data/lib/chef/resource/windows_certificate.rb +1 -1
  318. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  319. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  320. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  321. data/lib/chef/resource/windows_dns_record.rb +0 -1
  322. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  323. data/lib/chef/resource/windows_env.rb +2 -3
  324. data/lib/chef/resource/windows_feature.rb +2 -2
  325. data/lib/chef/resource/windows_feature_dism.rb +9 -22
  326. data/lib/chef/resource/windows_feature_powershell.rb +17 -82
  327. data/lib/chef/resource/windows_firewall_rule.rb +119 -10
  328. data/lib/chef/resource/windows_font.rb +1 -3
  329. data/lib/chef/resource/windows_package.rb +13 -4
  330. data/lib/chef/resource/windows_pagefile.rb +0 -1
  331. data/lib/chef/resource/windows_path.rb +0 -1
  332. data/lib/chef/resource/windows_printer.rb +0 -1
  333. data/lib/chef/resource/windows_printer_port.rb +0 -1
  334. data/lib/chef/resource/windows_script.rb +3 -4
  335. data/lib/chef/resource/windows_security_policy.rb +90 -0
  336. data/lib/chef/resource/windows_service.rb +45 -31
  337. data/lib/chef/resource/windows_share.rb +3 -7
  338. data/lib/chef/resource/windows_shortcut.rb +0 -1
  339. data/lib/chef/resource/windows_task.rb +14 -15
  340. data/lib/chef/resource/windows_uac.rb +0 -1
  341. data/lib/chef/resource/windows_user_privilege.rb +157 -0
  342. data/lib/chef/resource/windows_workgroup.rb +0 -1
  343. data/lib/chef/resource/yum_package.rb +3 -1
  344. data/lib/chef/resource/yum_repository.rb +2 -1
  345. data/lib/chef/resource/zypper_package.rb +3 -2
  346. data/lib/chef/resource/zypper_repository.rb +2 -1
  347. data/lib/chef/resource_builder.rb +8 -0
  348. data/lib/chef/resource_inspector.rb +6 -6
  349. data/lib/chef/resource_resolver.rb +7 -14
  350. data/lib/chef/resources.rb +11 -3
  351. data/lib/chef/role.rb +2 -2
  352. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  353. data/lib/chef/shell.rb +23 -32
  354. data/lib/chef/shell/shell_session.rb +0 -2
  355. data/lib/chef/util/diff.rb +1 -1
  356. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  357. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  358. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  359. data/lib/chef/version.rb +2 -2
  360. data/lib/chef/version_string.rb +1 -1
  361. data/lib/chef/win32/api/file.rb +18 -18
  362. data/lib/chef/win32/api/security.rb +6 -0
  363. data/lib/chef/win32/file.rb +3 -11
  364. data/lib/chef/win32/process.rb +2 -2
  365. data/lib/chef/win32/security.rb +40 -2
  366. data/spec/functional/assets/inittest +8 -7
  367. data/spec/functional/knife/ssh_spec.rb +27 -23
  368. data/spec/functional/resource/aix_service_spec.rb +1 -0
  369. data/spec/functional/resource/aixinit_service_spec.rb +8 -7
  370. data/spec/functional/resource/apt_package_spec.rb +1 -0
  371. data/spec/functional/resource/bff_spec.rb +2 -2
  372. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  373. data/spec/functional/resource/cron_spec.rb +11 -29
  374. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  375. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  376. data/spec/functional/resource/git_spec.rb +184 -134
  377. data/spec/functional/resource/insserv_spec.rb +6 -5
  378. data/spec/functional/resource/link_spec.rb +17 -17
  379. data/spec/functional/resource/locale_spec.rb +13 -2
  380. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  381. data/spec/functional/resource/rpm_spec.rb +2 -2
  382. data/spec/functional/resource/user/dscl_spec.rb +2 -2
  383. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  384. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  385. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  386. data/spec/functional/resource/windows_task_spec.rb +8 -8
  387. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  388. data/spec/functional/run_lock_spec.rb +1 -2
  389. data/spec/functional/shell_spec.rb +6 -6
  390. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  391. data/spec/functional/version_spec.rb +1 -1
  392. data/spec/functional/win32/registry_spec.rb +0 -6
  393. data/spec/functional/win32/security_spec.rb +22 -0
  394. data/spec/functional/win32/service_manager_spec.rb +1 -1
  395. data/spec/integration/client/client_spec.rb +123 -2
  396. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  397. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  398. data/spec/integration/knife/raw_spec.rb +30 -2
  399. data/spec/integration/knife/show_spec.rb +32 -3
  400. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  401. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
  402. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  403. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  404. data/spec/integration/recipes/notifies_spec.rb +50 -21
  405. data/spec/integration/recipes/notifying_block_spec.rb +9 -6
  406. data/spec/integration/recipes/provider_choice.rb +2 -0
  407. data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
  408. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  409. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
  410. data/spec/integration/recipes/resource_load_spec.rb +133 -13
  411. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  412. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  413. data/spec/integration/solo/solo_spec.rb +3 -3
  414. data/spec/scripts/ssl-serve.rb +1 -1
  415. data/spec/spec_helper.rb +11 -14
  416. data/spec/support/chef_helpers.rb +2 -2
  417. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  418. data/spec/support/platform_helpers.rb +44 -19
  419. data/spec/support/platforms/win32/spec_service.rb +1 -1
  420. data/spec/support/recipe_dsl_helper.rb +83 -0
  421. data/spec/support/shared/functional/directory_resource.rb +1 -1
  422. data/spec/support/shared/functional/execute_resource.rb +1 -1
  423. data/spec/support/shared/functional/file_resource.rb +3 -3
  424. data/spec/support/shared/functional/win32_service.rb +1 -1
  425. data/spec/support/shared/functional/windows_script.rb +5 -18
  426. data/spec/support/shared/integration/knife_support.rb +14 -8
  427. data/spec/unit/application/apply_spec.rb +3 -0
  428. data/spec/unit/application/client_spec.rb +5 -1
  429. data/spec/unit/application_spec.rb +1 -9
  430. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
  431. data/spec/unit/client_spec.rb +7 -5
  432. data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
  433. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  434. data/spec/unit/data_bag_spec.rb +1 -1
  435. data/spec/unit/data_collector_spec.rb +38 -17
  436. data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
  437. data/spec/unit/environment_spec.rb +7 -7
  438. data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
  439. data/spec/unit/file_access_control_spec.rb +1 -1
  440. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  441. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  442. data/spec/unit/knife/bootstrap_spec.rb +36 -54
  443. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  444. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  445. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  446. data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
  447. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  448. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  449. data/spec/unit/knife/core/ui_spec.rb +16 -0
  450. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
  451. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  452. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  453. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  454. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  455. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  456. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  457. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  458. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  459. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  460. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  461. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  462. data/spec/unit/knife/ssh_spec.rb +10 -113
  463. data/spec/unit/knife/status_spec.rb +1 -1
  464. data/spec/unit/knife/supermarket_share_spec.rb +3 -5
  465. data/spec/unit/knife_spec.rb +18 -0
  466. data/spec/unit/lwrp_spec.rb +4 -4
  467. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  468. data/spec/unit/mixin/securable_spec.rb +1 -0
  469. data/spec/unit/mixin/user_context_spec.rb +9 -1
  470. data/spec/unit/node/attribute_spec.rb +2 -2
  471. data/spec/unit/node_spec.rb +24 -0
  472. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  473. data/spec/unit/property/state_spec.rb +12 -7
  474. data/spec/unit/property/validation_spec.rb +25 -1
  475. data/spec/unit/property_spec.rb +18 -15
  476. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  477. data/spec/unit/provider/apt_repository_spec.rb +9 -11
  478. data/spec/unit/provider/apt_update_spec.rb +12 -11
  479. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  480. data/spec/unit/provider/cron_spec.rb +2 -2
  481. data/spec/unit/provider/directory_spec.rb +4 -15
  482. data/spec/unit/provider/file_spec.rb +4 -4
  483. data/spec/unit/provider/git_spec.rb +44 -4
  484. data/spec/unit/provider/link_spec.rb +0 -1
  485. data/spec/unit/provider/log_spec.rb +3 -3
  486. data/spec/unit/provider/mdadm_spec.rb +3 -3
  487. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  488. data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
  489. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  490. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  491. data/spec/unit/provider/package/msu_spec.rb +3 -3
  492. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  493. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  494. data/spec/unit/provider/package/rubygems_spec.rb +221 -31
  495. data/spec/unit/provider/package/snap_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  497. data/spec/unit/provider/package/windows_spec.rb +53 -30
  498. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  499. data/spec/unit/provider/remote_file_spec.rb +3 -4
  500. data/spec/unit/provider/service/arch_service_spec.rb +2 -3
  501. data/spec/unit/provider/service/debian_service_spec.rb +35 -14
  502. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  503. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  504. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  505. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  506. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  507. data/spec/unit/provider/service/windows_spec.rb +6 -2
  508. data/spec/unit/provider/subversion_spec.rb +4 -2
  509. data/spec/unit/provider/systemd_unit_spec.rb +24 -28
  510. data/spec/unit/provider/template_spec.rb +3 -4
  511. data/spec/unit/provider/zypper_repository_spec.rb +25 -75
  512. data/spec/unit/provider_resolver_spec.rb +11 -11
  513. data/spec/unit/provider_spec.rb +0 -1
  514. data/spec/unit/recipe_spec.rb +68 -0
  515. data/spec/unit/resource/alternatives_spec.rb +120 -0
  516. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  517. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  518. data/spec/unit/resource/apt_update_spec.rb +0 -18
  519. data/spec/unit/resource/archive_file_spec.rb +2 -11
  520. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  521. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  522. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  523. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  524. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  525. data/spec/unit/resource/cron_d_spec.rb +6 -48
  526. data/spec/unit/resource/cron_spec.rb +4 -10
  527. data/spec/unit/resource/gem_package_spec.rb +3 -3
  528. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  529. data/spec/unit/resource/link_spec.rb +0 -4
  530. data/spec/unit/resource/locale_spec.rb +0 -34
  531. data/spec/unit/resource/ohai_spec.rb +56 -2
  532. data/spec/unit/resource/plist_spec.rb +130 -0
  533. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  534. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  535. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  536. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  537. data/spec/unit/resource/service_spec.rb +4 -0
  538. data/spec/unit/resource/user_spec.rb +2 -2
  539. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  540. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  541. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  542. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  543. data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
  544. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  545. data/spec/unit/resource/windows_package_spec.rb +4 -1
  546. data/spec/unit/resource/windows_service_spec.rb +9 -0
  547. data/spec/unit/resource/windows_task_spec.rb +1 -1
  548. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  549. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  550. data/spec/unit/resource_reporter_spec.rb +1 -5
  551. data/spec/unit/resource_spec.rb +11 -4
  552. data/spec/unit/role_spec.rb +11 -11
  553. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  554. data/spec/unit/run_context_spec.rb +1 -1
  555. data/spec/unit/search/query_spec.rb +1 -1
  556. data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
  557. data/spec/unit/win32/security_spec.rb +3 -4
  558. data/tasks/rspec.rb +1 -1
  559. metadata +116 -87
  560. data/lib/chef/dsl/core.rb +0 -52
  561. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  562. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  563. data/lib/chef/provider/apt_preference.rb +0 -93
  564. data/lib/chef/provider/apt_repository.rb +0 -358
  565. data/lib/chef/provider/apt_update.rb +0 -79
  566. data/lib/chef/provider/log.rb +0 -43
  567. data/lib/chef/provider/mdadm.rb +0 -85
  568. data/lib/chef/provider/ohai.rb +0 -45
  569. data/lib/chef/resource/git.rb +0 -37
  570. data/spec/functional/resource/windows_font_spec.rb +0 -49
  571. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -116,7 +116,7 @@ class Chef
116
116
  false
117
117
  end
118
118
 
119
- def action_create
119
+ action :create do
120
120
  if !@user_exists
121
121
  converge_by("create user #{new_resource.username}") do
122
122
  create_user
@@ -130,7 +130,7 @@ class Chef
130
130
  end
131
131
  end
132
132
 
133
- def action_remove
133
+ action :remove do
134
134
  return unless @user_exists
135
135
 
136
136
  converge_by("remove user #{new_resource.username}") do
@@ -139,7 +139,7 @@ class Chef
139
139
  end
140
140
  end
141
141
 
142
- def action_manage
142
+ action :manage do
143
143
  return unless @user_exists && compare_user
144
144
 
145
145
  converge_by("manage user #{new_resource.username}") do
@@ -148,7 +148,7 @@ class Chef
148
148
  end
149
149
  end
150
150
 
151
- def action_modify
151
+ action :modify do
152
152
  return unless compare_user
153
153
 
154
154
  converge_by("modify user #{new_resource.username}") do
@@ -157,7 +157,7 @@ class Chef
157
157
  end
158
158
  end
159
159
 
160
- def action_lock
160
+ action :lock do
161
161
  if check_lock == false
162
162
  converge_by("lock the user #{new_resource.username}") do
163
163
  lock_user
@@ -168,7 +168,7 @@ class Chef
168
168
  end
169
169
  end
170
170
 
171
- def action_unlock
171
+ action :unlock do
172
172
  if check_lock == true
173
173
  converge_by("unlock user #{new_resource.username}") do
174
174
  unlock_user
@@ -118,7 +118,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
118
118
 
119
119
  # Calling shell_out directly since we want to give an input stream
120
120
  shadow_hash_xml = convert_binary_plist_to_xml(shadow_hash_binary.string)
121
- shadow_hash = Plist.parse_xml(shadow_hash_xml)
121
+ shadow_hash = ::Plist.parse_xml(shadow_hash_xml)
122
122
 
123
123
  if shadow_hash["SALTED-SHA512-PBKDF2"] # 10.7+ contains this, but we retain the check in case it goes away in the future
124
124
  @password_shadow_conversion_algorithm = "SALTED-SHA512-PBKDF2"
@@ -541,7 +541,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
541
541
  begin
542
542
  user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
543
543
  user_plist_info = run_plutil("convert", "xml1", "-o", "-", user_plist_file)
544
- user_info = Plist.parse_xml(user_plist_info)
544
+ user_info = ::Plist.parse_xml(user_plist_info)
545
545
  rescue Chef::Exceptions::PlistUtilCommandFailed
546
546
  end
547
547
 
@@ -554,7 +554,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
554
554
  #
555
555
  def save_user_info(user_info)
556
556
  user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
557
- Plist::Emit.save_plist(user_info, user_plist_file)
557
+ ::Plist::Emit.save_plist(user_info, user_plist_file)
558
558
  run_plutil("convert", "binary1", user_plist_file)
559
559
  end
560
560
 
@@ -22,6 +22,7 @@ require_relative "../../mixin/shell_out"
22
22
  require_relative "../../mixin/which"
23
23
  require_relative "../user"
24
24
  require_relative "../../resource/user/mac_user"
25
+ require "plist"
25
26
 
26
27
  class Chef
27
28
  class Provider
@@ -196,12 +197,12 @@ class Chef
196
197
  # group management should be done outside of the core resource.
197
198
  group_name, group_id, group_action = user_group_info
198
199
 
199
- declare_resource(:group, group_name) do
200
+ group group_name do
200
201
  members new_resource.username
201
202
  gid group_id if group_id
202
- action :nothing
203
+ action group_action
203
204
  append true
204
- end.run_action(group_action)
205
+ end
205
206
 
206
207
  converge_by("create primary group ID") do
207
208
  run_dscl("create", "/Users/#{new_resource.username}", "PrimaryGroupID", group_id)
@@ -246,16 +247,16 @@ class Chef
246
247
 
247
248
  if diverged?(:admin)
248
249
  converge_by("alter admin group membership") do
249
- declare_resource(:group, "admin") do
250
+ group "admin" do
250
251
  if new_resource.admin
251
252
  members new_resource.username
252
253
  else
253
254
  excluded_members new_resource.username
254
255
  end
255
256
 
256
- action :nothing
257
+ action :create
257
258
  append true
258
- end.run_action(:create)
259
+ end
259
260
 
260
261
  admins = admin_group_plist[:group_members]
261
262
  if new_resource.admin
@@ -271,12 +272,12 @@ class Chef
271
272
  end
272
273
 
273
274
  group_name, group_id, group_action = user_group_info
274
- declare_resource(:group, group_name) do
275
+ group group_name do
275
276
  gid group_id if group_id
276
277
  members new_resource.username
277
- action :nothing
278
+ action group_action
278
279
  append true
279
- end.run_action(group_action)
280
+ end
280
281
 
281
282
  if diverged?(:gid)
282
283
  converge_by("alter group membership") do
@@ -21,7 +21,7 @@ class Chef
21
21
  class WhyrunSafeRubyBlock < Chef::Provider::RubyBlock
22
22
  provides :whyrun_safe_ruby_block
23
23
 
24
- def action_run
24
+ action :run do
25
25
  new_resource.block.call
26
26
  new_resource.updated_by_last_action(true)
27
27
  @run_context.events.resource_update_applied(new_resource, :create, "execute the whyrun_safe_ruby_block #{new_resource.name}")
@@ -78,7 +78,7 @@ class Chef
78
78
 
79
79
  alias_method :compare_value, :requires_modify_or_create?
80
80
 
81
- def action_create
81
+ action :create do
82
82
  if @key_exists
83
83
  if requires_modify_or_create?
84
84
  modify_env
@@ -123,7 +123,7 @@ class Chef
123
123
  end
124
124
  end
125
125
 
126
- def action_delete
126
+ action :delete do
127
127
  if ( ENV[new_resource.key_name] || @key_exists ) && !delete_element
128
128
  delete_env
129
129
  logger.info("#{new_resource} deleted")
@@ -131,7 +131,7 @@ class Chef
131
131
  end
132
132
  end
133
133
 
134
- def action_modify
134
+ action :modify do
135
135
  if @key_exists
136
136
  if requires_modify_or_create?
137
137
  modify_env
@@ -46,7 +46,7 @@ class Chef
46
46
 
47
47
  public
48
48
 
49
- def action_run
49
+ action :run do
50
50
  wow64_redirection_state = nil
51
51
 
52
52
  if @is_wow64
@@ -54,7 +54,7 @@ class Chef
54
54
  end
55
55
 
56
56
  begin
57
- super
57
+ super()
58
58
  rescue
59
59
  raise
60
60
  ensure
@@ -19,7 +19,6 @@
19
19
  require_relative "../mixin/shell_out"
20
20
  require "rexml/document" unless defined?(REXML::Document)
21
21
  require "iso8601" if ChefUtils.windows?
22
- require_relative "../mixin/powershell_out"
23
22
  require_relative "../provider"
24
23
  require_relative "../util/path_helper"
25
24
  require "win32/taskscheduler" if ChefUtils.windows?
@@ -28,7 +27,6 @@ class Chef
28
27
  class Provider
29
28
  class WindowsTask < Chef::Provider
30
29
  include Chef::Mixin::ShellOut
31
- include Chef::Mixin::PowershellOut
32
30
 
33
31
  if ChefUtils.windows?
34
32
  include Win32
@@ -115,7 +113,7 @@ class Chef
115
113
  @current_resource
116
114
  end
117
115
 
118
- def action_create
116
+ action :create do
119
117
  set_command_and_arguments if new_resource.command
120
118
 
121
119
  if current_resource.exists
@@ -152,7 +150,7 @@ class Chef
152
150
  end
153
151
  end
154
152
 
155
- def action_run
153
+ action :run do
156
154
  if current_resource.exists
157
155
  logger.trace "#{new_resource} task exists"
158
156
  if current_resource.task.status == "running"
@@ -167,7 +165,7 @@ class Chef
167
165
  end
168
166
  end
169
167
 
170
- def action_delete
168
+ action :delete do
171
169
  if current_resource.exists
172
170
  logger.trace "#{new_resource} task exists"
173
171
  converge_by("delete scheduled task #{new_resource}") do
@@ -179,7 +177,7 @@ class Chef
179
177
  end
180
178
  end
181
179
 
182
- def action_end
180
+ action :end do
183
181
  if current_resource.exists
184
182
  logger.trace "#{new_resource} task exists"
185
183
  if current_resource.task.status != "running"
@@ -194,7 +192,7 @@ class Chef
194
192
  end
195
193
  end
196
194
 
197
- def action_enable
195
+ action :enable do
198
196
  if current_resource.exists
199
197
  logger.trace "#{new_resource} task exists"
200
198
  if current_resource.task.status == "not scheduled"
@@ -211,7 +209,7 @@ class Chef
211
209
  end
212
210
  end
213
211
 
214
- def action_disable
212
+ action :disable do
215
213
  if current_resource.exists
216
214
  logger.info "#{new_resource} task exists"
217
215
  if %w{ready running}.include?(current_resource.task.status)
@@ -426,7 +424,7 @@ class Chef
426
424
  when TaskScheduler::AT_LOGON
427
425
  # TODO: handle option for this trigger
428
426
  when TaskScheduler::AT_SYSTEMSTART
429
- # TODO: handle option for this trigger
427
+ # TODO: handle option for this trigger
430
428
  end
431
429
  end
432
430
 
@@ -37,7 +37,7 @@ class Chef
37
37
  if template_available?(new_resource.source)
38
38
  source new_resource.source
39
39
  else
40
- source ::File.expand_path("support/yum_repo.erb", __dir__)
40
+ source ::File.expand_path("../support/yum_repo.erb", __FILE__)
41
41
  local true
42
42
  end
43
43
  sensitive new_resource.sensitive
@@ -41,7 +41,7 @@ class Chef
41
41
  if template_available?(new_resource.source)
42
42
  source new_resource.source
43
43
  else
44
- source ::File.expand_path("support/zypper_repo.erb", __dir__)
44
+ source ::File.expand_path("../support/zypper_repo.erb", __FILE__)
45
45
  local true
46
46
  end
47
47
  sensitive new_resource.sensitive
@@ -115,48 +115,28 @@ class Chef
115
115
  end
116
116
  end
117
117
 
118
- # the version of gpg installed on the system
119
- #
120
- # @return [Gem::Version] the version of GPG
121
- def gpg_version
122
- so = shell_out!("gpg --version")
123
- # matches 2.0 and 2.2 versions from SLES 12 and 15: https://rubular.com/r/e6D0WfGK6SXvUp
124
- version = /gpg \(GnuPG\)\s*(.*)/.match(so.stdout)[1]
125
- logger.trace("GPG package version is #{version}")
126
- Gem::Version.new(version)
127
- end
128
-
129
118
  # is the provided key already installed
130
119
  # @param [String] key_path the path to the key on the local filesystem
131
120
  #
132
121
  # @return [boolean] is the key already known by rpm
133
122
  def key_installed?(key_path)
134
- so = shell_out("/bin/rpm -qa gpg-pubkey*")
123
+ so = shell_out("rpm -qa gpg-pubkey*")
135
124
  # expected output & match: http://rubular.com/r/RdF7EcXEtb
136
- status = /gpg-pubkey-#{short_key_id(key_path)}/.match(so.stdout)
125
+ status = /gpg-pubkey-#{key_fingerprint(key_path)}/.match(so.stdout)
137
126
  logger.trace("GPG key at #{key_path} is known by rpm? #{status ? "true" : "false"}")
138
127
  status
139
128
  end
140
129
 
141
- # extract the gpg key's short key id from a local file. Learning moment: This 8 hex value ID
142
- # is sometimes incorrectly called the fingerprint. The fingerprint is the full length value
143
- # and googling for that will just result in sad times.
144
- #
130
+ # extract the gpg key fingerprint from a local file
145
131
  # @param [String] key_path the path to the key on the local filesystem
146
132
  #
147
- # @return [String] the short key id of the key
148
- def short_key_id(key_path)
149
- if gpg_version >= Gem::Version.new("2.2") # SLES 15+
150
- so = shell_out!("gpg --import-options import-show --dry-run --import --with-colons #{key_path}")
151
- # expected output and match: https://rubular.com/r/uXWJo3yfkli1qA
152
- short_key_id = /fpr:*\h*(\h{8}):/.match(so.stdout)[1].downcase
153
- else # SLES 12 and earlier
154
- so = shell_out!("gpg --with-fingerprint #{key_path}")
155
- # expected output and match: http://rubular.com/r/BpfMjxySQM
156
- short_key_id = %r{pub\s*\S*/(\S*)}.match(so.stdout)[1].downcase
157
- end
158
- logger.trace("GPG short key ID of key at #{key_path} is #{short_key_id}")
159
- short_key_id
133
+ # @return [String] the fingerprint of the key
134
+ def key_fingerprint(key_path)
135
+ so = shell_out!("gpg --with-fingerprint #{key_path}")
136
+ # expected output and match: http://rubular.com/r/BpfMjxySQM
137
+ fingerprint = %r{pub\s*\S*/(\S*)}.match(so.stdout)[1].downcase
138
+ logger.trace("GPG fingerprint of key at #{key_path} is #{fingerprint}")
139
+ fingerprint
160
140
  end
161
141
 
162
142
  # install the provided gpg key
@@ -16,9 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require_relative "provider/apt_update"
20
- require_relative "provider/apt_preference"
21
- require_relative "provider/apt_repository"
22
19
  require_relative "provider/batch"
23
20
  require_relative "provider/cookbook_file"
24
21
  require_relative "provider/cron"
@@ -35,9 +32,6 @@ require_relative "provider/http_request"
35
32
  require_relative "provider/ifconfig"
36
33
  require_relative "provider/launchd"
37
34
  require_relative "provider/link"
38
- require_relative "provider/log"
39
- require_relative "provider/ohai"
40
- require_relative "provider/mdadm"
41
35
  require_relative "provider/mount"
42
36
  require_relative "provider/noop"
43
37
  require_relative "provider/package"
data/lib/chef/recipe.rb CHANGED
@@ -17,6 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
+ require "yaml"
20
21
  require_relative "dsl/recipe"
21
22
  require_relative "mixin/from_file"
22
23
  require_relative "mixin/deprecation"
@@ -85,6 +86,41 @@ class Chef
85
86
  end
86
87
  end
87
88
 
89
+ def from_yaml_file(filename)
90
+ self.source_file = filename
91
+ if File.file?(filename) && File.readable?(filename)
92
+ yaml_contents = IO.read(filename)
93
+ if ::YAML.load_stream(yaml_contents).length > 1
94
+ raise ArgumentError, "YAML recipe '#{filename}' contains multiple documents, only one is supported"
95
+ end
96
+
97
+ from_yaml(yaml_contents)
98
+ else
99
+ raise IOError, "Cannot open or read file '#{filename}'!"
100
+ end
101
+ end
102
+
103
+ def from_yaml(string)
104
+ res = ::YAML.safe_load(string)
105
+ unless res.is_a?(Hash) && res.key?("resources")
106
+ raise ArgumentError, "YAML recipe '#{source_file}' must contain a top-level 'resources' hash (YAML sequence), i.e. 'resources:'"
107
+ end
108
+
109
+ from_hash(res)
110
+ end
111
+
112
+ def from_hash(hash)
113
+ hash["resources"].each do |rhash|
114
+ type = rhash.delete("type").to_sym
115
+ name = rhash.delete("name")
116
+ res = declare_resource(type, name)
117
+ rhash.each do |key, value|
118
+ # FIXME?: we probably need a way to instance_exec a string that contains block code against the property?
119
+ res.send(key, value)
120
+ end
121
+ end
122
+ end
123
+
88
124
  def to_s
89
125
  "cookbook: #{cookbook_name ? cookbook_name : "(none)"}, recipe: #{recipe_name ? recipe_name : "(none)"} "
90
126
  end
data/lib/chef/resource.rb CHANGED
@@ -415,7 +415,6 @@ class Chef
415
415
  @not_if
416
416
  end
417
417
 
418
- #
419
418
  # The number of times to retry this resource if it fails by throwing an
420
419
  # exception while running an action. Default: 0
421
420
  #
@@ -427,7 +426,6 @@ class Chef
427
426
  #
428
427
  property :retries, Integer, default: 0, desired_state: false
429
428
 
430
- #
431
429
  # The number of seconds to wait between retries. Default: 2.
432
430
  #
433
431
  # @param arg [Integer] The number of seconds to wait between retries.
@@ -435,7 +433,6 @@ class Chef
435
433
  #
436
434
  property :retry_delay, Integer, default: 2, desired_state: false
437
435
 
438
- #
439
436
  # Whether to treat this resource's data as sensitive. If set, no resource
440
437
  # data will be displayed in log output.
441
438
  #
@@ -444,7 +441,16 @@ class Chef
444
441
  #
445
442
  property :sensitive, [ TrueClass, FalseClass ], default: false, desired_state: false
446
443
 
444
+ # If this is set the resource will be set to run at compile time and the converge time
445
+ # action will be set to :nothing.
446
+ #
447
+ # @param arg [Boolean] Whether or not to force this resource to run at compile time.
448
+ # @return [Boolean] Whether or not to force this resource to run at compile time.
447
449
  #
450
+ property :compile_time, [TrueClass, FalseClass],
451
+ description: "Determines whether or not the resource is executed during the compile time phase.",
452
+ default: false, desired_state: false
453
+
448
454
  # The time it took (in seconds) to run the most recently-run action. Not
449
455
  # cumulative across actions. This is set to 0 as soon as a new action starts
450
456
  # running, and set to the elapsed time at the end of the action.
@@ -458,7 +464,6 @@ class Chef
458
464
  #
459
465
  attr_accessor :executed_by_runner
460
466
 
461
- #
462
467
  # The guard interpreter that will be used to process `only_if` and `not_if`
463
468
  # statements. If left unset, the #default_guard_interpreter will be used.
464
469
  #
@@ -493,7 +498,7 @@ class Chef
493
498
  state = {}
494
499
  state_properties = self.class.state_properties
495
500
  state_properties.each do |property|
496
- if property.identity? || property.is_set?(self)
501
+ if property.is_set?(self)
497
502
  state[property.name] = property.sensitive? ? "*sensitive value suppressed*" : send(property.name)
498
503
  end
499
504
  end
@@ -613,7 +618,6 @@ class Chef
613
618
  # Do NOT use this. It may be removed. It is for internal purposes only.
614
619
  # @api private
615
620
  attr_reader :resource_initializing
616
-
617
621
  def resource_initializing=(value)
618
622
  if value
619
623
  @resource_initializing = true
@@ -864,7 +868,6 @@ class Chef
864
868
  # have.
865
869
  #
866
870
  attr_writer :allowed_actions
867
-
868
871
  def allowed_actions(value = NOT_PASSED)
869
872
  if value != NOT_PASSED
870
873
  self.allowed_actions = value
@@ -937,13 +940,7 @@ class Chef
937
940
  #
938
941
  # The display name of this resource type, for printing purposes.
939
942
  #
940
- # This also automatically calls "provides" to provide DSL with the given
941
- # name.
942
- #
943
- # resource_name defaults to your class name.
944
- #
945
- # Call `resource_name nil` to remove the resource name (and any
946
- # corresponding DSL).
943
+ # Call `resource_name nil` to remove the resource name
947
944
  #
948
945
  # @param value [Symbol] The desired name of this resource type (e.g.
949
946
  # `execute`), or `nil` if this class is abstract and has no resource_name.
@@ -953,16 +950,13 @@ class Chef
953
950
  def self.resource_name(name = NOT_PASSED)
954
951
  # Setter
955
952
  if name != NOT_PASSED
956
- remove_canonical_dsl
957
-
958
- # Set the resource_name and call provides
959
953
  if name
954
+ @resource_name = name.to_sym
960
955
  name = name.to_sym
961
- # If our class is not already providing this name, provide it.
956
+ # FIXME: determine a way to deprecate this magic behavior
962
957
  unless Chef::ResourceResolver.includes_handler?(name, self)
963
- provides name, canonical: true
958
+ provides name
964
959
  end
965
- @resource_name = name
966
960
  else
967
961
  @resource_name = nil
968
962
  end
@@ -976,19 +970,6 @@ class Chef
976
970
  resource_name(name)
977
971
  end
978
972
 
979
- #
980
- # Use the class name as the resource name.
981
- #
982
- # Munges the last part of the class name from camel case to snake case,
983
- # and sets the resource_name to that:
984
- #
985
- # A::B::BlahDBlah -> blah_d_blah
986
- #
987
- def self.use_automatic_resource_name
988
- automatic_name = convert_to_snake_case(name.split("::")[-1])
989
- resource_name automatic_name
990
- end
991
-
992
973
  # If the resource's action should run in separated compile/converge mode.
993
974
  #
994
975
  # @param flag [Boolean] value to set unified_mode to
@@ -1320,12 +1301,6 @@ class Chef
1320
1301
  def self.inherited(child)
1321
1302
  super
1322
1303
  @@sorted_descendants = nil
1323
- # set resource_name automatically if it's not set
1324
- if child.name && !child.resource_name
1325
- if child.name =~ /^Chef::Resource::(\w+)$/
1326
- child.resource_name(convert_to_snake_case($1))
1327
- end
1328
- end
1329
1304
  end
1330
1305
 
1331
1306
  # If an unknown method is invoked, determine whether the enclosing Provider's
@@ -1347,9 +1322,7 @@ class Chef
1347
1322
  #
1348
1323
  # Since resource_name calls provides the generally correct way of doing this is
1349
1324
  # to do `chef_version_for_provides` first, then `resource_name` and then
1350
- # any additional options `provides` lines. Calling `resource_name` is somewhat
1351
- # important to have the canonical_dsl removed or else that'll stick around
1352
- # and chef_version won't get applied to it.
1325
+ # any additional options `provides` lines.
1353
1326
  #
1354
1327
  # Once we no longer care about supporting chef < 14.4 then we can deprecate
1355
1328
  # this API.
@@ -1373,17 +1346,14 @@ class Chef
1373
1346
  # quell warnings
1374
1347
  @chef_version_for_provides = nil unless defined?(@chef_version_for_provides)
1375
1348
 
1376
- # `provides :resource_name, os: 'linux'`) needs to remove the old
1377
- # canonical DSL before adding the new one.
1378
- if @resource_name && name == @resource_name
1379
- remove_canonical_dsl
1380
- end
1349
+ # deliberately do not go through the accessor here
1350
+ @resource_name = name if resource_name.nil?
1381
1351
 
1382
1352
  if @chef_version_for_provides && !options.include?(:chef_version)
1383
1353
  options[:chef_version] = @chef_version_for_provides
1384
1354
  end
1385
1355
 
1386
- result = Chef.resource_handler_map.set(name, self, options, &block)
1356
+ result = Chef.resource_handler_map.set(name, self, **options, &block)
1387
1357
  Chef::DSL::Resources.add_resource_dsl(name)
1388
1358
  result
1389
1359
  end
@@ -1491,6 +1461,20 @@ class Chef
1491
1461
  @default_description
1492
1462
  end
1493
1463
 
1464
+ # Use a partial code fragment. This can be used for code sharing between multiple resources.
1465
+ #
1466
+ # Do not wrap the code fragment in a class or module. It also does not support the use of super
1467
+ # to subclass any methods defined in the fragment, the methods will just be overwritten.
1468
+ #
1469
+ # @param partial [String] the code fragment to eval against the class
1470
+ #
1471
+ def self.use(partial)
1472
+ dirname = ::File.dirname(partial)
1473
+ basename = ::File.basename(partial, ".rb")
1474
+ basename = basename[1..-1] if basename.start_with?("_")
1475
+ class_eval IO.read(::File.expand_path("#{dirname}/_#{basename}.rb", ::File.dirname(caller_locations.first.absolute_path)))
1476
+ end
1477
+
1494
1478
  # The cookbook in which this Resource was defined (if any).
1495
1479
  #
1496
1480
  # @return Chef::CookbookVersion The cookbook in which this Resource was defined.
@@ -1587,7 +1571,7 @@ class Chef
1587
1571
  # <Chef::Resource>:: returns the proper Chef::Resource class
1588
1572
  #
1589
1573
  def self.resource_matching_short_name(short_name)
1590
- Chef::ResourceResolver.resolve(short_name, canonical: true)
1574
+ Chef::ResourceResolver.resolve(short_name)
1591
1575
  end
1592
1576
 
1593
1577
  # @api private
@@ -1602,13 +1586,14 @@ class Chef
1602
1586
  self.class.resource_for_node(name, node).new("name", run_context).provider_for_action(action).class
1603
1587
  end
1604
1588
 
1605
- def self.remove_canonical_dsl
1606
- if @resource_name
1607
- remaining = Chef.resource_handler_map.delete_canonical(@resource_name, self)
1608
- unless remaining
1609
- Chef::DSL::Resources.remove_resource_dsl(@resource_name)
1610
- end
1611
- end
1589
+ # This is used to suppress the "(up to date)" message in the doc formatter
1590
+ # for the log resource (where it is nonsensical).
1591
+ #
1592
+ # This is not exactly a private API, but its doubtful there exist many other sane
1593
+ # use cases for this.
1594
+ #
1595
+ def suppress_up_to_date_messages?
1596
+ false
1612
1597
  end
1613
1598
  end
1614
1599
  end