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:: Prajakta Purohit (<prajakta@chef.io>)
3
3
  # Author:: Lamont Granquist (<lamont@chef.io>)
4
4
  #
5
- # Copyright:: Copyright 2011-2016, Chef Software Inc.
5
+ # Copyright:: Copyright 2011-2017, Chef Software Inc.
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
@@ -35,10 +35,6 @@ class Chef
35
35
 
36
36
  include Chef::Mixin::Checksum
37
37
 
38
- def whyrun_supported?
39
- true
40
- end
41
-
42
38
  def running_on_windows!
43
39
  unless Chef::Platform.windows?
44
40
  raise Chef::Exceptions::Win32NotWindows, "Attempt to manipulate the windows registry on a non-windows node"
@@ -47,19 +43,19 @@ class Chef
47
43
 
48
44
  def load_current_resource
49
45
  running_on_windows!
50
- @current_resource ||= Chef::Resource::RegistryKey.new(@new_resource.key, run_context)
51
- @current_resource.key(@new_resource.key)
52
- @current_resource.architecture(@new_resource.architecture)
53
- @current_resource.recursive(@new_resource.recursive)
54
- if registry.key_exists?(@new_resource.key)
55
- @current_resource.values(registry.get_values(@new_resource.key))
56
- end
57
- values_to_hash(@current_resource.unscrubbed_values)
58
- @current_resource
46
+ @current_resource ||= Chef::Resource::RegistryKey.new(new_resource.key, run_context)
47
+ current_resource.key(new_resource.key)
48
+ current_resource.architecture(new_resource.architecture)
49
+ current_resource.recursive(new_resource.recursive)
50
+ if registry.key_exists?(new_resource.key)
51
+ current_resource.values(registry.get_values(new_resource.key))
52
+ end
53
+ values_to_hash(current_resource.unscrubbed_values)
54
+ current_resource
59
55
  end
60
56
 
61
57
  def registry
62
- @registry ||= Chef::Win32::Registry.new(@run_context, @new_resource.architecture)
58
+ @registry ||= Chef::Win32::Registry.new(@run_context, new_resource.architecture)
63
59
  end
64
60
 
65
61
  def values_to_hash(values)
@@ -79,51 +75,51 @@ class Chef
79
75
 
80
76
  def define_resource_requirements
81
77
  requirements.assert(:create, :create_if_missing, :delete, :delete_key) do |a|
82
- a.assertion { registry.hive_exists?(@new_resource.key) }
83
- a.failure_message(Chef::Exceptions::Win32RegHiveMissing, "Hive #{@new_resource.key.split("\\").shift} does not exist")
78
+ a.assertion { registry.hive_exists?(new_resource.key) }
79
+ a.failure_message(Chef::Exceptions::Win32RegHiveMissing, "Hive #{new_resource.key.split("\\").shift} does not exist")
84
80
  end
85
81
 
86
82
  requirements.assert(:create) do |a|
87
- a.assertion { registry.key_exists?(@new_resource.key) }
88
- a.whyrun("Key #{@new_resource.key} does not exist. Unless it would have been created before, attempt to modify its values would fail.")
83
+ a.assertion { registry.key_exists?(new_resource.key) }
84
+ a.whyrun("Key #{new_resource.key} does not exist. Unless it would have been created before, attempt to modify its values would fail.")
89
85
  end
90
86
 
91
87
  requirements.assert(:create, :create_if_missing) do |a|
92
88
  # If keys missing in the path and recursive == false
93
- a.assertion { !registry.keys_missing?(@current_resource.key) || @new_resource.recursive }
89
+ a.assertion { !registry.keys_missing?(current_resource.key) || new_resource.recursive }
94
90
  a.failure_message(Chef::Exceptions::Win32RegNoRecursive, "Intermediate keys missing but recursive is set to false")
95
- a.whyrun("Intermediate keys in #{@new_resource.key} do not exist. Unless they would have been created earlier, attempt to modify them would fail.")
91
+ a.whyrun("Intermediate keys in #{new_resource.key} do not exist. Unless they would have been created earlier, attempt to modify them would fail.")
96
92
  end
97
93
 
98
94
  requirements.assert(:delete_key) do |a|
99
95
  # If key to be deleted has subkeys but recurssive == false
100
- a.assertion { !registry.key_exists?(@new_resource.key) || !registry.has_subkeys?(@new_resource.key) || @new_resource.recursive }
101
- a.failure_message(Chef::Exceptions::Win32RegNoRecursive, "#{@new_resource.key} has subkeys but recursive is set to false.")
102
- a.whyrun("#{@current_resource.key} has subkeys, but recursive is set to false. attempt to delete would fails unless subkeys were deleted prior to this action.")
96
+ a.assertion { !registry.key_exists?(new_resource.key) || !registry.has_subkeys?(new_resource.key) || new_resource.recursive }
97
+ a.failure_message(Chef::Exceptions::Win32RegNoRecursive, "#{new_resource.key} has subkeys but recursive is set to false.")
98
+ a.whyrun("#{current_resource.key} has subkeys, but recursive is set to false. attempt to delete would fails unless subkeys were deleted prior to this action.")
103
99
  end
104
100
 
105
101
  requirements.assert(:create, :create_if_missing) do |a|
106
102
  # If type key missing in the RegistryKey values hash
107
- a.assertion { !key_missing?(@new_resource.values, :type) }
103
+ a.assertion { !key_missing?(new_resource.values, :type) }
108
104
  a.failure_message(Chef::Exceptions::RegKeyValuesTypeMissing, "Missing type key in RegistryKey values hash")
109
105
  a.whyrun("Type key does not exist. Attempt would fail unless the complete values hash containing all the keys does not exist for registry_key resource's create action.")
110
106
  end
111
107
 
112
108
  requirements.assert(:create, :create_if_missing) do |a|
113
109
  # If data key missing in the RegistryKey values hash
114
- a.assertion { !key_missing?(@new_resource.values, :data) }
110
+ a.assertion { !key_missing?(new_resource.values, :data) }
115
111
  a.failure_message(Chef::Exceptions::RegKeyValuesDataMissing, "Missing data key in RegistryKey values hash")
116
112
  a.whyrun("Data key does not exist. Attempt would fail unless the complete values hash containing all the keys does not exist for registry_key resource's create action.")
117
113
  end
118
114
  end
119
115
 
120
116
  def action_create
121
- unless registry.key_exists?(@current_resource.key)
122
- converge_by("create key #{@new_resource.key}") do
123
- registry.create_key(@new_resource.key, @new_resource.recursive)
117
+ unless registry.key_exists?(current_resource.key)
118
+ converge_by("create key #{new_resource.key}") do
119
+ registry.create_key(new_resource.key, new_resource.recursive)
124
120
  end
125
121
  end
126
- @new_resource.unscrubbed_values.each do |value|
122
+ new_resource.unscrubbed_values.each do |value|
127
123
  if @name_hash.has_key?(value[:name].downcase)
128
124
  current_value = @name_hash[value[:name].downcase]
129
125
  if [:dword, :dword_big_endian, :qword].include? value[:type]
@@ -131,38 +127,38 @@ class Chef
131
127
  end
132
128
  unless current_value[:type] == value[:type] && current_value[:data] == value[:data]
133
129
  converge_by("set value #{value}") do
134
- registry.set_value(@new_resource.key, value)
130
+ registry.set_value(new_resource.key, value)
135
131
  end
136
132
  end
137
133
  else
138
134
  converge_by("set value #{value}") do
139
- registry.set_value(@new_resource.key, value)
135
+ registry.set_value(new_resource.key, value)
140
136
  end
141
137
  end
142
138
  end
143
139
  end
144
140
 
145
141
  def action_create_if_missing
146
- unless registry.key_exists?(@new_resource.key)
147
- converge_by("create key #{@new_resource.key}") do
148
- registry.create_key(@new_resource.key, @new_resource.recursive)
142
+ unless registry.key_exists?(new_resource.key)
143
+ converge_by("create key #{new_resource.key}") do
144
+ registry.create_key(new_resource.key, new_resource.recursive)
149
145
  end
150
146
  end
151
- @new_resource.unscrubbed_values.each do |value|
147
+ new_resource.unscrubbed_values.each do |value|
152
148
  unless @name_hash.has_key?(value[:name].downcase)
153
149
  converge_by("create value #{value}") do
154
- registry.set_value(@new_resource.key, value)
150
+ registry.set_value(new_resource.key, value)
155
151
  end
156
152
  end
157
153
  end
158
154
  end
159
155
 
160
156
  def action_delete
161
- if registry.key_exists?(@new_resource.key)
162
- @new_resource.unscrubbed_values.each do |value|
157
+ if registry.key_exists?(new_resource.key)
158
+ new_resource.unscrubbed_values.each do |value|
163
159
  if @name_hash.has_key?(value[:name].downcase)
164
160
  converge_by("delete value #{value}") do
165
- registry.delete_value(@new_resource.key, value)
161
+ registry.delete_value(new_resource.key, value)
166
162
  end
167
163
  end
168
164
  end
@@ -170,9 +166,9 @@ class Chef
170
166
  end
171
167
 
172
168
  def action_delete_key
173
- if registry.key_exists?(@new_resource.key)
174
- converge_by("delete key #{@new_resource.key}") do
175
- registry.delete_key(@new_resource.key, @new_resource.recursive)
169
+ if registry.key_exists?(new_resource.key)
170
+ converge_by("delete key #{new_resource.key}") do
171
+ registry.delete_key(new_resource.key, new_resource.recursive)
176
172
  end
177
173
  end
178
174
  end
@@ -23,8 +23,6 @@ require "chef/resource/cookbook_file"
23
23
  require "chef/mixin/file_class"
24
24
  require "chef/platform/query_helpers"
25
25
  require "chef/util/path_helper"
26
- require "chef/deprecation/warnings"
27
- require "chef/deprecation/provider/remote_directory"
28
26
 
29
27
  require "forwardable"
30
28
 
@@ -36,9 +34,9 @@ class Chef
36
34
 
37
35
  provides :remote_directory
38
36
 
39
- def_delegators :@new_resource, :purge, :path, :source, :cookbook, :cookbook_name
40
- def_delegators :@new_resource, :files_rights, :files_mode, :files_group, :files_owner, :files_backup
41
- def_delegators :@new_resource, :rights, :mode, :group, :owner
37
+ def_delegators :new_resource, :purge, :path, :source, :cookbook, :cookbook_name
38
+ def_delegators :new_resource, :files_rights, :files_mode, :files_group, :files_owner, :files_backup
39
+ def_delegators :new_resource, :rights, :mode, :group, :owner
42
40
 
43
41
  # The overwrite property on the resource. Delegates to new_resource but can be mutated.
44
42
  #
@@ -268,16 +266,6 @@ class Chef
268
266
  res
269
267
  end
270
268
 
271
- #
272
- # Add back deprecated methods and aliases that are internally unused and should be removed in Chef-13
273
- #
274
- extend Chef::Deprecation::Warnings
275
- include Chef::Deprecation::Provider::RemoteDirectory
276
- add_deprecation_warnings_for(Chef::Deprecation::Provider::RemoteDirectory.instance_methods)
277
-
278
- alias_method :resource_for_directory, :directory_resource
279
- add_deprecation_warnings_for([:resource_for_directory])
280
-
281
269
  end
282
270
  end
283
271
  end
@@ -18,33 +18,27 @@
18
18
  #
19
19
 
20
20
  require "chef/provider/file"
21
- require "chef/deprecation/provider/remote_file"
22
- require "chef/deprecation/warnings"
23
21
 
24
22
  class Chef
25
23
  class Provider
26
24
  class RemoteFile < Chef::Provider::File
27
25
  provides :remote_file
28
26
 
29
- extend Chef::Deprecation::Warnings
30
- include Chef::Deprecation::Provider::RemoteFile
31
- add_deprecation_warnings_for(Chef::Deprecation::Provider::RemoteFile.instance_methods)
32
-
33
27
  def initialize(new_resource, run_context)
34
28
  @content_class = Chef::Provider::RemoteFile::Content
35
29
  super
36
30
  end
37
31
 
38
32
  def load_current_resource
39
- @current_resource = Chef::Resource::RemoteFile.new(@new_resource.name)
33
+ @current_resource = Chef::Resource::RemoteFile.new(new_resource.name)
40
34
  super
41
35
  end
42
36
 
43
37
  private
44
38
 
45
39
  def managing_content?
46
- return true if @new_resource.checksum
47
- return true if !@new_resource.source.nil? && @action != :create_if_missing
40
+ return true if new_resource.checksum
41
+ return true if !new_resource.source.nil? && @action != :create_if_missing
48
42
  false
49
43
  end
50
44
 
@@ -17,14 +17,12 @@
17
17
  #
18
18
 
19
19
  require "chef/log"
20
- require "chef/mixin/command"
21
20
  require "chef/provider"
22
21
  require "ipaddr"
23
22
 
24
23
  class Chef
25
24
  class Provider
26
25
  class Route < Chef::Provider
27
- include Chef::Mixin::Command
28
26
 
29
27
  provides :route
30
28
 
@@ -84,10 +82,6 @@ class Chef
84
82
  end
85
83
  end
86
84
 
87
- def whyrun_supported?
88
- true
89
- end
90
-
91
85
  def load_current_resource
92
86
  self.is_running = false
93
87
 
@@ -219,7 +213,7 @@ class Chef
219
213
  case action
220
214
  when :add
221
215
  content << (options[:target]).to_s
222
- content << "/#{options[:netmask]}" if options[:netmask]
216
+ content << "/#{MASK[options[:netmask].to_s]}" if options[:netmask]
223
217
  content << " via #{options[:gateway]}" if options[:gateway]
224
218
  content << "\n"
225
219
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: AJ Christensen (<aj@chef.io>)
4
- # Copyright:: Copyright 2009-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2009-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");
@@ -22,18 +22,14 @@ class Chef
22
22
  class RubyBlock < Chef::Provider
23
23
  provides :ruby_block
24
24
 
25
- def whyrun_supported?
26
- true
27
- end
28
-
29
25
  def load_current_resource
30
26
  true
31
27
  end
32
28
 
33
29
  def action_run
34
- converge_by("execute the ruby block #{@new_resource.name}") do
35
- @new_resource.block.call
36
- Chef::Log.info("#{@new_resource} called")
30
+ converge_by("execute the ruby block #{new_resource.name}") do
31
+ new_resource.block.call
32
+ Chef::Log.info("#{new_resource} called")
37
33
  end
38
34
  end
39
35
 
@@ -18,6 +18,7 @@
18
18
 
19
19
  require "tempfile"
20
20
  require "chef/provider/execute"
21
+ require "chef/win32/security" if Chef::Platform.windows?
21
22
  require "forwardable"
22
23
 
23
24
  class Chef
@@ -33,7 +34,7 @@ class Chef
33
34
  provides :ruby
34
35
  provides :script
35
36
 
36
- def_delegators :@new_resource, :interpreter, :flags
37
+ def_delegators :new_resource, :interpreter, :flags
37
38
 
38
39
  attr_accessor :code
39
40
 
@@ -50,7 +51,7 @@ class Chef
50
51
  super
51
52
  # @todo Chef-13: change this to an exception
52
53
  if code.nil?
53
- Chef::Log.warn "#{@new_resource}: No code attribute was given, resource does nothing, this behavior is deprecated and will be removed in Chef-13"
54
+ Chef::Log.warn "#{new_resource}: No code attribute was given, resource does nothing, this behavior is deprecated and will be removed in Chef-13"
54
55
  end
55
56
  end
56
57
 
@@ -66,10 +67,45 @@ class Chef
66
67
  end
67
68
 
68
69
  def set_owner_and_group
69
- # FileUtils itself implements a no-op if +user+ or +group+ are nil
70
- # You can prove this by running FileUtils.chown(nil,nil,'/tmp/file')
71
- # as an unprivileged user.
72
- FileUtils.chown(new_resource.user, new_resource.group, script_file.path)
70
+ if Chef::Platform.windows?
71
+ # And on Windows also this is a no-op if there is no user specified.
72
+ grant_alternate_user_read_access
73
+ else
74
+ # FileUtils itself implements a no-op if +user+ or +group+ are nil
75
+ # You can prove this by running FileUtils.chown(nil,nil,'/tmp/file')
76
+ # as an unprivileged user.
77
+ FileUtils.chown(new_resource.user, new_resource.group, script_file.path)
78
+ end
79
+ end
80
+
81
+ def grant_alternate_user_read_access
82
+ # Do nothing if an alternate user isn't specified -- the file
83
+ # will already have the correct permissions for the user as part
84
+ # of the default ACL behavior on Windows.
85
+ return if new_resource.user.nil?
86
+
87
+ # Duplicate the script file's existing DACL
88
+ # so we can add an ACE later
89
+ securable_object = Chef::ReservedNames::Win32::Security::SecurableObject.new(script_file.path)
90
+ aces = securable_object.security_descriptor.dacl.reduce([]) { |result, current| result.push(current) }
91
+
92
+ username = new_resource.user
93
+
94
+ if new_resource.domain
95
+ username = new_resource.domain + '\\' + new_resource.user
96
+ end
97
+
98
+ # Create an ACE that allows the alternate user read access to the script
99
+ # file so it can be read and executed.
100
+ user_sid = Chef::ReservedNames::Win32::Security::SID.from_account(username)
101
+ read_ace = Chef::ReservedNames::Win32::Security::ACE.access_allowed(user_sid, Chef::ReservedNames::Win32::API::Security::GENERIC_READ | Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE, 0)
102
+ aces.push(read_ace)
103
+ acl = Chef::ReservedNames::Win32::Security::ACL.create(aces)
104
+
105
+ # This actually applies the modified DACL to the file
106
+ # Use parentheses to bypass RuboCop / ChefStyle warning
107
+ # about useless setter
108
+ (securable_object.dacl = acl)
73
109
  end
74
110
 
75
111
  def script_file
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: kaustubh (<kaustubh@clogeny.com>)
3
- # Copyright:: Copyright 2014-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2014-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -43,10 +43,6 @@ class Chef
43
43
  @current_resource
44
44
  end
45
45
 
46
- def whyrun_supported?
47
- true
48
- end
49
-
50
46
  def start_service
51
47
  if @is_resource_group
52
48
  shell_out!("startsrc -g #{@new_resource.service_name}")
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.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");
@@ -35,8 +35,6 @@ class Chef
35
35
 
36
36
  def load_current_resource
37
37
  super
38
- @priority_success = true
39
- @rcd_status = nil
40
38
  current_resource.priority(get_priority)
41
39
  current_resource.enabled(service_currently_enabled?(current_resource.priority))
42
40
  current_resource
@@ -54,8 +52,8 @@ class Chef
54
52
  end
55
53
 
56
54
  requirements.assert(:all_actions) do |a|
57
- a.assertion { @priority_success }
58
- a.failure_message Chef::Exceptions::Service, "/usr/sbin/update-rc.d -n -f #{current_resource.service_name} failed - #{@rcd_status.inspect}"
55
+ a.assertion { @so_priority.exitstatus == 0 }
56
+ a.failure_message Chef::Exceptions::Service, "/usr/sbin/update-rc.d -n -f #{current_resource.service_name} failed - #{@so_priority.inspect}"
59
57
  # This can happen if the service is not yet installed,so we'll fake it.
60
58
  a.whyrun ["Unable to determine priority of service, assuming service would have been correctly installed earlier in the run.",
61
59
  "Assigning temporary priorities to continue.",
@@ -75,19 +73,18 @@ class Chef
75
73
  def get_priority
76
74
  priority = {}
77
75
 
78
- @rcd_status = popen4("/usr/sbin/update-rc.d -n -f #{current_resource.service_name} remove") do |pid, stdin, stdout, stderr|
79
-
80
- [stdout, stderr].each do |iop|
81
- iop.each_line do |line|
82
- if UPDATE_RC_D_PRIORITIES =~ line
83
- # priority[runlevel] = [ S|K, priority ]
84
- # S = Start, K = Kill
85
- # debian runlevels: 0 Halt, 1 Singleuser, 2 Multiuser, 3-5 == 2, 6 Reboot
86
- priority[$1] = [($2 == "S" ? :start : :stop), $3]
87
- end
88
- if line =~ UPDATE_RC_D_ENABLED_MATCHES
89
- enabled = true
90
- end
76
+ @so_priority = shell_out!("/usr/sbin/update-rc.d -n -f #{current_resource.service_name} remove")
77
+
78
+ [@so_priority.stdout, @so_priority.stderr].each do |iop|
79
+ iop.each_line do |line|
80
+ if UPDATE_RC_D_PRIORITIES =~ line
81
+ # priority[runlevel] = [ S|K, priority ]
82
+ # S = Start, K = Kill
83
+ # debian runlevels: 0 Halt, 1 Singleuser, 2 Multiuser, 3-5 == 2, 6 Reboot
84
+ priority[$1] = [($2 == "S" ? :start : :stop), $3]
85
+ end
86
+ if line =~ UPDATE_RC_D_ENABLED_MATCHES
87
+ enabled = true
91
88
  end
92
89
  end
93
90
  end
@@ -98,9 +95,6 @@ class Chef
98
95
  priority = priority[2].last
99
96
  end
100
97
 
101
- unless @rcd_status.exitstatus == 0
102
- @priority_success = false
103
- end
104
98
  priority
105
99
  end
106
100
 
@@ -18,7 +18,6 @@
18
18
 
19
19
  require "chef/resource/service"
20
20
  require "chef/provider/service/init"
21
- require "chef/mixin/command"
22
21
 
23
22
  class Chef
24
23
  class Provider
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  require "chef/provider/service/init"
21
- require "chef/mixin/command"
22
21
  require "chef/util/path_helper"
23
22
 
24
23
  class Chef::Provider::Service::Gentoo < Chef::Provider::Service::Init
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "chef/provider/service/simple"
20
- require "chef/mixin/command"
21
20
  require "chef/platform/service_helpers"
22
21
 
23
22
  class Chef
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright 2011-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2011-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");
@@ -24,7 +24,7 @@ class Chef
24
24
  class Service
25
25
  class Insserv < Chef::Provider::Service::Init
26
26
 
27
- provides :service, platform_family: %w{debian rhel fedora suse} do |node|
27
+ provides :service, platform_family: %w{debian rhel fedora suse amazon} do |node|
28
28
  Chef::Platform::ServiceHelpers.service_resource_providers.include?(:insserv)
29
29
  end
30
30
 
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/mixin/command"
20
19
  require "chef/mixin/shell_out"
21
20
  require "chef/provider/service/init"
22
21
  require "chef/resource/service"
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@hjksolutions.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");
@@ -28,7 +28,7 @@ class Chef
28
28
  # @api private
29
29
  attr_accessor :current_run_levels
30
30
 
31
- provides :service, platform_family: %w{rhel fedora suse} do |node|
31
+ provides :service, platform_family: %w{rhel fedora suse amazon} do |node|
32
32
  Chef::Platform::ServiceHelpers.service_resource_providers.include?(:redhat)
33
33
  end
34
34
 
@@ -18,7 +18,6 @@
18
18
 
19
19
  require "chef/provider/service"
20
20
  require "chef/resource/service"
21
- require "chef/mixin/command"
22
21
 
23
22
  class Chef
24
23
  class Provider
@@ -41,10 +40,6 @@ class Chef
41
40
  @current_resource
42
41
  end
43
42
 
44
- def whyrun_supported?
45
- true
46
- end
47
-
48
43
  def shared_resource_requirements
49
44
  super
50
45
  requirements.assert(:all_actions) do |a|
@@ -18,7 +18,6 @@
18
18
 
19
19
  require "chef/provider/service"
20
20
  require "chef/resource/service"
21
- require "chef/mixin/command"
22
21
 
23
22
  class Chef
24
23
  class Provider
@@ -56,11 +55,13 @@ class Chef
56
55
 
57
56
  def enable_service
58
57
  shell_out!(default_init_command, "clear", @new_resource.service_name) if @maintenance
59
- shell_out!(default_init_command, "enable", "-s", @new_resource.service_name)
58
+ enable_flags = [ "-s", @new_resource.options ].flatten.compact
59
+ shell_out!(default_init_command, "enable", *enable_flags, @new_resource.service_name)
60
60
  end
61
61
 
62
62
  def disable_service
63
- shell_out!(default_init_command, "disable", "-s", @new_resource.service_name)
63
+ disable_flags = [ "-s", @new_resource.options ].flatten.compact
64
+ shell_out!(default_init_command, "disable", *disable_flags, @new_resource.service_name)
64
65
  end
65
66
 
66
67
  alias_method :stop_service, :disable_service
@@ -73,7 +74,7 @@ class Chef
73
74
  def restart_service
74
75
  ## svcadm restart doesn't supports sync(-s) option
75
76
  disable_service
76
- return enable_service
77
+ enable_service
77
78
  end
78
79
 
79
80
  def service_status
@@ -89,7 +89,7 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
89
89
  args = "--system"
90
90
  end
91
91
 
92
- return options, args
92
+ [options, args]
93
93
  end
94
94
 
95
95
  def start_service
@@ -18,7 +18,6 @@
18
18
 
19
19
  require "chef/resource/service"
20
20
  require "chef/provider/service/simple"
21
- require "chef/mixin/command"
22
21
  require "chef/util/file_edit"
23
22
 
24
23
  class Chef
@@ -241,17 +240,16 @@ class Chef
241
240
 
242
241
  def upstart_goal_state
243
242
  command = "/sbin/status #{@job}"
244
- status = popen4(command) do |pid, stdin, stdout, stderr|
245
- stdout.each_line do |line|
246
- # service goal/state
247
- # OR
248
- # service (instance) goal/state
249
- # OR
250
- # service (goal) state
251
- line =~ UPSTART_STATE_FORMAT
252
- data = Regexp.last_match
253
- return data[1]
254
- end
243
+ so = shell_out(command)
244
+ so.stdout.each_line do |line|
245
+ # service goal/state
246
+ # OR
247
+ # service (instance) goal/state
248
+ # OR
249
+ # service (goal) state
250
+ line =~ UPSTART_STATE_FORMAT
251
+ data = Regexp.last_match
252
+ return data[1]
255
253
  end
256
254
  end
257
255