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
@@ -26,6 +26,10 @@ class Chef
26
26
 
27
27
  provides :env, os: "windows"
28
28
 
29
+ def whyrun_supported?
30
+ false
31
+ end
32
+
29
33
  def create_env
30
34
  obj = env_obj(@new_resource.key_name)
31
35
  unless obj
@@ -54,7 +58,7 @@ class Chef
54
58
 
55
59
  def env_value(key_name)
56
60
  obj = env_obj(key_name)
57
- return obj ? obj.variablevalue : ENV[key_name]
61
+ obj ? obj.variablevalue : ENV[key_name]
58
62
  end
59
63
 
60
64
  def env_obj(key_name)
@@ -17,34 +17,36 @@
17
17
  #
18
18
 
19
19
  require "chef/provider"
20
- require "chef/mixin/command"
21
20
  require "chef/resource/env"
22
21
 
23
22
  class Chef
24
23
  class Provider
25
24
  class Env < Chef::Provider
26
- include Chef::Mixin::Command
27
25
  attr_accessor :key_exists
28
26
 
29
27
  provides :env, os: "!windows"
30
28
 
29
+ def whyrun_supported?
30
+ false
31
+ end
32
+
31
33
  def initialize(new_resource, run_context)
32
34
  super
33
35
  @key_exists = true
34
36
  end
35
37
 
36
38
  def load_current_resource
37
- @current_resource = Chef::Resource::Env.new(@new_resource.name)
38
- @current_resource.key_name(@new_resource.key_name)
39
+ @current_resource = Chef::Resource::Env.new(new_resource.name)
40
+ current_resource.key_name(new_resource.key_name)
39
41
 
40
- if env_key_exists(@new_resource.key_name)
41
- @current_resource.value(env_value(@new_resource.key_name))
42
+ if env_key_exists(new_resource.key_name)
43
+ current_resource.value(env_value(new_resource.key_name))
42
44
  else
43
45
  @key_exists = false
44
- Chef::Log.debug("#{@new_resource} key does not exist")
46
+ Chef::Log.debug("#{new_resource} key does not exist")
45
47
  end
46
48
 
47
- @current_resource
49
+ current_resource
48
50
  end
49
51
 
50
52
  def env_value(key_name)
@@ -61,7 +63,7 @@ class Chef
61
63
  # <true>:: If a change is required
62
64
  # <false>:: If a change is not required
63
65
  def requires_modify_or_create?
64
- if @new_resource.delim
66
+ if new_resource.delim
65
67
  #e.g. check for existing value within PATH
66
68
  new_values.inject(0) do |index, val|
67
69
  next_index = current_values.find_index val
@@ -70,7 +72,7 @@ class Chef
70
72
  end
71
73
  false
72
74
  else
73
- @new_resource.value != @current_resource.value
75
+ new_resource.value != current_resource.value
74
76
  end
75
77
  end
76
78
 
@@ -80,13 +82,13 @@ class Chef
80
82
  if @key_exists
81
83
  if requires_modify_or_create?
82
84
  modify_env
83
- Chef::Log.info("#{@new_resource} altered")
84
- @new_resource.updated_by_last_action(true)
85
+ Chef::Log.info("#{new_resource} altered")
86
+ new_resource.updated_by_last_action(true)
85
87
  end
86
88
  else
87
89
  create_env
88
- Chef::Log.info("#{@new_resource} created")
89
- @new_resource.updated_by_last_action(true)
90
+ Chef::Log.info("#{new_resource} created")
91
+ new_resource.updated_by_last_action(true)
90
92
  end
91
93
  end
92
94
 
@@ -97,24 +99,24 @@ class Chef
97
99
  # <false>:: Caller should delete the key, either no :delim was specific or value was empty
98
100
  # after we removed the element.
99
101
  def delete_element
100
- return false unless @new_resource.delim #no delim: delete the key
102
+ return false unless new_resource.delim #no delim: delete the key
101
103
  needs_delete = new_values.any? { |v| current_values.include?(v) }
102
104
  if !needs_delete
103
- Chef::Log.debug("#{@new_resource} element '#{@new_resource.value}' does not exist")
105
+ Chef::Log.debug("#{new_resource} element '#{new_resource.value}' does not exist")
104
106
  return true #do not delete the key
105
107
  else
106
108
  new_value =
107
109
  current_values.select do |item|
108
110
  not new_values.include?(item)
109
- end.join(@new_resource.delim)
111
+ end.join(new_resource.delim)
110
112
 
111
113
  if new_value.empty?
112
114
  return false #nothing left here, delete the key
113
115
  else
114
- old_value = @new_resource.value(new_value)
116
+ old_value = new_resource.value(new_value)
115
117
  create_env
116
- Chef::Log.debug("#{@new_resource} deleted #{old_value} element")
117
- @new_resource.updated_by_last_action(true)
118
+ Chef::Log.debug("#{new_resource} deleted #{old_value} element")
119
+ new_resource.updated_by_last_action(true)
118
120
  return true #we removed the element and updated; do not delete the key
119
121
  end
120
122
  end
@@ -123,8 +125,8 @@ class Chef
123
125
  def action_delete
124
126
  if @key_exists && !delete_element
125
127
  delete_env
126
- Chef::Log.info("#{@new_resource} deleted")
127
- @new_resource.updated_by_last_action(true)
128
+ Chef::Log.info("#{new_resource} deleted")
129
+ new_resource.updated_by_last_action(true)
128
130
  end
129
131
  end
130
132
 
@@ -132,16 +134,16 @@ class Chef
132
134
  if @key_exists
133
135
  if requires_modify_or_create?
134
136
  modify_env
135
- Chef::Log.info("#{@new_resource} modified")
136
- @new_resource.updated_by_last_action(true)
137
+ Chef::Log.info("#{new_resource} modified")
138
+ new_resource.updated_by_last_action(true)
137
139
  end
138
140
  else
139
- raise Chef::Exceptions::Env, "Cannot modify #{@new_resource} - key does not exist!"
141
+ raise Chef::Exceptions::Env, "Cannot modify #{new_resource} - key does not exist!"
140
142
  end
141
143
  end
142
144
 
143
145
  def create_env
144
- raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :#{@new_resource.action}"
146
+ raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :#{new_resource.action}"
145
147
  end
146
148
 
147
149
  def delete_env
@@ -149,20 +151,20 @@ class Chef
149
151
  end
150
152
 
151
153
  def modify_env
152
- if @new_resource.delim
153
- @new_resource.value((new_values + current_values).uniq.join(@new_resource.delim))
154
+ if new_resource.delim
155
+ new_resource.value((new_values + current_values).uniq.join(new_resource.delim))
154
156
  end
155
157
  create_env
156
158
  end
157
159
 
158
160
  # Returns the current values to split by delimiter
159
161
  def current_values
160
- @current_values ||= @current_resource.value.split(@new_resource.delim)
162
+ @current_values ||= current_resource.value.split(new_resource.delim)
161
163
  end
162
164
 
163
165
  # Returns the new values to split by delimiter
164
166
  def new_values
165
- @new_values ||= @new_resource.value.split(@new_resource.delim)
167
+ @new_values ||= new_resource.value.split(new_resource.delim)
166
168
  end
167
169
  end
168
170
  end
@@ -17,13 +17,11 @@
17
17
  #
18
18
 
19
19
  require "chef/log"
20
- require "chef/mixin/command"
21
20
  require "chef/provider"
22
21
 
23
22
  class Chef
24
23
  class Provider
25
24
  class ErlCall < Chef::Provider
26
- include Chef::Mixin::Command
27
25
 
28
26
  provides :erl_call
29
27
 
@@ -31,29 +29,25 @@ class Chef
31
29
  super(node, new_resource)
32
30
  end
33
31
 
34
- def whyrun_supported?
35
- true
36
- end
37
-
38
32
  def load_current_resource
39
33
  true
40
34
  end
41
35
 
42
36
  def action_run
43
- case @new_resource.name_type
37
+ case new_resource.name_type
44
38
  when "sname"
45
- node = "-sname #{@new_resource.node_name}"
39
+ node = "-sname #{new_resource.node_name}"
46
40
  when "name"
47
- node = "-name #{@new_resource.node_name}"
41
+ node = "-name #{new_resource.node_name}"
48
42
  end
49
43
 
50
- if @new_resource.cookie
51
- cookie = "-c #{@new_resource.cookie}"
44
+ if new_resource.cookie
45
+ cookie = "-c #{new_resource.cookie}"
52
46
  else
53
47
  cookie = ""
54
48
  end
55
49
 
56
- if @new_resource.distributed
50
+ if new_resource.distributed
57
51
  distributed = "-s"
58
52
  else
59
53
  distributed = ""
@@ -62,44 +56,18 @@ class Chef
62
56
  command = "erl_call -e #{distributed} #{node} #{cookie}"
63
57
 
64
58
  converge_by("run erlang block") do
65
- begin
66
- pid, stdin, stdout, stderr = popen4(command, :waitlast => true)
67
-
68
- Chef::Log.debug("#{@new_resource} running")
69
- Chef::Log.debug("#{@new_resource} command: #{command}")
70
- Chef::Log.debug("#{@new_resource} code: #{@new_resource.code}")
71
-
72
- @new_resource.code.each_line { |line| stdin.puts(line.chomp) }
73
-
74
- stdin.close
75
-
76
- Chef::Log.debug("#{@new_resource} output: ")
59
+ so = shell_out!(command, input: new_resource.code)
77
60
 
78
- stdout_output = ""
79
- stdout.each_line { |line| stdout_output << line }
80
- stdout.close
81
-
82
- stderr_output = ""
83
- stderr.each_line { |line| stderr_output << line }
84
- stderr.close
85
-
86
- # fail if stderr contains anything
87
- if stderr_output.length > 0
88
- raise Chef::Exceptions::ErlCall, stderr_output
89
- end
90
-
91
- # fail if the first 4 characters aren't "{ok,"
92
- unless stdout_output[0..3].include?("{ok,")
93
- raise Chef::Exceptions::ErlCall, stdout_output
94
- end
95
-
96
- @new_resource.updated_by_last_action(true)
61
+ # fail if stderr contains anything
62
+ if so.stderr.length > 0
63
+ raise Chef::Exceptions::ErlCall, so.stderr
64
+ end
97
65
 
98
- Chef::Log.debug("#{@new_resource} #{stdout_output}")
99
- Chef::Log.info("#{@new_resouce} ran successfully")
100
- ensure
101
- Process.wait(pid) if pid
66
+ # fail if the first 4 characters aren't "{ok,"
67
+ unless so.stdout[0..3].include?("{ok,")
68
+ raise Chef::Exceptions::ErlCall, so.stdout
102
69
  end
70
+
103
71
  end
104
72
  end
105
73
 
@@ -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");
@@ -27,21 +27,17 @@ class Chef
27
27
 
28
28
  provides :execute
29
29
 
30
- def_delegators :@new_resource, :command, :returns, :environment, :user, :group, :cwd, :umask, :creates
30
+ def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates
31
31
 
32
32
  def load_current_resource
33
33
  current_resource = Chef::Resource::Execute.new(new_resource.name)
34
34
  current_resource
35
35
  end
36
36
 
37
- def whyrun_supported?
38
- true
39
- end
40
-
41
37
  def define_resource_requirements
42
- # @todo: this should change to raise in some appropriate major version bump.
43
38
  if creates && creates_relative? && !cwd
44
- Chef::Log.warn "Providing a relative path for the creates attribute without the cwd is deprecated and will be changed to fail in the future (CHEF-3819)"
39
+ # FIXME? move this onto the resource?
40
+ raise Chef::Exceptions::Execute, "Please either specify a full path for the creates attribute, or specify a cwd propoerty to the #{new_resource} resource"
45
41
  end
46
42
  end
47
43
 
@@ -92,6 +88,8 @@ class Chef
92
88
  opts[:returns] = returns if returns
93
89
  opts[:environment] = environment if environment
94
90
  opts[:user] = user if user
91
+ opts[:domain] = domain if domain
92
+ opts[:password] = password if password
95
93
  opts[:group] = group if group
96
94
  opts[:cwd] = cwd if cwd
97
95
  opts[:umask] = umask if umask
@@ -120,6 +118,7 @@ class Chef
120
118
  ( cwd && creates_relative? ) ? ::File.join(cwd, creates) : creates
121
119
  ))
122
120
  end
121
+
123
122
  end
124
123
  end
125
124
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: Lamont Granquist (<lamont@chef.io>)
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");
@@ -30,8 +30,6 @@ require "chef/mixin/enforce_ownership_and_permissions"
30
30
  require "chef/util/backup"
31
31
  require "chef/util/diff"
32
32
  require "chef/util/selinux"
33
- require "chef/deprecation/provider/file"
34
- require "chef/deprecation/warnings"
35
33
  require "chef/file_content_management/deploy"
36
34
 
37
35
  # The Tao of File Providers:
@@ -52,10 +50,6 @@ class Chef
52
50
  include Chef::Util::Selinux
53
51
  include Chef::Mixin::FileClass
54
52
 
55
- extend Chef::Deprecation::Warnings
56
- include Chef::Deprecation::Provider::File
57
- add_deprecation_warnings_for(Chef::Deprecation::Provider::File.instance_methods)
58
-
59
53
  provides :file
60
54
 
61
55
  attr_reader :deployment_strategy
@@ -72,10 +66,6 @@ class Chef
72
66
  super
73
67
  end
74
68
 
75
- def whyrun_supported?
76
- true
77
- end
78
-
79
69
  def load_current_resource
80
70
  # true if there is a symlink and we need to manage what it points at
81
71
  @managing_symlink = file_class.symlink?(new_resource.path) && ( new_resource.manage_symlink_source || new_resource.manage_symlink_source.nil? )
@@ -95,7 +85,7 @@ class Chef
95
85
  # true if we are going to be creating a new file
96
86
  @needs_creating = !::File.exist?(new_resource.path) || needs_unlinking?
97
87
 
98
- # Let children resources override constructing the @current_resource
88
+ # Let children resources override constructing the current_resource
99
89
  @current_resource ||= Chef::Resource::File.new(new_resource.name)
100
90
  current_resource.path(new_resource.path)
101
91
 
@@ -120,17 +110,17 @@ class Chef
120
110
 
121
111
  # Make sure the parent directory exists, otherwise fail. For why-run assume it would have been created.
122
112
  requirements.assert(:create, :create_if_missing, :touch) do |a|
123
- parent_directory = ::File.dirname(@new_resource.path)
113
+ parent_directory = ::File.dirname(new_resource.path)
124
114
  a.assertion { ::File.directory?(parent_directory) }
125
115
  a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist.")
126
116
  a.whyrun("Assuming directory #{parent_directory} would have been created")
127
117
  end
128
118
 
129
119
  # Make sure the file is deletable if it exists, otherwise fail.
130
- if ::File.exist?(@new_resource.path)
120
+ if ::File.exist?(new_resource.path)
131
121
  requirements.assert(:delete) do |a|
132
- a.assertion { ::File.writable?(@new_resource.path) }
133
- a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{@new_resource.path} exists but is not writable so it cannot be deleted")
122
+ a.assertion { ::File.writable?(new_resource.path) }
123
+ a.failure_message(Chef::Exceptions::InsufficientPermissions, "File #{new_resource.path} exists but is not writable so it cannot be deleted")
134
124
  end
135
125
  end
136
126
 
@@ -154,33 +144,33 @@ class Chef
154
144
  do_contents_changes
155
145
  do_acl_changes
156
146
  do_selinux
157
- load_resource_attributes_from_file(@new_resource)
147
+ load_resource_attributes_from_file(new_resource) unless Chef::Config[:why_run]
158
148
  end
159
149
 
160
150
  def action_create_if_missing
161
- unless ::File.exist?(@new_resource.path)
151
+ unless ::File.exist?(new_resource.path)
162
152
  action_create
163
153
  else
164
- Chef::Log.debug("#{@new_resource} exists at #{@new_resource.path} taking no action.")
154
+ Chef::Log.debug("#{new_resource} exists at #{new_resource.path} taking no action.")
165
155
  end
166
156
  end
167
157
 
168
158
  def action_delete
169
- if ::File.exists?(@new_resource.path)
170
- converge_by("delete file #{@new_resource.path}") do
171
- do_backup unless file_class.symlink?(@new_resource.path)
172
- ::File.delete(@new_resource.path)
173
- Chef::Log.info("#{@new_resource} deleted file at #{@new_resource.path}")
159
+ if ::File.exists?(new_resource.path)
160
+ converge_by("delete file #{new_resource.path}") do
161
+ do_backup unless file_class.symlink?(new_resource.path)
162
+ ::File.delete(new_resource.path)
163
+ Chef::Log.info("#{new_resource} deleted file at #{new_resource.path}")
174
164
  end
175
165
  end
176
166
  end
177
167
 
178
168
  def action_touch
179
169
  action_create
180
- converge_by("update utime on file #{@new_resource.path}") do
170
+ converge_by("update utime on file #{new_resource.path}") do
181
171
  time = Time.now
182
- ::File.utime(time, time, @new_resource.path)
183
- Chef::Log.info("#{@new_resource} updated atime and mtime to #{time}")
172
+ ::File.utime(time, time, new_resource.path)
173
+ Chef::Log.info("#{new_resource} updated atime and mtime to #{time}")
184
174
  end
185
175
  end
186
176
 
@@ -197,8 +187,8 @@ class Chef
197
187
  # content (for things like doing checksums in load_current_resource). Expected to
198
188
  # be overridden in subclasses.
199
189
  def managing_content?
200
- return true if @new_resource.checksum
201
- return true if !@new_resource.content.nil? && @action != :create_if_missing
190
+ return true if new_resource.checksum
191
+ return true if !new_resource.content.nil? && @action != :create_if_missing
202
192
  false
203
193
  end
204
194
 
@@ -228,25 +218,25 @@ class Chef
228
218
  # assertions, which then decide whether or not to raise or issue a
229
219
  # warning for whyrun mode.
230
220
  def inspect_existing_fs_entry
231
- path = @new_resource.path
221
+ path = new_resource.path
232
222
 
233
223
  if !l_exist?(path)
234
224
  [nil, nil, nil]
235
225
  elsif real_file?(path)
236
226
  [nil, nil, nil]
237
- elsif file_class.symlink?(path) && @new_resource.manage_symlink_source
227
+ elsif file_class.symlink?(path) && new_resource.manage_symlink_source
238
228
  verify_symlink_sanity(path)
239
- elsif file_class.symlink?(@new_resource.path) && @new_resource.manage_symlink_source.nil?
240
- Chef::Log.warn("File #{path} managed by #{@new_resource} is really a symlink. Managing the source file instead.")
229
+ elsif file_class.symlink?(new_resource.path) && new_resource.manage_symlink_source.nil?
230
+ Chef::Log.warn("File #{path} managed by #{new_resource} is really a symlink. Managing the source file instead.")
241
231
  Chef::Log.warn("Disable this warning by setting `manage_symlink_source true` on the resource")
242
232
  Chef::Log.warn("In a future Chef release, 'manage_symlink_source' will not be enabled by default")
243
233
  verify_symlink_sanity(path)
244
- elsif @new_resource.force_unlink
234
+ elsif new_resource.force_unlink
245
235
  [nil, nil, nil]
246
236
  else
247
237
  [ Chef::Exceptions::FileTypeMismatch,
248
- "File #{path} exists, but is a #{file_type_string(@new_resource.path)}, set force_unlink to true to remove",
249
- "Assuming #{file_type_string(@new_resource.path)} at #{@new_resource.path} would have been removed by a previous resource",
238
+ "File #{path} exists, but is a #{file_type_string(new_resource.path)}, set force_unlink to true to remove",
239
+ "Assuming #{file_type_string(new_resource.path)} at #{new_resource.path} would have been removed by a previous resource",
250
240
  ]
251
241
  end
252
242
  end
@@ -282,8 +272,8 @@ class Chef
282
272
 
283
273
  def content
284
274
  @content ||= begin
285
- load_current_resource if @current_resource.nil?
286
- @content_class.new(@new_resource, @current_resource, @run_context)
275
+ load_current_resource if current_resource.nil?
276
+ @content_class.new(new_resource, current_resource, @run_context)
287
277
  end
288
278
  end
289
279
 
@@ -312,11 +302,9 @@ class Chef
312
302
 
313
303
  # like real_file? that follows (sane) symlinks
314
304
  def symlink_to_real_file?(path)
315
- begin
316
- real_file?(::File.realpath(path))
317
- rescue Errno::ELOOP, Errno::ENOENT
318
- false
319
- end
305
+ real_file?(::File.realpath(path))
306
+ rescue Errno::ELOOP, Errno::ENOENT
307
+ false
320
308
  end
321
309
 
322
310
  # Similar to File.exist?, but also returns true in the case that the
@@ -358,12 +346,12 @@ class Chef
358
346
  end
359
347
 
360
348
  def do_unlink
361
- if @new_resource.force_unlink
349
+ if new_resource.force_unlink
362
350
  if needs_unlinking?
363
351
  # unlink things that aren't normal files
364
- description = "unlink #{file_type_string(@new_resource.path)} at #{@new_resource.path}"
352
+ description = "unlink #{file_type_string(new_resource.path)} at #{new_resource.path}"
365
353
  converge_by(description) do
366
- unlink(@new_resource.path)
354
+ unlink(new_resource.path)
367
355
  end
368
356
  end
369
357
  end
@@ -371,15 +359,15 @@ class Chef
371
359
 
372
360
  def do_create_file
373
361
  if needs_creating?
374
- converge_by("create new file #{@new_resource.path}") do
375
- deployment_strategy.create(@new_resource.path)
376
- Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
362
+ converge_by("create new file #{new_resource.path}") do
363
+ deployment_strategy.create(new_resource.path)
364
+ Chef::Log.info("#{new_resource} created file #{new_resource.path}")
377
365
  end
378
366
  end
379
367
  end
380
368
 
381
369
  def do_backup(file = nil)
382
- Chef::Util::Backup.new(@new_resource, file).backup!
370
+ Chef::Util::Backup.new(new_resource, file).backup!
383
371
  end
384
372
 
385
373
  def diff
@@ -405,17 +393,17 @@ class Chef
405
393
  end
406
394
 
407
395
  # the file? on the next line suppresses the case in why-run when we have a not-file here that would have otherwise been removed
408
- if ::File.file?(@new_resource.path) && contents_changed?
409
- description = [ "update content in file #{@new_resource.path} from \
410
- #{short_cksum(@current_resource.checksum)} to #{short_cksum(tempfile_checksum)}" ]
396
+ if ::File.file?(new_resource.path) && contents_changed?
397
+ description = [ "update content in file #{new_resource.path} from \
398
+ #{short_cksum(current_resource.checksum)} to #{short_cksum(tempfile_checksum)}" ]
411
399
 
412
400
  # Hide the diff output if the resource is marked as a sensitive resource
413
- if @new_resource.sensitive
414
- @new_resource.diff("suppressed sensitive resource")
401
+ if new_resource.sensitive
402
+ new_resource.diff("suppressed sensitive resource")
415
403
  description << "suppressed sensitive resource"
416
404
  else
417
- diff.diff(@current_resource.path, tempfile.path)
418
- @new_resource.diff( diff.for_reporting ) unless needs_creating?
405
+ diff.diff(current_resource.path, tempfile.path)
406
+ new_resource.diff( diff.for_reporting ) unless needs_creating?
419
407
  description << diff.for_output
420
408
  end
421
409
 
@@ -437,7 +425,7 @@ class Chef
437
425
  if resource_updated? && Chef::Config[:enable_selinux_file_permission_fixup]
438
426
  if selinux_enabled?
439
427
  converge_by("restore selinux security context") do
440
- restore_security_context(::File.realpath(@new_resource.path), recursive)
428
+ restore_security_context(::File.realpath(new_resource.path), recursive)
441
429
  end
442
430
  else
443
431
  Chef::Log.debug "selinux utilities can not be found. Skipping selinux permission fixup."
@@ -454,8 +442,8 @@ class Chef
454
442
  end
455
443
 
456
444
  def contents_changed?
457
- Chef::Log.debug "calculating checksum of #{tempfile.path} to compare with #{@current_resource.checksum}"
458
- tempfile_checksum != @current_resource.checksum
445
+ Chef::Log.debug "calculating checksum of #{tempfile.path} to compare with #{current_resource.checksum}"
446
+ tempfile_checksum != current_resource.checksum
459
447
  end
460
448
 
461
449
  def tempfile
@@ -470,7 +458,7 @@ class Chef
470
458
  # reporting won't work for Windows.
471
459
  return
472
460
  end
473
- acl_scanner = ScanAccessControl.new(@new_resource, resource)
461
+ acl_scanner = ScanAccessControl.new(new_resource, resource)
474
462
  acl_scanner.set_all!
475
463
  end
476
464