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
@@ -140,11 +140,6 @@ class Chef
140
140
  client
141
141
  end
142
142
 
143
- def self.json_create(data)
144
- Chef.deprecated(:json_auto_inflate, "Auto inflation of JSON data is deprecated. Please use Chef::ApiClient#from_hash")
145
- from_hash(data)
146
- end
147
-
148
143
  def self.from_json(j)
149
144
  from_hash(Chef::JSONCompat.parse(j))
150
145
  end
@@ -162,7 +157,7 @@ class Chef
162
157
  if inflate
163
158
  response = Hash.new
164
159
  Chef::Search::Query.new.search(:client) do |n|
165
- n = self.json_create(n) if n.instance_of?(Hash)
160
+ n = json_create(n) if n.instance_of?(Hash)
166
161
  response[n.name] = n
167
162
  end
168
163
  response
@@ -188,15 +183,13 @@ class Chef
188
183
 
189
184
  # Save this client via the REST API, returns a hash including the private key
190
185
  def save
191
- begin
192
- http_api.put("clients/#{name}", { :name => self.name, :admin => self.admin, :validator => self.validator })
193
- rescue Net::HTTPServerException => e
194
- # If that fails, go ahead and try and update it
195
- if e.response.code == "404"
196
- http_api.post("clients", { :name => self.name, :admin => self.admin, :validator => self.validator })
197
- else
198
- raise e
199
- end
186
+ http_api.put("clients/#{name}", { :name => name, :admin => admin, :validator => validator })
187
+ rescue Net::HTTPServerException => e
188
+ # If that fails, go ahead and try and update it
189
+ if e.response.code == "404"
190
+ http_api.post("clients", { :name => name, :admin => admin, :validator => validator })
191
+ else
192
+ raise e
200
193
  end
201
194
  end
202
195
 
@@ -190,7 +190,7 @@ class Chef
190
190
  if inflate
191
191
  response = Hash.new
192
192
  Chef::Search::Query.new.search(:client) do |n|
193
- n = self.from_hash(n) if n.instance_of?(Hash)
193
+ n = from_hash(n) if n.instance_of?(Hash)
194
194
  response[n.name] = n
195
195
  end
196
196
  response
@@ -212,15 +212,13 @@ class Chef
212
212
 
213
213
  # Save this client via the REST API, returns a hash including the private key
214
214
  def save
215
- begin
216
- update
217
- rescue Net::HTTPServerException => e
218
- # If that fails, go ahead and try and update it
219
- if e.response.code == "404"
220
- create
221
- else
222
- raise e
223
- end
215
+ update
216
+ rescue Net::HTTPServerException => e
217
+ # If that fails, go ahead and try and update it
218
+ if e.response.code == "404"
219
+ create
220
+ else
221
+ raise e
224
222
  end
225
223
  end
226
224
 
@@ -313,7 +311,7 @@ class Chef
313
311
 
314
312
  new_client = chef_rest_v0.post("clients", payload)
315
313
  end
316
- Chef::ApiClientV1.from_hash(self.to_hash.merge(new_client))
314
+ Chef::ApiClientV1.from_hash(to_hash.merge(new_client))
317
315
  end
318
316
 
319
317
  # As a string
@@ -200,16 +200,14 @@ class Chef::Application::Apply < Chef::Application
200
200
  end
201
201
 
202
202
  def run_application
203
- begin
204
- parse_options
205
- run_chef_recipe
206
- Chef::Application.exit! "Exiting", 0
207
- rescue SystemExit
208
- raise
209
- rescue Exception => e
210
- Chef::Application.debug_stacktrace(e)
211
- Chef::Application.fatal!("#{e.class}: #{e.message}", e)
212
- end
203
+ parse_options
204
+ run_chef_recipe
205
+ Chef::Application.exit! "Exiting", 0
206
+ rescue SystemExit
207
+ raise
208
+ rescue Exception => e
209
+ Chef::Application.debug_stacktrace(e)
210
+ Chef::Application.fatal!("#{e.class}: #{e.message}", e)
213
211
  end
214
212
 
215
213
  # Get this party started
@@ -289,7 +289,7 @@ class Chef::Application::Client < Chef::Application
289
289
  :boolean => true
290
290
 
291
291
  option :fips,
292
- :long => "--fips",
292
+ :long => "--[no-]fips",
293
293
  :description => "Enable fips mode",
294
294
  :boolean => true
295
295
 
@@ -45,62 +45,23 @@ class Chef
45
45
  class << self
46
46
 
47
47
  def normalize_exit_code(exit_code = nil)
48
- if normalization_not_configured?
49
- normalize_legacy_exit_code_with_warning(exit_code)
50
- elsif normalization_disabled?
51
- normalize_legacy_exit_code(exit_code)
48
+ normalized_exit_code = normalize_legacy_exit_code(exit_code)
49
+ if valid_exit_codes.include? normalized_exit_code
50
+ normalized_exit_code
52
51
  else
53
- normalize_exit_code_to_rfc(exit_code)
52
+ Chef::Log.warn(non_standard_exit_code_warning(normalized_exit_code))
53
+ VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
54
54
  end
55
55
  end
56
56
 
57
- def enforce_rfc_062_exit_codes?
58
- !normalization_disabled? && !normalization_not_configured?
59
- end
60
-
61
- def notify_reboot_exit_code_deprecation
62
- return if normalization_disabled?
63
- notify_on_deprecation(reboot_deprecation_warning)
64
- end
65
-
66
- def notify_deprecated_exit_code
67
- return if normalization_disabled?
68
- notify_on_deprecation(deprecation_warning)
69
- end
70
-
71
57
  private
72
58
 
73
- def normalization_disabled?
74
- Chef::Config[:exit_status] == :disabled
75
- end
76
-
77
- def normalization_not_configured?
78
- Chef::Config[:exit_status].nil?
79
- end
80
-
81
- def normalize_legacy_exit_code_with_warning(exit_code)
82
- normalized_exit_code = normalize_legacy_exit_code(exit_code)
83
- unless valid_exit_codes.include? normalized_exit_code
84
- notify_on_deprecation(deprecation_warning)
85
- end
86
- normalized_exit_code
87
- end
88
-
89
59
  def normalize_legacy_exit_code(exit_code)
90
60
  case exit_code
91
61
  when Integer
92
62
  exit_code
93
63
  when Exception
94
64
  lookup_exit_code_by_exception(exit_code)
95
- else
96
- default_exit_code
97
- end
98
- end
99
-
100
- def normalize_exit_code_to_rfc(exit_code)
101
- normalized_exit_code = normalize_legacy_exit_code_with_warning(exit_code)
102
- if valid_exit_codes.include? normalized_exit_code
103
- normalized_exit_code
104
65
  else
105
66
  VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
106
67
  end
@@ -111,15 +72,6 @@ class Chef
111
72
  VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
112
73
  elsif sigterm_received?(exception)
113
74
  VALID_RFC_062_EXIT_CODES[:SIGTERM_RECEIVED]
114
- elsif normalization_disabled? || normalization_not_configured?
115
- if legacy_exit_code?(exception)
116
- # We have lots of "Chef::Application.fatal!('', 2)
117
- # This maintains that behavior at initial introduction
118
- # and when the RFC exit_status compliance is disabled.
119
- VALID_RFC_062_EXIT_CODES[:SIGINT_RECEIVED]
120
- else
121
- VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
122
- end
123
75
  elsif reboot_scheduled?(exception)
124
76
  VALID_RFC_062_EXIT_CODES[:REBOOT_SCHEDULED]
125
77
  elsif reboot_needed?(exception)
@@ -135,12 +87,6 @@ class Chef
135
87
  end
136
88
  end
137
89
 
138
- def legacy_exit_code?(exception)
139
- resolve_exception_array(exception).any? do |e|
140
- e.is_a? Chef::Exceptions::DeprecatedExitCode
141
- end
142
- end
143
-
144
90
  def reboot_scheduled?(exception)
145
91
  resolve_exception_array(exception).any? do |e|
146
92
  e.is_a? Chef::Exceptions::Reboot
@@ -198,34 +144,17 @@ class Chef
198
144
  end
199
145
 
200
146
  def notify_on_deprecation(message)
201
- begin
202
- Chef.deprecated(:exit_code, message)
203
- rescue Chef::Exceptions::DeprecatedFeatureError
147
+ Chef.deprecated(:exit_code, message)
148
+ rescue Chef::Exceptions::DeprecatedFeatureError
204
149
  # Have to rescue this, otherwise this unhandled error preempts
205
150
  # the current exit code assignment.
206
- end
207
151
  end
208
152
 
209
- def deprecation_warning
210
- "Chef RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md) defines the" \
153
+ def non_standard_exit_code_warning(exit_code)
154
+ "Chef attempted to exit with a non-standard exit code of #{exit_code}." \
155
+ " Chef RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md) defines the" \
211
156
  " exit codes that should be used with Chef. Chef::Application::ExitCode defines valid exit codes" \
212
- " In a future release, non-standard exit codes will be redefined as" \
213
- " GENERIC_FAILURE unless `exit_status` is set to `:disabled` in your client.rb."
214
- end
215
-
216
- def reboot_deprecation_warning
217
- "Per RFC 062 (https://github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md)" \
218
- ", when a reboot is requested Chef Client will exit with an exit code of 35, REBOOT_SCHEDULED." \
219
- " To maintain the current behavior (an exit code of 0), you will need to set `exit_status` to" \
220
- " `:disabled` in your client.rb"
221
- end
222
-
223
- def default_exit_code
224
- if normalization_disabled? || normalization_not_configured?
225
- return DEPRECATED_RFC_062_EXIT_CODES[:DEPRECATED_FAILURE]
226
- else
227
- VALID_RFC_062_EXIT_CODES[:GENERIC_FAILURE]
228
- end
157
+ " Non-standard exit codes are redefined as GENERIC_FAILURE."
229
158
  end
230
159
 
231
160
  end
@@ -203,11 +203,11 @@ class Chef::Application::Knife < Chef::Application
203
203
  Chef::Log.error(fatal_message) if fatal_message
204
204
 
205
205
  begin
206
- self.parse_options
206
+ parse_options
207
207
  rescue OptionParser::InvalidOption => e
208
208
  puts "#{e}\n"
209
209
  end
210
- puts self.opt_parser
210
+ puts opt_parser
211
211
  puts
212
212
  Chef::Knife.list_commands
213
213
  exit exitcode
@@ -23,7 +23,6 @@ require "chef/client"
23
23
  require "chef/config"
24
24
  require "chef/daemon"
25
25
  require "chef/log"
26
- require "chef/rest"
27
26
  require "chef/config_fetcher"
28
27
  require "fileutils"
29
28
  require "chef/mixin/shell_out"
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Christopher Maier (<maier@lambda.local>)
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");
@@ -183,39 +183,38 @@ class Chef
183
183
  # The chef client will be started in a new process. We have used shell_out to start the chef-client.
184
184
  # The log_location and config_file of the parent process is passed to the new chef-client process.
185
185
  # We need to add the --no-fork, as by default it is set to fork=true.
186
- begin
187
- Chef::Log.info "Starting chef-client in a new process"
188
- # Pass config params to the new process
189
- config_params = " --no-fork"
190
- config_params += " -c #{Chef::Config[:config_file]}" unless Chef::Config[:config_file].nil?
191
- # log_location might be an event logger and if so we cannot pass as a command argument
192
- # but shed no tears! If the logger is an event logger, it must have been configured
193
- # as such in the config file and chef-client will use that when no arg is passed here
194
- config_params += " -L #{resolve_log_location}" if resolve_log_location.is_a?(String)
195
-
196
- # Starts a new process and waits till the process exits
197
-
198
- result = shell_out(
199
- "chef-client.bat #{config_params}",
200
- :timeout => Chef::Config[:windows_service][:watchdog_timeout],
201
- :logger => Chef::Log
202
- )
203
- Chef::Log.debug "#{result.stdout}"
204
- Chef::Log.debug "#{result.stderr}"
205
- rescue Mixlib::ShellOut::CommandTimeout => e
206
- Chef::Log.error "chef-client timed out\n(#{e})"
207
- Chef::Log.error(<<-EOF)
186
+
187
+ Chef::Log.info "Starting chef-client in a new process"
188
+ # Pass config params to the new process
189
+ config_params = " --no-fork"
190
+ config_params += " -c #{Chef::Config[:config_file]}" unless Chef::Config[:config_file].nil?
191
+ # log_location might be an event logger and if so we cannot pass as a command argument
192
+ # but shed no tears! If the logger is an event logger, it must have been configured
193
+ # as such in the config file and chef-client will use that when no arg is passed here
194
+ config_params += " -L #{resolve_log_location}" if resolve_log_location.is_a?(String)
195
+
196
+ # Starts a new process and waits till the process exits
197
+
198
+ result = shell_out(
199
+ "chef-client.bat #{config_params}",
200
+ :timeout => Chef::Config[:windows_service][:watchdog_timeout],
201
+ :logger => Chef::Log
202
+ )
203
+ Chef::Log.debug "#{result.stdout}"
204
+ Chef::Log.debug "#{result.stderr}"
205
+ rescue Mixlib::ShellOut::CommandTimeout => e
206
+ Chef::Log.error "chef-client timed out\n(#{e})"
207
+ Chef::Log.error(<<-EOF)
208
208
  Your chef-client run timed out. You can increase the time chef-client is given
209
209
  to complete by configuring windows_service.watchdog_timeout in your client.rb.
210
210
  EOF
211
- rescue Mixlib::ShellOut::ShellCommandFailed => e
212
- Chef::Log.warn "Not able to start chef-client in new process (#{e})"
213
- rescue => e
214
- Chef::Log.error e
215
- ensure
216
- # Once process exits, we log the current process' pid
217
- Chef::Log.info "Child process exited (pid: #{Process.pid})"
218
- end
211
+ rescue Mixlib::ShellOut::ShellCommandFailed => e
212
+ Chef::Log.warn "Not able to start chef-client in new process (#{e})"
213
+ rescue => e
214
+ Chef::Log.error e
215
+ ensure
216
+ # Once process exits, we log the current process' pid
217
+ Chef::Log.info "Child process exited (pid: #{Process.pid})"
219
218
  end
220
219
 
221
220
  def apply_config(config_file_path)
@@ -257,13 +256,13 @@ class Chef
257
256
  # Based on config and whether or not STDOUT is a tty, should we setup a
258
257
  # secondary logger for stdout?
259
258
  def want_additional_logger?
260
- ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize]) && (Chef::Config[:force_logger])
259
+ ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && !Chef::Config[:daemonize]
261
260
  end
262
261
 
263
262
  # Use of output formatters is assumed if `force_formatter` is set or if
264
- # `force_logger` is not set and STDOUT is to a console (tty)
263
+ # `force_logger` is not set
265
264
  def using_output_formatter?
266
- Chef::Config[:force_formatter] || (!Chef::Config[:force_logger] && STDOUT.tty?)
265
+ Chef::Config[:force_formatter] || !Chef::Config[:force_logger]
267
266
  end
268
267
 
269
268
  def auto_log_level?
@@ -319,11 +318,11 @@ class Chef
319
318
 
320
319
  Chef::Config.merge!(config)
321
320
  rescue SocketError
322
- Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}", Chef::Exceptions::DeprecatedExitCode.new)
321
+ Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}")
323
322
  rescue Chef::Exceptions::ConfigurationError => error
324
- Chef::Application.fatal!("Error processing config file #{Chef::Config[:config_file]} with error #{error.message}", Chef::Exceptions::DeprecatedExitCode.new)
323
+ Chef::Application.fatal!("Error processing config file #{Chef::Config[:config_file]} with error #{error.message}")
325
324
  rescue Exception => error
326
- Chef::Application.fatal!("Unknown error processing config file #{Chef::Config[:config_file]} with error #{error.message}", Chef::Exceptions::DeprecatedExitCode.new)
325
+ Chef::Application.fatal!("Unknown error processing config file #{Chef::Config[:config_file]} with error #{error.message}")
327
326
  end
328
327
  end
329
328
 
@@ -168,7 +168,7 @@ class Chef
168
168
  PAUSED = "paused"
169
169
 
170
170
  def service_exists?
171
- return ::Win32::Service.exists?(@service_name)
171
+ ::Win32::Service.exists?(@service_name)
172
172
  end
173
173
 
174
174
  def take_action(action = nil, desired_state = nil)
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@chef.io>)
3
3
  # Author:: Mark Mzyk (mmzyk@chef.io)
4
- # Copyright:: Copyright 2008-2016, Chef Software, Inc.
4
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -80,6 +80,10 @@ class Chef
80
80
  end
81
81
  end
82
82
 
83
+ def emit_warnings
84
+ Chef::Log.warn "Chef::Config[:zypper_check_gpg] is set to false which disables security checking on zypper packages" unless Chef::Config[:zypper_check_gpg]
85
+ end
86
+
83
87
  # Parse configuration (options and config file)
84
88
  def configure_chef
85
89
  parse_options
@@ -140,16 +144,9 @@ class Chef
140
144
  # unattended, the `force_formatter` option is provided.
141
145
  #
142
146
  # === Auto Log Level
143
- # When `log_level` is set to `:auto` (default), the log level will be `:warn`
144
- # when the primary output mode is an output formatter (see
145
- # +using_output_formatter?+) and `:info` otherwise.
147
+ # The `log_level` of `:auto` means `:warn` in the formatter and `:info` in
148
+ # the logger.
146
149
  #
147
- # === Automatic STDOUT Logging
148
- # When `force_logger` is configured (e.g., Chef 10 mode), a second logger
149
- # with output on STDOUT is added when running in a console (STDOUT is a tty)
150
- # and the configured log_location isn't STDOUT. This accounts for the case
151
- # that a user has configured a log_location in client.rb, but is running
152
- # chef-client by hand to troubleshoot a problem.
153
150
  def configure_logging
154
151
  configure_log_location
155
152
  Chef::Log.init(MonoLogger.new(Chef::Config[:log_location]))
@@ -176,22 +173,21 @@ class Chef
176
173
  end
177
174
  end
178
175
 
176
+ # Based on config and whether or not STDOUT is a tty, should we setup a
177
+ # secondary logger for stdout?
178
+ def want_additional_logger?
179
+ ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && !Chef::Config[:daemonize]
180
+ end
181
+
179
182
  def configure_stdout_logger
180
183
  stdout_logger = MonoLogger.new(STDOUT)
181
184
  stdout_logger.formatter = Chef::Log.logger.formatter
182
185
  Chef::Log.loggers << stdout_logger
183
186
  end
184
187
 
185
- # Based on config and whether or not STDOUT is a tty, should we setup a
186
- # secondary logger for stdout?
187
- def want_additional_logger?
188
- ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize]) && (Chef::Config[:force_logger])
189
- end
190
-
191
- # Use of output formatters is assumed if `force_formatter` is set or if
192
- # `force_logger` is not set and STDOUT is to a console (tty)
188
+ # Use of output formatters is assumed if `force_formatter` is set or if `force_logger` is not set
193
189
  def using_output_formatter?
194
- Chef::Config[:force_formatter] || (!Chef::Config[:force_logger] && STDOUT.tty?)
190
+ Chef::Config[:force_formatter] || !Chef::Config[:force_logger]
195
191
  end
196
192
 
197
193
  def auto_log_level?
@@ -332,12 +328,6 @@ class Chef
332
328
  ENV
333
329
  end
334
330
 
335
- def emit_warnings
336
- if Chef::Config[:chef_gem_compile_time]
337
- Chef.deprecated :chef_gem_compile_time, "setting chef_gem_compile_time to true is deprecated"
338
- end
339
- end
340
-
341
331
  class << self
342
332
  def debug_stacktrace(e)
343
333
  message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
@@ -78,14 +78,14 @@ class Chef
78
78
  # We know all of our examples each live in a top-level `control_group` block - get this name now
79
79
  outermost_group_desc = describe_groups.shift
80
80
 
81
- return outermost_group_desc, {
81
+ [outermost_group_desc, {
82
82
  :name => example.description,
83
83
  :desc => example.full_description,
84
84
  :resource_type => resource_type,
85
85
  :resource_name => resource_name,
86
86
  :context => describe_groups,
87
87
  :line_number => example.metadata[:line_number],
88
- }
88
+ }]
89
89
  end
90
90
 
91
91
  end
@@ -118,7 +118,7 @@ class Chef
118
118
 
119
119
  def initialize(control_data = {})
120
120
  control_data.each do |k, v|
121
- self.instance_variable_set("@#{k}", v)
121
+ instance_variable_set("@#{k}", v)
122
122
  end
123
123
  end
124
124
 
@@ -0,0 +1,81 @@
1
+
2
+ require "chef/exceptions"
3
+
4
+ class Chef
5
+ class Blacklist
6
+
7
+ # filter takes two arguments - the data you want to filter, and a blacklisted array
8
+ # of keys you want discluded. You can capture a subtree of the data to filter by
9
+ # providing a "/"-delimited string of keys. If some key includes "/"-characters,
10
+ # you must provide an array of keys instead.
11
+ #
12
+ # Blacklist.filter(
13
+ # { "filesystem" => {
14
+ # "/dev/disk" => {
15
+ # "size" => "10mb"
16
+ # },
17
+ # "map - autohome" => {
18
+ # "size" => "10mb"
19
+ # }
20
+ # },
21
+ # "network" => {
22
+ # "interfaces" => {
23
+ # "eth0" => {...},
24
+ # "eth1" => {...}
25
+ # }
26
+ # }
27
+ # },
28
+ # ["network/interfaces/eth0", ["filesystem", "/dev/disk"]])
29
+ # will exclude the eth0 and /dev/disk subtrees.
30
+ def self.filter(data, blacklist = nil)
31
+ return data if blacklist.nil?
32
+
33
+ blacklist.each do |item|
34
+ Chef::Log.warn("Removing item #{item}")
35
+ remove_data(data, item)
36
+ end
37
+ data
38
+ end
39
+
40
+ # Walk the data according to the keys provided by the blacklisted item
41
+ # to get a reference to the item that will be removed.
42
+ def self.remove_data(data, item)
43
+ parts = to_array(item)
44
+
45
+ item_ref = data
46
+ parts[0..-2].each do |part|
47
+ unless item_ref[part]
48
+ Chef::Log.warn("Could not find blacklist attribute #{item}.")
49
+ return nil
50
+ end
51
+
52
+ item_ref = item_ref[part]
53
+ end
54
+
55
+ unless item_ref.key?(parts[-1])
56
+ Chef::Log.warn("Could not find blacklist attribute #{item}.")
57
+ return nil
58
+ end
59
+
60
+ item_ref.delete(parts[-1])
61
+ data
62
+ end
63
+
64
+ private_class_method :remove_data
65
+
66
+ # Accepts a String or an Array, and returns an Array of String keys that
67
+ # are used to traverse the data hash. Strings are split on "/", Arrays are
68
+ # assumed to contain exact keys (that is, Array elements will not be split
69
+ # by "/").
70
+ def self.to_array(item)
71
+ return item if item.kind_of? Array
72
+
73
+ parts = item.split("/")
74
+ parts.shift if !parts.empty? && parts[0].empty?
75
+ parts
76
+ end
77
+
78
+ private_class_method :to_array
79
+
80
+ end
81
+ end
@@ -30,6 +30,7 @@ require "chef/platform/provider_priority_map"
30
30
  require "chef/platform/resource_priority_map"
31
31
  require "chef/platform/provider_handler_map"
32
32
  require "chef/platform/resource_handler_map"
33
+ require "chef/deprecated"
33
34
  require "chef/event_dispatch/dsl"
34
35
  require "chef/deprecated"
35
36
 
@@ -611,7 +611,7 @@ class Chef
611
611
  private
612
612
 
613
613
  def use_memory_store?(path)
614
- return path[0] == "sandboxes" || path[0] == "file_store" && path[1] == "checksums" || path == %w{environments _default}
614
+ path[0] == "sandboxes" || path[0] == "file_store" && path[1] == "checksums" || path == %w{environments _default}
615
615
  end
616
616
 
617
617
  def write_cookbook(path, data, *options)
@@ -768,7 +768,7 @@ class Chef
768
768
  end
769
769
 
770
770
  elsif path.length == 2 && path[0] != "cookbooks"
771
- path[1] = path[1][0..-6]
771
+ path[1] = path[1].gsub(/\.(rb|json)/, "")
772
772
  end
773
773
 
774
774
  path
@@ -779,15 +779,13 @@ class Chef
779
779
  end
780
780
 
781
781
  def path_always_exists?(path)
782
- return path.length == 1 && BASE_DIRNAMES.include?(path[0])
782
+ path.length == 1 && BASE_DIRNAMES.include?(path[0])
783
783
  end
784
784
 
785
785
  def with_entry(path)
786
- begin
787
- yield Chef::ChefFS::FileSystem.resolve_path(chef_fs, to_chef_fs_path(path))
788
- rescue Chef::ChefFS::FileSystem::NotFoundError => e
789
- raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e)
790
- end
786
+ yield Chef::ChefFS::FileSystem.resolve_path(chef_fs, to_chef_fs_path(path))
787
+ rescue Chef::ChefFS::FileSystem::NotFoundError => e
788
+ raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e)
791
789
  end
792
790
 
793
791
  def with_parent_dir(path, *options)