chef 12.18.31 → 13.0.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Tyler Ball (<tball@chef.io>)
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");
@@ -30,7 +30,10 @@ class Chef
30
30
 
31
31
  # Matches a single resource lookup specification,
32
32
  # e.g., "service[nginx]"
33
- SINGLE_RESOURCE_MATCH = /^(.+)\[(.+)\]$/
33
+ SINGLE_RESOURCE_MATCH = /^(.+)\[(.*)\]$/
34
+
35
+ # Matches e.g. "apt_update" with no name
36
+ NAMELESS_RESOURCE_MATCH = /^([^\[\]\s]+)$/
34
37
 
35
38
  def initialize
36
39
  @resources_by_key = Hash.new
@@ -118,7 +121,7 @@ class Chef
118
121
  case query_object
119
122
  when Chef::Resource
120
123
  true
121
- when SINGLE_RESOURCE_MATCH, MULTIPLE_RESOURCE_MATCH
124
+ when SINGLE_RESOURCE_MATCH, MULTIPLE_RESOURCE_MATCH, NAMELESS_RESOURCE_MATCH
122
125
  true
123
126
  when Hash
124
127
  true
@@ -132,6 +135,14 @@ class Chef
132
135
  end
133
136
  end
134
137
 
138
+ def self.from_hash(o)
139
+ collection = new()
140
+ rl = o["instance_vars"]["@resources_by_key"]
141
+ resources = rl.merge(rl) { |k, r| Chef::Resource.from_hash(r) }
142
+ collection.instance_variable_set(:@resources_by_key, resources)
143
+ collection
144
+ end
145
+
135
146
  private
136
147
 
137
148
  def create_key(resource_type, instance_name)
@@ -146,27 +157,43 @@ class Chef
146
157
  results << lookup(create_key(resource_type, instance_name))
147
158
  end
148
159
  end
149
- return results
160
+ results
150
161
  end
151
162
 
152
163
  def find_resource_by_string(arg)
153
- results = Array.new
154
- case arg
155
- when MULTIPLE_RESOURCE_MATCH
156
- resource_type = $1
157
- arg =~ /^.+\[(.+)\]$/
158
- resource_list = $1
159
- resource_list.split(",").each do |instance_name|
160
- results << lookup(create_key(resource_type, instance_name))
161
- end
162
- when SINGLE_RESOURCE_MATCH
164
+ begin
165
+ if arg =~ SINGLE_RESOURCE_MATCH
163
166
  resource_type = $1
164
167
  name = $2
165
- results << lookup(create_key(resource_type, name))
168
+ return [ lookup(create_key(resource_type, name)) ]
169
+ end
170
+ rescue Chef::Exceptions::ResourceNotFound => e
171
+ if arg =~ MULTIPLE_RESOURCE_MATCH
172
+ begin
173
+ results = Array.new
174
+ resource_type = $1
175
+ arg =~ /^.+\[(.+)\]$/
176
+ resource_list = $1
177
+ resource_list.split(",").each do |instance_name|
178
+ results << lookup(create_key(resource_type, instance_name))
179
+ end
180
+ Chef.deprecated(:multiresource_match, "The resource_collection multi-resource syntax is deprecated")
181
+ return results
182
+ rescue Chef::Exceptions::ResourceNotFound
183
+ raise e
184
+ end
166
185
  else
167
- raise ArgumentError, "Bad string format #{arg}, you must have a string like resource_type[name]!"
186
+ raise e
187
+ end
168
188
  end
169
- return results
189
+
190
+ if arg =~ NAMELESS_RESOURCE_MATCH
191
+ resource_type = $1
192
+ name = ""
193
+ return [ lookup(create_key(resource_type, name)) ]
194
+ end
195
+
196
+ raise ArgumentError, "Bad string format #{arg}, you must have a string like resource_type[name]!"
170
197
  end
171
198
  end
172
199
  end
@@ -117,6 +117,16 @@ class Chef
117
117
  end
118
118
  end
119
119
 
120
+ def self.from_hash(o)
121
+ collection = new()
122
+ { "@resource_list" => "ResourceList", "@resource_set" => "ResourceSet" }.each_pair do |name, klass|
123
+ obj = Chef::ResourceCollection.const_get(klass).from_hash(o["instance_vars"].delete(name))
124
+ collection.instance_variable_set(name.to_sym, obj)
125
+ end
126
+ collection.instance_variable_set(:@run_context, o["instance_vars"].delete("@run_context"))
127
+ collection
128
+ end
129
+
120
130
  private
121
131
 
122
132
  def lookup_recursive(rc, key)
@@ -87,7 +87,7 @@ class Chef
87
87
  end
88
88
 
89
89
  def success?
90
- !self.exception
90
+ !exception
91
91
  end
92
92
  end # End class ResouceReport
93
93
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Lamont Granquist (<lamont@chef.io>)
3
- # Copyright:: Copyright 2015-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2015-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");
@@ -54,11 +54,6 @@ class Chef
54
54
  # @api private
55
55
  attr_reader :resource_name
56
56
  # @api private
57
- def resource
58
- Chef.deprecated(:custom_resource, "Chef::ResourceResolver.resource deprecated. Use resource_name instead.")
59
- resource_name
60
- end
61
- # @api private
62
57
  attr_reader :action
63
58
  # @api private
64
59
  attr_reader :canonical
@@ -161,24 +156,5 @@ class Chef
161
156
  def overrode_provides?(handler)
162
157
  handler.method(:provides?).owner != Chef::Resource.method(:provides?).owner
163
158
  end
164
-
165
- module Deprecated
166
- # return a deterministically sorted list of Chef::Resource subclasses
167
- def resources
168
- Chef::Resource.sorted_descendants
169
- end
170
-
171
- def enabled_handlers
172
- handlers = super
173
- if handlers.empty?
174
- handlers = resources.select { |handler| overrode_provides?(handler) && handler.provides?(node, resource_name) }
175
- handlers.each do |handler|
176
- Chef.deprecated(:custom_resource, "#{handler}.provides? returned true when asked if it provides DSL #{resource_name}, but provides #{resource_name.inspect} was never called! In Chef 13, this will break: you must call provides to mark the names you provide, even if you also override provides? yourself.")
177
- end
178
- end
179
- handlers
180
- end
181
- end
182
- prepend Deprecated
183
159
  end
184
160
  end
@@ -34,7 +34,6 @@ require "chef/resource/dpkg_package"
34
34
  require "chef/resource/dnf_package"
35
35
  require "chef/resource/dsc_script"
36
36
  require "chef/resource/dsc_resource"
37
- require "chef/resource/easy_install_package"
38
37
  require "chef/resource/env"
39
38
  require "chef/resource/erl_call"
40
39
  require "chef/resource/execute"
@@ -99,3 +98,4 @@ require "chef/resource/zypper_package"
99
98
  require "chef/resource/cab_package"
100
99
  require "chef/resource/powershell_package"
101
100
  require "chef/resource/msu_package"
101
+ require "chef/resource/windows_task"
data/lib/chef/role.rb CHANGED
@@ -168,12 +168,6 @@ class Chef
168
168
  self
169
169
  end
170
170
 
171
- # Create a Chef::Role from JSON
172
- def self.json_create(o)
173
- Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::Role#from_hash")
174
- from_hash(o)
175
- end
176
-
177
171
  def self.from_hash(o)
178
172
  role = new
179
173
  role.name(o["name"])
@@ -57,6 +57,7 @@ class Chef
57
57
 
58
58
  # Run the compile phase of the chef run. Loads files in the following order:
59
59
  # * Libraries
60
+ # * Ohai
60
61
  # * Attributes
61
62
  # * LWRPs
62
63
  # * Resource Definitions
@@ -69,6 +70,7 @@ class Chef
69
70
  # #cookbook_order for more information.
70
71
  def compile
71
72
  compile_libraries
73
+ compile_ohai_plugins
72
74
  compile_attributes
73
75
  compile_lwrps
74
76
  compile_resource_definitions
@@ -101,11 +103,31 @@ class Chef
101
103
  @events.library_load_complete
102
104
  end
103
105
 
106
+ # Loads Ohai Plugins from cookbooks, and ensure any old ones are
107
+ # properly cleaned out
108
+ def compile_ohai_plugins
109
+ ohai_plugin_count = count_files_by_segment(:ohai)
110
+ @events.ohai_plugin_load_start(ohai_plugin_count)
111
+ FileUtils.rm_rf(Chef::Config[:ohai_segment_plugin_path])
112
+
113
+ cookbook_order.each do |cookbook|
114
+ load_ohai_plugins_from_cookbook(cookbook)
115
+ end
116
+
117
+ # Doing a full ohai system check is costly, so only do so if we've loaded additional plugins
118
+ if ohai_plugin_count > 0
119
+ ohai = Ohai::System.new.run_additional_plugins(Chef::Config[:ohai_segment_plugin_path])
120
+ node.consume_ohai_data(ohai)
121
+ end
122
+
123
+ @events.ohai_plugin_load_complete
124
+ end
125
+
104
126
  # Loads attributes files from cookbooks. Attributes files are loaded
105
127
  # according to #cookbook_order; within a cookbook, +default.rb+ is loaded
106
128
  # first, then the remaining attributes files in lexical sort order.
107
129
  def compile_attributes
108
- @events.attribute_load_start(count_files_by_segment(:attributes))
130
+ @events.attribute_load_start(count_files_by_segment(:attributes, "attributes.rb"))
109
131
  cookbook_order.each do |cookbook|
110
132
  load_attributes_from_cookbook(cookbook)
111
133
  end
@@ -166,7 +188,16 @@ class Chef
166
188
 
167
189
  def load_attributes_from_cookbook(cookbook_name)
168
190
  list_of_attr_files = files_in_cookbook_by_segment(cookbook_name, :attributes).dup
169
- if default_file = list_of_attr_files.find { |path| File.basename(path) == "default.rb" }
191
+ root_alias = cookbook_collection[cookbook_name].files_for(:root_files).find { |record| record[:name] == "attributes.rb" }
192
+ default_file = list_of_attr_files.find { |path| File.basename(path) == "default.rb" }
193
+ if root_alias
194
+ if default_file
195
+ Chef::Log.error("Cookbook #{cookbook_name} contains both attributes.rb and and attributes/default.rb, ignoring attributes/default.rb")
196
+ list_of_attr_files.delete(default_file)
197
+ end
198
+ # The actual root_alias path decoding is handled in CookbookVersion#attribute_filenames_by_short_filename
199
+ load_attribute_file(cookbook_name.to_s, "default")
200
+ elsif default_file
170
201
  list_of_attr_files.delete(default_file)
171
202
  load_attribute_file(cookbook_name.to_s, default_file)
172
203
  end
@@ -226,6 +257,19 @@ class Chef
226
257
  raise
227
258
  end
228
259
 
260
+ def load_ohai_plugins_from_cookbook(cookbook_name)
261
+ target = Chef::Config[:ohai_segment_plugin_path]
262
+ files_in_cookbook_by_segment(cookbook_name, :ohai).each do |filename|
263
+ next unless File.extname(filename) == ".rb"
264
+
265
+ Chef::Log.debug "Loading Ohai plugin: #{filename} from #{cookbook_name}"
266
+ target_name = File.join(target, cookbook_name.to_s, File.basename(filename))
267
+
268
+ FileUtils.mkdir_p(File.dirname(target_name))
269
+ FileUtils.cp(filename, target_name)
270
+ end
271
+ end
272
+
229
273
  def load_resource_definitions_from_cookbook(cookbook_name)
230
274
  files_in_cookbook_by_segment(cookbook_name, :definitions).each do |filename|
231
275
  begin
@@ -259,16 +303,16 @@ class Chef
259
303
  ordered_cookbooks << cookbook
260
304
  end
261
305
 
262
- def count_files_by_segment(segment)
306
+ def count_files_by_segment(segment, root_alias = nil)
263
307
  cookbook_collection.inject(0) do |count, cookbook_by_name|
264
- count + cookbook_by_name[1].segment_filenames(segment).size
308
+ count + cookbook_by_name[1].segment_filenames(segment).size + (root_alias ? cookbook_by_name[1].files_for(:root_files).select { |record| record[:name] == root_alias }.size : 0)
265
309
  end
266
310
  end
267
311
 
268
312
  # Lists the local paths to files in +cookbook+ of type +segment+
269
313
  # (attribute, recipe, etc.), sorted lexically.
270
314
  def files_in_cookbook_by_segment(cookbook, segment)
271
- cookbook_collection[cookbook].segment_filenames(segment).sort
315
+ cookbook_collection[cookbook].files_for(segment).map { |record| record[:full_path] }.sort
272
316
  end
273
317
 
274
318
  # Yields the name, as a symbol, of each cookbook depended on by
@@ -2,7 +2,7 @@
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: Christopher Walters (<cw@chef.io>)
4
4
  # Author:: Tim Hinderliter (<tim@chef.io>)
5
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
5
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
6
6
  # License:: Apache License, Version 2.0
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -253,7 +253,7 @@ class Chef
253
253
  # @return [Array[Notification]]
254
254
  #
255
255
  def before_notifications(resource)
256
- return before_notification_collection[resource.declared_key]
256
+ before_notification_collection[resource.declared_key]
257
257
  end
258
258
 
259
259
  #
@@ -262,7 +262,7 @@ class Chef
262
262
  # @return [Array[Notification]]
263
263
  #
264
264
  def immediate_notifications(resource)
265
- return immediate_notification_collection[resource.declared_key]
265
+ immediate_notification_collection[resource.declared_key]
266
266
  end
267
267
 
268
268
  #
@@ -272,7 +272,7 @@ class Chef
272
272
  # @return [Array[Notification]]
273
273
  #
274
274
  def delayed_notifications(resource)
275
- return delayed_notification_collection[resource.declared_key]
275
+ delayed_notification_collection[resource.declared_key]
276
276
  end
277
277
 
278
278
  #
@@ -576,27 +576,6 @@ ERROR_MESSAGE
576
576
  attr_reader :loaded_attributes_hash
577
577
  attr_reader :loaded_recipes_hash
578
578
 
579
- module Deprecated
580
- ###
581
- # These need to be settable so deploy can run a resource_collection
582
- # independent of any cookbooks via +recipe_eval+
583
- def audits=(value)
584
- Chef.deprecated(:internal_api, "Setting run_context.audits will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
585
- @audits = value
586
- end
587
-
588
- def immediate_notification_collection=(value)
589
- Chef.deprecated(:internal_api, "Setting run_context.immediate_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
590
- @immediate_notification_collection = value
591
- end
592
-
593
- def delayed_notification_collection=(value)
594
- Chef.deprecated(:internal_api, "Setting run_context.delayed_notification_collection will be removed in a future Chef. Use run_context.create_child to create a new RunContext instead.")
595
- @delayed_notification_collection = value
596
- end
597
- end
598
- prepend Deprecated
599
-
600
579
  #
601
580
  # A child run context. Delegates all root context calls to its parent.
602
581
  #
@@ -81,7 +81,7 @@ class Chef
81
81
 
82
82
  def ==(other)
83
83
  if other.kind_of?(String)
84
- self.to_s == other.to_s
84
+ to_s == other.to_s
85
85
  else
86
86
  other.respond_to?(:type) && other.respond_to?(:name) && other.respond_to?(:version) && other.type == @type && other.name == @name && other.version == @version
87
87
  end
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Stephen Delano (<stephen@chef.io>)
3
3
  # Author:: Seth Falcon (<seth@chef.io>)
4
- # Copyright:: Copyright 2010-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2010-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");
@@ -36,17 +36,17 @@ class Chef
36
36
  end
37
37
  end
38
38
  @versions[name] = version if version
39
- self << name unless self.include?(name)
39
+ self << name unless include?(name)
40
40
  end
41
41
 
42
42
  def with_versions
43
- self.map { |recipe_name| { :name => recipe_name, :version => @versions[recipe_name] } }
43
+ map { |recipe_name| { :name => recipe_name, :version => @versions[recipe_name] } }
44
44
  end
45
45
 
46
46
  # Return an Array of Hashes, each of the form:
47
47
  # {:name => RECIPE_NAME, :version_constraint => Chef::VersionConstraint }
48
48
  def with_version_constraints
49
- self.map do |recipe_name|
49
+ map do |recipe_name|
50
50
  constraint = Chef::VersionConstraint.new(@versions[recipe_name])
51
51
  { :name => recipe_name, :version_constraint => constraint }
52
52
  end
@@ -55,7 +55,7 @@ class Chef
55
55
  # Return an Array of Strings, each of the form:
56
56
  # "NAME@VERSION"
57
57
  def with_version_constraints_strings
58
- self.map do |recipe_name|
58
+ map do |recipe_name|
59
59
  if @versions[recipe_name]
60
60
  "#{recipe_name}@#{@versions[recipe_name]}"
61
61
  else
@@ -69,7 +69,7 @@ class Chef
69
69
  #
70
70
  # @return [Array] Array of strings with fully-qualified recipe names
71
71
  def with_fully_qualified_names_and_version_constraints
72
- self.map do |recipe_name|
72
+ map do |recipe_name|
73
73
  qualified_recipe = if recipe_name.include?("::")
74
74
  recipe_name
75
75
  else
@@ -83,17 +83,19 @@ class Chef
83
83
  end
84
84
  end
85
85
 
86
- # Get an array of strings of both fully-qualified and unexpanded recipe names
87
- # in response to chef/chef#3767
88
- # Chef-13 will revert to the behaviour of just including the fully-qualified name
86
+ # For "foo::default" also include "foo", for "foo" also include "foo::default", for
87
+ # "foo::bar" just return "foo::bar". This makes it easier for people to search on
88
+ # default recipe names.
89
89
  #
90
90
  # @return [Array] Array of strings with fully-qualified and unexpanded recipe names
91
91
  def with_duplicate_names
92
- self.map do |recipe_name|
93
- if recipe_name.include?("::")
92
+ map do |recipe_name|
93
+ if recipe_name.end_with?("::default")
94
+ [ recipe_name.sub(/::default$/, ""), recipe_name ]
95
+ elsif recipe_name.include?("::")
94
96
  recipe_name
95
97
  else
96
- [recipe_name, "#{recipe_name}::default"]
98
+ [ recipe_name, "#{recipe_name}::default" ]
97
99
  end
98
100
  end.flatten
99
101
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,28 +39,6 @@ class Chef
39
39
  @rest ||= Chef::ServerAPI.new(@url || @config[:chef_server_url])
40
40
  end
41
41
 
42
- # Backwards compatability for cookbooks.
43
- # This can be removed in Chef > 12.
44
- def partial_search(type, query = "*:*", *args, &block)
45
- Chef::Log.warn(<<-WARNDEP)
46
- DEPRECATED: The 'partial_search' API is deprecated and will be removed in
47
- future releases. Please use 'search' with a :filter_result argument to get
48
- partial search data.
49
- WARNDEP
50
-
51
- if !args.empty? && args.first.is_a?(Hash)
52
- # partial_search uses :keys instead of :filter_result for
53
- # result filtering.
54
- args_h = args.first.dup
55
- args_h[:filter_result] = args_h[:keys]
56
- args_h.delete(:keys)
57
-
58
- search(type, query, args_h, &block)
59
- else
60
- search(type, query, *args, &block)
61
- end
62
- end
63
-
64
42
  #
65
43
  # New search input, designed to be backwards compatible with the old method signature
66
44
  # 'type' and 'query' are the same as before, args now will accept either a Hash of
@@ -85,6 +63,14 @@ WARNDEP
85
63
  validate_type(type)
86
64
 
87
65
  args_h = hashify_args(*args)
66
+ if args_h[:fuzz]
67
+ if type == :node
68
+ query = fuzzify_node_query(query)
69
+ end
70
+ # FIXME: can i haz proper ruby-2.x named parameters someday plz?
71
+ args_h = args_h.reject { |k, v| k == :fuzz }
72
+ end
73
+
88
74
  response = call_rest_service(type, query: query, **args_h)
89
75
 
90
76
  if block
@@ -114,6 +100,14 @@ WARNDEP
114
100
 
115
101
  private
116
102
 
103
+ def fuzzify_node_query(query)
104
+ if query !~ /:/
105
+ "tags:*#{query}* OR roles:*#{query}* OR fqdn:*#{query}* OR addresses:*#{query}* OR policy_name:*#{query}* OR policy_group:*#{query}*"
106
+ else
107
+ query
108
+ end
109
+ end
110
+
117
111
  def validate_type(t)
118
112
  unless t.kind_of?(String) || t.kind_of?(Symbol)
119
113
  msg = "Invalid search object type #{t.inspect} (#{t.class}), must be a String or Symbol." +
@@ -128,10 +122,12 @@ WARNDEP
128
122
  return args.first if args.first.is_a?(Hash)
129
123
 
130
124
  args_h = Hash.new
131
- args_h[:sort] = args[0] if args[0]
132
- args_h[:start] = args[1] if args[1]
133
- args_h[:rows] = args[2]
134
- args_h[:filter_result] = args[3]
125
+ # If we have 4 arguments, the first is the now-removed sort option, so
126
+ # just ignore it.
127
+ args.pop(0) if args.length == 4
128
+ args_h[:start] = args[0] if args[0]
129
+ args_h[:rows] = args[1]
130
+ args_h[:filter_result] = args[2]
135
131
  args_h
136
132
  end
137
133
 
@@ -141,16 +137,15 @@ WARNDEP
141
137
  s && Addressable::URI.encode_component(s.to_s, QUERY_PARAM_VALUE)
142
138
  end
143
139
 
144
- def create_query_string(type, query, rows, start, sort)
140
+ def create_query_string(type, query, rows, start)
145
141
  qstr = "search/#{type}?q=#{escape_value(query)}"
146
- qstr += "&sort=#{escape_value(sort)}" if sort
147
142
  qstr += "&start=#{escape_value(start)}" if start
148
143
  qstr += "&rows=#{escape_value(rows)}" if rows
149
144
  qstr
150
145
  end
151
146
 
152
- def call_rest_service(type, query: "*:*", rows: nil, start: 0, sort: "X_CHEF_id_CHEF_X asc", filter_result: nil)
153
- query_string = create_query_string(type, query, rows, start, sort)
147
+ def call_rest_service(type, query: "*:*", rows: nil, start: 0, filter_result: nil)
148
+ query_string = create_query_string(type, query, rows, start)
154
149
 
155
150
  if filter_result
156
151
  response = rest.post(query_string, filter_result)
@@ -24,6 +24,7 @@ require "chef/http/json_input"
24
24
  require "chef/http/json_output"
25
25
  require "chef/http/remote_request_id"
26
26
  require "chef/http/validate_content_length"
27
+ require "chef/http/api_versions"
27
28
 
28
29
  class Chef
29
30
  class ServerAPI < Chef::HTTP
@@ -42,6 +43,7 @@ class Chef
42
43
  use Chef::HTTP::Decompressor
43
44
  use Chef::HTTP::Authenticator
44
45
  use Chef::HTTP::RemoteRequestID
46
+ use Chef::HTTP::APIVersions
45
47
 
46
48
  # ValidateContentLength should come after Decompressor
47
49
  # because the order of middlewares is reversed when handling
@@ -1,6 +1,5 @@
1
- #
2
- # Author:: Joe Williams (<joe@joetify.com>)
3
- # Copyright:: Copyright 2009-2016, Joe Williams
1
+ #--
2
+ # Copyright:: Copyright 2017, Chef Software Inc.
4
3
  # License:: Apache License, Version 2.0
5
4
  #
6
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,17 +15,26 @@
16
15
  # limitations under the License.
17
16
  #
18
17
 
19
- require "chef/resource/package"
18
+ require "singleton"
20
19
 
21
20
  class Chef
22
- class Resource
23
- class EasyInstallPackage < Chef::Resource::Package
24
- resource_name :easy_install_package
21
+ class ServerAPIVersions
22
+ include Singleton
23
+
24
+ def set_versions(versions)
25
+ @versions ||= versions
26
+ end
25
27
 
26
- property :easy_install_binary, String, desired_state: false
27
- property :python_binary, String, desired_state: false
28
- property :module_name, String, desired_state: false
28
+ def min_server_version
29
+ !@versions.nil? ? Integer(@versions["min_version"]) : nil
30
+ end
31
+
32
+ def max_server_version
33
+ !@versions.nil? ? Integer(@versions["max_version"]) : nil
34
+ end
29
35
 
36
+ def reset!
37
+ @versions = nil
30
38
  end
31
39
  end
32
40
  end
@@ -73,7 +73,7 @@ module Shell
73
73
  banner << "| " + "Command".ljust(25) + "| " + "Description"
74
74
  banner << "".ljust(80, "=")
75
75
 
76
- self.all_help_descriptions.each do |help_text|
76
+ all_help_descriptions.each do |help_text|
77
77
  banner << "| " + help_text.cmd.ljust(25) + "| " + help_text.desc
78
78
  end
79
79
  banner << "".ljust(80, "=")
@@ -84,7 +84,7 @@ module Shell
84
84
  end
85
85
 
86
86
  def explain_command(method_name)
87
- help = self.all_help_descriptions.find { |h| h.cmd.to_s == method_name.to_s }
87
+ help = all_help_descriptions.find { |h| h.cmd.to_s == method_name.to_s }
88
88
  if help
89
89
  puts ""
90
90
  puts "Command: #{method_name}"
@@ -159,7 +159,7 @@ module Shell
159
159
 
160
160
  module Symbol
161
161
  def on_off_to_bool
162
- self.to_s.on_off_to_bool
162
+ to_s.on_off_to_bool
163
163
  end
164
164
  end
165
165