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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -2,8 +2,6 @@ class Chef
2
2
  class Provider
3
3
  class Package
4
4
  class Macports < Chef::Provider::Package
5
-
6
- provides :package, os: "darwin"
7
5
  provides :macports_package
8
6
 
9
7
  def load_current_resource
@@ -27,6 +27,7 @@ require_relative "cab"
27
27
  require_relative "../../util/path_helper"
28
28
  require_relative "../../mixin/uris"
29
29
  require_relative "../../mixin/checksum"
30
+ require "cgi" unless defined?(CGI)
30
31
 
31
32
  class Chef
32
33
  class Provider
@@ -99,7 +100,7 @@ class Chef
99
100
 
100
101
  def default_download_cache_path
101
102
  uri = ::URI.parse(new_resource.source)
102
- filename = ::File.basename(::URI.unescape(uri.path))
103
+ filename = ::File.basename(::CGI.unescape(uri.path))
103
104
  file_cache_dir = Chef::FileCache.create_cache_path("package/")
104
105
  Chef::Util::PathHelper.cleanpath("#{file_cache_dir}/#{filename}")
105
106
  end
@@ -109,6 +110,7 @@ class Chef
109
110
  @cab_files.each do |cab_file|
110
111
  declare_resource(:cab_package, new_resource.name) do
111
112
  source cab_file
113
+ timeout new_resource.timeout
112
114
  action :install
113
115
  end
114
116
  end
@@ -119,6 +121,7 @@ class Chef
119
121
  @cab_files.each do |cab_file|
120
122
  declare_resource(:cab_package, new_resource.name) do
121
123
  source cab_file
124
+ timeout new_resource.timeout
122
125
  action :remove
123
126
  end
124
127
  end
@@ -27,29 +27,13 @@ class Chef
27
27
  provides :package, platform: "arch"
28
28
  provides :pacman_package
29
29
 
30
+ use_multipackage_api
31
+ allow_nils
32
+
30
33
  def load_current_resource
31
34
  @current_resource = Chef::Resource::Package.new(new_resource.name)
32
35
  current_resource.package_name(new_resource.package_name)
33
-
34
- logger.trace("#{new_resource} checking pacman for #{new_resource.package_name}")
35
- status = shell_out("pacman", "-Qi", new_resource.package_name)
36
- status.stdout.each_line do |line|
37
- case line
38
- when /^Version(\s?)*: (.+)$/
39
- logger.trace("#{new_resource} current version is #{$2}")
40
- current_resource.version($2)
41
- end
42
- end
43
-
44
- unless status.exitstatus == 0 || status.exitstatus == 1
45
- raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
46
- end
47
-
48
- current_resource
49
- end
50
-
51
- def candidate_version
52
- return @candidate_version if @candidate_version
36
+ current_resource.version = []
53
37
 
54
38
  repos = %w{extra core community}
55
39
 
@@ -58,31 +42,38 @@ class Chef
58
42
  repos = pacman.scan(/\[(.+)\]/).flatten
59
43
  end
60
44
 
61
- package_repos = repos.map { |r| Regexp.escape(r) }.join("|")
62
-
45
+ repos = Regexp.union(repos)
63
46
  status = shell_out("pacman", "-Sl")
64
- status.stdout.each_line do |line|
65
- case line
66
- when /^(#{package_repos}) #{Regexp.escape(new_resource.package_name)} (.+)$/
67
- # $2 contains a string like "4.4.0-1" or "3.10-4 [installed]"
68
- # simply split by space and use first token
69
- @candidate_version = $2.split(" ").first
70
- end
71
- end
72
47
 
73
48
  unless status.exitstatus == 0 || status.exitstatus == 1
74
49
  raise Chef::Exceptions::Package, "pacman failed - #{status.inspect}!"
75
50
  end
76
51
 
77
- unless @candidate_version
78
- raise Chef::Exceptions::Package, "pacman does not have a version of package #{new_resource.package_name}"
52
+ pkg_db_data = status.stdout
53
+ @candidate_version = []
54
+ package_name_array.each do |pkg|
55
+ pkg_data = pkg_db_data.match(/(#{repos}) #{pkg} (?<candidate>.*?-[0-9]+)(?<installed> \[.*?( (?<current>.*?-[0-9]+))?\])?\n/m)
56
+ unless pkg_data
57
+ raise Chef::Exceptions::Package, "pacman does not have a version of package #{pkg}"
58
+ end
59
+
60
+ @candidate_version << pkg_data[:candidate]
61
+ if pkg_data[:installed]
62
+ current_resource.version << (pkg_data[:current] || pkg_data[:candidate])
63
+ else
64
+ current_resource.version << nil
65
+ end
79
66
  end
80
67
 
68
+ current_resource
69
+ end
70
+
71
+ def candidate_version
81
72
  @candidate_version
82
73
  end
83
74
 
84
75
  def install_package(name, version)
85
- shell_out!( "pacman", "--sync", "--noconfirm", "--noprogressbar", options, name)
76
+ shell_out!("pacman", "--sync", "--noconfirm", "--noprogressbar", options, *name)
86
77
  end
87
78
 
88
79
  def upgrade_package(name, version)
@@ -90,7 +81,7 @@ class Chef
90
81
  end
91
82
 
92
83
  def remove_package(name, version)
93
- shell_out!( "pacman", "--remove", "--noconfirm", "--noprogressbar", options, name )
84
+ shell_out!("pacman", "--remove", "--noconfirm", "--noprogressbar", options, *name)
94
85
  end
95
86
 
96
87
  def purge_package(name, version)
@@ -70,6 +70,7 @@ class Chef
70
70
 
71
71
  if pkginfo.exitstatus != 0
72
72
  pkginfo.stderr.each_line do |line|
73
+ # cspell:disable-next-line
73
74
  if line =~ /[Uu]nqualified atom .*match.* multiple/
74
75
  raise_error_for_query("matched multiple packages (please specify a category):\n#{pkginfo.inspect}")
75
76
  end
@@ -36,7 +36,7 @@ class Chef
36
36
 
37
37
  def define_resource_requirements
38
38
  super
39
- if powershell_out("$PSVersionTable.PSVersion.Major").stdout.strip.to_i < 5
39
+ if powershell_version < 5
40
40
  raise "Minimum installed PowerShell Version required is 5"
41
41
  end
42
42
 
@@ -250,7 +250,7 @@ class Chef
250
250
  private
251
251
 
252
252
  def logger
253
- Chef::Log.with_child({ subsytem: "gem_installer_environment" })
253
+ Chef::Log.with_child({ subsystem: "gem_installer_environment" })
254
254
  end
255
255
 
256
256
  end
@@ -483,9 +483,23 @@ class Chef
483
483
  end
484
484
  end
485
485
 
486
+ ##
487
+ # If `include_default_source` is nil, return true if the global
488
+ # `rubygems_url` was set or if `clear_sources` and `source` on the
489
+ # resource are not set.
490
+ # If `include_default_source` is not nil, it has been set explicitly on
491
+ # the resource and that value should be used.
492
+ def include_default_source?
493
+ if new_resource.include_default_source.nil?
494
+ !!Chef::Config[:rubygems_url] || !(new_resource.source || new_resource.clear_sources)
495
+ else
496
+ new_resource.include_default_source
497
+ end
498
+ end
499
+
486
500
  def gem_sources
487
501
  srcs = [ new_resource.source ]
488
- srcs << Chef::Config[:rubygems_url] if new_resource.include_default_source
502
+ srcs << (Chef::Config[:rubygems_url] || "https://rubygems.org") if include_default_source?
489
503
  srcs.flatten.compact
490
504
  end
491
505
 
@@ -550,12 +564,25 @@ class Chef
550
564
  new_resource.gem_binary || "gem"
551
565
  end
552
566
 
567
+ ##
568
+ # If `clear_sources` is nil, clearing sources is implied if a `source`
569
+ # was added or if the global rubygems URL is set. If `clear_sources`
570
+ # is not nil, it has been set explicitly on the resource and its value
571
+ # should be used.
572
+ def clear_sources?
573
+ if new_resource.clear_sources.nil?
574
+ !!(new_resource.source || Chef::Config[:rubygems_url])
575
+ else
576
+ new_resource.clear_sources
577
+ end
578
+ end
579
+
553
580
  def install_via_gem_command(name, version)
554
581
  src = []
555
582
  if new_resource.source.is_a?(String) && new_resource.source =~ /\.gem$/i
556
583
  name = new_resource.source
557
584
  else
558
- src << "--clear-sources" if new_resource.clear_sources
585
+ src << "--clear-sources" if clear_sources?
559
586
  src += gem_sources.map { |s| "--source=#{s}" }
560
587
  end
561
588
  src_str = src.empty? ? "" : " #{src.join(" ")}"
@@ -21,6 +21,7 @@ require_relative "../../resource/windows_package"
21
21
  require_relative "../package"
22
22
  require_relative "../../util/path_helper"
23
23
  require_relative "../../mixin/checksum"
24
+ require "cgi" unless defined?(CGI)
24
25
 
25
26
  class Chef
26
27
  class Provider
@@ -35,6 +36,13 @@ class Chef
35
36
  require "chef/provider/package/windows/registry_uninstall_entry.rb"
36
37
 
37
38
  def define_resource_requirements
39
+ if new_resource.checksum
40
+ requirements.assert(:install) do |a|
41
+ a.assertion { new_resource.checksum == checksum(source_location) }
42
+ a.failure_message Chef::Exceptions::Package, "Checksum on resource (#{short_cksum(new_resource.checksum)}) does not match checksum on content (#{short_cksum(source_location)})"
43
+ end
44
+ end
45
+
38
46
  requirements.assert(:install) do |a|
39
47
  a.assertion { new_resource.source || msi? }
40
48
  a.failure_message Chef::Exceptions::NoWindowsPackageSource, "Source for package #{new_resource.package_name} must be specified in the resource's source property for package to be installed because the package_name property is used to test for the package installation state for this package type."
@@ -49,27 +57,15 @@ class Chef
49
57
  end
50
58
  end
51
59
 
52
- # load_current_resource is run in Chef::Provider#run_action when not in whyrun_mode?
53
60
  def load_current_resource
54
- @current_resource = Chef::Resource::WindowsPackage.new(new_resource.name)
55
- if downloadable_file_missing?
56
- logger.trace("We do not know the version of #{new_resource.source} because the file is not downloaded")
57
- # FIXME: this label should not be used. It could be set to nil. Probably what should happen is that
58
- # if the file hasn't been downloaded then load_current_resource must download the file here, and then
59
- # the else clause to set current_resource.version can always be run. Relying on a side-effect here
60
- # produces at least less readable code, if not outright buggy... (and I'm assuming that this isn't
61
- # wholly just a bug -- since if we only need the package_name to determine if its installed then we
62
- # need this, so I'm assuming we need to download the file to pull out the name in order to check
63
- # the registry -- which it still feels like we get wrong in the sense we're forcing always downloading
64
- # and then always installing(?) which violates idempotency -- and I'm having to think way too hard
65
- # about this and would need to go surfing around the code to determine what actually happens, probably
66
- # in every different package_provider...)
67
- current_resource.version(:unknown.to_s)
68
- else
69
- current_resource.version(package_provider.installed_version)
70
- new_resource.version(package_provider.package_version) if package_provider.package_version
61
+ if uri_scheme?(new_resource.source) && action == :install
62
+ download_source_file
71
63
  end
72
64
 
65
+ @current_resource = Chef::Resource::WindowsPackage.new(new_resource.name)
66
+ current_resource.version(package_provider.installed_version)
67
+ new_resource.version(package_provider.package_version) if package_provider.package_version
68
+
73
69
  current_resource
74
70
  end
75
71
 
@@ -138,17 +134,6 @@ class Chef
138
134
  end
139
135
  end
140
136
 
141
- def action_install
142
- if uri_scheme?(new_resource.source)
143
- download_source_file
144
- load_current_resource
145
- else
146
- validate_content!
147
- end
148
-
149
- super
150
- end
151
-
152
137
  # Chef::Provider::Package action_install + action_remove call install_package + remove_package
153
138
  # Pass those calls to the correct sub-provider
154
139
  def install_package(name, version)
@@ -184,7 +169,7 @@ class Chef
184
169
  # is not multipackage. The existing implementation of package_provider.installed_version should probably
185
170
  # be what `uninstall_version_array` is, and then that list should be sorted and last/first'd into the
186
171
  # current_resource.version. The current_version_array method was not intended to be overwritten by
187
- # sublasses (but ruby provides no feature to block doing so -- it is already marked as private).
172
+ # subclasses (but ruby provides no feature to block doing so -- it is already marked as private).
188
173
  #
189
174
  def current_version_array
190
175
  [ current_resource.version ]
@@ -244,6 +229,7 @@ class Chef
244
229
  end
245
230
 
246
231
  def resource_for_provider
232
+ # XXX: this is crazy
247
233
  @resource_for_provider = Chef::Resource::WindowsPackage.new(new_resource.name).tap do |r|
248
234
  r.source(Chef::Util::PathHelper.validate_path(source_location)) unless source_location.nil?
249
235
  r.cookbook_name = new_resource.cookbook_name
@@ -256,28 +242,27 @@ class Chef
256
242
  end
257
243
 
258
244
  def download_source_file
259
- source_resource.run_action(:create)
260
- logger.trace("#{new_resource} fetched source file to #{source_resource.path}")
261
- end
262
-
263
- def source_resource
264
- @source_resource ||= Chef::Resource::RemoteFile.new(default_download_cache_path, run_context).tap do |r|
265
- r.source(new_resource.source)
266
- r.cookbook_name = new_resource.cookbook_name
267
- r.checksum(new_resource.checksum)
268
- r.backup(false)
245
+ # It seems correct that this is a build_resource rather than declare_resource/DSL use since updating should not trigger a notification
246
+ # unless the downloaded file is actually installed. The case where the remote_file downloads the package but the package is already
247
+ # installed on the target should not trigger a notification since the running state did not change.
248
+ build_resource(:remote_file, default_download_cache_path) do
249
+ source(new_resource.source)
250
+ cookbook_name = new_resource.cookbook_name
251
+ checksum(new_resource.checksum)
252
+ backup(false)
269
253
 
270
254
  if new_resource.remote_file_attributes
271
255
  new_resource.remote_file_attributes.each do |(k, v)|
272
- r.send(k.to_sym, v)
256
+ send(k.to_sym, v)
273
257
  end
274
258
  end
275
- end
259
+ end.run_action(:create)
260
+ logger.trace("#{new_resource} fetched source file to #{default_download_cache_path}")
276
261
  end
277
262
 
278
263
  def default_download_cache_path
279
264
  uri = ::URI.parse(new_resource.source)
280
- filename = ::File.basename(::URI.unescape(uri.path))
265
+ filename = ::File.basename(::CGI.unescape(uri.path))
281
266
  file_cache_dir = Chef::FileCache.create_cache_path("package/")
282
267
  Chef::Util::PathHelper.cleanpath("#{file_cache_dir}/#{filename}")
283
268
  end
@@ -286,22 +271,13 @@ class Chef
286
271
  if new_resource.source.nil?
287
272
  nil
288
273
  elsif uri_scheme?(new_resource.source)
289
- source_resource.path
274
+ default_download_cache_path
290
275
  else
291
276
  new_source = Chef::Util::PathHelper.cleanpath(new_resource.source)
292
277
  ::File.exist?(new_source) ? new_source : nil
293
278
  end
294
279
  end
295
280
 
296
- def validate_content!
297
- if new_resource.checksum
298
- source_checksum = checksum(source_location)
299
- if new_resource.checksum.downcase != source_checksum
300
- raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(source_checksum))
301
- end
302
- end
303
- end
304
-
305
281
  def msi?
306
282
  return true if new_resource.installer_type == :msi
307
283
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  # TODO: Allow new_resource.source to be a Product Code as a GUID for uninstall / network install
20
20
 
21
- require_relative "../../../win32/api/installer" if (RUBY_PLATFORM =~ /mswin|mingw32|windows/) && Chef::Platform.supports_msi?
21
+ require_relative "../../../win32/api/installer" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
22
22
  require_relative "../../../mixin/shell_out"
23
23
 
24
24
  class Chef
@@ -26,7 +26,7 @@ class Chef
26
26
  class Package
27
27
  class Windows
28
28
  class MSI
29
- include Chef::ReservedNames::Win32::API::Installer if (RUBY_PLATFORM =~ /mswin|mingw32|windows/) && Chef::Platform.supports_msi?
29
+ include Chef::ReservedNames::Win32::API::Installer if RUBY_PLATFORM =~ /mswin|mingw32|windows/
30
30
  include Chef::Mixin::ShellOut
31
31
 
32
32
  def initialize(resource, uninstall_entries)
@@ -100,7 +100,7 @@ class Chef
100
100
 
101
101
  # If this is a package like the kernel that can be installed multiple times, we'll skip over this logic
102
102
  if new_resource.allow_downgrade && version_gt?(iv.version_with_arch, av.version_with_arch) && !python_helper.install_only_packages(name)
103
- # We allow downgrading only in the evenit of single-package
103
+ # We allow downgrading only in the event of single-package
104
104
  # rules where the user explicitly allowed it
105
105
  method = "downgrade"
106
106
  end
@@ -202,14 +202,6 @@ class Chef
202
202
  python_helper.compare_versions(v1, v2)
203
203
  end
204
204
 
205
- # Generate the yum syntax for the package
206
- def yum_syntax(name, version, arch)
207
- s = name
208
- s += "-#{version}" if version
209
- s += ".#{arch}" if arch
210
- s
211
- end
212
-
213
205
  def resolve_source_to_version_obj
214
206
  shell_out!("rpm -qp --queryformat '%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{ARCH}\n' #{new_resource.source}").stdout.each_line do |line|
215
207
  # this is another case of committing the sin of doing some lightweight mangling of RPM versions in ruby -- but the output of the rpm command
@@ -22,7 +22,7 @@ require "singleton" unless defined?(Singleton)
22
22
 
23
23
  #
24
24
  # These are largely historical APIs, the YumCache object no longer exists and this is a
25
- # fascade over the python helper class. It should be considered deprecated-lite and
25
+ # facade over the python helper class. It should be considered deprecated-lite and
26
26
  # no new APIs should be added and should be added to the python_helper instead.
27
27
  #
28
28
 
@@ -4,7 +4,6 @@
4
4
  # Ionuț Arțăriși (<iartarisi@suse.cz>)
5
5
  # Copyright:: Copyright (c) Chef Software Inc.
6
6
  # Copyright:: 2013-2016, SUSE Linux GmbH
7
- #
8
7
  # License:: Apache License, Version 2.0
9
8
  #
10
9
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,6 +22,7 @@ require_relative "windows_script"
22
22
  class Chef
23
23
  class Provider
24
24
  class PowershellScript < Chef::Provider::WindowsScript
25
+ # FIXME: use composition not inheritance
25
26
 
26
27
  provides :powershell_script
27
28
 
@@ -30,9 +31,9 @@ class Chef
30
31
  add_exit_status_wrapper
31
32
  end
32
33
 
33
- def action_run
34
+ action :run do
34
35
  validate_script_syntax!
35
- super
36
+ super()
36
37
  end
37
38
 
38
39
  def command
@@ -47,14 +48,7 @@ class Chef
47
48
  # error status of a failed Windows process that ran at the
48
49
  # end of the script, it gets changed to '1'.
49
50
  #
50
- # Nano only supports -Command
51
- cmd = "\"#{interpreter_path}\" #{new_resource.flags}"
52
- if Chef::Platform.windows_nano_server?
53
- cmd << " -Command \". '#{script_file.path}'\""
54
- else
55
- cmd << " -File \"#{script_file.path}\""
56
- end
57
- cmd
51
+ "\"#{interpreter_path}\" #{new_resource.flags} -File \"#{script_file.path}\""
58
52
  end
59
53
 
60
54
  protected
@@ -100,7 +94,7 @@ class Chef
100
94
  # means a non-zero return and thus a syntactically invalid script.
101
95
 
102
96
  with_os_architecture(node, architecture: new_resource.architecture) do
103
- shell_out!(validation_command, { returns: [0] })
97
+ shell_out!(validation_command, returns: [0])
104
98
  end
105
99
  end
106
100
  end