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
  # Author:: Nuo Yan <nuo@chef.io>
3
3
  # Author:: Bryan McLellan <btm@loftninjas.org>
4
4
  # Author:: Seth Chisamore <schisamo@chef.io>
5
- # Copyright:: Copyright 2010-2016, Chef Software Inc.
5
+ # Copyright:: Copyright 2010-2017, Chef Software Inc.
6
6
  # License:: Apache License, Version 2.0
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -49,10 +49,6 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
49
49
 
50
50
  SERVICE_RIGHT = "SeServiceLogonRight"
51
51
 
52
- def whyrun_supported?
53
- false
54
- end
55
-
56
52
  def load_current_resource
57
53
  @current_resource = Chef::Resource::WindowsService.new(@new_resource.name)
58
54
  @current_resource.service_name(@new_resource.service_name)
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.com>)
3
3
  # Author:: Davide Cavalca (<dcavalca@fb.com>)
4
- # Copyright:: Copyright 2008-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,15 +17,12 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "chef/mixin/command"
21
20
  require "chef/provider"
22
21
 
23
22
  class Chef
24
23
  class Provider
25
24
  class Service < Chef::Provider
26
25
 
27
- include Chef::Mixin::Command
28
-
29
26
  def supports
30
27
  @supports ||= new_resource.supports.dup
31
28
  end
@@ -35,10 +32,6 @@ class Chef
35
32
  @enabled = nil
36
33
  end
37
34
 
38
- def whyrun_supported?
39
- true
40
- end
41
-
42
35
  def load_current_resource
43
36
  supports[:status] = false if supports[:status].nil?
44
37
  supports[:reload] = false if supports[:reload].nil?
@@ -51,21 +44,21 @@ class Chef
51
44
  # XXX?: the #nil? check below will likely fail if this is a cloned resource or if
52
45
  # we just run multiple actions.
53
46
  def load_new_resource_state
54
- if @new_resource.enabled.nil?
55
- @new_resource.enabled(@current_resource.enabled)
47
+ if new_resource.enabled.nil?
48
+ new_resource.enabled(current_resource.enabled)
56
49
  end
57
- if @new_resource.running.nil?
58
- @new_resource.running(@current_resource.running)
50
+ if new_resource.running.nil?
51
+ new_resource.running(current_resource.running)
59
52
  end
60
- if @new_resource.masked.nil?
61
- @new_resource.masked(@current_resource.masked)
53
+ if new_resource.masked.nil?
54
+ new_resource.masked(current_resource.masked)
62
55
  end
63
56
  end
64
57
 
65
58
  # subclasses should override this if they do implement user services
66
59
  def user_services_requirements
67
60
  requirements.assert(:all_actions) do |a|
68
- a.assertion { @new_resource.user.nil? }
61
+ a.assertion { new_resource.user.nil? }
69
62
  a.failure_message Chef::Exceptions::UnsupportedAction, "#{self} does not support user services"
70
63
  end
71
64
  end
@@ -76,7 +69,7 @@ class Chef
76
69
 
77
70
  def define_resource_requirements
78
71
  requirements.assert(:reload) do |a|
79
- a.assertion { supports[:reload] || @new_resource.reload_command }
72
+ a.assertion { supports[:reload] || new_resource.reload_command }
80
73
  a.failure_message Chef::Exceptions::UnsupportedAction, "#{self} does not support :reload"
81
74
  # if a service is not declared to support reload, that won't
82
75
  # typically change during the course of a run - so no whyrun
@@ -85,97 +78,97 @@ class Chef
85
78
  end
86
79
 
87
80
  def action_enable
88
- if @current_resource.enabled
89
- Chef::Log.debug("#{@new_resource} already enabled - nothing to do")
81
+ if current_resource.enabled
82
+ Chef::Log.debug("#{new_resource} already enabled - nothing to do")
90
83
  else
91
- converge_by("enable service #{@new_resource}") do
84
+ converge_by("enable service #{new_resource}") do
92
85
  enable_service
93
- Chef::Log.info("#{@new_resource} enabled")
86
+ Chef::Log.info("#{new_resource} enabled")
94
87
  end
95
88
  end
96
89
  load_new_resource_state
97
- @new_resource.enabled(true)
90
+ new_resource.enabled(true)
98
91
  end
99
92
 
100
93
  def action_disable
101
- if @current_resource.enabled
102
- converge_by("disable service #{@new_resource}") do
94
+ if current_resource.enabled
95
+ converge_by("disable service #{new_resource}") do
103
96
  disable_service
104
- Chef::Log.info("#{@new_resource} disabled")
97
+ Chef::Log.info("#{new_resource} disabled")
105
98
  end
106
99
  else
107
- Chef::Log.debug("#{@new_resource} already disabled - nothing to do")
100
+ Chef::Log.debug("#{new_resource} already disabled - nothing to do")
108
101
  end
109
102
  load_new_resource_state
110
- @new_resource.enabled(false)
103
+ new_resource.enabled(false)
111
104
  end
112
105
 
113
106
  def action_mask
114
- if @current_resource.masked
115
- Chef::Log.debug("#{@new_resource} already masked - nothing to do")
107
+ if current_resource.masked
108
+ Chef::Log.debug("#{new_resource} already masked - nothing to do")
116
109
  else
117
- converge_by("mask service #{@new_resource}") do
110
+ converge_by("mask service #{new_resource}") do
118
111
  mask_service
119
- Chef::Log.info("#{@new_resource} masked")
112
+ Chef::Log.info("#{new_resource} masked")
120
113
  end
121
114
  end
122
115
  load_new_resource_state
123
- @new_resource.masked(true)
116
+ new_resource.masked(true)
124
117
  end
125
118
 
126
119
  def action_unmask
127
- if @current_resource.masked
128
- converge_by("unmask service #{@new_resource}") do
120
+ if current_resource.masked
121
+ converge_by("unmask service #{new_resource}") do
129
122
  unmask_service
130
- Chef::Log.info("#{@new_resource} unmasked")
123
+ Chef::Log.info("#{new_resource} unmasked")
131
124
  end
132
125
  else
133
- Chef::Log.debug("#{@new_resource} already unmasked - nothing to do")
126
+ Chef::Log.debug("#{new_resource} already unmasked - nothing to do")
134
127
  end
135
128
  load_new_resource_state
136
- @new_resource.masked(false)
129
+ new_resource.masked(false)
137
130
  end
138
131
 
139
132
  def action_start
140
- unless @current_resource.running
141
- converge_by("start service #{@new_resource}") do
133
+ unless current_resource.running
134
+ converge_by("start service #{new_resource}") do
142
135
  start_service
143
- Chef::Log.info("#{@new_resource} started")
136
+ Chef::Log.info("#{new_resource} started")
144
137
  end
145
138
  else
146
- Chef::Log.debug("#{@new_resource} already running - nothing to do")
139
+ Chef::Log.debug("#{new_resource} already running - nothing to do")
147
140
  end
148
141
  load_new_resource_state
149
- @new_resource.running(true)
142
+ new_resource.running(true)
150
143
  end
151
144
 
152
145
  def action_stop
153
- if @current_resource.running
154
- converge_by("stop service #{@new_resource}") do
146
+ if current_resource.running
147
+ converge_by("stop service #{new_resource}") do
155
148
  stop_service
156
- Chef::Log.info("#{@new_resource} stopped")
149
+ Chef::Log.info("#{new_resource} stopped")
157
150
  end
158
151
  else
159
- Chef::Log.debug("#{@new_resource} already stopped - nothing to do")
152
+ Chef::Log.debug("#{new_resource} already stopped - nothing to do")
160
153
  end
161
154
  load_new_resource_state
162
- @new_resource.running(false)
155
+ new_resource.running(false)
163
156
  end
164
157
 
165
158
  def action_restart
166
- converge_by("restart service #{@new_resource}") do
159
+ converge_by("restart service #{new_resource}") do
167
160
  restart_service
168
- Chef::Log.info("#{@new_resource} restarted")
161
+ Chef::Log.info("#{new_resource} restarted")
169
162
  end
170
163
  load_new_resource_state
171
- @new_resource.running(true)
164
+ new_resource.running(true)
172
165
  end
173
166
 
174
167
  def action_reload
175
- if @current_resource.running
176
- converge_by("reload service #{@new_resource}") do
168
+ if current_resource.running
169
+ converge_by("reload service #{new_resource}") do
177
170
  reload_service
178
- Chef::Log.info("#{@new_resource} reloaded")
171
+ Chef::Log.info("#{new_resource} reloaded")
179
172
  end
180
173
  end
181
174
  load_new_resource_state
@@ -216,17 +209,17 @@ class Chef
216
209
  protected
217
210
 
218
211
  def default_init_command
219
- if @new_resource.init_command
220
- @new_resource.init_command
221
- elsif self.instance_variable_defined?(:@init_command)
212
+ if new_resource.init_command
213
+ new_resource.init_command
214
+ elsif instance_variable_defined?(:@init_command)
222
215
  @init_command
223
216
  end
224
217
  end
225
218
 
226
219
  def custom_command_for_action?(action)
227
220
  method_name = "#{action}_command".to_sym
228
- @new_resource.respond_to?(method_name) &&
229
- !!@new_resource.send(method_name)
221
+ new_resource.respond_to?(method_name) &&
222
+ !!new_resource.send(method_name)
230
223
  end
231
224
 
232
225
  module ServicePriorityInit
@@ -252,7 +245,7 @@ class Chef
252
245
  Chef.set_provider_priority_array :service, [ Systemd, Arch ], platform_family: "arch"
253
246
  Chef.set_provider_priority_array :service, [ Systemd, Gentoo ], platform_family: "gentoo"
254
247
  Chef.set_provider_priority_array :service, [ Systemd, Upstart, Insserv, Debian, Invokercd ], platform_family: "debian"
255
- Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ], platform_family: %w{rhel fedora suse}
248
+ Chef.set_provider_priority_array :service, [ Systemd, Insserv, Redhat ], platform_family: %w{rhel fedora suse amazon}
256
249
  end
257
250
  end
258
251
  end
@@ -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");
@@ -20,7 +20,6 @@
20
20
 
21
21
  require "chef/log"
22
22
  require "chef/provider"
23
- require "chef/mixin/command"
24
23
  require "chef-config/mixin/fuzzy_hostname_matcher"
25
24
  require "fileutils"
26
25
 
@@ -32,19 +31,14 @@ class Chef
32
31
 
33
32
  SVN_INFO_PATTERN = /^([\w\s]+): (.+)$/
34
33
 
35
- include Chef::Mixin::Command
36
34
  include ChefConfig::Mixin::FuzzyHostnameMatcher
37
35
 
38
- def whyrun_supported?
39
- true
40
- end
41
-
42
36
  def load_current_resource
43
- @current_resource = Chef::Resource::Subversion.new(@new_resource.name)
37
+ @current_resource = Chef::Resource::Subversion.new(new_resource.name)
44
38
 
45
- unless [:export, :force_export].include?(Array(@new_resource.action).first)
39
+ unless [:export, :force_export].include?(Array(new_resource.action).first)
46
40
  if current_revision = find_current_revision
47
- @current_resource.revision current_revision
41
+ current_resource.revision current_revision
48
42
  end
49
43
  end
50
44
  end
@@ -53,21 +47,21 @@ class Chef
53
47
  requirements.assert(:all_actions) do |a|
54
48
  # Make sure the parent dir exists, or else fail.
55
49
  # for why run, print a message explaining the potential error.
56
- parent_directory = ::File.dirname(@new_resource.destination)
50
+ parent_directory = ::File.dirname(new_resource.destination)
57
51
  a.assertion { ::File.directory?(parent_directory) }
58
52
  a.failure_message(Chef::Exceptions::MissingParentDirectory,
59
- "Cannot clone #{@new_resource} to #{@new_resource.destination}, the enclosing directory #{parent_directory} does not exist")
53
+ "Cannot clone #{new_resource} to #{new_resource.destination}, the enclosing directory #{parent_directory} does not exist")
60
54
  a.whyrun("Directory #{parent_directory} does not exist, assuming it would have been created")
61
55
  end
62
56
  end
63
57
 
64
58
  def action_checkout
65
59
  if target_dir_non_existent_or_empty?
66
- converge_by("perform checkout of #{@new_resource.repository} into #{@new_resource.destination}") do
60
+ converge_by("perform checkout of #{new_resource.repository} into #{new_resource.destination}") do
67
61
  shell_out!(checkout_command, run_options)
68
62
  end
69
63
  else
70
- Chef::Log.debug "#{@new_resource} checkout destination #{@new_resource.destination} already exists or is a non-empty directory - nothing to do"
64
+ Chef::Log.debug "#{new_resource} checkout destination #{new_resource.destination} already exists or is a non-empty directory - nothing to do"
71
65
  end
72
66
  end
73
67
 
@@ -75,25 +69,25 @@ class Chef
75
69
  if target_dir_non_existent_or_empty?
76
70
  action_force_export
77
71
  else
78
- Chef::Log.debug "#{@new_resource} export destination #{@new_resource.destination} already exists or is a non-empty directory - nothing to do"
72
+ Chef::Log.debug "#{new_resource} export destination #{new_resource.destination} already exists or is a non-empty directory - nothing to do"
79
73
  end
80
74
  end
81
75
 
82
76
  def action_force_export
83
- converge_by("export #{@new_resource.repository} into #{@new_resource.destination}") do
77
+ converge_by("export #{new_resource.repository} into #{new_resource.destination}") do
84
78
  shell_out!(export_command, run_options)
85
79
  end
86
80
  end
87
81
 
88
82
  def action_sync
89
83
  assert_target_directory_valid!
90
- if ::File.exist?(::File.join(@new_resource.destination, ".svn"))
84
+ if ::File.exist?(::File.join(new_resource.destination, ".svn"))
91
85
  current_rev = find_current_revision
92
- Chef::Log.debug "#{@new_resource} current revision: #{current_rev} target revision: #{revision_int}"
86
+ Chef::Log.debug "#{new_resource} current revision: #{current_rev} target revision: #{revision_int}"
93
87
  unless current_revision_matches_target_revision?
94
- converge_by("sync #{@new_resource.destination} from #{@new_resource.repository}") do
88
+ converge_by("sync #{new_resource.destination} from #{new_resource.repository}") do
95
89
  shell_out!(sync_command, run_options)
96
- Chef::Log.info "#{@new_resource} updated to revision: #{revision_int}"
90
+ Chef::Log.info "#{new_resource} updated to revision: #{revision_int}"
97
91
  end
98
92
  end
99
93
  else
@@ -102,24 +96,24 @@ class Chef
102
96
  end
103
97
 
104
98
  def sync_command
105
- c = scm :update, @new_resource.svn_arguments, verbose, authentication, proxy, "-r#{revision_int}", @new_resource.destination
106
- Chef::Log.debug "#{@new_resource} updated working copy #{@new_resource.destination} to revision #{@new_resource.revision}"
99
+ c = scm :update, new_resource.svn_arguments, verbose, authentication, proxy, "-r#{revision_int}", new_resource.destination
100
+ Chef::Log.debug "#{new_resource} updated working copy #{new_resource.destination} to revision #{new_resource.revision}"
107
101
  c
108
102
  end
109
103
 
110
104
  def checkout_command
111
- c = scm :checkout, @new_resource.svn_arguments, verbose, authentication, proxy,
112
- "-r#{revision_int}", @new_resource.repository, @new_resource.destination
113
- Chef::Log.info "#{@new_resource} checked out #{@new_resource.repository} at revision #{@new_resource.revision} to #{@new_resource.destination}"
105
+ c = scm :checkout, new_resource.svn_arguments, verbose, authentication, proxy,
106
+ "-r#{revision_int}", new_resource.repository, new_resource.destination
107
+ Chef::Log.info "#{new_resource} checked out #{new_resource.repository} at revision #{new_resource.revision} to #{new_resource.destination}"
114
108
  c
115
109
  end
116
110
 
117
111
  def export_command
118
112
  args = ["--force"]
119
- args << @new_resource.svn_arguments << verbose << authentication << proxy <<
120
- "-r#{revision_int}" << @new_resource.repository << @new_resource.destination
113
+ args << new_resource.svn_arguments << verbose << authentication << proxy <<
114
+ "-r#{revision_int}" << new_resource.repository << new_resource.destination
121
115
  c = scm :export, *args
122
- Chef::Log.info "#{@new_resource} exported #{@new_resource.repository} at revision #{@new_resource.revision} to #{@new_resource.destination}"
116
+ Chef::Log.info "#{new_resource} exported #{new_resource.repository} at revision #{new_resource.revision} to #{new_resource.destination}"
123
117
  c
124
118
  end
125
119
 
@@ -128,10 +122,10 @@ class Chef
128
122
  # If the specified revision is an integer, trust it.
129
123
  def revision_int
130
124
  @revision_int ||= begin
131
- if @new_resource.revision =~ /^\d+$/
132
- @new_resource.revision
125
+ if new_resource.revision =~ /^\d+$/
126
+ new_resource.revision
133
127
  else
134
- command = scm(:info, @new_resource.repository, @new_resource.svn_info_args, authentication, "-r#{@new_resource.revision}")
128
+ command = scm(:info, new_resource.repository, new_resource.svn_info_args, authentication, "-r#{new_resource.revision}")
135
129
  svn_info = shell_out!(command, run_options(:cwd => cwd, :returns => [0, 1])).stdout
136
130
 
137
131
  extract_revision_info(svn_info)
@@ -142,7 +136,7 @@ class Chef
142
136
  alias :revision_slug :revision_int
143
137
 
144
138
  def find_current_revision
145
- return nil unless ::File.exist?(::File.join(@new_resource.destination, ".svn"))
139
+ return nil unless ::File.exist?(::File.join(new_resource.destination, ".svn"))
146
140
  command = scm(:info)
147
141
  svn_info = shell_out!(command, run_options(:cwd => cwd, :returns => [0, 1])).stdout
148
142
 
@@ -150,20 +144,20 @@ class Chef
150
144
  end
151
145
 
152
146
  def current_revision_matches_target_revision?
153
- (!@current_resource.revision.nil?) && (revision_int.strip.to_i == @current_resource.revision.strip.to_i)
147
+ (!current_resource.revision.nil?) && (revision_int.strip.to_i == current_resource.revision.strip.to_i)
154
148
  end
155
149
 
156
150
  def run_options(run_opts = {})
157
- run_opts[:user] = @new_resource.user if @new_resource.user
158
- run_opts[:group] = @new_resource.group if @new_resource.group
159
- run_opts[:timeout] = @new_resource.timeout if @new_resource.timeout
151
+ run_opts[:user] = new_resource.user if new_resource.user
152
+ run_opts[:group] = new_resource.group if new_resource.group
153
+ run_opts[:timeout] = new_resource.timeout if new_resource.timeout
160
154
  run_opts
161
155
  end
162
156
 
163
157
  private
164
158
 
165
159
  def cwd
166
- @new_resource.destination
160
+ new_resource.destination
167
161
  end
168
162
 
169
163
  def verbose
@@ -181,7 +175,7 @@ class Chef
181
175
  rev = (repo_attrs["Last Changed Rev"] || repo_attrs["Revision"])
182
176
  rev.strip! if rev
183
177
  raise "Could not parse `svn info` data: #{svn_info}" if repo_attrs.empty?
184
- Chef::Log.debug "#{@new_resource} resolved revision #{@new_resource.revision} to #{rev}"
178
+ Chef::Log.debug "#{new_resource} resolved revision #{new_resource.revision} to #{rev}"
185
179
  rev
186
180
  end
187
181
 
@@ -190,14 +184,14 @@ class Chef
190
184
  # switch, since Capistrano will check for that prompt in the output
191
185
  # and will respond appropriately.
192
186
  def authentication
193
- return "" unless @new_resource.svn_username
194
- result = "--username #{@new_resource.svn_username} "
195
- result << "--password #{@new_resource.svn_password} "
187
+ return "" unless new_resource.svn_username
188
+ result = "--username #{new_resource.svn_username} "
189
+ result << "--password #{new_resource.svn_password} "
196
190
  result
197
191
  end
198
192
 
199
193
  def proxy
200
- repo_uri = URI.parse(@new_resource.repository)
194
+ repo_uri = URI.parse(new_resource.repository)
201
195
  proxy_uri = Chef::Config.proxy_uri(repo_uri.scheme, repo_uri.host, repo_uri.port)
202
196
  return "" if proxy_uri.nil?
203
197
 
@@ -213,18 +207,18 @@ class Chef
213
207
  end
214
208
 
215
209
  def target_dir_non_existent_or_empty?
216
- !::File.exist?(@new_resource.destination) || Dir.entries(@new_resource.destination).sort == [".", ".."]
210
+ !::File.exist?(new_resource.destination) || Dir.entries(new_resource.destination).sort == [".", ".."]
217
211
  end
218
212
 
219
213
  def svn_binary
220
- @new_resource.svn_binary ||
214
+ new_resource.svn_binary ||
221
215
  (Chef::Platform.windows? ? "svn.exe" : "svn")
222
216
  end
223
217
 
224
218
  def assert_target_directory_valid!
225
- target_parent_directory = ::File.dirname(@new_resource.destination)
219
+ target_parent_directory = ::File.dirname(new_resource.destination)
226
220
  unless ::File.directory?(target_parent_directory)
227
- msg = "Cannot clone #{@new_resource} to #{@new_resource.destination}, the enclosing directory #{target_parent_directory} does not exist"
221
+ msg = "Cannot clone #{new_resource} to #{new_resource.destination}, the enclosing directory #{target_parent_directory} does not exist"
228
222
  raise Chef::Exceptions::MissingParentDirectory, msg
229
223
  end
230
224
  end
@@ -20,6 +20,7 @@ require "chef/provider"
20
20
  require "chef/mixin/which"
21
21
  require "chef/mixin/shell_out"
22
22
  require "chef/resource/file"
23
+ require "chef/resource/file/verification/systemd_unit"
23
24
  require "iniparse"
24
25
 
25
26
  class Chef
@@ -193,6 +194,7 @@ class Chef
193
194
  f.group "root"
194
195
  f.mode "0644"
195
196
  f.content new_resource.to_ini
197
+ f.verify :systemd_unit if new_resource.verify
196
198
  end.run_action(action)
197
199
  end
198
200
 
@@ -36,7 +36,30 @@ class Chef
36
36
  private
37
37
 
38
38
  def file_for_provider
39
- context = TemplateContext.new(new_resource.variables)
39
+ # Deal with any DelayedEvaluator values in the template variables.
40
+ visitor = lambda do |obj|
41
+ case obj
42
+ when Hash
43
+ # If this is an Attribute object, we need to change class otherwise
44
+ # we get the immutable behavior. This could probably be fixed by
45
+ # using Hash#transform_values once we only support Ruby 2.4.
46
+ obj_class = obj.is_a?(Chef::Node::ImmutableMash) ? Mash : obj.class
47
+ # Avoid mutating hashes in the resource in case we're changing anything.
48
+ obj.each_with_object(obj_class.new) do |(key, value), memo|
49
+ memo[key] = visitor.call(value)
50
+ end
51
+ when Array
52
+ # Avoid mutating arrays in the resource in case we're changing anything.
53
+ obj.map { |value| visitor.call(value) }
54
+ when DelayedEvaluator
55
+ new_resource.instance_eval(&obj)
56
+ else
57
+ obj
58
+ end
59
+ end
60
+ variables = visitor.call(new_resource.variables)
61
+
62
+ context = TemplateContext.new(variables)
40
63
  context[:node] = run_context.node
41
64
  context[:template_finder] = template_finder
42
65
 
@@ -19,25 +19,19 @@
19
19
 
20
20
  require "chef/provider/template_finder"
21
21
  require "chef/provider/file"
22
- require "chef/deprecation/provider/template"
23
- require "chef/deprecation/warnings"
24
22
 
25
23
  class Chef
26
24
  class Provider
27
25
  class Template < Chef::Provider::File
28
26
  provides :template
29
27
 
30
- extend Chef::Deprecation::Warnings
31
- include Chef::Deprecation::Provider::Template
32
- add_deprecation_warnings_for(Chef::Deprecation::Provider::Template.instance_methods)
33
-
34
28
  def initialize(new_resource, run_context)
35
29
  @content_class = Chef::Provider::Template::Content
36
30
  super
37
31
  end
38
32
 
39
33
  def load_current_resource
40
- @current_resource = Chef::Resource::Template.new(@new_resource.name)
34
+ @current_resource = Chef::Resource::Template.new(new_resource.name)
41
35
  super
42
36
  end
43
37
 
@@ -55,8 +49,8 @@ class Chef
55
49
  private
56
50
 
57
51
  def managing_content?
58
- return true if @new_resource.checksum
59
- return true if !@new_resource.source.nil? && @action != :create_if_missing
52
+ return true if new_resource.checksum
53
+ return true if !new_resource.source.nil? && @action != :create_if_missing
60
54
  false
61
55
  end
62
56
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Dreamcat4 (<dreamcat4@gmail.com>)
3
- # Copyright:: Copyright 2009-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2009-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");
@@ -297,7 +297,7 @@ user password using shadow hash.")
297
297
  return
298
298
  end
299
299
 
300
- if managing_home_dir?
300
+ if new_resource.manage_home
301
301
  validate_home_dir_specification!
302
302
 
303
303
  if (current_resource.home == new_resource.home) && !new_home_exists?
@@ -442,7 +442,7 @@ user password using shadow hash.")
442
442
  # and deleting home directory if needed.
443
443
  #
444
444
  def remove_user
445
- if managing_home_dir?
445
+ if new_resource.manage_home
446
446
  # Remove home directory
447
447
  FileUtils.rm_rf(current_resource.home)
448
448
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2016, Chef Software Inc.
2
+ # Copyright:: Copyright 2016-2017, Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -52,14 +52,15 @@ class Chef
52
52
  opts << "-s" << new_resource.shell if should_set?(:shell)
53
53
  opts << "-u" << new_resource.uid if should_set?(:uid)
54
54
  opts << "-d" << new_resource.home if updating_home?
55
- opts << "-o" if non_unique?
55
+ opts << "-o" if new_resource.non_unique
56
56
  opts
57
57
  end
58
58
 
59
59
  def usermod_options
60
60
  opts = []
61
+ opts += [ "-u", new_resource.uid ] if new_resource.non_unique
61
62
  if updating_home?
62
- if managing_home_dir?
63
+ if new_resource.manage_home
63
64
  opts << "-m"
64
65
  end
65
66
  end
@@ -69,7 +70,7 @@ class Chef
69
70
  def useradd_options
70
71
  opts = []
71
72
  opts << "-r" if new_resource.system
72
- opts << if managing_home_dir?
73
+ opts << if new_resource.manage_home
73
74
  "-m"
74
75
  else
75
76
  "-M"
@@ -79,7 +80,7 @@ class Chef
79
80
 
80
81
  def userdel_options
81
82
  opts = []
82
- opts << "-r" if managing_home_dir?
83
+ opts << "-r" if new_resource.manage_home
83
84
  opts << "-f" if new_resource.force
84
85
  opts
85
86
  end