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
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Daniel DeLeo (<dan@kallistec.com>)
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");
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/mixin/command"
20
19
  require "chef/mixin/from_file"
21
20
  require "chef/provider/git"
22
21
  require "chef/provider/subversion"
@@ -29,7 +28,6 @@ class Chef
29
28
 
30
29
  include Chef::DSL::Recipe
31
30
  include Chef::Mixin::FromFile
32
- include Chef::Mixin::Command
33
31
 
34
32
  attr_reader :scm_provider, :release_path, :shared_path, :previous_release_path
35
33
 
@@ -42,18 +40,14 @@ class Chef
42
40
 
43
41
  # @configuration is not used by Deploy, it is only for backwards compat with
44
42
  # chef-deploy or capistrano hooks that might use it to get environment information
45
- @configuration = @new_resource.to_hash
43
+ @configuration = new_resource.to_hash
46
44
  @configuration[:environment] = @configuration[:environment] && @configuration[:environment]["RAILS_ENV"]
47
45
  end
48
46
 
49
- def whyrun_supported?
50
- true
51
- end
52
-
53
47
  def load_current_resource
54
48
  @scm_provider.load_current_resource
55
- @release_path = @new_resource.deploy_to + "/releases/#{release_slug}"
56
- @shared_path = @new_resource.shared_path
49
+ @release_path = new_resource.deploy_to + "/releases/#{release_slug}"
50
+ @shared_path = new_resource.shared_path
57
51
  end
58
52
 
59
53
  def sudo(command, &block)
@@ -62,10 +56,10 @@ class Chef
62
56
 
63
57
  def run(command, &block)
64
58
  exec = execute(command, &block)
65
- exec.user(@new_resource.user) if @new_resource.user
66
- exec.group(@new_resource.group) if @new_resource.group
59
+ exec.user(new_resource.user) if new_resource.user
60
+ exec.group(new_resource.group) if new_resource.group
67
61
  exec.cwd(release_path) unless exec.cwd
68
- exec.environment(@new_resource.environment) unless exec.environment
62
+ exec.environment(new_resource.environment) unless exec.environment
69
63
  converge_by("execute #{command}") do
70
64
  exec
71
65
  end
@@ -78,8 +72,8 @@ class Chef
78
72
  #There is no reason to assume 2 deployments in a single chef run, hence fails in whyrun.
79
73
  end
80
74
 
81
- [ @new_resource.before_migrate, @new_resource.before_symlink,
82
- @new_resource.before_restart, @new_resource.after_restart ].each do |script|
75
+ [ new_resource.before_migrate, new_resource.before_symlink,
76
+ new_resource.before_restart, new_resource.after_restart ].each do |script|
83
77
  requirements.assert(:deploy, :force_deploy) do |a|
84
78
  callback_file = "#{release_path}/#{script}"
85
79
  a.assertion do
@@ -99,7 +93,7 @@ class Chef
99
93
  save_release_state
100
94
  if deployed?(release_path )
101
95
  if current_release?(release_path )
102
- Chef::Log.debug("#{@new_resource} is the latest version")
96
+ Chef::Log.debug("#{new_resource} is the latest version")
103
97
  else
104
98
  rollback_to release_path
105
99
  end
@@ -116,7 +110,7 @@ class Chef
116
110
  converge_by("delete deployed app at #{release_path} prior to force-deploy") do
117
111
  Chef::Log.info("Already deployed app at #{release_path}, forcing.")
118
112
  FileUtils.rm_rf(release_path)
119
- Chef::Log.info("#{@new_resource} forcing deploy of already deployed app at #{release_path}")
113
+ Chef::Log.info("#{new_resource} forcing deploy of already deployed app at #{release_path}")
120
114
  end
121
115
  end
122
116
 
@@ -142,7 +136,7 @@ class Chef
142
136
 
143
137
  releases_to_nuke.each do |i|
144
138
  converge_by("roll back by removing release #{i}") do
145
- Chef::Log.info "#{@new_resource} removing release: #{i}"
139
+ Chef::Log.info "#{new_resource} removing release: #{i}"
146
140
  FileUtils.rm_rf i
147
141
  end
148
142
  release_deleted(i)
@@ -156,21 +150,21 @@ class Chef
156
150
  copy_cached_repo
157
151
  install_gems
158
152
  enforce_ownership
159
- callback(:before_migrate, @new_resource.before_migrate)
153
+ callback(:before_migrate, new_resource.before_migrate)
160
154
  migrate
161
- callback(:before_symlink, @new_resource.before_symlink)
155
+ callback(:before_symlink, new_resource.before_symlink)
162
156
  symlink
163
- callback(:before_restart, @new_resource.before_restart)
157
+ callback(:before_restart, new_resource.before_restart)
164
158
  restart
165
- callback(:after_restart, @new_resource.after_restart)
159
+ callback(:after_restart, new_resource.after_restart)
166
160
  cleanup!
167
- Chef::Log.info "#{@new_resource} deployed to #{@new_resource.deploy_to}"
161
+ Chef::Log.info "#{new_resource} deployed to #{new_resource.deploy_to}"
168
162
  end
169
163
 
170
164
  def rollback
171
- Chef::Log.info "#{@new_resource} rolling back to previous release #{release_path}"
165
+ Chef::Log.info "#{new_resource} rolling back to previous release #{release_path}"
172
166
  symlink
173
- Chef::Log.info "#{@new_resource} restarting with previous release"
167
+ Chef::Log.info "#{new_resource} restarting with previous release"
174
168
  restart
175
169
  end
176
170
 
@@ -178,7 +172,7 @@ class Chef
178
172
  @collection = Chef::ResourceCollection.new
179
173
  case callback_code
180
174
  when Proc
181
- Chef::Log.info "#{@new_resource} running callback #{what}"
175
+ Chef::Log.info "#{new_resource} running callback #{what}"
182
176
  recipe_eval(&callback_code)
183
177
  when String
184
178
  run_callback_from_file("#{release_path}/#{callback_code}")
@@ -190,17 +184,17 @@ class Chef
190
184
  def migrate
191
185
  run_symlinks_before_migrate
192
186
 
193
- if @new_resource.migrate
187
+ if new_resource.migrate
194
188
  enforce_ownership
195
189
 
196
- environment = @new_resource.environment
190
+ environment = new_resource.environment
197
191
  env_info = environment && environment.map do |key_and_val|
198
192
  "#{key_and_val.first}='#{key_and_val.last}'"
199
193
  end.join(" ")
200
194
 
201
- converge_by("execute migration command #{@new_resource.migration_command}") do
202
- Chef::Log.info "#{@new_resource} migrating #{@new_resource.user} with environment #{env_info}"
203
- shell_out!(@new_resource.migration_command, run_options(:cwd => release_path, :log_level => :info))
195
+ converge_by("execute migration command #{new_resource.migration_command}") do
196
+ Chef::Log.info "#{new_resource} migrating #{new_resource.user} with environment #{env_info}"
197
+ shell_out!(new_resource.migration_command, run_options(:cwd => release_path, :log_level => :info))
204
198
  end
205
199
  end
206
200
  end
@@ -209,18 +203,18 @@ class Chef
209
203
  purge_tempfiles_from_current_release
210
204
  link_tempfiles_to_current_release
211
205
  link_current_release_to_production
212
- Chef::Log.info "#{@new_resource} updated symlinks"
206
+ Chef::Log.info "#{new_resource} updated symlinks"
213
207
  end
214
208
 
215
209
  def restart
216
- if restart_cmd = @new_resource.restart_command
210
+ if restart_cmd = new_resource.restart_command
217
211
  if restart_cmd.kind_of?(Proc)
218
- Chef::Log.info("#{@new_resource} restarting app with embedded recipe")
212
+ Chef::Log.info("#{new_resource} restarting app with embedded recipe")
219
213
  recipe_eval(&restart_cmd)
220
214
  else
221
- converge_by("restart app using command #{@new_resource.restart_command}") do
222
- Chef::Log.info("#{@new_resource} restarting app")
223
- shell_out!(@new_resource.restart_command, run_options(:cwd => @new_resource.current_path))
215
+ converge_by("restart app using command #{new_resource.restart_command}") do
216
+ Chef::Log.info("#{new_resource} restarting app")
217
+ shell_out!(new_resource.restart_command, run_options(:cwd => new_resource.current_path))
224
218
  end
225
219
  end
226
220
  end
@@ -231,10 +225,10 @@ class Chef
231
225
  release_created(release_path)
232
226
  end
233
227
 
234
- chop = -1 - @new_resource.keep_releases
228
+ chop = -1 - new_resource.keep_releases
235
229
  all_releases[0..chop].each do |old_release|
236
230
  converge_by("remove old release #{old_release}") do
237
- Chef::Log.info "#{@new_resource} removing old release #{old_release}"
231
+ Chef::Log.info "#{new_resource} removing old release #{old_release}"
238
232
  FileUtils.rm_rf(old_release)
239
233
  end
240
234
  release_deleted(old_release)
@@ -242,11 +236,11 @@ class Chef
242
236
  end
243
237
 
244
238
  def all_releases
245
- Dir.glob(Chef::Util::PathHelper.escape_glob_dir(@new_resource.deploy_to) + "/releases/*").sort
239
+ Dir.glob(Chef::Util::PathHelper.escape_glob_dir(new_resource.deploy_to) + "/releases/*").sort
246
240
  end
247
241
 
248
242
  def update_cached_repo
249
- if @new_resource.svn_force_export
243
+ if new_resource.svn_force_export
250
244
  # TODO assertion, non-recoverable - @scm_provider must be svn if force_export?
251
245
  svn_force_export
252
246
  else
@@ -259,78 +253,78 @@ class Chef
259
253
  end
260
254
 
261
255
  def svn_force_export
262
- Chef::Log.info "#{@new_resource} exporting source repository"
256
+ Chef::Log.info "#{new_resource} exporting source repository"
263
257
  @scm_provider.run_action(:force_export)
264
258
  end
265
259
 
266
260
  def copy_cached_repo
267
- target_dir_path = @new_resource.deploy_to + "/releases"
261
+ target_dir_path = new_resource.deploy_to + "/releases"
268
262
  converge_by("deploy from repo to #{target_dir_path} ") do
269
263
  FileUtils.rm_rf(release_path) if ::File.exist?(release_path)
270
264
  FileUtils.mkdir_p(target_dir_path)
271
- FileUtils.cp_r(::File.join(@new_resource.destination, "."), release_path, :preserve => true)
272
- Chef::Log.info "#{@new_resource} copied the cached checkout to #{release_path}"
265
+ FileUtils.cp_r(::File.join(new_resource.destination, "."), release_path, :preserve => true)
266
+ Chef::Log.info "#{new_resource} copied the cached checkout to #{release_path}"
273
267
  end
274
268
  end
275
269
 
276
270
  def enforce_ownership
277
- converge_by("force ownership of #{@new_resource.deploy_to} to #{@new_resource.group}:#{@new_resource.user}") do
278
- FileUtils.chown_R(@new_resource.user, @new_resource.group, @new_resource.deploy_to, :force => true)
279
- Chef::Log.info("#{@new_resource} set user to #{@new_resource.user}") if @new_resource.user
280
- Chef::Log.info("#{@new_resource} set group to #{@new_resource.group}") if @new_resource.group
271
+ converge_by("force ownership of #{new_resource.deploy_to} to #{new_resource.group}:#{new_resource.user}") do
272
+ FileUtils.chown_R(new_resource.user, new_resource.group, new_resource.deploy_to, :force => true)
273
+ Chef::Log.info("#{new_resource} set user to #{new_resource.user}") if new_resource.user
274
+ Chef::Log.info("#{new_resource} set group to #{new_resource.group}") if new_resource.group
281
275
  end
282
276
  end
283
277
 
284
278
  def verify_directories_exist
285
- create_dir_unless_exists(@new_resource.deploy_to)
286
- create_dir_unless_exists(@new_resource.shared_path)
279
+ create_dir_unless_exists(new_resource.deploy_to)
280
+ create_dir_unless_exists(new_resource.shared_path)
287
281
  end
288
282
 
289
283
  def link_current_release_to_production
290
- converge_by(["remove existing link at #{@new_resource.current_path}",
291
- "link release #{release_path} into production at #{@new_resource.current_path}"]) do
292
- FileUtils.rm_f(@new_resource.current_path)
284
+ converge_by(["remove existing link at #{new_resource.current_path}",
285
+ "link release #{release_path} into production at #{new_resource.current_path}"]) do
286
+ FileUtils.rm_f(new_resource.current_path)
293
287
  begin
294
- FileUtils.ln_sf(release_path, @new_resource.current_path)
288
+ FileUtils.ln_sf(release_path, new_resource.current_path)
295
289
  rescue => e
296
290
  raise Chef::Exceptions::FileNotFound.new("Cannot symlink current release to production: #{e.message}")
297
291
  end
298
- Chef::Log.info "#{@new_resource} linked release #{release_path} into production at #{@new_resource.current_path}"
292
+ Chef::Log.info "#{new_resource} linked release #{release_path} into production at #{new_resource.current_path}"
299
293
  end
300
294
  enforce_ownership
301
295
  end
302
296
 
303
297
  def run_symlinks_before_migrate
304
- links_info = @new_resource.symlink_before_migrate.map { |src, dst| "#{src} => #{dst}" }.join(", ")
298
+ links_info = new_resource.symlink_before_migrate.map { |src, dst| "#{src} => #{dst}" }.join(", ")
305
299
  converge_by("make pre-migration symlinks: #{links_info}") do
306
- @new_resource.symlink_before_migrate.each do |src, dest|
300
+ new_resource.symlink_before_migrate.each do |src, dest|
307
301
  begin
308
- FileUtils.ln_sf(@new_resource.shared_path + "/#{src}", release_path + "/#{dest}")
302
+ FileUtils.ln_sf(new_resource.shared_path + "/#{src}", release_path + "/#{dest}")
309
303
  rescue => e
310
- raise Chef::Exceptions::FileNotFound.new("Cannot symlink #{@new_resource.shared_path}/#{src} to #{release_path}/#{dest} before migrate: #{e.message}")
304
+ raise Chef::Exceptions::FileNotFound.new("Cannot symlink #{new_resource.shared_path}/#{src} to #{release_path}/#{dest} before migrate: #{e.message}")
311
305
  end
312
306
  end
313
- Chef::Log.info "#{@new_resource} made pre-migration symlinks"
307
+ Chef::Log.info "#{new_resource} made pre-migration symlinks"
314
308
  end
315
309
  end
316
310
 
317
311
  def link_tempfiles_to_current_release
318
- dirs_info = @new_resource.create_dirs_before_symlink.join(",")
319
- @new_resource.create_dirs_before_symlink.each do |dir|
312
+ dirs_info = new_resource.create_dirs_before_symlink.join(",")
313
+ new_resource.create_dirs_before_symlink.each do |dir|
320
314
  create_dir_unless_exists(release_path + "/#{dir}")
321
315
  end
322
- Chef::Log.info("#{@new_resource} created directories before symlinking: #{dirs_info}")
316
+ Chef::Log.info("#{new_resource} created directories before symlinking: #{dirs_info}")
323
317
 
324
- links_info = @new_resource.symlinks.map { |src, dst| "#{src} => #{dst}" }.join(", ")
318
+ links_info = new_resource.symlinks.map { |src, dst| "#{src} => #{dst}" }.join(", ")
325
319
  converge_by("link shared paths into current release: #{links_info}") do
326
- @new_resource.symlinks.each do |src, dest|
320
+ new_resource.symlinks.each do |src, dest|
327
321
  begin
328
- FileUtils.ln_sf(::File.join(@new_resource.shared_path, src), ::File.join(release_path, dest))
322
+ FileUtils.ln_sf(::File.join(new_resource.shared_path, src), ::File.join(release_path, dest))
329
323
  rescue => e
330
- raise Chef::Exceptions::FileNotFound.new("Cannot symlink shared data #{::File.join(@new_resource.shared_path, src)} to #{::File.join(release_path, dest)}: #{e.message}")
324
+ raise Chef::Exceptions::FileNotFound.new("Cannot symlink shared data #{::File.join(new_resource.shared_path, src)} to #{::File.join(release_path, dest)}: #{e.message}")
331
325
  end
332
326
  end
333
- Chef::Log.info("#{@new_resource} linked shared paths into current release: #{links_info}")
327
+ Chef::Log.info("#{new_resource} linked shared paths into current release: #{links_info}")
334
328
  end
335
329
  run_symlinks_before_migrate
336
330
  enforce_ownership
@@ -340,10 +334,10 @@ class Chef
340
334
  end
341
335
 
342
336
  def purge_tempfiles_from_current_release
343
- log_info = @new_resource.purge_before_symlink.join(", ")
337
+ log_info = new_resource.purge_before_symlink.join(", ")
344
338
  converge_by("purge directories in checkout #{log_info}") do
345
- @new_resource.purge_before_symlink.each { |dir| FileUtils.rm_rf(release_path + "/#{dir}") }
346
- Chef::Log.info("#{@new_resource} purged directories in checkout #{log_info}")
339
+ new_resource.purge_before_symlink.each { |dir| FileUtils.rm_rf(release_path + "/#{dir}") }
340
+ Chef::Log.info("#{new_resource} purged directories in checkout #{log_info}")
347
341
  end
348
342
  end
349
343
 
@@ -391,10 +385,10 @@ class Chef
391
385
  end
392
386
 
393
387
  def run_options(run_opts = {})
394
- run_opts[:user] = @new_resource.user if @new_resource.user
395
- run_opts[:group] = @new_resource.group if @new_resource.group
396
- run_opts[:environment] = @new_resource.environment if @new_resource.environment
397
- run_opts[:log_tag] = @new_resource.to_s
388
+ run_opts[:user] = new_resource.user if new_resource.user
389
+ run_opts[:group] = new_resource.group if new_resource.group
390
+ run_opts[:environment] = new_resource.environment if new_resource.environment
391
+ run_opts[:log_tag] = new_resource.to_s
398
392
  run_opts[:log_level] ||= :debug
399
393
  if run_opts[:log_level] == :info
400
394
  if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info?
@@ -405,7 +399,7 @@ class Chef
405
399
  end
406
400
 
407
401
  def run_callback_from_file(callback_file)
408
- Chef::Log.info "#{@new_resource} queueing checkdeploy hook #{callback_file}"
402
+ Chef::Log.info "#{new_resource} queueing checkdeploy hook #{callback_file}"
409
403
  recipe_eval do
410
404
  Dir.chdir(release_path) do
411
405
  from_file(callback_file) if ::File.exist?(callback_file)
@@ -415,20 +409,20 @@ class Chef
415
409
 
416
410
  def create_dir_unless_exists(dir)
417
411
  if ::File.directory?(dir)
418
- Chef::Log.debug "#{@new_resource} not creating #{dir} because it already exists"
412
+ Chef::Log.debug "#{new_resource} not creating #{dir} because it already exists"
419
413
  return false
420
414
  end
421
415
  converge_by("create new directory #{dir}") do
422
416
  begin
423
417
  FileUtils.mkdir_p(dir)
424
- Chef::Log.debug "#{@new_resource} created directory #{dir}"
425
- if @new_resource.user
426
- FileUtils.chown(@new_resource.user, nil, dir)
427
- Chef::Log.debug("#{@new_resource} set user to #{@new_resource.user} for #{dir}")
418
+ Chef::Log.debug "#{new_resource} created directory #{dir}"
419
+ if new_resource.user
420
+ FileUtils.chown(new_resource.user, nil, dir)
421
+ Chef::Log.debug("#{new_resource} set user to #{new_resource.user} for #{dir}")
428
422
  end
429
- if @new_resource.group
430
- FileUtils.chown(nil, @new_resource.group, dir)
431
- Chef::Log.debug("#{@new_resource} set group to #{@new_resource.group} for #{dir}")
423
+ if new_resource.group
424
+ FileUtils.chown(nil, new_resource.group, dir)
425
+ Chef::Log.debug("#{new_resource} set group to #{new_resource.group} for #{dir}")
432
426
  end
433
427
  rescue => e
434
428
  raise Chef::Exceptions::FileNotFound.new("Cannot create directory #{dir}: #{e.message}")
@@ -439,7 +433,7 @@ class Chef
439
433
  def with_rollback_on_error
440
434
  yield
441
435
  rescue ::Exception => e
442
- if @new_resource.rollback_on_error
436
+ if new_resource.rollback_on_error
443
437
  Chef::Log.warn "Error on deploying #{release_path}: #{e.message}"
444
438
  failed_release = release_path
445
439
 
@@ -458,8 +452,8 @@ class Chef
458
452
  end
459
453
 
460
454
  def save_release_state
461
- if ::File.exists?(@new_resource.current_path)
462
- release = ::File.readlink(@new_resource.current_path)
455
+ if ::File.exists?(new_resource.current_path)
456
+ release = ::File.readlink(new_resource.current_path)
463
457
  @previous_release_path = release if ::File.exists?(release)
464
458
  end
465
459
  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");
@@ -29,17 +29,13 @@ class Chef
29
29
 
30
30
  provides :directory
31
31
 
32
- def whyrun_supported?
33
- true
34
- end
35
-
36
32
  def load_current_resource
37
- @current_resource = Chef::Resource::Directory.new(@new_resource.name)
38
- @current_resource.path(@new_resource.path)
39
- if ::File.exists?(@current_resource.path) && @action != :create_if_missing
40
- load_resource_attributes_from_file(@current_resource)
33
+ @current_resource = Chef::Resource::Directory.new(new_resource.name)
34
+ current_resource.path(new_resource.path)
35
+ if ::File.exists?(current_resource.path) && @action != :create_if_missing
36
+ load_resource_attributes_from_file(current_resource)
41
37
  end
42
- @current_resource
38
+ current_resource
43
39
  end
44
40
 
45
41
  def define_resource_requirements
@@ -49,9 +45,9 @@ class Chef
49
45
  requirements.assert(:create) do |a|
50
46
  # Make sure the parent dir exists, or else fail.
51
47
  # for why run, print a message explaining the potential error.
52
- parent_directory = ::File.dirname(@new_resource.path)
48
+ parent_directory = ::File.dirname(new_resource.path)
53
49
  a.assertion do
54
- if @new_resource.recursive
50
+ if new_resource.recursive
55
51
  does_parent_exist = lambda do |base_dir|
56
52
  base_dir = ::File.dirname(base_dir)
57
53
  if ::File.exist?(base_dir)
@@ -60,20 +56,20 @@ class Chef
60
56
  does_parent_exist.call(base_dir)
61
57
  end
62
58
  end
63
- does_parent_exist.call(@new_resource.path)
59
+ does_parent_exist.call(new_resource.path)
64
60
  else
65
61
  ::File.directory?(parent_directory)
66
62
  end
67
63
  end
68
- a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist, cannot create #{@new_resource.path}")
64
+ a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist, cannot create #{new_resource.path}")
69
65
  a.whyrun("Assuming directory #{parent_directory} would have been created")
70
66
  end
71
67
 
72
68
  requirements.assert(:create) do |a|
73
- parent_directory = ::File.dirname(@new_resource.path)
69
+ parent_directory = ::File.dirname(new_resource.path)
74
70
  a.assertion do
75
- if @new_resource.recursive
76
- # find the lowest-level directory in @new_resource.path that already exists
71
+ if new_resource.recursive
72
+ # find the lowest-level directory in new_resource.path that already exists
77
73
  # make sure we have write permissions to that directory
78
74
  is_parent_writable = lambda do |base_dir|
79
75
  base_dir = ::File.dirname(base_dir)
@@ -89,7 +85,7 @@ class Chef
89
85
  is_parent_writable.call(base_dir)
90
86
  end
91
87
  end
92
- is_parent_writable.call(@new_resource.path)
88
+ is_parent_writable.call(new_resource.path)
93
89
  else
94
90
  # in why run mode & parent directory does not exist no permissions check is required
95
91
  # If not in why run, permissions must be valid and we rely on prior assertion that dir exists
@@ -97,7 +93,7 @@ class Chef
97
93
  if Chef::FileAccessControl.writable?(parent_directory)
98
94
  true
99
95
  elsif Chef::Util::PathHelper.is_sip_path?(parent_directory, node)
100
- Chef::Util::PathHelper.writable_sip_path?(@new_resource.path)
96
+ Chef::Util::PathHelper.writable_sip_path?(new_resource.path)
101
97
  else
102
98
  false
103
99
  end
@@ -107,18 +103,18 @@ class Chef
107
103
  end
108
104
  end
109
105
  a.failure_message(Chef::Exceptions::InsufficientPermissions,
110
- "Cannot create #{@new_resource} at #{@new_resource.path} due to insufficient permissions")
106
+ "Cannot create #{new_resource} at #{new_resource.path} due to insufficient permissions")
111
107
  end
112
108
 
113
109
  requirements.assert(:delete) do |a|
114
110
  a.assertion do
115
- if ::File.exists?(@new_resource.path)
116
- ::File.directory?(@new_resource.path) && Chef::FileAccessControl.writable?(@new_resource.path)
111
+ if ::File.exists?(new_resource.path)
112
+ ::File.directory?(new_resource.path) && Chef::FileAccessControl.writable?(new_resource.path)
117
113
  else
118
114
  true
119
115
  end
120
116
  end
121
- a.failure_message(RuntimeError, "Cannot delete #{@new_resource} at #{@new_resource.path}!")
117
+ a.failure_message(RuntimeError, "Cannot delete #{new_resource} at #{new_resource.path}!")
122
118
  # No why-run handling here:
123
119
  # * if we don't have permissions, this is unlikely to be changed earlier in the run
124
120
  # * if the target is a file (not a dir), there's no reasonable path by which this would have been changed
@@ -126,32 +122,32 @@ class Chef
126
122
  end
127
123
 
128
124
  def action_create
129
- unless ::File.exists?(@new_resource.path)
130
- converge_by("create new directory #{@new_resource.path}") do
131
- if @new_resource.recursive == true
132
- ::FileUtils.mkdir_p(@new_resource.path)
125
+ unless ::File.exists?(new_resource.path)
126
+ converge_by("create new directory #{new_resource.path}") do
127
+ if new_resource.recursive == true
128
+ ::FileUtils.mkdir_p(new_resource.path)
133
129
  else
134
- ::Dir.mkdir(@new_resource.path)
130
+ ::Dir.mkdir(new_resource.path)
135
131
  end
136
- Chef::Log.info("#{@new_resource} created directory #{@new_resource.path}")
132
+ Chef::Log.info("#{new_resource} created directory #{new_resource.path}")
137
133
  end
138
134
  end
139
135
  do_acl_changes
140
136
  do_selinux(true)
141
- load_resource_attributes_from_file(@new_resource)
137
+ load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
142
138
  end
143
139
 
144
140
  def action_delete
145
- if ::File.exists?(@new_resource.path)
146
- converge_by("delete existing directory #{@new_resource.path}") do
147
- if @new_resource.recursive == true
141
+ if ::File.exists?(new_resource.path)
142
+ converge_by("delete existing directory #{new_resource.path}") do
143
+ if new_resource.recursive == true
148
144
  # we don't use rm_rf here because it masks all errors, including
149
145
  # IO errors or permission errors that would prvent the deletion
150
- FileUtils.rm_r(@new_resource.path)
151
- Chef::Log.info("#{@new_resource} deleted #{@new_resource.path} recursively")
146
+ FileUtils.rm_r(new_resource.path)
147
+ Chef::Log.info("#{new_resource} deleted #{new_resource.path} recursively")
152
148
  else
153
- ::Dir.delete(@new_resource.path)
154
- Chef::Log.info("#{@new_resource} deleted #{@new_resource.path}")
149
+ ::Dir.delete(new_resource.path)
150
+ Chef::Log.info("#{new_resource} deleted #{new_resource.path}")
155
151
  end
156
152
  end
157
153
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Edwards (<adamed@chef.io>)
3
3
  #
4
- # Copyright:: Copyright 2014-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2014-2017, Chef Software Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ class Chef
29
29
  super
30
30
  @new_resource = new_resource
31
31
  @module_name = new_resource.module_name
32
+ @module_version = new_resource.module_version
32
33
  @reboot_resource = nil
33
34
  end
34
35
 
@@ -44,10 +45,6 @@ class Chef
44
45
  def load_current_resource
45
46
  end
46
47
 
47
- def whyrun_supported?
48
- true
49
- end
50
-
51
48
  def define_resource_requirements
52
49
  requirements.assert(:run) do |a|
53
50
  a.assertion { supports_dsc_invoke_resource? }
@@ -65,6 +62,13 @@ class Chef
65
62
  a.whyrun err + ["Assuming a previous resource sets the RefreshMode."]
66
63
  a.block_action!
67
64
  end
65
+ requirements.assert(:run) do |a|
66
+ a.assertion { module_usage_valid? }
67
+ err = ["module_name must be supplied along with module_version."]
68
+ a.failure_message Chef::Exceptions::DSCModuleNameMissing,
69
+ err
70
+ a.block_action!
71
+ end
68
72
  end
69
73
 
70
74
  protected
@@ -92,6 +96,10 @@ class Chef
92
96
  Chef::Platform.supports_refresh_mode_enabled?(node)
93
97
  end
94
98
 
99
+ def module_usage_valid?
100
+ !(!@module_name && @module_version)
101
+ end
102
+
95
103
  def generate_description
96
104
  @converge_description
97
105
  end
@@ -148,10 +156,14 @@ class Chef
148
156
  end
149
157
  end
150
158
 
159
+ def module_info_object
160
+ @module_version.nil? ? module_name : "@{ModuleName='#{module_name}';ModuleVersion='#{@module_version}'}"
161
+ end
162
+
151
163
  def invoke_resource(method, output_format = :object)
152
- properties = translate_type(@new_resource.properties)
153
- switches = "-Method #{method} -Name #{@new_resource.resource}"\
154
- " -Property #{properties} -Module #{module_name} -Verbose"
164
+ properties = translate_type(new_resource.properties)
165
+ switches = "-Method #{method} -Name #{new_resource.resource}"\
166
+ " -Property #{properties} -Module #{module_info_object} -Verbose"
155
167
  cmdlet = Chef::Util::Powershell::Cmdlet.new(
156
168
  node,
157
169
  "Invoke-DscResource #{switches}",
@@ -172,15 +184,15 @@ class Chef
172
184
 
173
185
  def create_reboot_resource
174
186
  @reboot_resource = Chef::Resource::Reboot.new(
175
- "Reboot for #{@new_resource.name}",
187
+ "Reboot for #{new_resource.name}",
176
188
  run_context
177
189
  ).tap do |r|
178
- r.reason("Reboot for #{@new_resource.resource}.")
190
+ r.reason("Reboot for #{new_resource.resource}.")
179
191
  end
180
192
  end
181
193
 
182
194
  def reboot_if_required
183
- reboot_action = @new_resource.reboot_action
195
+ reboot_action = new_resource.reboot_action
184
196
  unless @reboot_resource.nil?
185
197
  case reboot_action
186
198
  when :nothing
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Edwards (<adamed@chef.io>)
3
3
  #
4
- # Copyright:: Copyright 2014-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2014-2017, Chef Software Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -58,10 +58,6 @@ class Chef
58
58
  end
59
59
  end
60
60
 
61
- def whyrun_supported?
62
- true
63
- end
64
-
65
61
  def define_resource_requirements
66
62
  requirements.assert(:run) do |a|
67
63
  err = [