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
@@ -22,13 +22,28 @@ require_relative "../dist"
22
22
  class Chef
23
23
  class Resource
24
24
  class WindowsWorkgroup < Chef::Resource
25
- resource_name :windows_workgroup
26
25
  provides :windows_workgroup
27
26
 
28
27
  include Chef::Mixin::PowershellOut
29
28
 
30
- description "Use the windows_workgroup resource to join or change the workgroup of a Windows host."
29
+ description "Use the **windows_workgroup** resource to join or change the workgroup of a Windows host."
31
30
  introduced "14.5"
31
+ examples <<~DOC
32
+ **Join a workgroup**:
33
+
34
+ ``` ruby
35
+ windows_workgroup 'myworkgroup'
36
+ ```
37
+
38
+ **Join a workgroup using a specific user**:
39
+
40
+ ``` ruby
41
+ windows_workgroup 'myworkgroup' do
42
+ user 'Administrator'
43
+ password 'passw0rd'
44
+ end
45
+ ```
46
+ DOC
32
47
 
33
48
  property :workgroup_name, String,
34
49
  description: "An optional property to set the workgroup name if it differs from the resource block's name.",
@@ -37,11 +52,11 @@ class Chef
37
52
  name_property: true
38
53
 
39
54
  property :user, String,
40
- description: "The local administrator user to use to change the workgroup. Required if using the password property.",
55
+ description: "The local administrator user to use to change the workgroup. Required if using the `password` property.",
41
56
  desired_state: false
42
57
 
43
58
  property :password, String,
44
- description: "The password for the local administrator user. Required if using the user property.",
59
+ description: "The password for the local administrator user. Required if using the `user` property.",
45
60
  desired_state: false
46
61
 
47
62
  property :reboot, Symbol,
@@ -22,14 +22,97 @@ require_relative "../dist"
22
22
  class Chef
23
23
  class Resource
24
24
  class YumPackage < Chef::Resource::Package
25
- resource_name :yum_package
25
+ unified_mode true
26
+
27
+ provides :yum_package
26
28
  provides :package, platform_family: "fedora_derived"
27
29
 
28
- description "Use the yum_package resource to install, upgrade, and remove packages with Yum"\
30
+ description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum"\
29
31
  " for the Red Hat and CentOS platforms. The yum_package resource is able to resolve"\
30
- " provides data for packages much like Yum can do when it is run from the command line."\
32
+ " `provides` data for packages much like Yum can do when it is run from the command line."\
31
33
  " This allows a variety of options for installing packages, like minimum versions,"\
32
34
  " virtual provides, and library names."
35
+ examples <<~DOC
36
+ **Install an exact version**:
37
+
38
+ ``` ruby
39
+ yum_package 'netpbm = 10.35.58-8.el8'
40
+ ```
41
+
42
+ **Install a minimum version**:
43
+
44
+ ``` ruby
45
+ yum_package 'netpbm >= 10.35.58-8.el8'
46
+ ```
47
+
48
+ **Install a minimum version using the default action**:
49
+
50
+ ``` ruby
51
+ yum_package 'netpbm'
52
+ ```
53
+
54
+ **Install a version without worrying about the exact release**:
55
+
56
+ ``` ruby
57
+ yum_package 'netpbm-10.35*'
58
+ ```
59
+
60
+
61
+ **To install a package**:
62
+
63
+ ``` ruby
64
+ yum_package 'netpbm' do
65
+ action :install
66
+ end
67
+ ```
68
+
69
+ **To install a partial minimum version**:
70
+
71
+ ``` ruby
72
+ yum_package 'netpbm >= 10'
73
+ ```
74
+
75
+ **To install a specific architecture**:
76
+
77
+ ``` ruby
78
+ yum_package 'netpbm' do
79
+ arch 'i386'
80
+ end
81
+ ```
82
+
83
+ or:
84
+
85
+ ``` ruby
86
+ yum_package 'netpbm.x86_64'
87
+ ```
88
+
89
+ **To install a specific version-release**
90
+
91
+ ``` ruby
92
+ yum_package 'netpbm' do
93
+ version '10.35.58-8.el8'
94
+ end
95
+ ```
96
+
97
+ **Handle cookbook_file and yum_package resources in the same recipe**:
98
+
99
+ When a **cookbook_file** resource and a **yum_package** resource are
100
+ both called from within the same recipe, use the `flush_cache` attribute
101
+ to dump the in-memory Yum cache, and then use the repository immediately
102
+ to ensure that the correct package is installed:
103
+
104
+ ``` ruby
105
+ cookbook_file '/etc/yum.repos.d/custom.repo' do
106
+ source 'custom'
107
+ mode '0755'
108
+ end
109
+
110
+ yum_package 'pkg-that-is-only-in-custom-repo' do
111
+ action :install
112
+ flush_cache [ :before ]
113
+ end
114
+ ```
115
+ DOC
33
116
 
34
117
  # XXX: the coercions here are due to the provider promiscuously updating the properties on the
35
118
  # new_resource which causes immutable modification exceptions when passed an immutable node array.
@@ -44,7 +127,7 @@ class Chef
44
127
  identity: true, coerce: proc { |x| x.is_a?(Array) ? x.to_a : x }
45
128
 
46
129
  property :version, [ String, Array ],
47
- description: "The version of a package to be installed or upgraded. This property is ignored when using the ':upgrade' action.",
130
+ description: "The version of a package to be installed or upgraded. This property is ignored when using the `:upgrade` action.",
48
131
  coerce: proc { |x| x.is_a?(Array) ? x.to_a : x }
49
132
 
50
133
  property :arch, [ String, Array ],
@@ -68,12 +151,13 @@ class Chef
68
151
  end
69
152
  }
70
153
 
71
- property :allow_downgrade, [ true, false ],
72
- description: "Downgrade a package to satisfy requested version requirements.",
154
+ property :allow_downgrade, [ TrueClass, FalseClass ],
155
+ description: "Allow downgrading a package to satisfy requested version requirements.",
73
156
  default: true,
74
157
  desired_state: false
75
158
 
76
- property :yum_binary, String
159
+ property :yum_binary, String,
160
+ description: "The path to the yum binary."
77
161
  end
78
162
  end
79
163
  end
@@ -21,24 +21,42 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class YumRepository < Chef::Resource
24
- resource_name :yum_repository
24
+ unified_mode true
25
+
25
26
  provides(:yum_repository) { true }
26
27
 
27
- description "Use the yum_repository resource to manage a Yum repository configuration"\
28
- " file located at /etc/yum.repos.d/repositoryid.repo on the local machine."\
29
- " This configuration file specifies which repositories to reference, how to"\
30
- " handle cached data, etc."
28
+ description "Use the **yum_repository** resource to manage a Yum repository configuration file located at `/etc/yum.repos.d/repositoryid.repo` on the local machine. This configuration file specifies which repositories to reference, how to handle cached data, etc."
31
29
  introduced "12.14"
30
+ examples <<~DOC
31
+ **Add an internal company repository**:
32
+
33
+ ```ruby
34
+ yum_repository 'OurCo' do
35
+ description 'OurCo yum repository'
36
+ mirrorlist 'http://artifacts.ourco.org/mirrorlist?repo=ourco-8&arch=$basearch'
37
+ gpgkey 'http://artifacts.ourco.org/pub/yum/RPM-GPG-KEY-OURCO-8'
38
+ action :create
39
+ end
40
+ ```ruby
41
+
42
+ **Delete a repository**:
43
+
44
+ ```ruby
45
+ yum_repository 'CentOS-Media' do
46
+ action :delete
47
+ end
48
+ ```
49
+ DOC
32
50
 
33
51
  # http://linux.die.net/man/5/yum.conf as well as
34
52
  # http://dnf.readthedocs.io/en/latest/conf_ref.html
35
53
  property :baseurl, [String, Array],
36
- description: "URL to the directory where the Yum repository's 'repodata' directory lives. Can be an http://, https:// or a ftp:// URL. You can specify multiple URLs in one baseurl statement."
54
+ description: "URL to the directory where the Yum repository's `repodata` directory lives. Can be an `http://`, `https://` or a `ftp://` URLs. You can specify multiple URLs in one `baseurl` statement."
37
55
 
38
56
  property :clean_headers, [TrueClass, FalseClass],
39
57
  description: "Specifies whether you want to purge the package data files that are downloaded from a Yum repository and held in a cache directory.",
40
58
  deprecated: true,
41
- default: false # deprecated
59
+ default: false
42
60
 
43
61
  property :clean_metadata, [TrueClass, FalseClass],
44
62
  description: "Specifies whether you want to purge all of the packages downloaded from a Yum repository and held in a cache directory.",
@@ -63,7 +81,7 @@ class Chef
63
81
  description: "List of packages to exclude from updates or installs. This should be a space separated list. Shell globs using wildcards (eg. * and ?) are allowed."
64
82
 
65
83
  property :failovermethod, String,
66
- description: "Method to determine how to switch to a new server if the current one fails, which can either be ``roundrobin`` or ``priority``. ``roundrobin`` randomly selects a URL out of the list of URLs to start with and proceeds through each of them as it encounters a failure contacting the host. ``priority`` starts from the first ``baseurl`` listed and reads through them sequentially.",
84
+ description: "Method to determine how to switch to a new server if the current one fails, which can either be `roundrobin` or `priority`. `roundrobin` randomly selects a URL out of the list of URLs to start with and proceeds through each of them as it encounters a failure contacting the host. `priority` starts from the first `baseurl` listed and reads through them sequentially.",
67
85
  equal_to: %w{priority roundrobin}
68
86
 
69
87
  property :fastestmirror_enabled, [TrueClass, FalseClass],
@@ -80,23 +98,23 @@ class Chef
80
98
  description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values: all (all HTTP downloads should be cached), packages (only RPM package downloads should be cached, but not repository metadata downloads), or none (no HTTP downloads should be cached)"
81
99
 
82
100
  property :include_config, String,
83
- description: "An external configuration file using the format 'url://to/some/location'."
101
+ description: "An external configuration file using the format `url://to/some/location`."
84
102
 
85
103
  property :includepkgs, String,
86
104
  description: "Inverse of exclude property. This is a list of packages you want to use from a repository. If this option lists only one package then that is all Yum will ever see from the repository."
87
105
 
88
106
  property :keepalive, [TrueClass, FalseClass],
89
- description: "Determines whether or not HTTP/1.1 ``keep-alive`` should be used with this repository."
107
+ description: "Determines whether or not HTTP/1.1 `keep-alive` should be used with this repository."
90
108
 
91
109
  property :make_cache, [TrueClass, FalseClass],
92
110
  description: "Determines whether package files downloaded by Yum stay in cache directories. By using cached data, you can carry out certain operations without a network connection.",
93
111
  default: true
94
112
 
95
113
  property :max_retries, [String, Integer],
96
- description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to '0' makes Yum try forever."
114
+ description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0` makes Yum try forever."
97
115
 
98
116
  property :metadata_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/, /never/],
99
- description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word ``never``, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
117
+ description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
100
118
  validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
101
119
 
102
120
  property :metalink, String,
@@ -20,15 +20,42 @@ require_relative "package"
20
20
 
21
21
  class Chef
22
22
  class Resource
23
-
24
23
  class ZypperPackage < Chef::Resource::Package
25
- resource_name :zypper_package
24
+ unified_mode true
25
+
26
+ provides :zypper_package
26
27
  provides :package, platform_family: "suse"
27
28
 
28
- description "Use the zypper_package resource to install, upgrade, and remove packages with Zypper for the SUSE Enterprise and OpenSUSE platforms."
29
+ description "Use the **zypper_package** resource to install, upgrade, and remove packages with Zypper for the SUSE Enterprise and openSUSE platforms."
30
+ examples <<~DOC
31
+ **Install a package using package manager:**
32
+
33
+ ``` ruby
34
+ zypper_package 'name of package' do
35
+ action :install
36
+ end
37
+ ```
38
+
39
+ **Install a package using local file:**
40
+
41
+ ``` ruby
42
+ zypper_package 'jwhois' do
43
+ action :install
44
+ source '/path/to/jwhois.rpm'
45
+ end
46
+ ```
47
+
48
+ **Install without using recommend packages as a dependency:**
49
+
50
+ ``` ruby
51
+ package 'apache2' do
52
+ options '--no-recommends'
53
+ end
54
+ ```
55
+ DOC
29
56
 
30
57
  property :gpg_check, [ TrueClass, FalseClass ],
31
- description: "Verify the package's GPG signature. Can also be controlled site-wide using the ``zypper_check_gpg`` config option.",
58
+ description: "Verify the package's GPG signature. Can also be controlled site-wide using the `zypper_check_gpg` config option.",
32
59
  default: lazy { Chef::Config[:zypper_check_gpg] }, default_description: "true"
33
60
 
34
61
  property :allow_downgrade, [ TrueClass, FalseClass ],
@@ -38,7 +65,7 @@ class Chef
38
65
  introduced: "13.6"
39
66
 
40
67
  property :global_options, [ String, Array ],
41
- description: "One (or more) additional command options that are passed to the command. For example, common zypper directives, such as '--no-recommends'. See the zypper man page at https://en.opensuse.org/SDB:Zypper_manual_(plain) for the full list.",
68
+ description: "One (or more) additional command options that are passed to the command. For example, common zypper directives, such as `--no-recommends`. See the [zypper man page](https://en.opensuse.org/SDB:Zypper_manual_(plain)) for the full list.",
42
69
  coerce: proc { |x| x.is_a?(String) ? x.shellsplit : x },
43
70
  introduced: "14.6"
44
71
  end
@@ -21,21 +21,34 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class ZypperRepository < Chef::Resource
24
- resource_name :zypper_repository
24
+ unified_mode true
25
+
25
26
  provides(:zypper_repository) { true }
26
27
  provides(:zypper_repo) { true }
27
28
 
28
- description "Use the zypper_repository resource to create Zypper package repositories on SUSE Enterprise Linux and openSUSE systems. This resource maintains full compatibility with the zypper_repository resource in the existing zypper cookbook."
29
+ description "Use the **zypper_repository** resource to create Zypper package repositories on SUSE Enterprise Linux and openSUSE systems. This resource maintains full compatibility with the **zypper_repository** resource in the existing **zypper** cookbook."
29
30
  introduced "13.3"
31
+ examples <<~DOC
32
+ **Add the Apache repo on openSUSE Leap 15**:
33
+
34
+ ``` ruby
35
+ zypper_repository 'apache' do
36
+ baseurl 'http://download.opensuse.org/repositories/Apache'
37
+ path '/openSUSE_Leap_15.0'
38
+ type 'rpm-md'
39
+ priority '100'
40
+ end
41
+ ```
42
+ DOC
30
43
 
31
44
  property :repo_name, String,
32
45
  regex: [%r{^[^/]+$}],
33
46
  description: "An optional property to set the repository name if it differs from the resource block's name.",
34
- validation_message: "repo_name property cannot contain a forward slash '/'",
47
+ validation_message: "repo_name property cannot contain a forward slash `/`",
35
48
  name_property: true
36
49
 
37
50
  property :description, String,
38
- description: "The description of the repository that will be shown by the 'zypper repos' command."
51
+ description: "The description of the repository that will be shown by the `zypper repos` command."
39
52
 
40
53
  property :type, String,
41
54
  description: "Specifies the repository type.",
@@ -57,7 +70,7 @@ class Chef
57
70
  description: "The location of the repository key to be imported."
58
71
 
59
72
  property :baseurl, String,
60
- description: "The base URL for the Zypper repository, such as 'http://download.opensuse.org'."
73
+ description: "The base URL for the Zypper repository, such as `http://download.opensuse.org`."
61
74
 
62
75
  property :mirrorlist, String,
63
76
  description: "The URL of the mirror list that will be used."
@@ -66,7 +79,7 @@ class Chef
66
79
  description: "The relative path from the repository's base URL."
67
80
 
68
81
  property :priority, Integer,
69
- description: "Determines the priority of the Zypper repository. ",
82
+ description: "Determines the priority of the Zypper repository.",
70
83
  default: 99
71
84
 
72
85
  property :keeppackages, [TrueClass, FalseClass],
@@ -73,6 +73,14 @@ class Chef
73
73
  # Run optional resource hook
74
74
  resource.after_created
75
75
 
76
+ # Force to compile_time execution if the flag is set
77
+ if resource.compile_time
78
+ Array(resource.action).each do |action|
79
+ resource.run_action(action)
80
+ end
81
+ resource.action :nothing
82
+ end
83
+
76
84
  resource
77
85
  end
78
86
 
@@ -58,7 +58,8 @@ module ResourceInspector
58
58
  deprecated: opts[:deprecated] || false,
59
59
  required: opts[:required] || false,
60
60
  default: opts[:default_description] || get_default(opts[:default]),
61
- name_property: opts[:name_property] || false }
61
+ name_property: opts[:name_property] || false,
62
+ equal_to: Array(opts[:equal_to]).sort.map(&:inspect) }
62
63
  end
63
64
  data
64
65
  end
@@ -93,7 +94,7 @@ module ResourceInspector
93
94
  if File.directory?(arg)
94
95
  extract_cookbook(arg, complete).each { |k, v| acc[k] = v }
95
96
  else
96
- r = Chef::ResourceResolver.resolve(arg.to_sym, canonical: nil)
97
+ r = Chef::ResourceResolver.resolve(arg.to_sym)
97
98
  acc[r.resource_name] = extract_resource(r, complete)
98
99
  end
99
100
  end
@@ -29,8 +29,8 @@ class Chef
29
29
  # @param node [Chef::Node] The node against which to resolve. `nil` causes
30
30
  # platform filters to be ignored.
31
31
  #
32
- def self.resolve(resource_name, node: nil, canonical: nil)
33
- new(node, resource_name, canonical: canonical).resolve
32
+ def self.resolve(resource_name, node: nil)
33
+ new(node, resource_name).resolve
34
34
  end
35
35
 
36
36
  #
@@ -40,11 +40,9 @@ class Chef
40
40
  # @param resource_name [Symbol] The resource DSL name (e.g. `:file`).
41
41
  # @param node [Chef::Node] The node against which to resolve. `nil` causes
42
42
  # platform filters to be ignored.
43
- # @param canonical [Boolean] `true` or `false` to match canonical or
44
- # non-canonical values only. `nil` to ignore canonicality.
45
43
  #
46
- def self.list(resource_name, node: nil, canonical: nil)
47
- new(node, resource_name, canonical: canonical).list
44
+ def self.list(resource_name, node: nil)
45
+ new(node, resource_name).list
48
46
  end
49
47
 
50
48
  include Chef::Mixin::ConvertToClassName
@@ -55,8 +53,6 @@ class Chef
55
53
  attr_reader :resource_name
56
54
  # @api private
57
55
  attr_reader :action
58
- # @api private
59
- attr_reader :canonical
60
56
 
61
57
  #
62
58
  # Create a resolver.
@@ -64,14 +60,11 @@ class Chef
64
60
  # @param node [Chef::Node] The node against which to resolve. `nil` causes
65
61
  # platform filters to be ignored.
66
62
  # @param resource_name [Symbol] The resource DSL name (e.g. `:file`).
67
- # @param canonical [Boolean] `true` or `false` to match canonical or
68
- # non-canonical values only. `nil` to ignore canonicality. Default: `nil`
69
63
  #
70
64
  # @api private use Chef::ResourceResolver.resolve or .list instead.
71
- def initialize(node, resource_name, canonical: nil)
65
+ def initialize(node, resource_name)
72
66
  @node = node
73
67
  @resource_name = resource_name.to_sym
74
- @canonical = canonical
75
68
  end
76
69
 
77
70
  # @api private use Chef::ResourceResolver.resolve instead.
@@ -135,7 +128,7 @@ class Chef
135
128
 
136
129
  # @api private
137
130
  def potential_handlers
138
- handler_map.list(node, resource_name, canonical: canonical).uniq
131
+ handler_map.list(node, resource_name).uniq
139
132
  end
140
133
 
141
134
  def enabled_handlers
@@ -146,7 +139,7 @@ class Chef
146
139
  @prioritized_handlers ||= begin
147
140
  enabled_handlers = self.enabled_handlers
148
141
 
149
- prioritized = priority_map.list(node, resource_name, canonical: canonical).flatten(1)
142
+ prioritized = priority_map.list(node, resource_name).flatten(1)
150
143
  prioritized &= enabled_handlers # Filter the priority map by the actual enabled handlers
151
144
  prioritized |= enabled_handlers # Bring back any handlers that aren't in the priority map, at the *end* (ordered set)
152
145
  prioritized