chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-mingw32

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 (653) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +4 -1
  3. data/README.md +42 -18
  4. data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
  5. data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
  6. data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
  7. data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
  8. data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
  9. data/distro/common/html/_sources/knife_data_bag.txt +4 -4
  10. data/distro/common/html/_sources/knife_status.txt +1 -1
  11. data/distro/common/html/_static/searchtools.js +1 -1
  12. data/distro/common/html/ctl_chef_client.html +55 -7
  13. data/distro/common/html/ctl_chef_server.html +84 -41
  14. data/distro/common/html/ctl_chef_shell.html +45 -1
  15. data/distro/common/html/ctl_chef_solo.html +51 -5
  16. data/distro/common/html/index.html +2 -2
  17. data/distro/common/html/knife.html +1 -1
  18. data/distro/common/html/knife_bootstrap.html +30 -10
  19. data/distro/common/html/knife_cookbook_site.html +2 -0
  20. data/distro/common/html/knife_data_bag.html +4 -4
  21. data/distro/common/html/knife_node.html +2 -2
  22. data/distro/common/html/knife_raw.html +1 -1
  23. data/distro/common/html/knife_role.html +1 -1
  24. data/distro/common/html/knife_search.html +3 -3
  25. data/distro/common/html/knife_status.html +4 -0
  26. data/distro/common/html/searchindex.js +1 -1
  27. data/distro/common/man/man1/chef-shell.1 +72 -1
  28. data/distro/common/man/man1/knife-bootstrap.1 +71 -63
  29. data/distro/common/man/man1/knife-client.1 +1 -1
  30. data/distro/common/man/man1/knife-configure.1 +1 -1
  31. data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
  32. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  33. data/distro/common/man/man1/knife-data-bag.1 +5 -5
  34. data/distro/common/man/man1/knife-delete.1 +1 -1
  35. data/distro/common/man/man1/knife-deps.1 +1 -1
  36. data/distro/common/man/man1/knife-diff.1 +1 -1
  37. data/distro/common/man/man1/knife-download.1 +1 -1
  38. data/distro/common/man/man1/knife-edit.1 +1 -1
  39. data/distro/common/man/man1/knife-environment.1 +1 -1
  40. data/distro/common/man/man1/knife-exec.1 +1 -1
  41. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  42. data/distro/common/man/man1/knife-list.1 +1 -1
  43. data/distro/common/man/man1/knife-node.1 +3 -3
  44. data/distro/common/man/man1/knife-raw.1 +2 -2
  45. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  46. data/distro/common/man/man1/knife-role.1 +2 -2
  47. data/distro/common/man/man1/knife-search.1 +4 -4
  48. data/distro/common/man/man1/knife-serve.1 +1 -1
  49. data/distro/common/man/man1/knife-show.1 +1 -1
  50. data/distro/common/man/man1/knife-ssh.1 +1 -1
  51. data/distro/common/man/man1/knife-ssl-check.1 +1 -1
  52. data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
  53. data/distro/common/man/man1/knife-status.1 +1 -1
  54. data/distro/common/man/man1/knife-tag.1 +1 -1
  55. data/distro/common/man/man1/knife-upload.1 +1 -1
  56. data/distro/common/man/man1/knife-user.1 +1 -1
  57. data/distro/common/man/man1/knife-xargs.1 +1 -1
  58. data/distro/common/man/man1/knife.1 +1 -1
  59. data/distro/common/man/man8/chef-apply.8 +86 -0
  60. data/distro/common/man/man8/chef-client.8 +76 -5
  61. data/distro/common/man/man8/chef-solo.8 +79 -6
  62. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  63. data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
  64. data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
  65. data/distro/common/markdown/man1/knife-environment.mkd +1 -1
  66. data/distro/common/markdown/man1/knife.mkd +1 -1
  67. data/lib/chef.rb +0 -7
  68. data/lib/chef/api_client.rb +10 -2
  69. data/lib/chef/api_client/registration.rb +7 -9
  70. data/lib/chef/application.rb +28 -12
  71. data/lib/chef/application/apply.rb +17 -1
  72. data/lib/chef/application/client.rb +74 -6
  73. data/lib/chef/application/knife.rb +1 -2
  74. data/lib/chef/application/solo.rb +30 -0
  75. data/lib/chef/application/windows_service.rb +1 -0
  76. data/lib/chef/application/windows_service_manager.rb +8 -2
  77. data/lib/chef/applications.rb +0 -1
  78. data/lib/chef/audit/audit_event_proxy.rb +93 -0
  79. data/lib/chef/audit/audit_reporter.rb +169 -0
  80. data/lib/chef/audit/control_group_data.rb +140 -0
  81. data/lib/chef/audit/rspec_formatter.rb +37 -0
  82. data/lib/chef/audit/runner.rb +178 -0
  83. data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
  84. data/lib/chef/chef_fs/config.rb +25 -4
  85. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
  86. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
  87. data/lib/chef/chef_fs/file_system.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
  89. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
  90. data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
  91. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
  92. data/lib/chef/client.rb +81 -52
  93. data/lib/chef/config.rb +35 -3
  94. data/lib/chef/cookbook/metadata.rb +3 -3
  95. data/lib/chef/cookbook_manifest.rb +275 -0
  96. data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
  97. data/lib/chef/cookbook_uploader.rb +11 -2
  98. data/lib/chef/cookbook_version.rb +71 -194
  99. data/lib/chef/data_bag.rb +5 -2
  100. data/lib/chef/data_bag_item.rb +6 -3
  101. data/lib/chef/deprecation/warnings.rb +5 -4
  102. data/lib/chef/dsl/audit.rb +51 -0
  103. data/lib/chef/dsl/include_recipe.rb +2 -3
  104. data/lib/chef/dsl/reboot_pending.rb +1 -1
  105. data/lib/chef/dsl/recipe.rb +49 -31
  106. data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
  107. data/lib/chef/environment.rb +5 -2
  108. data/lib/chef/event_dispatch/base.rb +36 -1
  109. data/lib/chef/event_dispatch/dispatcher.rb +3 -5
  110. data/lib/chef/exceptions.rb +61 -2
  111. data/lib/chef/file_access_control/unix.rb +12 -0
  112. data/lib/chef/file_access_control/windows.rb +14 -0
  113. data/lib/chef/formatters/doc.rb +47 -1
  114. data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
  115. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
  116. data/lib/chef/http.rb +1 -2
  117. data/lib/chef/knife.rb +5 -3
  118. data/lib/chef/knife/bootstrap.rb +84 -15
  119. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
  120. data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
  121. data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
  122. data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
  123. data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
  124. data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
  125. data/lib/chef/knife/client_create.rb +8 -7
  126. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  127. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  128. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  129. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  130. data/lib/chef/knife/cookbook_site_share.rb +39 -28
  131. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  132. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  133. data/lib/chef/knife/cookbook_test.rb +1 -0
  134. data/lib/chef/knife/cookbook_upload.rb +13 -8
  135. data/lib/chef/knife/core/bootstrap_context.rb +14 -3
  136. data/lib/chef/knife/core/generic_presenter.rb +5 -2
  137. data/lib/chef/knife/core/object_loader.rb +1 -1
  138. data/lib/chef/knife/core/subcommand_loader.rb +24 -0
  139. data/lib/chef/knife/core/ui.rb +9 -1
  140. data/lib/chef/knife/node_run_list_remove.rb +11 -3
  141. data/lib/chef/knife/raw.rb +14 -3
  142. data/lib/chef/knife/role_env_run_list_add.rb +86 -0
  143. data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
  144. data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
  145. data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
  146. data/lib/chef/knife/role_env_run_list_set.rb +70 -0
  147. data/lib/chef/knife/role_run_list_add.rb +86 -0
  148. data/lib/chef/knife/role_run_list_clear.rb +55 -0
  149. data/lib/chef/knife/role_run_list_remove.rb +57 -0
  150. data/lib/chef/knife/role_run_list_replace.rb +59 -0
  151. data/lib/chef/knife/role_run_list_set.rb +70 -0
  152. data/lib/chef/knife/search.rb +4 -4
  153. data/lib/chef/knife/serve.rb +3 -0
  154. data/lib/chef/knife/ssh.rb +1 -1
  155. data/lib/chef/knife/ssl_check.rb +2 -2
  156. data/lib/chef/knife/ssl_fetch.rb +14 -1
  157. data/lib/chef/log.rb +10 -1
  158. data/lib/chef/mixin/command.rb +1 -1
  159. data/lib/chef/mixin/command/windows.rb +1 -5
  160. data/lib/chef/mixin/get_source_from_package.rb +1 -0
  161. data/lib/chef/mixin/params_validate.rb +2 -2
  162. data/lib/chef/mixin/securable.rb +1 -7
  163. data/lib/chef/mixin/shell_out.rb +7 -1
  164. data/lib/chef/mixin/template.rb +2 -14
  165. data/lib/chef/mixin/why_run.rb +1 -1
  166. data/lib/chef/monkey_patches/net_http.rb +4 -0
  167. data/lib/chef/monologger.rb +0 -2
  168. data/lib/chef/node.rb +5 -2
  169. data/lib/chef/node/attribute.rb +11 -9
  170. data/lib/chef/node/attribute_collections.rb +8 -12
  171. data/lib/chef/node/immutable_collections.rb +4 -10
  172. data/lib/chef/org.rb +148 -0
  173. data/lib/chef/platform/provider_mapping.rb +3 -2
  174. data/lib/chef/platform/provider_priority_map.rb +2 -0
  175. data/lib/chef/platform/query_helpers.rb +0 -3
  176. data/lib/chef/policy_builder/policyfile.rb +51 -8
  177. data/lib/chef/provider/deploy.rb +1 -2
  178. data/lib/chef/provider/directory.rb +3 -3
  179. data/lib/chef/provider/dsc_script.rb +13 -7
  180. data/lib/chef/provider/env.rb +8 -8
  181. data/lib/chef/provider/execute.rb +55 -36
  182. data/lib/chef/provider/file.rb +8 -0
  183. data/lib/chef/provider/group.rb +2 -0
  184. data/lib/chef/provider/group/dscl.rb +3 -4
  185. data/lib/chef/provider/ifconfig.rb +25 -25
  186. data/lib/chef/provider/ifconfig/aix.rb +25 -27
  187. data/lib/chef/provider/lwrp_base.rb +1 -1
  188. data/lib/chef/provider/mount.rb +2 -2
  189. data/lib/chef/provider/mount/mount.rb +3 -4
  190. data/lib/chef/provider/mount/solaris.rb +1 -1
  191. data/lib/chef/provider/package.rb +297 -48
  192. data/lib/chef/provider/package/aix.rb +25 -30
  193. data/lib/chef/provider/package/apt.rb +63 -19
  194. data/lib/chef/provider/package/dpkg.rb +15 -16
  195. data/lib/chef/provider/package/macports.rb +7 -7
  196. data/lib/chef/provider/package/openbsd.rb +107 -0
  197. data/lib/chef/provider/package/pacman.rb +13 -15
  198. data/lib/chef/provider/package/portage.rb +3 -4
  199. data/lib/chef/provider/package/rpm.rb +28 -17
  200. data/lib/chef/provider/package/rubygems.rb +9 -9
  201. data/lib/chef/provider/package/solaris.rb +17 -21
  202. data/lib/chef/provider/package/windows/msi.rb +1 -1
  203. data/lib/chef/provider/package/yum-dump.py +2 -2
  204. data/lib/chef/provider/package/yum.rb +117 -51
  205. data/lib/chef/provider/package/zypper.rb +17 -18
  206. data/lib/chef/provider/powershell_script.rb +4 -4
  207. data/lib/chef/provider/registry_key.rb +2 -2
  208. data/lib/chef/provider/remote_directory.rb +1 -1
  209. data/lib/chef/provider/script.rb +25 -16
  210. data/lib/chef/provider/service.rb +1 -1
  211. data/lib/chef/provider/service/freebsd.rb +1 -1
  212. data/lib/chef/provider/service/openbsd.rb +216 -0
  213. data/lib/chef/provider/service/upstart.rb +1 -1
  214. data/lib/chef/provider/service/windows.rb +99 -1
  215. data/lib/chef/provider/user.rb +1 -1
  216. data/lib/chef/provider/user/dscl.rb +19 -4
  217. data/lib/chef/providers.rb +2 -0
  218. data/lib/chef/recipe.rb +11 -5
  219. data/lib/chef/request_id.rb +1 -1
  220. data/lib/chef/resource.rb +839 -444
  221. data/lib/chef/resource/chef_gem.rb +20 -3
  222. data/lib/chef/resource/conditional.rb +3 -14
  223. data/lib/chef/resource/dsc_script.rb +14 -0
  224. data/lib/chef/resource/execute.rb +14 -7
  225. data/lib/chef/resource/file.rb +14 -0
  226. data/lib/chef/resource/file/verification.rb +122 -0
  227. data/lib/chef/resource/ips_package.rb +1 -1
  228. data/lib/chef/resource/lwrp_base.rb +2 -11
  229. data/lib/chef/resource/macports_package.rb +2 -1
  230. data/lib/chef/resource/openbsd_package.rb +51 -0
  231. data/lib/chef/resource/package.rb +2 -2
  232. data/lib/chef/resource/paludis_package.rb +1 -1
  233. data/lib/chef/resource/reboot.rb +1 -1
  234. data/lib/chef/resource/remote_file.rb +1 -0
  235. data/lib/chef/resource/rpm_package.rb +9 -0
  236. data/lib/chef/resource/script.rb +11 -0
  237. data/lib/chef/resource/template.rb +2 -3
  238. data/lib/chef/resource/windows_package.rb +1 -1
  239. data/lib/chef/resource/windows_service.rb +18 -0
  240. data/lib/chef/resource_builder.rb +137 -0
  241. data/lib/chef/resource_definition.rb +1 -1
  242. data/lib/chef/resource_reporter.rb +1 -1
  243. data/lib/chef/resources.rb +1 -0
  244. data/lib/chef/role.rb +17 -4
  245. data/lib/chef/run_context.rb +10 -6
  246. data/lib/chef/search/query.rb +66 -87
  247. data/lib/chef/shell/ext.rb +2 -2
  248. data/lib/chef/util/diff.rb +1 -4
  249. data/lib/chef/util/dsc/configuration_generator.rb +30 -6
  250. data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
  251. data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
  252. data/lib/chef/util/file_edit.rb +2 -2
  253. data/lib/chef/util/path_helper.rb +1 -4
  254. data/lib/chef/util/windows/net_use.rb +3 -3
  255. data/lib/chef/version.rb +1 -1
  256. data/lib/chef/win32/api.rb +1 -0
  257. data/lib/chef/win32/api/security.rb +26 -0
  258. data/lib/chef/win32/file.rb +21 -0
  259. data/lib/chef/win32/security.rb +46 -0
  260. data/lib/chef/win32/security/token.rb +8 -0
  261. data/lib/chef/win32/version.rb +0 -4
  262. data/spec/data/recipes.tgz +0 -0
  263. data/spec/functional/application_spec.rb +1 -1
  264. data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
  265. data/spec/functional/audit/runner_spec.rb +137 -0
  266. data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
  267. data/spec/functional/dsl/registry_helper_spec.rb +6 -6
  268. data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
  269. data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
  270. data/spec/functional/http/simple_spec.rb +1 -1
  271. data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
  272. data/spec/functional/knife/exec_spec.rb +2 -4
  273. data/spec/functional/knife/smoke_test.rb +1 -1
  274. data/spec/functional/knife/ssh_spec.rb +23 -23
  275. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
  276. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  277. data/spec/functional/rebooter_spec.rb +1 -1
  278. data/spec/functional/resource/aix_service_spec.rb +3 -0
  279. data/spec/functional/resource/aixinit_service_spec.rb +3 -3
  280. data/spec/functional/resource/bash_spec.rb +88 -0
  281. data/spec/functional/resource/deploy_revision_spec.rb +99 -100
  282. data/spec/functional/resource/env_spec.rb +3 -3
  283. data/spec/functional/resource/execute_spec.rb +97 -63
  284. data/spec/functional/resource/file_spec.rb +7 -7
  285. data/spec/functional/resource/git_spec.rb +13 -13
  286. data/spec/functional/resource/group_spec.rb +28 -25
  287. data/spec/functional/resource/ifconfig_spec.rb +2 -2
  288. data/spec/functional/resource/link_spec.rb +77 -78
  289. data/spec/functional/resource/mount_spec.rb +5 -5
  290. data/spec/functional/resource/ohai_spec.rb +1 -1
  291. data/spec/functional/resource/package_spec.rb +22 -22
  292. data/spec/functional/resource/powershell_spec.rb +57 -42
  293. data/spec/functional/resource/reboot_spec.rb +2 -2
  294. data/spec/functional/resource/registry_spec.rb +91 -91
  295. data/spec/functional/resource/remote_directory_spec.rb +19 -19
  296. data/spec/functional/resource/remote_file_spec.rb +18 -18
  297. data/spec/functional/resource/template_spec.rb +4 -4
  298. data/spec/functional/resource/user/dscl_spec.rb +4 -4
  299. data/spec/functional/resource/user/useradd_spec.rb +64 -51
  300. data/spec/functional/resource/windows_service_spec.rb +98 -0
  301. data/spec/functional/run_lock_spec.rb +9 -9
  302. data/spec/functional/shell_spec.rb +3 -3
  303. data/spec/functional/tiny_server_spec.rb +12 -12
  304. data/spec/functional/util/path_helper_spec.rb +1 -1
  305. data/spec/functional/version_spec.rb +1 -1
  306. data/spec/functional/win32/registry_helper_spec.rb +125 -125
  307. data/spec/functional/win32/security_spec.rb +65 -2
  308. data/spec/functional/win32/service_manager_spec.rb +30 -84
  309. data/spec/functional/win32/versions_spec.rb +6 -6
  310. data/spec/integration/client/client_spec.rb +102 -9
  311. data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
  312. data/spec/integration/knife/common_options_spec.rb +3 -3
  313. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  314. data/spec/integration/knife/deps_spec.rb +4 -4
  315. data/spec/integration/knife/diff_spec.rb +6 -6
  316. data/spec/integration/knife/download_spec.rb +6 -6
  317. data/spec/integration/knife/list_spec.rb +2 -2
  318. data/spec/integration/knife/raw_spec.rb +5 -5
  319. data/spec/integration/knife/serve_spec.rb +3 -3
  320. data/spec/integration/knife/show_spec.rb +3 -3
  321. data/spec/integration/knife/upload_spec.rb +18 -18
  322. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  323. data/spec/integration/solo/solo_spec.rb +11 -12
  324. data/spec/spec_helper.rb +27 -15
  325. data/spec/stress/win32/file_spec.rb +4 -4
  326. data/spec/stress/win32/security_spec.rb +4 -4
  327. data/spec/support/chef_helpers.rb +3 -3
  328. data/spec/support/matchers/leak.rb +2 -2
  329. data/spec/support/mock/platform.rb +1 -1
  330. data/spec/support/pedant/Gemfile +3 -0
  331. data/spec/support/pedant/pedant_config.rb +9 -2
  332. data/spec/support/pedant/run_pedant.rb +15 -16
  333. data/spec/support/platform_helpers.rb +8 -12
  334. data/spec/support/shared/functional/directory_resource.rb +13 -13
  335. data/spec/support/shared/functional/file_resource.rb +83 -83
  336. data/spec/support/shared/functional/http.rb +1 -1
  337. data/spec/support/shared/functional/securable_resource.rb +64 -64
  338. data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
  339. data/spec/support/shared/functional/win32_service.rb +60 -0
  340. data/spec/support/shared/functional/windows_script.rb +8 -8
  341. data/spec/support/shared/integration/knife_support.rb +8 -5
  342. data/spec/support/shared/matchers/exit_with_code.rb +6 -2
  343. data/spec/support/shared/unit/api_error_inspector.rb +8 -8
  344. data/spec/support/shared/unit/execute_resource.rb +24 -20
  345. data/spec/support/shared/unit/file_system_support.rb +2 -2
  346. data/spec/support/shared/unit/platform_introspector.rb +21 -21
  347. data/spec/support/shared/unit/provider/file.rb +239 -210
  348. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
  349. data/spec/support/shared/unit/script_resource.rb +40 -32
  350. data/spec/support/shared/unit/windows_script_resource.rb +8 -8
  351. data/spec/unit/api_client/registration_spec.rb +47 -47
  352. data/spec/unit/api_client_spec.rb +107 -69
  353. data/spec/unit/application/apply_spec.rb +31 -15
  354. data/spec/unit/application/client_spec.rb +146 -45
  355. data/spec/unit/application/knife_spec.rb +31 -31
  356. data/spec/unit/application/solo_spec.rb +59 -43
  357. data/spec/unit/application_spec.rb +109 -74
  358. data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
  359. data/spec/unit/audit/audit_reporter_spec.rb +393 -0
  360. data/spec/unit/audit/control_group_data_spec.rb +478 -0
  361. data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
  362. data/spec/unit/audit/runner_spec.rb +135 -0
  363. data/spec/unit/chef_fs/config_spec.rb +52 -0
  364. data/spec/unit/chef_fs/diff_spec.rb +12 -12
  365. data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
  366. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
  367. data/spec/unit/chef_fs/file_system_spec.rb +26 -13
  368. data/spec/unit/chef_fs/parallelizer.rb +87 -87
  369. data/spec/unit/chef_spec.rb +1 -1
  370. data/spec/unit/client_spec.rb +263 -97
  371. data/spec/unit/config_fetcher_spec.rb +13 -13
  372. data/spec/unit/config_spec.rb +105 -66
  373. data/spec/unit/cookbook/chefignore_spec.rb +6 -6
  374. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
  375. data/spec/unit/cookbook/metadata_spec.rb +149 -149
  376. data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
  377. data/spec/unit/cookbook_loader_spec.rb +62 -58
  378. data/spec/unit/cookbook_manifest_spec.rb +141 -468
  379. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
  380. data/spec/unit/cookbook_spec.rb +15 -15
  381. data/spec/unit/cookbook_uploader_spec.rb +37 -3
  382. data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
  383. data/spec/unit/cookbook_version_spec.rb +98 -240
  384. data/spec/unit/daemon_spec.rb +31 -31
  385. data/spec/unit/data_bag_item_spec.rb +121 -89
  386. data/spec/unit/data_bag_spec.rb +35 -35
  387. data/spec/unit/deprecation_spec.rb +27 -14
  388. data/spec/unit/digester_spec.rb +3 -3
  389. data/spec/unit/dsl/audit_spec.rb +43 -0
  390. data/spec/unit/dsl/data_query_spec.rb +1 -1
  391. data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
  392. data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
  393. data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
  394. data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
  395. data/spec/unit/environment_spec.rb +105 -105
  396. data/spec/unit/exceptions_spec.rb +47 -1
  397. data/spec/unit/file_access_control_spec.rb +62 -56
  398. data/spec/unit/file_cache_spec.rb +11 -11
  399. data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
  400. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
  401. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
  402. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
  403. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
  404. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  405. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
  406. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
  407. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
  408. data/spec/unit/guard_interpreter_spec.rb +41 -0
  409. data/spec/unit/handler/json_file_spec.rb +10 -10
  410. data/spec/unit/handler_spec.rb +39 -39
  411. data/spec/unit/http/basic_client_spec.rb +3 -3
  412. data/spec/unit/http/http_request_spec.rb +10 -10
  413. data/spec/unit/http/simple_spec.rb +3 -3
  414. data/spec/unit/http/ssl_policies_spec.rb +15 -15
  415. data/spec/unit/http/validate_content_length_spec.rb +18 -13
  416. data/spec/unit/http_spec.rb +16 -9
  417. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
  418. data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
  419. data/spec/unit/knife/bootstrap_spec.rb +144 -91
  420. data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
  421. data/spec/unit/knife/client_create_spec.rb +57 -43
  422. data/spec/unit/knife/client_delete_spec.rb +15 -15
  423. data/spec/unit/knife/client_edit_spec.rb +4 -4
  424. data/spec/unit/knife/client_list_spec.rb +2 -2
  425. data/spec/unit/knife/client_reregister_spec.rb +9 -9
  426. data/spec/unit/knife/configure_client_spec.rb +20 -20
  427. data/spec/unit/knife/configure_spec.rb +85 -85
  428. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
  429. data/spec/unit/knife/cookbook_create_spec.rb +59 -59
  430. data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
  431. data/spec/unit/knife/cookbook_download_spec.rb +56 -56
  432. data/spec/unit/knife/cookbook_list_spec.rb +9 -9
  433. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
  434. data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
  435. data/spec/unit/knife/cookbook_show_spec.rb +29 -29
  436. data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
  437. data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
  438. data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
  439. data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
  440. data/spec/unit/knife/cookbook_test_spec.rb +16 -16
  441. data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
  442. data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
  443. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
  444. data/spec/unit/knife/core/object_loader_spec.rb +3 -3
  445. data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
  446. data/spec/unit/knife/core/ui_spec.rb +84 -72
  447. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
  448. data/spec/unit/knife/environment_compare_spec.rb +12 -12
  449. data/spec/unit/knife/environment_create_spec.rb +16 -16
  450. data/spec/unit/knife/environment_delete_spec.rb +14 -14
  451. data/spec/unit/knife/environment_edit_spec.rb +15 -15
  452. data/spec/unit/knife/environment_from_file_spec.rb +17 -17
  453. data/spec/unit/knife/environment_list_spec.rb +7 -7
  454. data/spec/unit/knife/environment_show_spec.rb +10 -10
  455. data/spec/unit/knife/index_rebuild_spec.rb +17 -17
  456. data/spec/unit/knife/knife_help.rb +24 -24
  457. data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
  458. data/spec/unit/knife/node_delete_spec.rb +11 -11
  459. data/spec/unit/knife/node_edit_spec.rb +17 -17
  460. data/spec/unit/knife/node_environment_set_spec.rb +12 -12
  461. data/spec/unit/knife/node_from_file_spec.rb +8 -8
  462. data/spec/unit/knife/node_list_spec.rb +9 -9
  463. data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
  464. data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
  465. data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
  466. data/spec/unit/knife/raw_spec.rb +43 -0
  467. data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
  468. data/spec/unit/knife/role_create_spec.rb +12 -12
  469. data/spec/unit/knife/role_delete_spec.rb +10 -10
  470. data/spec/unit/knife/role_edit_spec.rb +13 -13
  471. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
  472. data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
  473. data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
  474. data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
  475. data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
  476. data/spec/unit/knife/role_from_file_spec.rb +10 -10
  477. data/spec/unit/knife/role_list_spec.rb +7 -7
  478. data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
  479. data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
  480. data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
  481. data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
  482. data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
  483. data/spec/unit/knife/ssh_spec.rb +66 -66
  484. data/spec/unit/knife/ssl_check_spec.rb +27 -27
  485. data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
  486. data/spec/unit/knife/status_spec.rb +5 -5
  487. data/spec/unit/knife/tag_create_spec.rb +5 -5
  488. data/spec/unit/knife/tag_delete_spec.rb +6 -6
  489. data/spec/unit/knife/tag_list_spec.rb +4 -4
  490. data/spec/unit/knife/user_create_spec.rb +18 -18
  491. data/spec/unit/knife/user_delete_spec.rb +4 -4
  492. data/spec/unit/knife/user_edit_spec.rb +7 -7
  493. data/spec/unit/knife/user_list_spec.rb +2 -2
  494. data/spec/unit/knife/user_reregister_spec.rb +10 -10
  495. data/spec/unit/knife/user_show_spec.rb +5 -5
  496. data/spec/unit/knife_spec.rb +36 -36
  497. data/spec/unit/lwrp_spec.rb +63 -39
  498. data/spec/unit/mash_spec.rb +6 -6
  499. data/spec/unit/mixin/checksum_spec.rb +2 -2
  500. data/spec/unit/mixin/command_spec.rb +13 -13
  501. data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
  502. data/spec/unit/mixin/deep_merge_spec.rb +49 -49
  503. data/spec/unit/mixin/deprecation_spec.rb +5 -5
  504. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
  505. data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
  506. data/spec/unit/mixin/params_validate_spec.rb +71 -71
  507. data/spec/unit/mixin/path_sanity_spec.rb +14 -14
  508. data/spec/unit/mixin/securable_spec.rb +177 -177
  509. data/spec/unit/mixin/shell_out_spec.rb +56 -27
  510. data/spec/unit/mixin/template_spec.rb +31 -31
  511. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  512. data/spec/unit/mixin/xml_escape_spec.rb +7 -7
  513. data/spec/unit/monkey_patches/uri_spec.rb +1 -1
  514. data/spec/unit/monologger_spec.rb +3 -3
  515. data/spec/unit/node/attribute_spec.rb +185 -136
  516. data/spec/unit/node/immutable_collections_spec.rb +22 -22
  517. data/spec/unit/node_spec.rb +210 -179
  518. data/spec/unit/org_spec.rb +196 -0
  519. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  520. data/spec/unit/platform_spec.rb +46 -46
  521. data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
  522. data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
  523. data/spec/unit/provider/directory_spec.rb +5 -5
  524. data/spec/unit/provider/dsc_script_spec.rb +6 -6
  525. data/spec/unit/provider/env_spec.rb +27 -14
  526. data/spec/unit/provider/execute_spec.rb +139 -68
  527. data/spec/unit/provider/file/content_spec.rb +8 -8
  528. data/spec/unit/provider/git_spec.rb +10 -5
  529. data/spec/unit/provider/group/dscl_spec.rb +8 -11
  530. data/spec/unit/provider/group_spec.rb +13 -13
  531. data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
  532. data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
  533. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  534. data/spec/unit/provider/mdadm_spec.rb +2 -2
  535. data/spec/unit/provider/mount/aix_spec.rb +5 -5
  536. data/spec/unit/provider/mount/mount_spec.rb +22 -22
  537. data/spec/unit/provider/mount/solaris_spec.rb +20 -20
  538. data/spec/unit/provider/package/aix_spec.rb +23 -22
  539. data/spec/unit/provider/package/apt_spec.rb +23 -4
  540. data/spec/unit/provider/package/dpkg_spec.rb +14 -15
  541. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  542. data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
  543. data/spec/unit/provider/package/ips_spec.rb +1 -2
  544. data/spec/unit/provider/package/macports_spec.rb +14 -14
  545. data/spec/unit/provider/package/openbsd_spec.rb +66 -0
  546. data/spec/unit/provider/package/pacman_spec.rb +15 -14
  547. data/spec/unit/provider/package/portage_spec.rb +11 -11
  548. data/spec/unit/provider/package/rpm_spec.rb +132 -84
  549. data/spec/unit/provider/package/rubygems_spec.rb +54 -25
  550. data/spec/unit/provider/package/solaris_spec.rb +22 -25
  551. data/spec/unit/provider/package/yum_spec.rb +237 -36
  552. data/spec/unit/provider/package/zypper_spec.rb +9 -12
  553. data/spec/unit/provider/package_spec.rb +276 -2
  554. data/spec/unit/provider/package_spec.rbe +0 -0
  555. data/spec/unit/provider/remote_directory_spec.rb +25 -25
  556. data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
  557. data/spec/unit/provider/route_spec.rb +3 -3
  558. data/spec/unit/provider/script_spec.rb +61 -43
  559. data/spec/unit/provider/service/aix_service_spec.rb +5 -5
  560. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  561. data/spec/unit/provider/service/debian_service_spec.rb +8 -8
  562. data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
  563. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  564. data/spec/unit/provider/service/init_service_spec.rb +5 -5
  565. data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
  566. data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
  567. data/spec/unit/provider/service/macosx_spec.rb +7 -7
  568. data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
  569. data/spec/unit/provider/service/redhat_spec.rb +4 -4
  570. data/spec/unit/provider/service/simple_service_spec.rb +2 -2
  571. data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
  572. data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
  573. data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
  574. data/spec/unit/provider/service/windows_spec.rb +119 -25
  575. data/spec/unit/provider/service_spec.rb +1 -1
  576. data/spec/unit/provider/user/dscl_spec.rb +38 -30
  577. data/spec/unit/provider/user_spec.rb +1 -1
  578. data/spec/unit/provider_resolver_spec.rb +7 -7
  579. data/spec/unit/provider_spec.rb +23 -23
  580. data/spec/unit/recipe_spec.rb +194 -83
  581. data/spec/unit/registry_helper_spec.rb +143 -143
  582. data/spec/unit/resource/chef_gem_spec.rb +117 -3
  583. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  584. data/spec/unit/resource/conditional_spec.rb +56 -15
  585. data/spec/unit/resource/deploy_spec.rb +2 -2
  586. data/spec/unit/resource/dsc_script_spec.rb +32 -0
  587. data/spec/unit/resource/execute_spec.rb +4 -0
  588. data/spec/unit/resource/file/verification_spec.rb +111 -0
  589. data/spec/unit/resource/file_spec.rb +14 -0
  590. data/spec/unit/resource/openbsd_package_spec.rb +49 -0
  591. data/spec/unit/resource/remote_file_spec.rb +12 -12
  592. data/spec/unit/resource/resource_notification_spec.rb +18 -18
  593. data/spec/unit/resource/rpm_package_spec.rb +12 -0
  594. data/spec/unit/resource/scm_spec.rb +4 -4
  595. data/spec/unit/resource/script_spec.rb +3 -5
  596. data/spec/unit/resource/subversion_spec.rb +1 -1
  597. data/spec/unit/resource_builder_spec.rb +1 -0
  598. data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
  599. data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
  600. data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
  601. data/spec/unit/resource_collection_spec.rb +52 -52
  602. data/spec/unit/resource_definition_spec.rb +1 -1
  603. data/spec/unit/resource_reporter_spec.rb +118 -118
  604. data/spec/unit/resource_spec.rb +131 -125
  605. data/spec/unit/rest/auth_credentials_spec.rb +73 -73
  606. data/spec/unit/rest_spec.rb +12 -12
  607. data/spec/unit/role_spec.rb +85 -84
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
  609. data/spec/unit/run_context_spec.rb +39 -68
  610. data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
  611. data/spec/unit/run_list/run_list_item_spec.rb +28 -28
  612. data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
  613. data/spec/unit/run_list_spec.rb +55 -55
  614. data/spec/unit/run_lock_spec.rb +14 -14
  615. data/spec/unit/run_status_spec.rb +24 -24
  616. data/spec/unit/scan_access_control_spec.rb +23 -23
  617. data/spec/unit/search/query_spec.rb +54 -66
  618. data/spec/unit/shell/model_wrapper_spec.rb +13 -13
  619. data/spec/unit/shell/shell_ext_spec.rb +32 -32
  620. data/spec/unit/shell/shell_session_spec.rb +24 -24
  621. data/spec/unit/shell_out_spec.rb +4 -4
  622. data/spec/unit/shell_spec.rb +27 -27
  623. data/spec/unit/user_spec.rb +50 -50
  624. data/spec/unit/util/backup_spec.rb +32 -32
  625. data/spec/unit/util/diff_spec.rb +31 -31
  626. data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
  627. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
  628. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
  629. data/spec/unit/util/editor_spec.rb +10 -10
  630. data/spec/unit/util/file_edit_spec.rb +10 -10
  631. data/spec/unit/util/path_helper_spec.rb +38 -46
  632. data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
  633. data/spec/unit/util/selinux_spec.rb +30 -30
  634. data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
  635. data/spec/unit/version/platform_spec.rb +5 -5
  636. data/spec/unit/version_class_spec.rb +15 -15
  637. data/spec/unit/version_constraint/platform_spec.rb +7 -7
  638. data/spec/unit/version_constraint_spec.rb +43 -43
  639. data/spec/unit/windows_service_spec.rb +15 -15
  640. data/spec/unit/workstation_config_loader_spec.rb +2 -2
  641. data/tasks/rspec.rb +16 -18
  642. metadata +126 -49
  643. data/bin/shef +0 -35
  644. data/lib/chef/application/agent.rb +0 -18
  645. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  646. data/lib/chef/monkey_patches/numeric.rb +0 -15
  647. data/lib/chef/monkey_patches/object.rb +0 -9
  648. data/lib/chef/monkey_patches/pathname.rb +0 -32
  649. data/lib/chef/monkey_patches/regexp.rb +0 -34
  650. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  651. data/lib/chef/monkey_patches/string.rb +0 -49
  652. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  653. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -365,7 +365,9 @@ class Chef
365
365
  },
366
366
  :openbsd => {
367
367
  :default => {
368
- :group => Chef::Provider::Group::Usermod
368
+ :group => Chef::Provider::Group::Usermod,
369
+ :package => Chef::Provider::Package::Openbsd,
370
+ :service => Chef::Provider::Service::Openbsd
369
371
  }
370
372
  },
371
373
  :hpux => {
@@ -471,7 +473,6 @@ class Chef
471
473
 
472
474
  def provider_for_node(node, resource_type)
473
475
  raise NotImplementedError, "#{self.class.name} no longer supports #provider_for_node"
474
- find_provider_for_node(node, resource_type).new(node, resource_type)
475
476
  end
476
477
 
477
478
  def find_provider_for_node(node, resource_type)
@@ -54,6 +54,7 @@ class Chef
54
54
  #
55
55
 
56
56
  priority :service, Chef::Provider::Service::Freebsd, os: [ "freebsd", "netbsd" ]
57
+ priority :service, Chef::Provider::Service::Openbsd, os: [ "openbsd" ]
57
58
 
58
59
  #
59
60
  # Solaris-en
@@ -66,6 +67,7 @@ class Chef
66
67
  #
67
68
 
68
69
  priority :service, Chef::Provider::Service::Macosx, os: "darwin"
70
+ priority :package, Chef::Provider::Package::Homebrew, os: "darwin"
69
71
  end
70
72
 
71
73
  def priority_map
@@ -35,14 +35,11 @@ class Chef
35
35
  # CHEF-4888: Work around ruby #2618, expected to be fixed in Ruby 2.1.0
36
36
  # https://github.com/ruby/ruby/commit/588504b20f5cc880ad51827b93e571e32446e5db
37
37
  # https://github.com/ruby/ruby/commit/27ed294c7134c0de582007af3c915a635a6506cd
38
- WIN32OLE.ole_initialize
39
38
 
40
39
  wmi = WmiLite::Wmi.new
41
40
  host = wmi.first_of('Win32_OperatingSystem')
42
41
  is_server_2003 = (host['version'] && host['version'].start_with?("5.2"))
43
42
 
44
- WIN32OLE.ole_uninitialize
45
-
46
43
  is_server_2003
47
44
  end
48
45
 
@@ -237,7 +237,12 @@ class Chef
237
237
  end
238
238
 
239
239
  def policyfile_location
240
- "data/policyfiles/#{deployment_group}"
240
+ if Chef::Config[:policy_document_native_api]
241
+ validate_policy_config!
242
+ "policies/#{policy_group}/#{policy_name}"
243
+ else
244
+ "data/policyfiles/#{deployment_group}"
245
+ end
241
246
  end
242
247
 
243
248
  # Do some mimimal validation of the policyfile we fetched from the
@@ -281,6 +286,22 @@ class Chef
281
286
  raise ConfigurationError, "Setting `deployment_group` is not configured."
282
287
  end
283
288
 
289
+ def validate_policy_config!
290
+ policy_group or
291
+ raise ConfigurationError, "Setting `policy_group` is not configured."
292
+
293
+ policy_name or
294
+ raise ConfigurationError, "Setting `policy_name` is not configured."
295
+ end
296
+
297
+ def policy_group
298
+ Chef::Config[:policy_group]
299
+ end
300
+
301
+ def policy_name
302
+ Chef::Config[:policy_name]
303
+ end
304
+
284
305
  # Builds a 'cookbook_hash' map of the form
285
306
  # "COOKBOOK_NAME" => "IDENTIFIER"
286
307
  #
@@ -314,13 +335,11 @@ class Chef
314
335
  # cookbooks are fetched by the "dotted_decimal_identifier": a
315
336
  # representation of a SHA1 in the traditional x.y.z version format.
316
337
  def manifest_for(cookbook_name, lock_data)
317
- xyz_version = lock_data["dotted_decimal_identifier"]
318
- http_api.get("cookbooks/#{cookbook_name}/#{xyz_version}")
319
- rescue Exception => e
320
- message = "Error loading cookbook #{cookbook_name} at version #{xyz_version}: #{e.class} - #{e.message}"
321
- err = Chef::Exceptions::CookbookNotFound.new(message)
322
- err.set_backtrace(e.backtrace)
323
- raise err
338
+ if Chef::Config[:policy_document_native_api]
339
+ artifact_manifest_for(cookbook_name, lock_data)
340
+ else
341
+ compat_mode_manifest_for(cookbook_name, lock_data)
342
+ end
324
343
  end
325
344
 
326
345
  def cookbook_locks
@@ -335,6 +354,30 @@ class Chef
335
354
  Chef::Config
336
355
  end
337
356
 
357
+ private
358
+
359
+ def compat_mode_manifest_for(cookbook_name, lock_data)
360
+ xyz_version = lock_data["dotted_decimal_identifier"]
361
+ rel_url = "cookbooks/#{cookbook_name}/#{xyz_version}"
362
+ http_api.get(rel_url)
363
+ rescue Exception => e
364
+ message = "Error loading cookbook #{cookbook_name} at version #{xyz_version} from #{rel_url}: #{e.class} - #{e.message}"
365
+ err = Chef::Exceptions::CookbookNotFound.new(message)
366
+ err.set_backtrace(e.backtrace)
367
+ raise err
368
+ end
369
+
370
+ def artifact_manifest_for(cookbook_name, lock_data)
371
+ xyz_version = lock_data["dotted_decimal_identifier"]
372
+ rel_url = "cookbook_artifacts/#{cookbook_name}/#{xyz_version}"
373
+ http_api.get(rel_url)
374
+ rescue Exception => e
375
+ message = "Error loading cookbook #{cookbook_name} at version #{xyz_version} from #{rel_url}: #{e.class} - #{e.message}"
376
+ err = Chef::Exceptions::CookbookNotFound.new(message)
377
+ err.set_backtrace(e.backtrace)
378
+ raise err
379
+ end
380
+
338
381
  end
339
382
  end
340
383
  end
@@ -18,7 +18,6 @@
18
18
 
19
19
  require "chef/mixin/command"
20
20
  require "chef/mixin/from_file"
21
- require "chef/monkey_patches/fileutils"
22
21
  require "chef/provider/git"
23
22
  require "chef/provider/subversion"
24
23
  require "chef/dsl/recipe"
@@ -126,7 +125,7 @@ class Chef
126
125
  # * Move release_path directory before deploy and move it back when error occurs
127
126
  # * Rollback to previous commit
128
127
  # * Do nothing - because deploy is force, it will be retried in short time
129
- # Because last is simpliest, keep it
128
+ # Because last is simplest, keep it
130
129
  deploy
131
130
  end
132
131
 
@@ -61,7 +61,7 @@ class Chef
61
61
  is_parent_writable = lambda do |base_dir|
62
62
  base_dir = ::File.dirname(base_dir)
63
63
  if ::File.exists?(base_dir)
64
- ::File.writable?(base_dir)
64
+ Chef::FileAccessControl.writable?(base_dir)
65
65
  else
66
66
  is_parent_writable.call(base_dir)
67
67
  end
@@ -71,7 +71,7 @@ class Chef
71
71
  # in why run mode & parent directory does not exist no permissions check is required
72
72
  # If not in why run, permissions must be valid and we rely on prior assertion that dir exists
73
73
  if !whyrun_mode? || ::File.exists?(parent_directory)
74
- ::File.writable?(parent_directory)
74
+ Chef::FileAccessControl.writable?(parent_directory)
75
75
  else
76
76
  true
77
77
  end
@@ -84,7 +84,7 @@ class Chef
84
84
  requirements.assert(:delete) do |a|
85
85
  a.assertion do
86
86
  if ::File.exists?(@new_resource.path)
87
- ::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
87
+ ::File.directory?(@new_resource.path) && Chef::FileAccessControl.writable?(@new_resource.path)
88
88
  else
89
89
  true
90
90
  end
@@ -32,11 +32,11 @@ class Chef
32
32
  @dsc_resource = dsc_resource
33
33
  @resource_converged = false
34
34
  @operations = {
35
- :set => Proc.new { |config_manager, document|
36
- config_manager.set_configuration(document)
35
+ :set => Proc.new { |config_manager, document, shellout_flags|
36
+ config_manager.set_configuration(document, shellout_flags)
37
37
  },
38
- :test => Proc.new { |config_manager, document|
39
- config_manager.test_configuration(document)
38
+ :test => Proc.new { |config_manager, document, shellout_flags|
39
+ config_manager.test_configuration(document, shellout_flags)
40
40
  }}
41
41
  end
42
42
 
@@ -89,9 +89,15 @@ class Chef
89
89
 
90
90
  config_manager = Chef::Util::DSC::LocalConfigurationManager.new(@run_context.node, config_directory)
91
91
 
92
+ shellout_flags = {
93
+ :cwd => @dsc_resource.cwd,
94
+ :environment => @dsc_resource.environment,
95
+ :timeout => @dsc_resource.timeout
96
+ }
97
+
92
98
  begin
93
99
  configuration_document = generate_configuration_document(config_directory, configuration_flags)
94
- @operations[operation].call(config_manager, configuration_document)
100
+ @operations[operation].call(config_manager, configuration_document, shellout_flags)
95
101
  rescue Exception => e
96
102
  Chef::Log.error("DSC operation failed: #{e.message.to_s}")
97
103
  raise e
@@ -123,7 +129,7 @@ class Chef
123
129
  else
124
130
  # If code is also not provided, we mimic what the other script resources do (execute nothing)
125
131
  Chef::Log.warn("Neither code or command were provided for dsc_resource[#{@dsc_resource.name}].") unless @dsc_resource.code
126
- generator.configuration_document_from_script_code(@dsc_resource.code || '', configuration_flags, shellout_flags)
132
+ generator.configuration_document_from_script_code(@dsc_resource.code || '', configuration_flags, @dsc_resource.imports, shellout_flags)
127
133
  end
128
134
  end
129
135
 
@@ -161,7 +167,7 @@ class Chef
161
167
  cleaned_messages = resource.change_log[0..-2].map { |c| c.sub(/^#{Regexp.escape(resource.name)}/, '').strip }
162
168
  "converge DSC resource #{resource.name} by #{cleaned_messages.find_all{ |c| c != ''}.join("\n")}"
163
169
  else
164
- # This is needed because a dsc script can have resouces that are both converged and not
170
+ # This is needed because a dsc script can have resources that are both converged and not
165
171
  "converge DSC resource #{resource.name} by doing nothing because it is already converged"
166
172
  end
167
173
  end
@@ -61,9 +61,12 @@ class Chef
61
61
  def requires_modify_or_create?
62
62
  if @new_resource.delim
63
63
  #e.g. check for existing value within PATH
64
- not new_values.all? do |val|
65
- current_values.include? val
64
+ new_values.inject(0) do |index, val|
65
+ next_index = current_values.find_index val
66
+ return true if next_index.nil? || next_index < index
67
+ next_index
66
68
  end
69
+ false
67
70
  else
68
71
  @new_resource.value != @current_resource.value
69
72
  end
@@ -99,9 +102,9 @@ class Chef
99
102
  return true #do not delete the key
100
103
  else
101
104
  new_value =
102
- current_values.select { |item|
105
+ current_values.select do |item|
103
106
  not new_values.include?(item)
104
- }.join(@new_resource.delim)
107
+ end.join(@new_resource.delim)
105
108
 
106
109
  if new_value.empty?
107
110
  return false #nothing left here, delete the key
@@ -145,10 +148,7 @@ class Chef
145
148
 
146
149
  def modify_env
147
150
  if @new_resource.delim
148
- values = new_values.reject do |v|
149
- current_values.include?(v)
150
- end
151
- @new_resource.value((values + [@current_resource.value]).join(@new_resource.delim))
151
+ @new_resource.value((new_values + current_values).uniq.join(@new_resource.delim))
152
152
  end
153
153
  create_env
154
154
  end
@@ -18,67 +18,86 @@
18
18
 
19
19
  require 'chef/log'
20
20
  require 'chef/provider'
21
+ require 'forwardable'
21
22
 
22
23
  class Chef
23
24
  class Provider
24
25
  class Execute < Chef::Provider
26
+ extend Forwardable
25
27
 
26
28
  provides :execute
27
29
 
30
+ def_delegators :@new_resource, :command, :returns, :environment, :user, :group, :cwd, :umask, :creates
31
+
28
32
  def load_current_resource
29
- true
33
+ current_resource = Chef::Resource::Execute.new(new_resource.name)
34
+ current_resource
30
35
  end
31
36
 
32
37
  def whyrun_supported?
33
38
  true
34
39
  end
35
40
 
36
- def action_run
37
- opts = {}
38
-
39
- if sentinel_file = sentinel_file_if_exists
40
- Chef::Log.debug("#{@new_resource} sentinel file #{sentinel_file} exists - nothing to do")
41
- return false
42
- end
41
+ def define_resource_requirements
42
+ # @todo: this should change to raise in some appropriate major version bump.
43
+ if creates && creates_relative? && !cwd
44
+ Chef::Log.warn "Providing a relative path for the creates attribute without the cwd is deprecated and will be changed to fail (CHEF-3819)"
45
+ end
46
+ end
43
47
 
48
+ def timeout
44
49
  # original implementation did not specify a timeout, but ShellOut
45
50
  # *always* times out. So, set a very long default timeout
46
- opts[:timeout] = @new_resource.timeout || 3600
47
- opts[:returns] = @new_resource.returns if @new_resource.returns
48
- opts[:environment] = @new_resource.environment if @new_resource.environment
49
- opts[:user] = @new_resource.user if @new_resource.user
50
- opts[:group] = @new_resource.group if @new_resource.group
51
- opts[:cwd] = @new_resource.cwd if @new_resource.cwd
52
- opts[:umask] = @new_resource.umask if @new_resource.umask
53
- opts[:log_level] = :info
54
- opts[:log_tag] = @new_resource.to_s
55
- if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info? && !@new_resource.sensitive
56
- opts[:live_stream] = STDOUT
51
+ new_resource.timeout || 3600
52
+ end
53
+
54
+ def action_run
55
+ if creates && sentinel_file.exist?
56
+ Chef::Log.debug("#{new_resource} sentinel file #{sentinel_file} exists - nothing to do")
57
+ return false
57
58
  end
58
- description = @new_resource.sensitive ? "sensitive resource" : @new_resource.command
59
+
59
60
  converge_by("execute #{description}") do
60
- result = shell_out!(@new_resource.command, opts)
61
- Chef::Log.info("#{@new_resource} ran successfully")
61
+ result = shell_out!(command, opts)
62
+ Chef::Log.info("#{new_resource} ran successfully")
62
63
  end
63
64
  end
64
65
 
65
66
  private
66
67
 
67
- def sentinel_file_if_exists
68
- if sentinel_file = @new_resource.creates
69
- relative = Pathname(sentinel_file).relative?
70
- cwd = @new_resource.cwd
71
- if relative && !cwd
72
- Chef::Log.warn "You have provided relative path for execute#creates (#{sentinel_file}) without execute#cwd (see CHEF-3819)"
73
- end
74
-
75
- if ::File.exists?(sentinel_file)
76
- sentinel_file
77
- elsif cwd && relative
78
- sentinel_file = ::File.join(cwd, sentinel_file)
79
- sentinel_file if ::File.exists?(sentinel_file)
80
- end
68
+ def sensitive?
69
+ !!new_resource.sensitive
70
+ end
71
+
72
+ def opts
73
+ opts = {}
74
+ opts[:timeout] = timeout
75
+ opts[:returns] = returns if returns
76
+ opts[:environment] = environment if environment
77
+ opts[:user] = user if user
78
+ opts[:group] = group if group
79
+ opts[:cwd] = cwd if cwd
80
+ opts[:umask] = umask if umask
81
+ opts[:log_level] = :info
82
+ opts[:log_tag] = new_resource.to_s
83
+ if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info? && !sensitive?
84
+ opts[:live_stream] = STDOUT
81
85
  end
86
+ opts
87
+ end
88
+
89
+ def description
90
+ sensitive? ? "sensitive resource" : command
91
+ end
92
+
93
+ def creates_relative?
94
+ Pathname(creates).relative?
95
+ end
96
+
97
+ def sentinel_file
98
+ Pathname.new(Chef::Util::PathHelper.cleanpath(
99
+ ( cwd && creates_relative? ) ? ::File.join(cwd, creates) : creates
100
+ ))
82
101
  end
83
102
  end
84
103
  end
@@ -345,6 +345,14 @@ class Chef
345
345
  if new_resource.checksum && tempfile && ( new_resource.checksum != tempfile_checksum )
346
346
  raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum))
347
347
  end
348
+
349
+ if tempfile
350
+ new_resource.verify.each do |v|
351
+ if ! v.verify(tempfile.path)
352
+ raise Chef::Exceptions::ValidationFailed.new "Proposed content for #{new_resource.path} failed verification #{v}"
353
+ end
354
+ end
355
+ end
348
356
  end
349
357
 
350
358
  def do_unlink
@@ -17,12 +17,14 @@
17
17
  #
18
18
 
19
19
  require 'chef/provider'
20
+ require 'chef/mixin/shell_out'
20
21
  require 'chef/mixin/command'
21
22
  require 'etc'
22
23
 
23
24
  class Chef
24
25
  class Provider
25
26
  class Group < Chef::Provider
27
+ include Chef::Mixin::ShellOut
26
28
  include Chef::Mixin::Command
27
29
  attr_accessor :group_exists
28
30
  attr_accessor :change_desc
@@ -24,10 +24,9 @@ class Chef
24
24
  def dscl(*args)
25
25
  host = "."
26
26
  stdout_result = ""; stderr_result = ""; cmd = "dscl #{host} -#{args.join(' ')}"
27
- status = popen4(cmd) do |pid, stdin, stdout, stderr|
28
- stdout.each { |line| stdout_result << line }
29
- stderr.each { |line| stderr_result << line }
30
- end
27
+ status = shell_out(cmd)
28
+ status.stdout.each_line { |line| stdout_result << line }
29
+ status.stderr.each_line { |line| stderr_result << line }
31
30
  return [cmd, status, stdout_result, stderr_result]
32
31
  end
33
32
 
@@ -18,6 +18,7 @@
18
18
 
19
19
  require 'chef/log'
20
20
  require 'chef/mixin/command'
21
+ require 'chef/mixin/shell_out'
21
22
  require 'chef/provider'
22
23
  require 'chef/resource/file'
23
24
  require 'chef/exceptions'
@@ -38,6 +39,7 @@ require 'erb'
38
39
  class Chef
39
40
  class Provider
40
41
  class Ifconfig < Chef::Provider
42
+ include Chef::Mixin::ShellOut
41
43
  include Chef::Mixin::Command
42
44
 
43
45
  attr_accessor :config_template
@@ -59,32 +61,30 @@ class Chef
59
61
  @ifconfig_success = true
60
62
  @interfaces = {}
61
63
 
62
- @status = popen4("ifconfig") do |pid, stdin, stdout, stderr|
63
- stdout.each do |line|
64
-
65
- if !line[0..9].strip.empty?
66
- @int_name = line[0..9].strip
67
- @interfaces[@int_name] = {"hwaddr" => (line =~ /(HWaddr)/ ? ($') : "nil").strip.chomp }
68
- else
69
- @interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? ($1) : "nil") if line =~ /inet addr:/
70
- @interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? ($1) : "nil") if line =~ /Bcast:/
71
- @interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? ($1) : "nil") if line =~ /Mask:/
72
- @interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? ($1) : "nil") if line =~ /MTU:/
73
- @interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? ($1) : "nil") if line =~ /Metric:/
74
- end
64
+ @status = shell_out("ifconfig")
65
+ @status.stdout.each_line do |line|
66
+ if !line[0..9].strip.empty?
67
+ @int_name = line[0..9].strip
68
+ @interfaces[@int_name] = {"hwaddr" => (line =~ /(HWaddr)/ ? ($') : "nil").strip.chomp }
69
+ else
70
+ @interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? ($1) : "nil") if line =~ /inet addr:/
71
+ @interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? ($1) : "nil") if line =~ /Bcast:/
72
+ @interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? ($1) : "nil") if line =~ /Mask:/
73
+ @interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? ($1) : "nil") if line =~ /MTU:/
74
+ @interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? ($1) : "nil") if line =~ /Metric:/
75
+ end
75
76
 
76
- if @interfaces.has_key?(@new_resource.device)
77
- @interface = @interfaces.fetch(@new_resource.device)
78
-
79
- @current_resource.target(@new_resource.target)
80
- @current_resource.device(@new_resource.device)
81
- @current_resource.inet_addr(@interface["inet_addr"])
82
- @current_resource.hwaddr(@interface["hwaddr"])
83
- @current_resource.bcast(@interface["bcast"])
84
- @current_resource.mask(@interface["mask"])
85
- @current_resource.mtu(@interface["mtu"])
86
- @current_resource.metric(@interface["metric"])
87
- end
77
+ if @interfaces.has_key?(@new_resource.device)
78
+ @interface = @interfaces.fetch(@new_resource.device)
79
+
80
+ @current_resource.target(@new_resource.target)
81
+ @current_resource.device(@new_resource.device)
82
+ @current_resource.inet_addr(@interface["inet_addr"])
83
+ @current_resource.hwaddr(@interface["hwaddr"])
84
+ @current_resource.bcast(@interface["bcast"])
85
+ @current_resource.mask(@interface["mask"])
86
+ @current_resource.mtu(@interface["mtu"])
87
+ @current_resource.metric(@interface["metric"])
88
88
  end
89
89
  end
90
90
  @current_resource