chef 12.18.31 → 13.0.118

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 (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
  require "chef/provider/package"
19
- require "chef/mixin/command"
20
19
  require "chef/resource/package"
21
20
  require "chef/mixin/get_source_from_package"
22
21
 
@@ -33,45 +32,45 @@ class Chef
33
32
 
34
33
  # def initialize(*args)
35
34
  # super
36
- # @current_resource = Chef::Resource::Package.new(@new_resource.name)
35
+ # @current_resource = Chef::Resource::Package.new(new_resource.name)
37
36
  # end
38
37
  def define_resource_requirements
39
38
  super
40
39
  requirements.assert(:install) do |a|
41
- a.assertion { @new_resource.source }
42
- a.failure_message Chef::Exceptions::Package, "Source for package #{@new_resource.name} required for action install"
40
+ a.assertion { new_resource.source }
41
+ a.failure_message Chef::Exceptions::Package, "Source for package #{new_resource.name} required for action install"
43
42
  end
44
43
  requirements.assert(:all_actions) do |a|
45
- a.assertion { !@new_resource.source || @package_source_found }
46
- a.failure_message Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
47
- a.whyrun "would assume #{@new_resource.source} would be have previously been made available"
44
+ a.assertion { !new_resource.source || @package_source_found }
45
+ a.failure_message Chef::Exceptions::Package, "Package #{new_resource.name} not found: #{new_resource.source}"
46
+ a.whyrun "would assume #{new_resource.source} would be have previously been made available"
48
47
  end
49
48
  end
50
49
 
51
50
  def load_current_resource
52
- @current_resource = Chef::Resource::Package.new(@new_resource.name)
53
- @current_resource.package_name(@new_resource.package_name)
51
+ @current_resource = Chef::Resource::Package.new(new_resource.name)
52
+ current_resource.package_name(new_resource.package_name)
54
53
 
55
- if @new_resource.source
56
- @package_source_found = ::File.exists?(@new_resource.source)
54
+ if new_resource.source
55
+ @package_source_found = ::File.exist?(new_resource.source)
57
56
  if @package_source_found
58
- Chef::Log.debug("#{@new_resource} checking pkg status")
59
- shell_out_with_timeout("pkginfo -l -d #{@new_resource.source} #{@new_resource.package_name}").stdout.each_line do |line|
57
+ Chef::Log.debug("#{new_resource} checking pkg status")
58
+ shell_out_compact_timeout("pkginfo", "-l", "-d", new_resource.source, new_resource.package_name).stdout.each_line do |line|
60
59
  case line
61
60
  when /VERSION:\s+(.+)/
62
- @new_resource.version($1)
61
+ new_resource.version($1)
63
62
  end
64
63
  end
65
64
  end
66
65
  end
67
66
 
68
- Chef::Log.debug("#{@new_resource} checking install state")
69
- status = shell_out_with_timeout("pkginfo -l #{@current_resource.package_name}")
67
+ Chef::Log.debug("#{new_resource} checking install state")
68
+ status = shell_out_compact_timeout("pkginfo", "-l", current_resource.package_name)
70
69
  status.stdout.each_line do |line|
71
70
  case line
72
71
  when /VERSION:\s+(.+)/
73
- Chef::Log.debug("#{@new_resource} version #{$1} is already installed")
74
- @current_resource.version($1)
72
+ Chef::Log.debug("#{new_resource} version #{$1} is already installed")
73
+ current_resource.version($1)
75
74
  end
76
75
  end
77
76
 
@@ -79,56 +78,56 @@ class Chef
79
78
  raise Chef::Exceptions::Package, "pkginfo failed - #{status.inspect}!"
80
79
  end
81
80
 
82
- @current_resource
81
+ current_resource
83
82
  end
84
83
 
85
84
  def candidate_version
86
85
  return @candidate_version if @candidate_version
87
- status = shell_out_with_timeout("pkginfo -l -d #{@new_resource.source} #{new_resource.package_name}")
86
+ status = shell_out_compact_timeout("pkginfo", "-l", "-d", new_resource.source, new_resource.package_name)
88
87
  status.stdout.each_line do |line|
89
88
  case line
90
89
  when /VERSION:\s+(.+)/
91
90
  @candidate_version = $1
92
- @new_resource.version($1)
93
- Chef::Log.debug("#{@new_resource} setting install candidate version to #{@candidate_version}")
91
+ new_resource.version($1)
92
+ Chef::Log.debug("#{new_resource} setting install candidate version to #{@candidate_version}")
94
93
  end
95
94
  end
96
95
  unless status.exitstatus == 0
97
- raise Chef::Exceptions::Package, "pkginfo -l -d #{@new_resource.source} - #{status.inspect}!"
96
+ raise Chef::Exceptions::Package, "pkginfo -l -d #{new_resource.source} - #{status.inspect}!"
98
97
  end
99
98
  @candidate_version
100
99
  end
101
100
 
102
101
  def install_package(name, version)
103
- Chef::Log.debug("#{@new_resource} package install options: #{@new_resource.options}")
104
- if @new_resource.options.nil?
105
- if ::File.directory?(@new_resource.source) # CHEF-4469
106
- command = "pkgadd -n -d #{@new_resource.source} #{@new_resource.package_name}"
107
- else
108
- command = "pkgadd -n -d #{@new_resource.source} all"
109
- end
110
- shell_out_with_timeout!(command)
111
- Chef::Log.debug("#{@new_resource} installed version #{@new_resource.version} from: #{@new_resource.source}")
102
+ Chef::Log.debug("#{new_resource} package install options: #{options}")
103
+ if options.nil?
104
+ command = if ::File.directory?(new_resource.source) # CHEF-4469
105
+ [ "pkgadd", "-n", "-d", new_resource.source, new_resource.package_name ]
106
+ else
107
+ [ "pkgadd", "-n", "-d", new_resource.source, "all" ]
108
+ end
109
+ shell_out_compact_timeout!(command)
110
+ Chef::Log.debug("#{new_resource} installed version #{new_resource.version} from: #{new_resource.source}")
112
111
  else
113
- if ::File.directory?(@new_resource.source) # CHEF-4469
114
- command = "pkgadd -n#{expand_options(@new_resource.options)} -d #{@new_resource.source} #{@new_resource.package_name}"
115
- else
116
- command = "pkgadd -n#{expand_options(@new_resource.options)} -d #{@new_resource.source} all"
117
- end
118
- shell_out_with_timeout!(command)
119
- Chef::Log.debug("#{@new_resource} installed version #{@new_resource.version} from: #{@new_resource.source}")
112
+ command = if ::File.directory?(new_resource.source) # CHEF-4469
113
+ [ "pkgadd", "-n", options, "-d", new_resource.source, new_resource.package_name ]
114
+ else
115
+ [ "pkgadd", "-n", options, "-d", new_resource.source, "all" ]
116
+ end
117
+ shell_out_compact_timeout!(*command)
118
+ Chef::Log.debug("#{new_resource} installed version #{new_resource.version} from: #{new_resource.source}")
120
119
  end
121
120
  end
122
121
 
123
- alias_method :upgrade_package, :install_package
122
+ alias upgrade_package install_package
124
123
 
125
124
  def remove_package(name, version)
126
- if @new_resource.options.nil?
127
- shell_out_with_timeout!( "pkgrm -n #{name}" )
128
- Chef::Log.debug("#{@new_resource} removed version #{@new_resource.version}")
125
+ if options.nil?
126
+ shell_out_compact_timeout!( "pkgrm", "-n", name )
127
+ Chef::Log.debug("#{new_resource} removed version #{new_resource.version}")
129
128
  else
130
- shell_out_with_timeout!( "pkgrm -n#{expand_options(@new_resource.options)} #{name}" )
131
- Chef::Log.debug("#{@new_resource} removed version #{@new_resource.version}")
129
+ shell_out_compact_timeout!( "pkgrm", "-n", options, name )
130
+ Chef::Log.debug("#{new_resource} removed version #{new_resource.version}")
132
131
  end
133
132
  end
134
133
 
@@ -69,10 +69,10 @@ class Chef
69
69
  def remove_package
70
70
  uninstall_version = new_resource.version || current_installed_version
71
71
  uninstall_entries.select { |entry| [uninstall_version].flatten.include?(entry.display_version) }
72
- .map { |version| version.uninstall_string }.uniq.each do |uninstall_string|
73
- Chef::Log.debug("Registry provided uninstall string for #{new_resource} is '#{uninstall_string}'")
74
- shell_out!(uninstall_command(uninstall_string), { :timeout => new_resource.timeout, :returns => new_resource.returns })
75
- end
72
+ .map(&:uninstall_string).uniq.each do |uninstall_string|
73
+ Chef::Log.debug("Registry provided uninstall string for #{new_resource} is '#{uninstall_string}'")
74
+ shell_out!(uninstall_command(uninstall_string), timeout: new_resource.timeout, returns: new_resource.returns)
75
+ end
76
76
  end
77
77
 
78
78
  private
@@ -85,13 +85,13 @@ class Chef
85
85
  " ",
86
86
  unattended_flags,
87
87
  ].join
88
- %Q{start "" /wait #{uninstall_string} & exit %%%%ERRORLEVEL%%%%}
88
+ %{start "" /wait #{uninstall_string} & exit %%%%ERRORLEVEL%%%%}
89
89
  end
90
90
 
91
91
  def current_installed_version
92
92
  @current_installed_version ||=
93
93
  if uninstall_entries.count != 0
94
- uninstall_entries.map { |entry| entry.display_version }.uniq
94
+ uninstall_entries.map(&:display_version).uniq
95
95
  end
96
96
  end
97
97
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright 2014-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2014-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- # TODO: Allow @new_resource.source to be a Product Code as a GUID for uninstall / network install
19
+ # TODO: Allow new_resource.source to be a Product Code as a GUID for uninstall / network install
20
20
 
21
21
  require "chef/win32/api/installer" if (RUBY_PLATFORM =~ /mswin|mingw32|windows/) && Chef::Platform.supports_msi?
22
22
  require "chef/mixin/shell_out"
@@ -51,7 +51,7 @@ class Chef
51
51
  get_installed_version(product_code)
52
52
  else
53
53
  if uninstall_entries.count != 0
54
- uninstall_entries.map { |entry| entry.display_version }.uniq
54
+ uninstall_entries.map(&:display_version).uniq
55
55
  end
56
56
  end
57
57
  end
@@ -67,23 +67,23 @@ class Chef
67
67
  def install_package
68
68
  # We could use MsiConfigureProduct here, but we'll start off with msiexec
69
69
  Chef::Log.debug("#{new_resource} installing MSI package '#{new_resource.source}'")
70
- shell_out!("msiexec /qn /i \"#{new_resource.source}\" #{expand_options(new_resource.options)}", { :timeout => new_resource.timeout, :returns => new_resource.returns })
70
+ shell_out!("msiexec /qn /i \"#{new_resource.source}\" #{expand_options(new_resource.options)}", timeout: new_resource.timeout, returns: new_resource.returns)
71
71
  end
72
72
 
73
73
  def remove_package
74
74
  # We could use MsiConfigureProduct here, but we'll start off with msiexec
75
75
  if !new_resource.source.nil? && ::File.exist?(new_resource.source)
76
76
  Chef::Log.debug("#{new_resource} removing MSI package '#{new_resource.source}'")
77
- shell_out!("msiexec /qn /x \"#{new_resource.source}\" #{expand_options(new_resource.options)}", { :timeout => new_resource.timeout, :returns => new_resource.returns })
77
+ shell_out!("msiexec /qn /x \"#{new_resource.source}\" #{expand_options(new_resource.options)}", timeout: new_resource.timeout, returns: new_resource.returns)
78
78
  else
79
79
  uninstall_version = new_resource.version || installed_version
80
80
  uninstall_entries.select { |entry| [uninstall_version].flatten.include?(entry.display_version) }
81
- .map { |version| version.uninstall_string }.uniq.each do |uninstall_string|
81
+ .map(&:uninstall_string).uniq.each do |uninstall_string|
82
82
  uninstall_string = "msiexec /x #{uninstall_string.match(/{.*}/)}"
83
83
  uninstall_string += expand_options(new_resource.options)
84
84
  uninstall_string += " /q" unless uninstall_string.downcase =~ / \/q/
85
85
  Chef::Log.debug("#{new_resource} removing MSI package version using '#{uninstall_string}'")
86
- shell_out!(uninstall_string, { :timeout => new_resource.timeout, :returns => new_resource.returns })
86
+ shell_out!(uninstall_string, timeout: new_resource.timeout, returns: new_resource.returns)
87
87
  end
88
88
  end
89
89
  end
@@ -41,7 +41,8 @@ class Chef
41
41
  entry = reg.open(key, desired)
42
42
  display_name = read_registry_property(entry, "DisplayName")
43
43
  if display_name == package_name
44
- entries.push(RegistryUninstallEntry.new(hkey, key, entry))
44
+ quiet_uninstall_string = RegistryUninstallEntry.read_registry_property(entry, "QuietUninstallString")
45
+ entries.push(quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry))
45
46
  end
46
47
  rescue ::Win32::Registry::Error => ex
47
48
  Chef::Log.debug("Registry error opening key '#{key}' on node #{desired}: #{ex}")
@@ -55,6 +56,11 @@ class Chef
55
56
  entries
56
57
  end
57
58
 
59
+ def self.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry)
60
+ return RegistryUninstallEntry.new(hkey, key, entry) if quiet_uninstall_string.nil?
61
+ RegistryUninstallEntry.new(hkey, key, entry, "QuietUninstallString")
62
+ end
63
+
58
64
  def self.read_registry_property(data, property)
59
65
  data[property]
60
66
  rescue ::Win32::Registry::Error => ex
@@ -62,14 +68,14 @@ class Chef
62
68
  nil
63
69
  end
64
70
 
65
- def initialize(hive, key, registry_data)
71
+ def initialize(hive, key, registry_data, uninstall_key = "UninstallString")
66
72
  Chef::Log.debug("Creating uninstall entry for #{hive}::#{key}")
67
73
  @hive = hive
68
74
  @key = key
69
75
  @data = registry_data
70
76
  @display_name = RegistryUninstallEntry.read_registry_property(registry_data, "DisplayName")
71
77
  @display_version = RegistryUninstallEntry.read_registry_property(registry_data, "DisplayVersion")
72
- @uninstall_string = RegistryUninstallEntry.read_registry_property(registry_data, "UninstallString")
78
+ @uninstall_string = RegistryUninstallEntry.read_registry_property(registry_data, uninstall_key)
73
79
  end
74
80
 
75
81
  attr_reader :hive
@@ -104,8 +104,8 @@ class Chef
104
104
  return :nsis
105
105
  end
106
106
 
107
- if io.tell() < filesize
108
- io.seek(io.tell() - overlap)
107
+ if io.tell < filesize
108
+ io.seek(io.tell - overlap)
109
109
  end
110
110
  end
111
111
 
@@ -195,7 +195,7 @@ class Chef
195
195
  end
196
196
 
197
197
  def downloadable_file_missing?
198
- !new_resource.source.nil? && uri_scheme?(new_resource.source) && !::File.exists?(source_location)
198
+ !new_resource.source.nil? && uri_scheme?(new_resource.source) && !::File.exist?(source_location)
199
199
  end
200
200
 
201
201
  def resource_for_provider
@@ -37,7 +37,7 @@ class Chef
37
37
  lead = 0
38
38
  tail = evr.size
39
39
 
40
- if %r{^([\d]+):}.match(evr) # rubocop:disable Performance/RedundantMatch
40
+ if /^([\d]+):/.match(evr) # rubocop:disable Performance/RedundantMatch
41
41
  epoch = $1.to_i
42
42
  lead = $1.length + 1
43
43
  elsif evr[0].ord == ":".ord
@@ -45,7 +45,7 @@ class Chef
45
45
  lead = 1
46
46
  end
47
47
 
48
- if %r{:?.*-(.*)$}.match(evr) # rubocop:disable Performance/RedundantMatch
48
+ if /:?.*-(.*)$/.match(evr) # rubocop:disable Performance/RedundantMatch
49
49
  release = $1
50
50
  tail = evr.length - release.length - lead - 1
51
51
 
@@ -230,17 +230,17 @@ class Chef
230
230
  @v = args[1]
231
231
  @r = args[2]
232
232
  else
233
- raise ArgumentError, "Expecting either 'epoch-version-release' or 'epoch, " +
233
+ raise ArgumentError, "Expecting either 'epoch-version-release' or 'epoch, " \
234
234
  "version, release'"
235
235
  end
236
236
  end
237
237
  attr_reader :e, :v, :r
238
- alias :epoch :e
239
- alias :version :v
240
- alias :release :r
238
+ alias epoch e
239
+ alias version v
240
+ alias release r
241
241
 
242
242
  def self.parse(*args)
243
- self.new(*args)
243
+ new(*args)
244
244
  end
245
245
 
246
246
  def <=>(other)
@@ -317,7 +317,7 @@ class Chef
317
317
  return cmp
318
318
  end
319
319
 
320
- return 0
320
+ 0
321
321
  end
322
322
  end
323
323
 
@@ -339,7 +339,7 @@ class Chef
339
339
  @a = args[4]
340
340
  @provides = args[5]
341
341
  else
342
- raise ArgumentError, "Expecting either 'name, epoch-version-release, arch, provides' " +
342
+ raise ArgumentError, "Expecting either 'name, epoch-version-release, arch, provides' " \
343
343
  "or 'name, epoch, version, release, arch, provides'"
344
344
  end
345
345
 
@@ -349,8 +349,8 @@ class Chef
349
349
  end
350
350
  end
351
351
  attr_reader :n, :a, :version, :provides
352
- alias :name :n
353
- alias :arch :a
352
+ alias name n
353
+ alias arch a
354
354
 
355
355
  def <=>(other)
356
356
  compare(other)
@@ -395,7 +395,7 @@ class Chef
395
395
  end
396
396
  end
397
397
 
398
- return 0
398
+ 0
399
399
  end
400
400
 
401
401
  def to_s
@@ -423,7 +423,7 @@ class Chef
423
423
  @version = RPMVersion.new(e, v, r)
424
424
  @flag = args[4] || :==
425
425
  else
426
- raise ArgumentError, "Expecting either 'name, epoch-version-release, flag' or " +
426
+ raise ArgumentError, "Expecting either 'name, epoch-version-release, flag' or " \
427
427
  "'name, epoch, version, release, flag'"
428
428
  end
429
429
  end
@@ -434,25 +434,25 @@ class Chef
434
434
  # "mtr >= 2:0.71-3.0"
435
435
  # "mta"
436
436
  def self.parse(string)
437
- if %r{^(\S+)\s+(>|>=|=|==|<=|<)\s+(\S+)$}.match(string) # rubocop:disable Performance/RedundantMatch
437
+ if /^(\S+)\s+(>|>=|=|==|<=|<)\s+(\S+)$/.match(string) # rubocop:disable Performance/RedundantMatch
438
438
  name = $1
439
- if $2 == "="
440
- flag = :==
441
- else
442
- flag = :"#{$2}"
443
- end
439
+ flag = if $2 == "="
440
+ :==
441
+ else
442
+ :"#{$2}"
443
+ end
444
444
  version = $3
445
445
 
446
- return self.new(name, version, flag)
446
+ new(name, version, flag)
447
447
  else
448
448
  name = string
449
- return self.new(name, nil, nil)
449
+ new(name, nil, nil)
450
450
  end
451
451
  end
452
452
 
453
453
  # Test if another RPMDependency satisfies our requirements
454
454
  def satisfy?(y)
455
- unless y.kind_of?(RPMDependency)
455
+ unless y.is_a?(RPMDependency)
456
456
  raise ArgumentError, "Expecting an RPMDependency object"
457
457
  end
458
458
 
@@ -481,7 +481,7 @@ class Chef
481
481
  return true
482
482
  end
483
483
 
484
- return false
484
+ false
485
485
  end
486
486
  end
487
487
 
@@ -504,11 +504,11 @@ class Chef
504
504
  class RPMDb
505
505
  def initialize
506
506
  # package name => [ RPMPackage, RPMPackage ] of different versions
507
- @rpms = Hash.new
507
+ @rpms = {}
508
508
  # package nevra => RPMPackage for lookups
509
- @index = Hash.new
509
+ @index = {}
510
510
  # provide name (aka feature) => [RPMPackage, RPMPackage] each providing this feature
511
- @provides = Hash.new
511
+ @provides = {}
512
512
  # RPMPackages listed as available
513
513
  @available = Set.new
514
514
  # RPMPackages listed as installed
@@ -516,7 +516,7 @@ class Chef
516
516
  end
517
517
 
518
518
  def [](package_name)
519
- self.lookup(package_name)
519
+ lookup(package_name)
520
520
  end
521
521
 
522
522
  # Lookup package_name and return a descending array of package objects
@@ -537,11 +537,11 @@ class Chef
537
537
  # The available/installed state can be overwritten for existing packages.
538
538
  def push(*args)
539
539
  args.flatten.each do |new_rpm|
540
- unless new_rpm.kind_of?(RPMDbPackage)
540
+ unless new_rpm.is_a?(RPMDbPackage)
541
541
  raise ArgumentError, "Expecting an RPMDbPackage object"
542
542
  end
543
543
 
544
- @rpms[new_rpm.n] ||= Array.new
544
+ @rpms[new_rpm.n] ||= []
545
545
 
546
546
  # we may already have this one, like when the installed list is refreshed
547
547
  idx = @index[new_rpm.nevra]
@@ -552,7 +552,7 @@ class Chef
552
552
  @rpms[new_rpm.n] << new_rpm
553
553
 
554
554
  new_rpm.provides.each do |provide|
555
- @provides[provide.name] ||= Array.new
555
+ @provides[provide.name] ||= []
556
556
  @provides[provide.name] << new_rpm
557
557
  end
558
558
 
@@ -574,7 +574,7 @@ class Chef
574
574
  end
575
575
 
576
576
  def <<(*args)
577
- self.push(args)
577
+ push(args)
578
578
  end
579
579
 
580
580
  def clear
@@ -596,7 +596,7 @@ class Chef
596
596
  def size
597
597
  @rpms.size
598
598
  end
599
- alias :length :size
599
+ alias length size
600
600
 
601
601
  def available_size
602
602
  @available.size
@@ -615,7 +615,7 @@ class Chef
615
615
  end
616
616
 
617
617
  def whatprovides(rpmdep)
618
- unless rpmdep.kind_of?(RPMDependency)
618
+ unless rpmdep.is_a?(RPMDependency)
619
619
  raise ArgumentError, "Expecting an RPMDependency object"
620
620
  end
621
621
 
@@ -632,7 +632,7 @@ class Chef
632
632
  end
633
633
  end
634
634
 
635
- return what
635
+ what
636
636
  end
637
637
  end
638
638
 
@@ -101,12 +101,12 @@ class Chef
101
101
  status = nil
102
102
 
103
103
  begin
104
- status = shell_out!("#{python_bin} #{yum_dump_path}#{opts}", :timeout => Chef::Config[:yum_timeout])
104
+ status = shell_out!("#{python_bin} #{yum_dump_path}#{opts}", timeout: Chef::Config[:yum_timeout])
105
105
  status.stdout.each_line do |line|
106
106
  one_line = true
107
107
 
108
108
  line.chomp!
109
- if line =~ %r{\[option (.*)\] (.*)}
109
+ if line =~ /\[option (.*)\] (.*)/
110
110
  if $1 == "installonlypkgs"
111
111
  @allow_multi_install = $2.split
112
112
  else
@@ -115,7 +115,7 @@ class Chef
115
115
  next
116
116
  end
117
117
 
118
- if line =~ %r{^(\S+) ([0-9]+) (\S+) (\S+) (\S+) \[(.*)\] ([i,a,r]) (\S+)$}
118
+ if line =~ /^(\S+) ([0-9]+) (\S+) (\S+) (\S+) \[(.*)\] ([i,a,r]) (\S+)$/
119
119
  name = $1
120
120
  epoch = $2
121
121
  version = $3
@@ -125,7 +125,7 @@ class Chef
125
125
  type = $7
126
126
  repoid = $8
127
127
  else
128
- Chef::Log.warn("Problem parsing line '#{line}' from yum-dump.py! " +
128
+ Chef::Log.warn("Problem parsing line '#{line}' from yum-dump.py! " \
129
129
  "Please check your yum configuration.")
130
130
  next
131
131
  end
@@ -158,7 +158,7 @@ class Chef
158
158
  raise Chef::Exceptions::Package, "Yum failed - #{status.inspect} - returns: #{error}"
159
159
  else
160
160
  unless one_line
161
- Chef::Log.warn("Odd, no output from yum-dump.py. Please check " +
161
+ Chef::Log.warn("Odd, no output from yum-dump.py. Please check " \
162
162
  "your yum configuration.")
163
163
  end
164
164
  end
@@ -233,7 +233,7 @@ class Chef
233
233
  if @rpmdb.lookup(package_name)
234
234
  return true
235
235
  else
236
- if package_name =~ %r{^(.*)\.(.*)$}
236
+ if package_name =~ /^(.*)\.(.*)$/
237
237
  pkg_name = $1
238
238
  pkg_arch = $2
239
239
 
@@ -245,7 +245,7 @@ class Chef
245
245
  end
246
246
  end
247
247
 
248
- return false
248
+ false
249
249
  end
250
250
 
251
251
  # Returns a array of packages satisfying an RPMDependency
@@ -260,7 +260,7 @@ class Chef
260
260
  return true if desired_version == v
261
261
  end
262
262
 
263
- return false
263
+ false
264
264
  end
265
265
 
266
266
  # Return the source repository for a package-version.arch
@@ -269,14 +269,14 @@ class Chef
269
269
  return pkg.repoid if desired_version == pkg.version.to_s
270
270
  end
271
271
 
272
- return nil
272
+ nil
273
273
  end
274
274
 
275
275
  # Return the latest available version for a package.arch
276
276
  def available_version(package_name, arch = nil)
277
277
  version(package_name, arch, true, false)
278
278
  end
279
- alias :candidate_version :available_version
279
+ alias candidate_version available_version
280
280
 
281
281
  # Return the currently installed version for a package.arch
282
282
  def installed_version(package_name, arch = nil)
@@ -361,12 +361,12 @@ class Chef
361
361
  # ['atk = 1.12.2-1.fc6', 'libatk-1.0.so.0']
362
362
  string.split(", ").each do |seg|
363
363
  # 'atk = 1.12.2-1.fc6'
364
- if seg =~ %r{^'(.*)'$}
364
+ if seg =~ /^'(.*)'$/
365
365
  ret << RPMProvide.parse($1)
366
366
  end
367
367
  end
368
368
 
369
- return ret
369
+ ret
370
370
  end
371
371
 
372
372
  end # YumCache