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
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # Authors:: Adam Jacob (<adam@chef.io>)
4
4
  # Ionuț Arțăriși (<iartarisi@suse.cz>)
5
- # Copyright:: Copyright 2008-2016, Chef Software, Inc.
5
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
6
6
  # Copyright 2013-2016, SUSE Linux GmbH
7
7
  # License:: Apache License, Version 2.0
8
8
  #
@@ -35,7 +35,7 @@ class Chef
35
35
  candidate_version = current_version = nil
36
36
  is_installed = false
37
37
  Chef::Log.debug("#{new_resource} checking zypper")
38
- status = shell_out_with_timeout!("zypper --non-interactive info #{package_name}")
38
+ status = shell_out_compact_timeout!("zypper", "--non-interactive", "info", package_name)
39
39
  status.stdout.each_line do |line|
40
40
  case line
41
41
  when /^Version *: (.+) *$/
@@ -77,14 +77,14 @@ class Chef
77
77
 
78
78
  def package_locked(name, version)
79
79
  islocked = false
80
- locked = shell_out_with_timeout!("zypper locks")
80
+ locked = shell_out_compact_timeout!("zypper", "locks")
81
81
  locked.stdout.each_line do |line|
82
82
  line_package = line.split("|").shift(2).last.strip
83
83
  if line_package == name
84
84
  islocked = true
85
85
  end
86
86
  end
87
- return islocked
87
+ islocked
88
88
  end
89
89
 
90
90
  def load_current_resource
@@ -103,7 +103,7 @@ class Chef
103
103
  end
104
104
 
105
105
  def install_package(name, version)
106
- zypper_package("install --auto-agree-with-licenses", name, version)
106
+ zypper_package("install", "--auto-agree-with-licenses", name, version)
107
107
  end
108
108
 
109
109
  def upgrade_package(name, version)
@@ -116,7 +116,7 @@ class Chef
116
116
  end
117
117
 
118
118
  def purge_package(name, version)
119
- zypper_package("remove --clean-deps", name, version)
119
+ zypper_package("remove", "--clean-deps", name, version)
120
120
  end
121
121
 
122
122
  def lock_package(name, version)
@@ -135,27 +135,17 @@ class Chef
135
135
  end
136
136
  end
137
137
 
138
- def zypper_package(command, names, versions)
138
+ def zypper_package(command, *options, names, versions)
139
139
  zipped_names = zip(names, versions)
140
140
  if zypper_version < 1.0
141
- shell_out_with_timeout!(a_to_s("zypper", gpg_checks, command, "-y", names))
141
+ shell_out_compact_timeout!("zypper", gpg_checks, command, *options, "-y", names)
142
142
  else
143
- shell_out_with_timeout!(a_to_s("zypper --non-interactive", gpg_checks, command, zipped_names))
143
+ shell_out_compact_timeout!("zypper", "--non-interactive", gpg_checks, command, *options, zipped_names)
144
144
  end
145
145
  end
146
146
 
147
147
  def gpg_checks
148
- case Chef::Config[:zypper_check_gpg]
149
- when true
150
- ""
151
- when false
152
- "--no-gpg-checks"
153
- when nil
154
- Chef::Log.warn("Chef::Config[:zypper_check_gpg] was not set. " +
155
- "All packages will be installed without gpg signature checks. " +
156
- "This is a security hazard.")
157
- "--no-gpg-checks"
158
- end
148
+ "--no-gpg-checks" unless new_resource.gpg_check
159
149
  end
160
150
  end
161
151
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright 2008-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2008-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");
@@ -17,22 +17,19 @@
17
17
  #
18
18
 
19
19
  require "chef/mixin/shell_out"
20
- require "chef/mixin/command"
21
20
  require "chef/mixin/subclass_directive"
22
21
  require "chef/log"
23
22
  require "chef/file_cache"
24
23
  require "chef/platform"
25
24
  require "chef/decorator/lazy_array"
25
+ require "shellwords"
26
26
 
27
27
  class Chef
28
28
  class Provider
29
29
  class Package < Chef::Provider
30
- include Chef::Mixin::Command
31
30
  include Chef::Mixin::ShellOut
32
31
  extend Chef::Mixin::SubclassDirective
33
32
 
34
- use_inline_resources
35
-
36
33
  # subclasses declare this if they want all their arguments as arrays of packages and names
37
34
  subclass_directive :use_multipackage_api
38
35
  # subclasses declare this if they want sources (filenames) pulled from their package names
@@ -52,8 +49,8 @@ class Chef
52
49
  @candidate_version = nil
53
50
  end
54
51
 
55
- def whyrun_supported?
56
- true
52
+ def options
53
+ new_resource.options
57
54
  end
58
55
 
59
56
  def check_resource_semantics!
@@ -64,16 +61,15 @@ class Chef
64
61
  end
65
62
  end
66
63
 
67
- def load_current_resource
68
- end
64
+ def load_current_resource; end
69
65
 
70
66
  def define_resource_requirements
71
67
  # XXX: upgrade with a specific version doesn't make a whole lot of sense, but why don't we throw this anyway if it happens?
72
68
  # if not, shouldn't we raise to tell the user to use install instead of upgrade if they want to pin a version?
73
69
  requirements.assert(:install) do |a|
74
70
  a.assertion { candidates_exist_for_all_forced_changes? }
75
- a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(", ")}")
76
- a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(", ")} would have been configured")
71
+ a.failure_message(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{forced_packages_missing_candidates.join(', ')}")
72
+ a.whyrun("Assuming a repository that offers #{forced_packages_missing_candidates.join(', ')} would have been configured")
77
73
  end
78
74
 
79
75
  # XXX: Does it make sense to pass in a source with :upgrade? Probably
@@ -81,19 +77,19 @@ class Chef
81
77
  # so we'll just leave things as-is for now.
82
78
  requirements.assert(:upgrade, :install) do |a|
83
79
  a.assertion { candidates_exist_for_all_uninstalled? || new_resource.source }
84
- a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(", ")}")
85
- a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(", ")} would have been configured")
80
+ a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(', ')}")
81
+ a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(', ')} would have been configured")
86
82
  end
87
83
  end
88
84
 
89
85
  action :install do
90
86
  unless target_version_array.any?
91
- Chef::Log.debug("#{@new_resource} is already installed - nothing to do")
87
+ Chef::Log.debug("#{new_resource} is already installed - nothing to do")
92
88
  return
93
89
  end
94
90
 
95
91
  # @todo: move the preseed code out of the base class (and complete the fix for Array of preseeds? ugh...)
96
- if @new_resource.response_file
92
+ if new_resource.response_file
97
93
  if preseed_file = get_preseed_file(package_names_for_targets, versions_for_targets)
98
94
  converge_by("preseed package #{package_names_for_targets}") do
99
95
  preseed_package(preseed_file)
@@ -105,7 +101,7 @@ class Chef
105
101
  multipackage_api_adapter(package_names_for_targets, versions_for_targets) do |name, version|
106
102
  install_package(name, version)
107
103
  end
108
- Chef::Log.info("#{@new_resource} installed #{package_names_for_targets} at #{versions_for_targets}")
104
+ Chef::Log.info("#{new_resource} installed #{package_names_for_targets} at #{versions_for_targets}")
109
105
  end
110
106
  end
111
107
 
@@ -122,8 +118,8 @@ class Chef
122
118
  private :install_description
123
119
 
124
120
  action :upgrade do
125
- if !target_version_array.any?
126
- Chef::Log.debug("#{@new_resource} no versions to upgrade - nothing to do")
121
+ unless target_version_array.any?
122
+ Chef::Log.debug("#{new_resource} no versions to upgrade - nothing to do")
127
123
  return
128
124
  end
129
125
 
@@ -132,7 +128,7 @@ class Chef
132
128
  upgrade_package(name, version)
133
129
  end
134
130
  log_allow_downgrade = allow_downgrade ? "(allow_downgrade)" : ""
135
- Chef::Log.info("#{@new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
131
+ Chef::Log.info("#{new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
136
132
  end
137
133
  end
138
134
 
@@ -153,15 +149,15 @@ class Chef
153
149
 
154
150
  action :remove do
155
151
  if removing_package?
156
- description = @new_resource.version ? "version #{@new_resource.version} of " : ""
157
- converge_by("remove #{description}package #{@current_resource.package_name}") do
158
- multipackage_api_adapter(@current_resource.package_name, @new_resource.version) do |name, version|
152
+ description = new_resource.version ? "version #{new_resource.version} of " : ""
153
+ converge_by("remove #{description}package #{current_resource.package_name}") do
154
+ multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
159
155
  remove_package(name, version)
160
156
  end
161
- Chef::Log.info("#{@new_resource} removed")
157
+ Chef::Log.info("#{new_resource} removed")
162
158
  end
163
159
  else
164
- Chef::Log.debug("#{@new_resource} package does not exist - nothing to do")
160
+ Chef::Log.debug("#{new_resource} package does not exist - nothing to do")
165
161
  end
166
162
  end
167
163
 
@@ -188,48 +184,48 @@ class Chef
188
184
 
189
185
  action :purge do
190
186
  if removing_package?
191
- description = @new_resource.version ? "version #{@new_resource.version} of" : ""
192
- converge_by("purge #{description} package #{@current_resource.package_name}") do
193
- multipackage_api_adapter(@current_resource.package_name, @new_resource.version) do |name, version|
187
+ description = new_resource.version ? "version #{new_resource.version} of" : ""
188
+ converge_by("purge #{description} package #{current_resource.package_name}") do
189
+ multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
194
190
  purge_package(name, version)
195
191
  end
196
- Chef::Log.info("#{@new_resource} purged")
192
+ Chef::Log.info("#{new_resource} purged")
197
193
  end
198
194
  end
199
195
  end
200
196
 
201
197
  action :reconfig do
202
- if @current_resource.version.nil?
203
- Chef::Log.debug("#{@new_resource} is NOT installed - nothing to do")
198
+ if current_resource.version.nil?
199
+ Chef::Log.debug("#{new_resource} is NOT installed - nothing to do")
204
200
  return
205
201
  end
206
202
 
207
- unless @new_resource.response_file
208
- Chef::Log.debug("#{@new_resource} no response_file provided - nothing to do")
203
+ unless new_resource.response_file
204
+ Chef::Log.debug("#{new_resource} no response_file provided - nothing to do")
209
205
  return
210
206
  end
211
207
 
212
- if preseed_file = get_preseed_file(@new_resource.package_name, @current_resource.version)
213
- converge_by("reconfigure package #{@new_resource.package_name}") do
208
+ if preseed_file = get_preseed_file(new_resource.package_name, current_resource.version)
209
+ converge_by("reconfigure package #{new_resource.package_name}") do
214
210
  preseed_package(preseed_file)
215
- multipackage_api_adapter(@new_resource.package_name, @current_resource.version) do |name, version|
211
+ multipackage_api_adapter(new_resource.package_name, current_resource.version) do |name, version|
216
212
  reconfig_package(name, version)
217
213
 
218
214
  end
219
- Chef::Log.info("#{@new_resource} reconfigured")
215
+ Chef::Log.info("#{new_resource} reconfigured")
220
216
  end
221
217
  else
222
- Chef::Log.debug("#{@new_resource} preseeding has not changed - nothing to do")
218
+ Chef::Log.debug("#{new_resource} preseeding has not changed - nothing to do")
223
219
  end
224
220
  end
225
221
 
226
222
  def action_lock
227
- if package_locked(@new_resource.name, @new_resource.version) == false
228
- description = @new_resource.version ? "version #{@new_resource.version} of " : ""
229
- converge_by("lock #{description}package #{@current_resource.package_name}") do
230
- multipackage_api_adapter(@current_resource.package_name, @new_resource.version) do |name, version|
223
+ if package_locked(new_resource.name, new_resource.version) == false
224
+ description = new_resource.version ? "version #{new_resource.version} of " : ""
225
+ converge_by("lock #{description}package #{current_resource.package_name}") do
226
+ multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
231
227
  lock_package(name, version)
232
- Chef::Log.info("#{@new_resource} locked")
228
+ Chef::Log.info("#{new_resource} locked")
233
229
  end
234
230
  end
235
231
  else
@@ -238,12 +234,12 @@ class Chef
238
234
  end
239
235
 
240
236
  def action_unlock
241
- if package_locked(@new_resource.name, @new_resource.version) == true
242
- description = @new_resource.version ? "version #{@new_resource.version} of " : ""
243
- converge_by("unlock #{description}package #{@current_resource.package_name}") do
244
- multipackage_api_adapter(@current_resource.package_name, @new_resource.version) do |name, version|
237
+ if package_locked(new_resource.name, new_resource.version) == true
238
+ description = new_resource.version ? "version #{new_resource.version} of " : ""
239
+ converge_by("unlock #{description}package #{current_resource.package_name}") do
240
+ multipackage_api_adapter(current_resource.package_name, new_resource.version) do |name, version|
245
241
  unlock_package(name, version)
246
- Chef::Log.info("#{@new_resource} unlocked")
242
+ Chef::Log.info("#{new_resource} unlocked")
247
243
  end
248
244
  end
249
245
  else
@@ -251,6 +247,10 @@ class Chef
251
247
  end
252
248
  end
253
249
 
250
+ def package_locked(name, version)
251
+ raise Chef::Exceptions::UnsupportedAction, "#{self} has no way to detect if package is locked"
252
+ end
253
+
254
254
  # @todo use composition rather than inheritance
255
255
 
256
256
  def multipackage_api_adapter(name, version)
@@ -295,7 +295,13 @@ class Chef
295
295
 
296
296
  # used by subclasses. deprecated. use #a_to_s instead.
297
297
  def expand_options(options)
298
- options ? " #{options}" : ""
298
+ # its deprecated but still work to do to deprecate it fully
299
+ #Chef.deprecated(:package_misc, "expand_options is deprecated, use shell_out_compact or shell_out_compact_timeout instead")
300
+ if options
301
+ " #{options.is_a?(Array) ? Shellwords.join(options) : options}"
302
+ else
303
+ ""
304
+ end
299
305
  end
300
306
 
301
307
  # Check the current_version against either the candidate_version or the new_version
@@ -339,7 +345,7 @@ class Chef
339
345
  def get_preseed_file(name, version)
340
346
  resource = preseed_resource(name, version)
341
347
  resource.run_action(:create)
342
- Chef::Log.debug("#{@new_resource} fetched preseed file to #{resource.path}")
348
+ Chef::Log.debug("#{new_resource} fetched preseed file to #{resource.path}")
343
349
 
344
350
  if resource.updated_by_last_action?
345
351
  resource.path
@@ -351,26 +357,26 @@ class Chef
351
357
  # @todo: extract apt/dpkg specific preseeding to a helper class
352
358
  def preseed_resource(name, version)
353
359
  # A directory in our cache to store this cookbook's preseed files in
354
- file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{@new_resource.cookbook_name}")
360
+ file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{new_resource.cookbook_name}")
355
361
  # The full path where the preseed file will be stored
356
362
  cache_seed_to = "#{file_cache_dir}/#{name}-#{version}.seed"
357
363
 
358
- Chef::Log.debug("#{@new_resource} fetching preseed file to #{cache_seed_to}")
364
+ Chef::Log.debug("#{new_resource} fetching preseed file to #{cache_seed_to}")
359
365
 
360
- if template_available?(@new_resource.response_file)
361
- Chef::Log.debug("#{@new_resource} fetching preseed file via Template")
366
+ if template_available?(new_resource.response_file)
367
+ Chef::Log.debug("#{new_resource} fetching preseed file via Template")
362
368
  remote_file = Chef::Resource::Template.new(cache_seed_to, run_context)
363
- remote_file.variables(@new_resource.response_file_variables)
364
- elsif cookbook_file_available?(@new_resource.response_file)
365
- Chef::Log.debug("#{@new_resource} fetching preseed file via cookbook_file")
369
+ remote_file.variables(new_resource.response_file_variables)
370
+ elsif cookbook_file_available?(new_resource.response_file)
371
+ Chef::Log.debug("#{new_resource} fetching preseed file via cookbook_file")
366
372
  remote_file = Chef::Resource::CookbookFile.new(cache_seed_to, run_context)
367
373
  else
368
- message = "No template or cookbook file found for response file #{@new_resource.response_file}"
374
+ message = "No template or cookbook file found for response file #{new_resource.response_file}"
369
375
  raise Chef::Exceptions::FileNotFound, message
370
376
  end
371
377
 
372
- remote_file.cookbook_name = @new_resource.cookbook_name
373
- remote_file.source(@new_resource.response_file)
378
+ remote_file.cookbook_name = new_resource.cookbook_name
379
+ remote_file.source(new_resource.response_file)
374
380
  remote_file.backup(false)
375
381
  remote_file
376
382
  end
@@ -608,8 +614,8 @@ class Chef
608
614
  end
609
615
 
610
616
  def allow_downgrade
611
- if @new_resource.respond_to?("allow_downgrade")
612
- @new_resource.allow_downgrade
617
+ if new_resource.respond_to?("allow_downgrade")
618
+ new_resource.allow_downgrade
613
619
  else
614
620
  false
615
621
  end
@@ -624,14 +630,16 @@ class Chef
624
630
  end
625
631
 
626
632
  def add_timeout_option(command_args)
633
+ # this is deprecated but its not quite done yet
634
+ #Chef.deprecated(:package_misc, "shell_out_with_timeout and add_timeout_option are deprecated methods, use shell_out_compact_timeout instead")
627
635
  args = command_args.dup
628
636
  if args.last.is_a?(Hash)
629
637
  options = args.pop.dup
630
638
  options[:timeout] = new_resource.timeout if new_resource.timeout
631
- options[:timeout] = 900 unless options.has_key?(:timeout)
639
+ options[:timeout] = 900 unless options.key?(:timeout)
632
640
  args << options
633
641
  else
634
- args << { :timeout => new_resource.timeout ? new_resource.timeout : 900 }
642
+ args << { timeout: new_resource.timeout ? new_resource.timeout : 900 }
635
643
  end
636
644
  args
637
645
  end
@@ -60,8 +60,8 @@ class Chef
60
60
  def flags
61
61
  interpreter_flags = [*default_interpreter_flags].join(" ")
62
62
 
63
- if ! (@new_resource.flags.nil?)
64
- interpreter_flags = [@new_resource.flags, interpreter_flags].join(" ")
63
+ if ! (new_resource.flags.nil?)
64
+ interpreter_flags = [new_resource.flags, interpreter_flags].join(" ")
65
65
  end
66
66
 
67
67
  interpreter_flags
@@ -73,8 +73,8 @@ class Chef
73
73
  # special handling to cover common use cases.
74
74
  def add_exit_status_wrapper
75
75
  self.code = wrapper_script
76
- Chef::Log.debug("powershell_script provider called with script code:\n\n#{@new_resource.code}\n")
77
- Chef::Log.debug("powershell_script provider will execute transformed code:\n\n#{self.code}\n")
76
+ Chef::Log.debug("powershell_script provider called with script code:\n\n#{new_resource.code}\n")
77
+ Chef::Log.debug("powershell_script provider will execute transformed code:\n\n#{code}\n")
78
78
  end
79
79
 
80
80
  def validate_script_syntax!
@@ -87,7 +87,7 @@ class Chef
87
87
  # actually running the script.
88
88
  user_code_wrapped_in_powershell_script_block = <<-EOH
89
89
  {
90
- #{@new_resource.code}
90
+ #{new_resource.code}
91
91
  }
92
92
  EOH
93
93
  user_script_file.puts user_code_wrapped_in_powershell_script_block
@@ -149,6 +149,14 @@ EOH
149
149
  <<-EOH
150
150
  # Chef Client wrapper for powershell_script resources
151
151
 
152
+ # In rare cases, such as when PowerShell is executed
153
+ # as an alternate user, the new-variable cmdlet is not
154
+ # available, so import it just in case
155
+ if ( get-module -ListAvailable Microsoft.PowerShell.Utility )
156
+ {
157
+ Import-Module Microsoft.PowerShell.Utility
158
+ }
159
+
152
160
  # LASTEXITCODE can be uninitialized -- make it explictly 0
153
161
  # to avoid incorrect detection of failure (non-zero) codes
154
162
  $global:LASTEXITCODE = 0
@@ -159,7 +167,7 @@ $global:LASTEXITCODE = 0
159
167
  trap [Exception] {write-error ($_.Exception.Message);exit 1}
160
168
 
161
169
  # Variable state that should not be accessible to the user code
162
- new-variable -name interpolatedexitcode -visibility private -value $#{@new_resource.convert_boolean_return}
170
+ new-variable -name interpolatedexitcode -visibility private -value $#{new_resource.convert_boolean_return}
163
171
  new-variable -name chefscriptresult -visibility private
164
172
 
165
173
  # Initialize a variable we use to capture $? inside a block
@@ -168,7 +176,7 @@ $global:lastcmdlet = $null
168
176
  # Execute the user's code in a script block --
169
177
  $chefscriptresult =
170
178
  {
171
- #{@new_resource.code}
179
+ #{new_resource.code}
172
180
 
173
181
  # This assignment doesn't affect the block's return value
174
182
  $global:lastcmdlet = $?
@@ -24,36 +24,32 @@ class Chef
24
24
  class Reboot < Chef::Provider
25
25
  provides :reboot
26
26
 
27
- def whyrun_supported?
28
- true
29
- end
30
-
31
27
  def load_current_resource
32
- @current_resource ||= Chef::Resource::Reboot.new(@new_resource.name)
33
- @current_resource.reason(@new_resource.reason)
34
- @current_resource.delay_mins(@new_resource.delay_mins)
35
- @current_resource
28
+ @current_resource ||= Chef::Resource::Reboot.new(new_resource.name)
29
+ current_resource.reason(new_resource.reason)
30
+ current_resource.delay_mins(new_resource.delay_mins)
31
+ current_resource
36
32
  end
37
33
 
38
34
  def request_reboot
39
35
  node.run_context.request_reboot(
40
- :delay_mins => @new_resource.delay_mins,
41
- :reason => @new_resource.reason,
36
+ :delay_mins => new_resource.delay_mins,
37
+ :reason => new_resource.reason,
42
38
  :timestamp => Time.now,
43
- :requested_by => @new_resource.name
39
+ :requested_by => new_resource.name
44
40
  )
45
41
  end
46
42
 
47
43
  def action_request_reboot
48
44
  converge_by("request a system reboot to occur if the run succeeds") do
49
- Chef::Log.warn "Reboot requested:'#{@new_resource.name}'"
45
+ Chef::Log.warn "Reboot requested:'#{new_resource.name}'"
50
46
  request_reboot
51
47
  end
52
48
  end
53
49
 
54
50
  def action_reboot_now
55
51
  converge_by("rebooting the system immediately") do
56
- Chef::Log.warn "Rebooting system immediately, requested by '#{@new_resource.name}'"
52
+ Chef::Log.warn "Rebooting system immediately, requested by '#{new_resource.name}'"
57
53
  request_reboot
58
54
  throw :end_client_run_early
59
55
  end
@@ -61,7 +57,7 @@ class Chef
61
57
 
62
58
  def action_cancel
63
59
  converge_by("cancel any existing end-of-run reboot request") do
64
- Chef::Log.warn "Reboot canceled: '#{@new_resource.name}'"
60
+ Chef::Log.warn "Reboot canceled: '#{new_resource.name}'"
65
61
  node.run_context.cancel_reboot
66
62
  end
67
63
  end