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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,6 +1,6 @@
1
1
  .\" Man page generated from reStructuredText.
2
2
  .
3
- .TH "CHEF-SOLO" "8" "Chef 11.16" "" "chef-solo"
3
+ .TH "CHEF-SOLO" "8" "Chef 12.0" "" "chef-solo"
4
4
  .SH NAME
5
5
  chef-solo \- The man page for the chef-solo command line tool.
6
6
  .
@@ -77,13 +77,15 @@ This command has the following options:
77
77
  The configuration file to use.
78
78
  .TP
79
79
  .B \fB\-d\fP, \fB\-\-daemonize\fP
80
- Use to run the executable as a daemon. This option is only available on machines that run in UNIX or Linux environments. For machines that are running Microsoft Windows that require similar functionality, use the \fBchef\-client::service\fP recipe in the \fBchef\-client\fP cookbook: \fI\%http://community.opscode.com/cookbooks/chef\-client\fP\&. This will install a chef\-client service under Microsoft Windows using the Windows Service Wrapper\&.
80
+ Use to run the executable as a daemon. This option may not be used in the same command with the \fB\-\-[no\-]fork\fP option.
81
+ .sp
82
+ This option is only available on machines that run in UNIX or Linux environments. For machines that are running Microsoft Windows that require similar functionality, use the \fBchef\-client::service\fP recipe in the \fBchef\-client\fP cookbook: \fI\%http://community.opscode.com/cookbooks/chef\-client\fP\&. This will install a chef\-client service under Microsoft Windows using the Windows Service Wrapper\&.
81
83
  .TP
82
84
  .B \fB\-E ENVIRONMENT_NAME\fP, \fB\-\-environment ENVIRONMENT_NAME\fP
83
85
  The name of the environment.
84
86
  .TP
85
87
  .B \fB\-f\fP, \fB\-\-[no\-]fork\fP
86
- Use to contain the chef\-client run in a secondary process with dedicated RAM. When the chef\-client run is complete the RAM will be returned to the master process. This option helps ensure that a chef\-client will use a steady amount of RAM over time because the master process will not run recipes. This option will also help prevent memory leaks (such as those that can be introduced by the code contained within a poorly designed cookbook). Use \fB\-\-no\-fork\fP to disable running the chef\-client in fork node. Default value: \fB\-\-fork\fP\&.
88
+ Use to contain the chef\-client run in a secondary process with dedicated RAM. When the chef\-client run is complete the RAM will be returned to the master process. This option helps ensure that a chef\-client will use a steady amount of RAM over time because the master process will not run recipes. This option will also help prevent memory leaks (such as those that can be introduced by the code contained within a poorly designed cookbook). Use \fB\-\-no\-fork\fP to disable running the chef\-client in fork node. Default value: \fB\-\-fork\fP\&. This option may not be used in the same command with the \fB\-\-daemonize\fP and \fB\-\-interval\fP options.
87
89
  .TP
88
90
  .B \fB\-F FORMAT\fP, \fB\-\-format FORMAT\fP
89
91
  The output format: \fBdoc\fP (default) or \fBmin\fP\&.
@@ -107,10 +109,81 @@ The name of the group that owns a process. This is required when starting any ex
107
109
  Shows help for the command.
108
110
  .TP
109
111
  .B \fB\-i SECONDS\fP, \fB\-\-interval SECONDS\fP
110
- The frequency (in seconds) at which the chef\-client runs.
112
+ The frequency (in seconds) at which the chef\-client runs. When the chef\-client is run at intervals, \fB\-\-splay\fP and \fB\-\-interval\fP values are applied before the chef\-client run. This option may not be used in the same command with the \fB\-\-[no\-]fork\fP option.
111
113
  .TP
112
114
  .B \fB\-j PATH\fP, \fB\-\-json\-attributes PATH\fP
113
- The path to a file that contains JSON data. Use this option to override \fBnormal\fP attributes set elsewhere.
115
+ The path to a file that contains JSON data.
116
+ .sp
117
+ Use this option to define a \fBrun_list\fP object. For example, a JSON file similar to:
118
+ .INDENT 7.0
119
+ .INDENT 3.5
120
+ .sp
121
+ .nf
122
+ .ft C
123
+ "run_list": [
124
+ "recipe[base]",
125
+ "recipe[foo]",
126
+ "recipe[bar]",
127
+ "role[webserver]"
128
+ ],
129
+ .ft P
130
+ .fi
131
+ .UNINDENT
132
+ .UNINDENT
133
+ .sp
134
+ may be used by running \fBchef\-client \-j path/to/file.json\fP\&.
135
+ .sp
136
+ In certain situations this option may be used to update \fBnormal\fP attributes.
137
+ .sp
138
+ \fBWARNING:\fP
139
+ .INDENT 7.0
140
+ .INDENT 3.5
141
+ Any other attribute type that is contained in this JSON file will be treated as a \fBnormal\fP attribute. For example, attempting to update \fBoverride\fP attributes using the \fB\-j\fP option:
142
+ .INDENT 0.0
143
+ .INDENT 3.5
144
+ .sp
145
+ .nf
146
+ .ft C
147
+ {
148
+ "name": "dev\-99",
149
+ "description": "Install some stuff",
150
+ "override_attributes": {
151
+ "apptastic": {
152
+ "enable_apptastic": "false",
153
+ "apptastic_tier_name": "dev\-99.bomb.com"
154
+ }
155
+ }
156
+ }
157
+ .ft P
158
+ .fi
159
+ .UNINDENT
160
+ .UNINDENT
161
+ .sp
162
+ will result in a node object similar to:
163
+ .INDENT 0.0
164
+ .INDENT 3.5
165
+ .sp
166
+ .nf
167
+ .ft C
168
+ {
169
+ "name": "maybe\-dev\-99",
170
+ "normal": {
171
+ "name": "dev\-99",
172
+ "description": "Install some stuff",
173
+ "override_attributes": {
174
+ "apptastic": {
175
+ "enable_apptastic": "false",
176
+ "apptastic_tier_name": "dev\-99.bomb.com"
177
+ }
178
+ }
179
+ }
180
+ }
181
+ .ft P
182
+ .fi
183
+ .UNINDENT
184
+ .UNINDENT
185
+ .UNINDENT
186
+ .UNINDENT
114
187
  .TP
115
188
  .B \fB\-l LEVEL\fP, \fB\-\-log_level LEVEL\fP
116
189
  The level of logging that will be stored in a log file.
@@ -134,7 +207,7 @@ The URL location from which a remote cookbook tar.gz will be downloaded.
134
207
  The amount of time (in seconds) to wait for a chef\-client run to finish. Default value: not set (indefinite). Set to \fB0\fP to cause a second chef\-client to exit immediately.
135
208
  .TP
136
209
  .B \fB\-s SECONDS\fP, \fB\-\-splay SECONDS\fP
137
- A number (in seconds) to add to the \fBinterval\fP that is used to determine the frequency of chef\-client runs. This number can help prevent server load when there are many clients running at the same time.
210
+ A number (in seconds) to add to the \fBinterval\fP that is used to determine the frequency of chef\-client runs. This number can help prevent server load when there are many clients running at the same time. When the chef\-client is run at intervals, \fB\-\-splay\fP and \fB\-\-interval\fP values are applied before the chef\-client run.
138
211
  .TP
139
212
  .B \fB\-u USER\fP, \fB\-\-user USER\fP
140
213
  The user that owns a process. This is required when starting any executable as a daemon.
@@ -84,7 +84,7 @@ When this is complete, the bootstrapped node will have:
84
84
 
85
85
  - Latest Chef version installed from RubyGems or APT Packages from Opscode. This may be a later version than the local system.
86
86
  - Be validated with the configured Chef Server.
87
- - Have run Chef with its default run list if one is specfied.
87
+ - Have run Chef with its default run list if one is specified.
88
88
 
89
89
  Additional custom bootstrap templates can be created and stored in
90
90
  `.chef/bootstrap/DISTRO.erb`, replacing __DISTRO__ with the value passed
@@ -26,7 +26,7 @@ repository. Running `knife cookbook site install` does the following:
26
26
  upstream;
27
27
  2. All existing cookbooks are removed from the branch;
28
28
  3. The cookbook is downloaded from the cookbook site in tarball form;
29
- 4. The downloaded cookbook is untarred, and its contents commited via git;
29
+ 4. The downloaded cookbook is untarred, and its contents committed via git;
30
30
  5. The pristine copy branch is merged into the master branch.
31
31
 
32
32
  By installing cookbook with this process, you can locally modify the
@@ -90,7 +90,7 @@ formatted according to the --format option.
90
90
 
91
91
  ## ENCRYPTION SUPPORT
92
92
  Data Bag Items may be encrypted to keep their contents secret. This may
93
- be desireable when storing sensitive information such as database
93
+ be desirable when storing sensitive information such as database
94
94
  passwords, API keys, etc.
95
95
 
96
96
  Data Bag Item encryption uses the AES-256 CBC symmetric key algorithm.
@@ -73,7 +73,7 @@ represented as a single JSON object, like this:
73
73
 
74
74
  {"apache2": ">= 1.5.0"}
75
75
 
76
- In the Ruby format, the cookbook version contraints for an environment
76
+ In the Ruby format, the cookbook version constraints for an environment
77
77
  are represented as a Ruby Hash, like this:
78
78
 
79
79
  {"apache2" => ">= 1.5.0"}
@@ -174,7 +174,7 @@ recommended though, and git fits with a lot of the workflow paradigms.
174
174
  ## ENVIRONMENT
175
175
  * `EDITOR`:
176
176
  The text editor to use for editing data. The --editor option takes
177
- precedence over this value, and the --disable-editing option supresses
177
+ precedence over this value, and the --disable-editing option suppresses
178
178
  data editing entirely.
179
179
 
180
180
  ## SEE ALSO
@@ -32,10 +32,3 @@ require 'chef/run_status'
32
32
  require 'chef/handler'
33
33
  require 'chef/handler/json_file'
34
34
 
35
- require 'chef/monkey_patches/tempfile'
36
- require 'chef/monkey_patches/string'
37
- require 'chef/monkey_patches/numeric'
38
- require 'chef/monkey_patches/object'
39
- require 'chef/monkey_patches/file'
40
- require 'chef/monkey_patches/uri'
41
-
@@ -96,7 +96,7 @@ class Chef
96
96
  set_or_return(
97
97
  :private_key,
98
98
  arg,
99
- :kind_of => String
99
+ :kind_of => [String, FalseClass]
100
100
  )
101
101
  end
102
102
 
@@ -124,7 +124,7 @@ class Chef
124
124
  Chef::JSONCompat.to_json(to_hash, *a)
125
125
  end
126
126
 
127
- def self.json_create(o)
127
+ def self.from_hash(o)
128
128
  client = Chef::ApiClient.new
129
129
  client.name(o["name"] || o["clientname"])
130
130
  client.private_key(o["private_key"]) if o.key?("private_key")
@@ -134,6 +134,14 @@ class Chef
134
134
  client
135
135
  end
136
136
 
137
+ def self.json_create(data)
138
+ from_hash(data)
139
+ end
140
+
141
+ def self.from_json(j)
142
+ from_hash(Chef::JSONCompat.parse(j))
143
+ end
144
+
137
145
  def self.http_api
138
146
  Chef::REST.new(Chef::Config[:chef_server_url])
139
147
  end
@@ -33,9 +33,10 @@ class Chef
33
33
  attr_reader :destination
34
34
  attr_reader :name
35
35
 
36
- def initialize(name, destination)
37
- @name = name
38
- @destination = destination
36
+ def initialize(name, destination, http_api: nil)
37
+ @name = name
38
+ @destination = destination
39
+ @http_api = http_api
39
40
  @server_generated_private_key = nil
40
41
  end
41
42
 
@@ -120,11 +121,10 @@ class Chef
120
121
  post_data
121
122
  end
122
123
 
123
-
124
124
  def http_api
125
- @http_api_as_validator ||= Chef::REST.new(Chef::Config[:chef_server_url],
126
- Chef::Config[:validation_client_name],
127
- Chef::Config[:validation_key])
125
+ @http_api ||= Chef::REST.new(Chef::Config[:chef_server_url],
126
+ Chef::Config[:validation_client_name],
127
+ Chef::Config[:validation_key])
128
128
  end
129
129
 
130
130
  # Whether or not to generate keys locally and post the public key to the
@@ -161,5 +161,3 @@ class Chef
161
161
  end
162
162
  end
163
163
  end
164
-
165
-
@@ -17,6 +17,7 @@
17
17
  # limitations under the License.
18
18
 
19
19
  require 'pp'
20
+ require 'uri'
20
21
  require 'socket'
21
22
  require 'chef/config'
22
23
  require 'chef/config_fetcher'
@@ -48,6 +49,7 @@ class Chef
48
49
  configure_logging
49
50
  configure_proxy_environment_variables
50
51
  configure_encoding
52
+ emit_warnings
51
53
  end
52
54
 
53
55
  # Get this party started
@@ -102,6 +104,12 @@ class Chef
102
104
  Chef::Config.merge!(config)
103
105
  end
104
106
 
107
+ def set_specific_recipes
108
+ Chef::Config[:specific_recipes] =
109
+ cli_arguments.map { |file| File.expand_path(file) } if
110
+ cli_arguments.respond_to?(:map)
111
+ end
112
+
105
113
  # Initialize and configure the logger.
106
114
  # === Loggers and Formatters
107
115
  # In Chef 10.x and previous, the Logger was the primary/only way that Chef
@@ -198,16 +206,18 @@ class Chef
198
206
 
199
207
  # Initializes Chef::Client instance and runs it
200
208
  def run_chef_client(specific_recipes = [])
209
+ unless specific_recipes.respond_to?(:size)
210
+ raise ArgumentError, 'received non-Array like specific_recipes argument'
211
+ end
212
+
201
213
  Chef::LocalMode.with_server_connectivity do
202
214
  override_runlist = config[:override_runlist]
203
- if specific_recipes.size > 0
204
- override_runlist ||= []
205
- end
215
+ override_runlist ||= [] if specific_recipes.size > 0
206
216
  @chef_client = Chef::Client.new(
207
217
  @chef_client_json,
208
- :override_runlist => config[:override_runlist],
209
- :specific_recipes => specific_recipes,
210
- :runlist => config[:runlist]
218
+ override_runlist: override_runlist,
219
+ specific_recipes: specific_recipes,
220
+ runlist: config[:runlist]
211
221
  )
212
222
  @chef_client_json = nil
213
223
 
@@ -226,7 +236,7 @@ class Chef
226
236
  private
227
237
  def can_fork?
228
238
  # win32-process gem exposes some form of :fork for Process
229
- # class. So we are seperately ensuring that the platform we're
239
+ # class. So we are separately ensuring that the platform we're
230
240
  # running on is not windows before forking.
231
241
  Chef::Config[:client_fork] && Process.respond_to?(:fork) && !Chef::Platform.windows?
232
242
  end
@@ -237,7 +247,7 @@ class Chef
237
247
  # Override the TERM signal.
238
248
  trap('TERM') do
239
249
  Chef::Log.debug("SIGTERM received during converge," +
240
- " finishing converge to exit normally (send SIGINT to terminate immediately)")
250
+ " finishing converge to exit normally (send SIGINT to terminate immediately)")
241
251
  end
242
252
 
243
253
  @chef_client.run
@@ -251,7 +261,7 @@ class Chef
251
261
  # TERM singal is received (exit gracefully)
252
262
  trap('TERM') do
253
263
  Chef::Log.debug("SIGTERM received during converge," +
254
- " finishing converge to exit normally (send SIGINT to terminate immediately)")
264
+ " finishing converge to exit normally (send SIGINT to terminate immediately)")
255
265
  end
256
266
 
257
267
  client_solo = Chef::Config[:solo] ? "chef-solo" : "chef-client"
@@ -297,7 +307,7 @@ class Chef
297
307
  def configure_http_proxy
298
308
  if http_proxy = Chef::Config[:http_proxy]
299
309
  http_proxy_string = configure_proxy("http", http_proxy,
300
- Chef::Config[:http_proxy_user], Chef::Config[:http_proxy_pass])
310
+ Chef::Config[:http_proxy_user], Chef::Config[:http_proxy_pass])
301
311
  env['http_proxy'] = http_proxy_string unless env['http_proxy']
302
312
  env['HTTP_PROXY'] = http_proxy_string unless env['HTTP_PROXY']
303
313
  end
@@ -307,7 +317,7 @@ class Chef
307
317
  def configure_https_proxy
308
318
  if https_proxy = Chef::Config[:https_proxy]
309
319
  https_proxy_string = configure_proxy("https", https_proxy,
310
- Chef::Config[:https_proxy_user], Chef::Config[:https_proxy_pass])
320
+ Chef::Config[:https_proxy_user], Chef::Config[:https_proxy_pass])
311
321
  env['https_proxy'] = https_proxy_string unless env['https_proxy']
312
322
  env['HTTPS_PROXY'] = https_proxy_string unless env['HTTPS_PROXY']
313
323
  end
@@ -317,7 +327,7 @@ class Chef
317
327
  def configure_ftp_proxy
318
328
  if ftp_proxy = Chef::Config[:ftp_proxy]
319
329
  ftp_proxy_string = configure_proxy("ftp", ftp_proxy,
320
- Chef::Config[:ftp_proxy_user], Chef::Config[:ftp_proxy_pass])
330
+ Chef::Config[:ftp_proxy_user], Chef::Config[:ftp_proxy_pass])
321
331
  env['ftp_proxy'] = ftp_proxy_string unless env['ftp_proxy']
322
332
  env['FTP_PROXY'] = ftp_proxy_string unless env['FTP_PROXY']
323
333
  end
@@ -371,6 +381,12 @@ class Chef
371
381
  ENV
372
382
  end
373
383
 
384
+ def emit_warnings
385
+ if Chef::Config[:chef_gem_compile_time]
386
+ Chef::Log.deprecation "setting chef_gem_compile_time to true is deprecated"
387
+ end
388
+ end
389
+
374
390
  class << self
375
391
  def debug_stacktrace(e)
376
392
  message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
@@ -43,6 +43,12 @@ class Chef::Application::Apply < Chef::Application
43
43
  :description => "Execute resources read from STDIN",
44
44
  :boolean => true
45
45
 
46
+ option :json_attribs,
47
+ :short => "-j JSON_ATTRIBS",
48
+ :long => "--json-attributes JSON_ATTRIBS",
49
+ :description => "Load attributes from a JSON file or URL",
50
+ :proc => nil
51
+
46
52
  option :log_level,
47
53
  :short => "-l LEVEL",
48
54
  :long => "--log_level LEVEL",
@@ -79,6 +85,8 @@ class Chef::Application::Apply < Chef::Application
79
85
  :default => !Chef::Platform.windows?,
80
86
  :description => "Use colored output, defaults to enabled"
81
87
 
88
+ attr_reader :json_attribs
89
+
82
90
  def initialize
83
91
  super
84
92
  end
@@ -88,6 +96,14 @@ class Chef::Application::Apply < Chef::Application
88
96
  Chef::Config.merge!(config)
89
97
  configure_logging
90
98
  configure_proxy_environment_variables
99
+ parse_json
100
+ end
101
+
102
+ def parse_json
103
+ if Chef::Config[:json_attribs]
104
+ config_fetcher = Chef::ConfigFetcher.new(Chef::Config[:json_attribs])
105
+ @json_attribs = config_fetcher.fetch_json
106
+ end
91
107
  end
92
108
 
93
109
  def read_recipe_file(file_name)
@@ -106,7 +122,7 @@ class Chef::Application::Apply < Chef::Application
106
122
 
107
123
  def get_recipe_and_run_context
108
124
  Chef::Config[:solo] = true
109
- @chef_client = Chef::Client.new
125
+ @chef_client = Chef::Client.new(@json_attribs)
110
126
  @chef_client.run_ohai
111
127
  @chef_client.load_node
112
128
  @chef_client.build_node
@@ -27,6 +27,7 @@ require 'chef/handler/error_report'
27
27
  require 'chef/workstation_config_loader'
28
28
 
29
29
  class Chef::Application::Client < Chef::Application
30
+ include Chef::Mixin::ShellOut
30
31
 
31
32
  # Mimic self_pipe sleep from Unicorn to capture signals safely
32
33
  SELF_PIPE = []
@@ -63,7 +64,7 @@ class Chef::Application::Client < Chef::Application
63
64
  option :log_level,
64
65
  :short => "-l LEVEL",
65
66
  :long => "--log_level LEVEL",
66
- :description => "Set the log level (debug, info, warn, error, fatal)",
67
+ :description => "Set the log level (auto, debug, info, warn, error, fatal)",
67
68
  :proc => lambda { |l| l.to_sym }
68
69
 
69
70
  option :log_location,
@@ -104,7 +105,12 @@ class Chef::Application::Client < Chef::Application
104
105
  option :pid_file,
105
106
  :short => "-P PID_FILE",
106
107
  :long => "--pid PIDFILE",
107
- :description => "Set the PID file location, defaults to /tmp/chef-client.pid",
108
+ :description => "Set the PID file location, for the chef-client daemon process. Defaults to /tmp/chef-client.pid",
109
+ :proc => nil
110
+
111
+ option :lockfile,
112
+ :long => "--lockfile LOCKFILE",
113
+ :description => "Set the lockfile location. Prevents multiple client processes from converging at the same time",
108
114
  :proc => nil
109
115
 
110
116
  option :interval,
@@ -200,6 +206,10 @@ class Chef::Application::Client < Chef::Application
200
206
  :description => "Fork client",
201
207
  :boolean => true
202
208
 
209
+ option :recipe_url,
210
+ :long => "--recipe-url=RECIPE_URL",
211
+ :description => "Pull down a remote archive of recipes and unpack it to the cookbook cache. Only used in local mode."
212
+
203
213
  option :enable_reporting,
204
214
  :short => "-R",
205
215
  :long => "--enable-reporting",
@@ -239,9 +249,9 @@ class Chef::Application::Client < Chef::Application
239
249
  end
240
250
 
241
251
  option :audit_mode,
242
- :long => "--[no-]audit-mode",
243
- :description => "If not specified, run converge and audit phase. If true, run only audit phase. If false, run only converge phase.",
244
- :boolean => true
252
+ :long => "--audit-mode MODE",
253
+ :description => "Enable audit-mode with `enabled`. Disable audit-mode with `disabled`. Skip converge and only perform audits with `audit-only`",
254
+ :proc => lambda { |mo| mo.gsub("-", "_").to_sym }
245
255
 
246
256
  IMMEDIATE_RUN_SIGNAL = "1".freeze
247
257
 
@@ -252,7 +262,9 @@ class Chef::Application::Client < Chef::Application
252
262
  def reconfigure
253
263
  super
254
264
 
255
- Chef::Config[:specific_recipes] = cli_arguments.map { |file| File.expand_path(file) }
265
+ raise Chef::Exceptions::PIDFileLockfileMatch if Chef::Util::PathHelper.paths_eql? (Chef::Config[:pid_file] || '' ), (Chef::Config[:lockfile] || '')
266
+
267
+ set_specific_recipes
256
268
 
257
269
  Chef::Config[:chef_server_url] = config[:chef_server_url] if config.has_key? :chef_server_url
258
270
 
@@ -260,6 +272,18 @@ class Chef::Application::Client < Chef::Application
260
272
  if Chef::Config.local_mode && !Chef::Config.has_key?(:cookbook_path) && !Chef::Config.has_key?(:chef_repo_path)
261
273
  Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
262
274
  end
275
+
276
+ if !Chef::Config.local_mode && Chef::Config.has_key?(:recipe_url)
277
+ Chef::Application.fatal!("chef-client recipe-url can be used only in local-mode", 1)
278
+ elsif Chef::Config.local_mode && Chef::Config.has_key?(:recipe_url)
279
+ Chef::Log.debug "Creating path #{Chef::Config.chef_repo_path} to extract recipes into"
280
+ FileUtils.mkdir_p(Chef::Config.chef_repo_path)
281
+ tarball_path = File.join(Chef::Config.chef_repo_path, 'recipes.tgz')
282
+ fetch_recipe_tarball(Chef::Config[:recipe_url], tarball_path)
283
+ result = shell_out!("tar zxvf #{tarball_path} -C #{Chef::Config.chef_repo_path}")
284
+ Chef::Log.debug "#{result.stdout}"
285
+ end
286
+
263
287
  Chef::Config.chef_zero.host = config[:chef_zero_host] if config[:chef_zero_host]
264
288
  Chef::Config.chef_zero.port = config[:chef_zero_port] if config[:chef_zero_port]
265
289
 
@@ -280,6 +304,19 @@ class Chef::Application::Client < Chef::Application
280
304
  config_fetcher = Chef::ConfigFetcher.new(Chef::Config[:json_attribs])
281
305
  @chef_client_json = config_fetcher.fetch_json
282
306
  end
307
+
308
+ if mode = config[:audit_mode] || Chef::Config[:audit_mode]
309
+ expected_modes = [:enabled, :disabled, :audit_only]
310
+ unless expected_modes.include?(mode)
311
+ Chef::Application.fatal!(unrecognized_audit_mode(mode))
312
+ end
313
+
314
+ unless mode == :disabled
315
+ # This should be removed when audit-mode is enabled by default/no longer
316
+ # an experimental feature.
317
+ Chef::Log.warn(audit_mode_experimental_message)
318
+ end
319
+ end
283
320
  end
284
321
 
285
322
  def load_config_file
@@ -400,4 +437,35 @@ class Chef::Application::Client < Chef::Application
400
437
  "#{"\n interval = #{Chef::Config[:interval]} seconds" if Chef::Config[:interval]}" +
401
438
  "\nEnable chef-client interval runs by setting `:client_fork = true` in your config file or adding `--fork` to your command line options."
402
439
  end
440
+
441
+ def audit_mode_settings_explaination
442
+ "\n* To enable audit mode after converge, use command line option `--audit-mode enabled` or set `:audit_mode = :enabled` in your config file." +
443
+ "\n* To disable audit mode, use command line option `--audit-mode disabled` or set `:audit_mode = :disabled` in your config file." +
444
+ "\n* To only run audit mode, use command line option `--audit-mode audit-only` or set `:audit_mode = :audit_only` in your config file." +
445
+ "\nAudit mode is disabled by default."
446
+ end
447
+
448
+ def unrecognized_audit_mode(mode)
449
+ "Unrecognized setting #{mode} for audit mode." + audit_mode_settings_explaination
450
+ end
451
+
452
+ def audit_mode_experimental_message
453
+ msg = if Chef::Config[:audit_mode] == :audit_only
454
+ "Chef-client has been configured to skip converge and run only audits."
455
+ else
456
+ "Chef-client has been configured to run audits after it converges."
457
+ end
458
+ msg += " Audit mode is an experimental feature currently under development. API changes may occur. Use at your own risk."
459
+ msg += audit_mode_settings_explaination
460
+ return msg
461
+ end
462
+
463
+ def fetch_recipe_tarball(url, path)
464
+ Chef::Log.debug("Download recipes tarball from #{url} to #{path}")
465
+ File.open(path, 'wb') do |f|
466
+ open(url) do |r|
467
+ f.write(r.read)
468
+ end
469
+ end
470
+ end
403
471
  end