chef 11.6.2-x86-mingw32 → 11.8.0.rc.1-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 (628) hide show
  1. data/CONTRIBUTING.md +12 -12
  2. data/Rakefile +11 -14
  3. data/bin/chef-apply +2 -2
  4. data/bin/chef-client +2 -2
  5. data/bin/chef-service-manager +2 -2
  6. data/bin/chef-shell +3 -0
  7. data/bin/chef-solo +2 -2
  8. data/bin/knife +3 -3
  9. data/distro/arch/etc/rc.d/chef-client +2 -2
  10. data/distro/arch/etc/rc.d/chef-server +2 -2
  11. data/distro/arch/etc/rc.d/chef-server-webui +2 -2
  12. data/distro/arch/etc/rc.d/chef-solr +2 -2
  13. data/distro/common/html/chef-client.8.html +3 -3
  14. data/distro/common/html/chef-expander.8.html +3 -3
  15. data/distro/common/html/chef-expanderctl.8.html +3 -3
  16. data/distro/common/html/chef-server-webui.8.html +3 -3
  17. data/distro/common/html/chef-server.8.html +3 -3
  18. data/distro/common/html/chef-shell.1.html +3 -3
  19. data/distro/common/html/chef-solo.8.html +3 -3
  20. data/distro/common/html/chef-solr.8.html +4 -4
  21. data/distro/common/html/knife-bootstrap.1.html +3 -3
  22. data/distro/common/html/knife-client.1.html +3 -3
  23. data/distro/common/html/knife-configure.1.html +13 -13
  24. data/distro/common/html/knife-cookbook-site.1.html +3 -3
  25. data/distro/common/html/knife-cookbook.1.html +7 -7
  26. data/distro/common/html/knife-data-bag.1.html +3 -3
  27. data/distro/common/html/knife-environment.1.html +3 -3
  28. data/distro/common/html/knife-exec.1.html +3 -3
  29. data/distro/common/html/knife-index.1.html +3 -3
  30. data/distro/common/html/knife-node.1.html +3 -3
  31. data/distro/common/html/knife-role.1.html +3 -3
  32. data/distro/common/html/knife-search.1.html +3 -3
  33. data/distro/common/html/knife-ssh.1.html +3 -3
  34. data/distro/common/html/knife-status.1.html +3 -3
  35. data/distro/common/html/knife-tag.1.html +3 -3
  36. data/distro/common/html/knife.1.html +3 -3
  37. data/distro/common/man/man1/README.md +58 -0
  38. data/distro/common/man/man1/chef-shell.1 +114 -219
  39. data/distro/common/man/man1/knife-bootstrap.1 +176 -180
  40. data/distro/common/man/man1/knife-client.1 +368 -0
  41. data/distro/common/man/man1/knife-configure.1 +147 -85
  42. data/distro/common/man/man1/knife-cookbook-site.1 +465 -133
  43. data/distro/common/man/man1/knife-cookbook.1 +614 -304
  44. data/distro/common/man/man1/knife-data-bag.1 +476 -113
  45. data/distro/common/man/man1/knife-delete.1 +132 -0
  46. data/distro/common/man/man1/knife-deps.1 +219 -0
  47. data/distro/common/man/man1/knife-diff.1 +212 -0
  48. data/distro/common/man/man1/knife-download.1 +220 -0
  49. data/distro/common/man/man1/knife-edit.1 +126 -0
  50. data/distro/common/man/man1/knife-environment.1 +324 -0
  51. data/distro/common/man/man1/knife-exec.1 +317 -35
  52. data/distro/common/man/man1/knife-index-rebuild.1 +115 -0
  53. data/distro/common/man/man1/knife-list.1 +167 -0
  54. data/distro/common/man/man1/knife-node.1 +567 -123
  55. data/distro/common/man/man1/knife-raw.1 +170 -0
  56. data/distro/common/man/man1/knife-recipe-list.1 +133 -0
  57. data/distro/common/man/man1/knife-role.1 +367 -81
  58. data/distro/common/man/man1/knife-search.1 +267 -243
  59. data/distro/common/man/man1/knife-show.1 +138 -0
  60. data/distro/common/man/man1/knife-ssh.1 +241 -66
  61. data/distro/common/man/man1/knife-status.1 +202 -24
  62. data/distro/common/man/man1/knife-tag.1 +176 -39
  63. data/distro/common/man/man1/knife-upload.1 +239 -0
  64. data/distro/common/man/man1/knife-user.1 +317 -0
  65. data/distro/common/man/man1/knife-xargs.1 +166 -0
  66. data/distro/common/man/man1/knife.1 +227 -284
  67. data/distro/common/man/man8/chef-client.8 +247 -81
  68. data/distro/common/man/man8/chef-solo.8 +142 -110
  69. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  70. data/distro/common/markdown/man1/knife-configure.mkd +11 -11
  71. data/distro/common/markdown/man1/knife-cookbook.mkd +4 -4
  72. data/distro/common/markdown/man8/chef-expander.mkd +1 -1
  73. data/distro/common/markdown/man8/chef-expanderctl.mkd +1 -1
  74. data/distro/debian/etc/init.d/chef-client +1 -1
  75. data/distro/debian/etc/init.d/chef-expander +1 -1
  76. data/distro/debian/etc/init.d/chef-server +1 -1
  77. data/distro/debian/etc/init.d/chef-server-webui +1 -1
  78. data/distro/debian/etc/init.d/chef-solr +1 -1
  79. data/distro/debian/etc/init/chef-client.conf +1 -1
  80. data/distro/debian/etc/init/chef-expander.conf +1 -1
  81. data/distro/debian/etc/init/chef-server-webui.conf +1 -1
  82. data/distro/debian/etc/init/chef-server.conf +1 -1
  83. data/distro/debian/etc/init/chef-solr.conf +1 -1
  84. data/distro/redhat/etc/init.d/chef-client +1 -1
  85. data/distro/redhat/etc/init.d/chef-server +2 -2
  86. data/distro/redhat/etc/init.d/chef-server-webui +2 -2
  87. data/distro/redhat/etc/init.d/chef-solr +2 -2
  88. data/lib/chef/api_client.rb +20 -5
  89. data/lib/chef/application.rb +53 -22
  90. data/lib/chef/application/agent.rb +2 -2
  91. data/lib/chef/application/client.rb +34 -24
  92. data/lib/chef/application/knife.rb +10 -0
  93. data/lib/chef/application/solo.rb +9 -27
  94. data/lib/chef/application/windows_service.rb +24 -10
  95. data/lib/chef/application/windows_service_manager.rb +8 -0
  96. data/lib/chef/checksum/storage.rb +2 -2
  97. data/lib/chef/checksum/storage/filesystem.rb +2 -2
  98. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  99. data/lib/chef/chef_fs/command_line.rb +2 -1
  100. data/lib/chef/chef_fs/config.rb +19 -64
  101. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -2
  102. data/lib/chef/chef_fs/file_system.rb +2 -2
  103. data/lib/chef/chef_fs/file_system/acl_entry.rb +1 -1
  104. data/lib/chef/chef_fs/file_system/chef_repository_file_system_acls_dir.rb +37 -0
  105. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +16 -8
  106. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +19 -4
  107. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +27 -12
  108. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +31 -3
  109. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +12 -5
  110. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +12 -2
  111. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +3 -2
  112. data/lib/chef/chef_fs/file_system/cookbook_file.rb +2 -5
  113. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +21 -6
  114. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +1 -1
  115. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +3 -2
  116. data/lib/chef/chef_fs/file_system/file_system_entry.rb +15 -5
  117. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -1
  118. data/lib/chef/chef_fs/file_system/nodes_dir.rb +1 -1
  119. data/lib/chef/chef_fs/file_system/operation_failed_error.rb +8 -0
  120. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +4 -2
  121. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +4 -6
  122. data/lib/chef/chef_fs/knife.rb +39 -22
  123. data/lib/chef/chef_fs/path_utils.rb +5 -0
  124. data/lib/chef/client.rb +9 -3
  125. data/lib/chef/config.rb +306 -115
  126. data/lib/chef/config_fetcher.rb +79 -0
  127. data/lib/chef/cookbook/file_vendor.rb +5 -5
  128. data/lib/chef/cookbook/metadata.rb +2 -2
  129. data/lib/chef/cookbook/syntax_check.rb +6 -16
  130. data/lib/chef/cookbook_site_streaming_uploader.rb +8 -4
  131. data/lib/chef/cookbook_uploader.rb +10 -8
  132. data/lib/chef/cookbook_version.rb +24 -8
  133. data/lib/chef/daemon.rb +14 -75
  134. data/lib/chef/data_bag.rb +2 -3
  135. data/lib/chef/dsl/include_recipe.rb +2 -2
  136. data/lib/chef/event_dispatch/base.rb +1 -1
  137. data/lib/chef/event_dispatch/dispatcher.rb +1 -1
  138. data/lib/chef/file_access_control/windows.rb +1 -1
  139. data/lib/chef/formatters/doc.rb +5 -5
  140. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +2 -2
  141. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
  142. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +2 -2
  143. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  144. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  145. data/lib/chef/handler/json_file.rb +2 -2
  146. data/lib/chef/http.rb +386 -0
  147. data/lib/chef/{rest → http}/auth_credentials.rb +1 -1
  148. data/lib/chef/http/authenticator.rb +89 -0
  149. data/lib/chef/http/basic_client.rb +114 -0
  150. data/lib/chef/{rest → http}/cookie_jar.rb +1 -1
  151. data/lib/chef/http/cookie_manager.rb +56 -0
  152. data/lib/chef/http/decompressor.rb +137 -0
  153. data/lib/chef/{rest/rest_request.rb → http/http_request.rb} +13 -74
  154. data/lib/chef/http/json_input.rb +53 -0
  155. data/lib/chef/http/json_output.rb +69 -0
  156. data/lib/chef/http/json_to_model_output.rb +34 -0
  157. data/lib/chef/http/simple.rb +16 -0
  158. data/lib/chef/http/ssl_policies.rb +129 -0
  159. data/lib/chef/knife.rb +45 -23
  160. data/lib/chef/knife/bootstrap.rb +10 -3
  161. data/lib/chef/knife/bootstrap/chef-full.erb +10 -1
  162. data/lib/chef/knife/client_create.rb +1 -1
  163. data/lib/chef/knife/configure.rb +1 -1
  164. data/lib/chef/knife/cookbook_create.rb +7 -7
  165. data/lib/chef/knife/cookbook_download.rb +2 -2
  166. data/lib/chef/knife/cookbook_metadata_from_file.rb +2 -2
  167. data/lib/chef/knife/cookbook_show.rb +3 -3
  168. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  169. data/lib/chef/knife/cookbook_site_list.rb +2 -2
  170. data/lib/chef/knife/cookbook_site_search.rb +3 -3
  171. data/lib/chef/knife/cookbook_site_show.rb +5 -5
  172. data/lib/chef/knife/core/bootstrap_context.rb +7 -3
  173. data/lib/chef/knife/core/node_editor.rb +16 -36
  174. data/lib/chef/knife/core/node_presenter.rb +1 -1
  175. data/lib/chef/knife/core/subcommand_loader.rb +5 -5
  176. data/lib/chef/knife/core/ui.rb +9 -13
  177. data/lib/chef/knife/data_bag_create.rb +7 -5
  178. data/lib/chef/knife/data_bag_delete.rb +3 -3
  179. data/lib/chef/knife/data_bag_edit.rb +9 -7
  180. data/lib/chef/knife/data_bag_from_file.rb +10 -8
  181. data/lib/chef/knife/data_bag_list.rb +2 -2
  182. data/lib/chef/knife/data_bag_show.rb +9 -7
  183. data/lib/chef/knife/delete.rb +2 -0
  184. data/lib/chef/knife/deps.rb +2 -0
  185. data/lib/chef/knife/diff.rb +6 -0
  186. data/lib/chef/knife/download.rb +6 -0
  187. data/lib/chef/knife/edit.rb +5 -8
  188. data/lib/chef/knife/environment_from_file.rb +2 -2
  189. data/lib/chef/knife/help_topics.rb +1 -1
  190. data/lib/chef/knife/index_rebuild.rb +2 -2
  191. data/lib/chef/knife/list.rb +2 -0
  192. data/lib/chef/knife/raw.rb +31 -5
  193. data/lib/chef/knife/show.rb +2 -0
  194. data/lib/chef/knife/ssh.rb +21 -7
  195. data/lib/chef/knife/status.rb +1 -1
  196. data/lib/chef/knife/upload.rb +2 -0
  197. data/lib/chef/knife/xargs.rb +2 -0
  198. data/lib/chef/mixin/checksum.rb +2 -2
  199. data/lib/chef/mixin/command.rb +46 -17
  200. data/lib/chef/mixin/convert_to_class_name.rb +8 -8
  201. data/lib/chef/mixin/create_path.rb +9 -9
  202. data/lib/chef/mixin/deep_merge.rb +2 -2
  203. data/lib/chef/mixin/from_file.rb +6 -6
  204. data/lib/chef/mixin/language_include_recipe.rb +2 -2
  205. data/lib/chef/mixin/params_validate.rb +21 -21
  206. data/lib/chef/mixin/shell_out.rb +9 -0
  207. data/lib/chef/mixin/template.rb +13 -16
  208. data/lib/chef/mixin/why_run.rb +16 -16
  209. data/lib/chef/mixin/windows_architecture_helper.rb +5 -5
  210. data/lib/chef/mixin/xml_escape.rb +10 -10
  211. data/lib/chef/monkey_patches/numeric.rb +1 -1
  212. data/lib/chef/monkey_patches/regexp.rb +4 -4
  213. data/lib/chef/monkey_patches/string.rb +3 -3
  214. data/lib/chef/monkey_patches/tempfile.rb +2 -2
  215. data/lib/chef/node.rb +8 -0
  216. data/lib/chef/node/attribute.rb +1 -1
  217. data/lib/chef/platform/provider_mapping.rb +26 -1
  218. data/lib/chef/provider/batch.rb +3 -3
  219. data/lib/chef/provider/cron.rb +27 -13
  220. data/lib/chef/provider/cron/aix.rb +48 -0
  221. data/lib/chef/provider/cron/solaris.rb +6 -40
  222. data/lib/chef/provider/cron/unix.rb +76 -0
  223. data/lib/chef/provider/deploy/timestamped.rb +4 -4
  224. data/lib/chef/provider/erl_call.rb +1 -1
  225. data/lib/chef/provider/execute.rb +2 -2
  226. data/lib/chef/provider/git.rb +1 -0
  227. data/lib/chef/provider/group.rb +21 -21
  228. data/lib/chef/provider/group/dscl.rb +9 -9
  229. data/lib/chef/provider/group/gpasswd.rb +5 -5
  230. data/lib/chef/provider/group/groupadd.rb +11 -10
  231. data/lib/chef/provider/group/pw.rb +11 -11
  232. data/lib/chef/provider/group/suse.rb +4 -4
  233. data/lib/chef/provider/group/usermod.rb +8 -8
  234. data/lib/chef/provider/group/windows.rb +9 -9
  235. data/lib/chef/provider/http_request.rb +8 -8
  236. data/lib/chef/provider/ifconfig.rb +57 -37
  237. data/lib/chef/provider/ifconfig/aix.rb +99 -0
  238. data/lib/chef/provider/log.rb +3 -3
  239. data/lib/chef/provider/mdadm.rb +5 -4
  240. data/lib/chef/provider/mount.rb +12 -12
  241. data/lib/chef/provider/mount/aix.rb +179 -0
  242. data/lib/chef/provider/mount/mount.rb +29 -15
  243. data/lib/chef/provider/package.rb +26 -16
  244. data/lib/chef/provider/package/aix.rb +146 -0
  245. data/lib/chef/provider/package/apt.rb +16 -31
  246. data/lib/chef/provider/package/dpkg.rb +9 -9
  247. data/lib/chef/provider/package/freebsd.rb +2 -2
  248. data/lib/chef/provider/package/ips.rb +3 -3
  249. data/lib/chef/provider/package/macports.rb +1 -1
  250. data/lib/chef/provider/package/pacman.rb +8 -8
  251. data/lib/chef/provider/package/rpm.rb +14 -14
  252. data/lib/chef/provider/package/rubygems.rb +1 -1
  253. data/lib/chef/provider/package/smartos.rb +3 -3
  254. data/lib/chef/provider/package/solaris.rb +16 -6
  255. data/lib/chef/provider/package/yum-dump.py +4 -4
  256. data/lib/chef/provider/package/yum.rb +3 -3
  257. data/lib/chef/provider/powershell_script.rb +7 -7
  258. data/lib/chef/provider/remote_file/ftp.rb +1 -0
  259. data/lib/chef/provider/remote_file/http.rb +6 -13
  260. data/lib/chef/provider/remote_file/local_file.rb +1 -0
  261. data/lib/chef/provider/resource_update.rb +9 -9
  262. data/lib/chef/provider/ruby_block.rb +3 -3
  263. data/lib/chef/provider/script.rb +1 -1
  264. data/lib/chef/provider/service.rb +2 -2
  265. data/lib/chef/provider/service/debian.rb +35 -15
  266. data/lib/chef/provider/service/freebsd.rb +9 -9
  267. data/lib/chef/provider/service/gentoo.rb +4 -4
  268. data/lib/chef/provider/service/init.rb +1 -1
  269. data/lib/chef/provider/service/insserv.rb +2 -2
  270. data/lib/chef/provider/service/invokercd.rb +1 -1
  271. data/lib/chef/provider/service/redhat.rb +2 -2
  272. data/lib/chef/provider/service/simple.rb +6 -6
  273. data/lib/chef/provider/service/solaris.rb +1 -1
  274. data/lib/chef/provider/service/systemd.rb +3 -3
  275. data/lib/chef/provider/service/upstart.rb +15 -15
  276. data/lib/chef/provider/subversion.rb +6 -5
  277. data/lib/chef/provider/user.rb +13 -9
  278. data/lib/chef/provider/user/dscl.rb +28 -28
  279. data/lib/chef/provider/user/pw.rb +11 -11
  280. data/lib/chef/provider/user/useradd.rb +1 -1
  281. data/lib/chef/provider/user/windows.rb +7 -7
  282. data/lib/chef/provider/windows_script.rb +7 -7
  283. data/lib/chef/providers.rb +4 -0
  284. data/lib/chef/recipe.rb +2 -19
  285. data/lib/chef/resource/apt_package.rb +3 -3
  286. data/lib/chef/resource/bash.rb +3 -3
  287. data/lib/chef/resource/batch.rb +4 -4
  288. data/lib/chef/resource/bff_package.rb +36 -0
  289. data/lib/chef/resource/breakpoint.rb +3 -3
  290. data/lib/chef/resource/cron.rb +5 -5
  291. data/lib/chef/resource/csh.rb +3 -3
  292. data/lib/chef/resource/deploy.rb +16 -3
  293. data/lib/chef/resource/deploy_revision.rb +6 -6
  294. data/lib/chef/resource/directory.rb +2 -2
  295. data/lib/chef/resource/dpkg_package.rb +4 -4
  296. data/lib/chef/resource/easy_install_package.rb +1 -1
  297. data/lib/chef/resource/erl_call.rb +1 -1
  298. data/lib/chef/resource/freebsd_package.rb +4 -4
  299. data/lib/chef/resource/group.rb +15 -6
  300. data/lib/chef/resource/http_request.rb +6 -6
  301. data/lib/chef/resource/ifconfig.rb +4 -4
  302. data/lib/chef/resource/ips_package.rb +2 -2
  303. data/lib/chef/resource/log.rb +12 -11
  304. data/lib/chef/resource/macports_package.rb +2 -2
  305. data/lib/chef/resource/mount.rb +11 -12
  306. data/lib/chef/resource/ohai.rb +3 -3
  307. data/lib/chef/resource/pacman_package.rb +4 -4
  308. data/lib/chef/resource/perl.rb +3 -3
  309. data/lib/chef/resource/portage_package.rb +4 -4
  310. data/lib/chef/resource/powershell_script.rb +3 -3
  311. data/lib/chef/resource/python.rb +3 -3
  312. data/lib/chef/resource/route.rb +4 -4
  313. data/lib/chef/resource/rpm_package.rb +2 -2
  314. data/lib/chef/resource/ruby.rb +3 -3
  315. data/lib/chef/resource/ruby_block.rb +3 -3
  316. data/lib/chef/resource/scm.rb +10 -2
  317. data/lib/chef/resource/script.rb +5 -5
  318. data/lib/chef/resource/service.rb +5 -5
  319. data/lib/chef/resource/smartos_package.rb +8 -6
  320. data/lib/chef/resource/solaris_package.rb +8 -7
  321. data/lib/chef/resource/subversion.rb +3 -3
  322. data/lib/chef/resource/timestamped_deploy.rb +4 -4
  323. data/lib/chef/resource/user.rb +13 -13
  324. data/lib/chef/resource/windows_script.rb +6 -6
  325. data/lib/chef/resource/yum_package.rb +2 -2
  326. data/lib/chef/resource_collection.rb +1 -1
  327. data/lib/chef/resource_collection/stepable_iterator.rb +22 -22
  328. data/lib/chef/resource_definition.rb +8 -8
  329. data/lib/chef/resource_definition_list.rb +2 -2
  330. data/lib/chef/resource_reporter.rb +8 -2
  331. data/lib/chef/resources.rb +2 -0
  332. data/lib/chef/rest.rb +70 -334
  333. data/lib/chef/role.rb +17 -13
  334. data/lib/chef/run_context.rb +14 -0
  335. data/lib/chef/run_context/cookbook_compiler.rb +3 -3
  336. data/lib/chef/run_lock.rb +73 -20
  337. data/lib/chef/server_api.rb +41 -0
  338. data/lib/chef/shell.rb +3 -19
  339. data/lib/chef/shell/shell_session.rb +1 -1
  340. data/lib/chef/streaming_cookbook_uploader.rb +30 -26
  341. data/lib/chef/tasks/chef_repo.rake +17 -17
  342. data/lib/chef/util/backup.rb +2 -1
  343. data/lib/chef/util/diff.rb +76 -33
  344. data/lib/chef/util/windows.rb +2 -2
  345. data/lib/chef/util/windows/net_group.rb +2 -2
  346. data/lib/chef/util/windows/net_use.rb +2 -2
  347. data/lib/chef/util/windows/net_user.rb +3 -3
  348. data/lib/chef/util/windows/volume.rb +3 -3
  349. data/lib/chef/version.rb +1 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/synchronization.rb +89 -0
  352. data/lib/chef/win32/handle.rb +1 -1
  353. data/lib/chef/win32/mutex.rb +94 -0
  354. data/lib/chef/win32/security/ace.rb +1 -1
  355. data/lib/chef/win32/security/sid.rb +1 -1
  356. data/lib/chef/win32/version.rb +5 -3
  357. data/spec/data/bootstrap/no_proxy.erb +2 -0
  358. data/spec/data/cookbooks/openldap/metadata.rb +8 -0
  359. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -0
  360. data/spec/data/trusted_certs/example.crt +22 -0
  361. data/spec/data/trusted_certs/intermediate.pem +27 -0
  362. data/spec/data/trusted_certs/opscode.pem +38 -0
  363. data/spec/data/trusted_certs/root.pem +22 -0
  364. data/spec/functional/assets/PkgA.1.0.0.0.bff +0 -0
  365. data/spec/functional/assets/PkgA.2.0.0.0.bff +0 -0
  366. data/spec/functional/assets/dummy-1-0.aix6.1.noarch.rpm +0 -0
  367. data/spec/functional/assets/dummy-2-0.aix6.1.noarch.rpm +0 -0
  368. data/spec/functional/assets/mytest-1.0-1.noarch.rpm +0 -0
  369. data/spec/functional/assets/mytest-2.0-1.noarch.rpm +0 -0
  370. data/spec/functional/knife/cookbook_delete_spec.rb +4 -7
  371. data/spec/functional/knife/exec_spec.rb +0 -3
  372. data/spec/functional/knife/ssh_spec.rb +2 -6
  373. data/spec/functional/resource/base.rb +41 -0
  374. data/spec/functional/resource/batch_spec.rb +6 -33
  375. data/spec/functional/resource/bff_spec.rb +122 -0
  376. data/spec/functional/resource/cron_spec.rb +147 -0
  377. data/spec/functional/resource/group_spec.rb +204 -0
  378. data/spec/functional/resource/ifconfig_spec.rb +163 -0
  379. data/spec/functional/resource/link_spec.rb +4 -4
  380. data/spec/functional/resource/mount_spec.rb +207 -0
  381. data/spec/functional/resource/package_spec.rb +95 -17
  382. data/spec/functional/resource/powershell_spec.rb +21 -22
  383. data/spec/functional/resource/registry_spec.rb +5 -19
  384. data/spec/functional/resource/remote_file_spec.rb +14 -0
  385. data/spec/functional/resource/rpm_spec.rb +122 -0
  386. data/spec/functional/resource/template_spec.rb +11 -44
  387. data/spec/functional/resource/user_spec.rb +2 -1
  388. data/spec/functional/run_lock_spec.rb +48 -5
  389. data/spec/functional/shell_spec.rb +46 -26
  390. data/spec/functional/tiny_server_spec.rb +2 -2
  391. data/spec/functional/version_spec.rb +35 -0
  392. data/spec/functional/win32/versions_spec.rb +3 -3
  393. data/spec/integration/client/client_spec.rb +146 -0
  394. data/spec/integration/knife/chef_fs_data_store_spec.rb +353 -0
  395. data/spec/integration/knife/chef_repo_path_spec.rb +72 -19
  396. data/spec/integration/knife/common_options_spec.rb +103 -0
  397. data/spec/integration/knife/download_spec.rb +38 -2
  398. data/spec/integration/knife/raw_spec.rb +63 -0
  399. data/spec/integration/knife/upload_spec.rb +20 -4
  400. data/spec/integration/solo/solo_spec.rb +78 -25
  401. data/spec/spec_helper.rb +35 -1
  402. data/spec/support/lib/chef/provider/easy.rb +4 -4
  403. data/spec/support/lib/chef/provider/snakeoil.rb +4 -4
  404. data/spec/support/lib/chef/resource/cat.rb +5 -5
  405. data/spec/support/lib/chef/resource/with_state.rb +37 -0
  406. data/spec/support/lib/library_load_order.rb +22 -0
  407. data/spec/support/platform_helpers.rb +8 -0
  408. data/spec/support/shared/functional/file_resource.rb +4 -22
  409. data/spec/support/shared/functional/windows_script.rb +48 -0
  410. data/spec/support/shared/integration/integration_helper.rb +5 -22
  411. data/spec/support/shared/integration/knife_support.rb +3 -3
  412. data/spec/support/shared/unit/script_resource.rb +7 -7
  413. data/spec/support/shared/unit/windows_script_resource.rb +7 -7
  414. data/spec/tiny_server.rb +2 -2
  415. data/spec/unit/api_client/registration_spec.rb +1 -1
  416. data/spec/unit/api_client_spec.rb +25 -2
  417. data/spec/unit/application/apply.rb +1 -9
  418. data/spec/unit/application/client_spec.rb +19 -44
  419. data/spec/unit/application/solo_spec.rb +10 -50
  420. data/spec/unit/application_spec.rb +51 -80
  421. data/spec/unit/checksum/storage/filesystem_spec.rb +3 -2
  422. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -0
  423. data/spec/unit/chef_spec.rb +2 -2
  424. data/spec/unit/client_spec.rb +2 -18
  425. data/spec/unit/config_fetcher_spec.rb +98 -0
  426. data/spec/unit/config_spec.rb +107 -29
  427. data/spec/unit/cookbook/metadata_spec.rb +50 -50
  428. data/spec/unit/cookbook/synchronizer_spec.rb +3 -3
  429. data/spec/unit/cookbook/syntax_check_spec.rb +1 -2
  430. data/spec/unit/cookbook_loader_spec.rb +28 -12
  431. data/spec/unit/cookbook_manifest_spec.rb +11 -11
  432. data/spec/unit/cookbook_site_streaming_uploader.rb +200 -0
  433. data/spec/unit/cookbook_version_spec.rb +16 -0
  434. data/spec/unit/daemon_spec.rb +0 -132
  435. data/spec/unit/data_bag_item_spec.rb +6 -6
  436. data/spec/unit/data_bag_spec.rb +6 -8
  437. data/spec/unit/digester_spec.rb +2 -2
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +0 -15
  439. data/spec/unit/file_cache_spec.rb +1 -1
  440. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +4 -4
  441. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +2 -2
  442. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +2 -2
  443. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +2 -2
  444. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +2 -2
  445. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +4 -4
  446. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +2 -2
  447. data/spec/unit/handler_spec.rb +5 -5
  448. data/spec/unit/http/ssl_policies_spec.rb +170 -0
  449. data/spec/unit/knife/bootstrap_spec.rb +31 -14
  450. data/spec/unit/knife/client_bulk_delete_spec.rb +8 -8
  451. data/spec/unit/knife/client_create_spec.rb +2 -2
  452. data/spec/unit/knife/client_delete_spec.rb +2 -2
  453. data/spec/unit/knife/client_edit_spec.rb +2 -2
  454. data/spec/unit/knife/client_list_spec.rb +2 -2
  455. data/spec/unit/knife/client_reregister_spec.rb +2 -2
  456. data/spec/unit/knife/client_show_spec.rb +2 -2
  457. data/spec/unit/knife/config_file_selection_spec.rb +53 -36
  458. data/spec/unit/knife/configure_spec.rb +0 -6
  459. data/spec/unit/knife/cookbook_create_spec.rb +1 -12
  460. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +2 -2
  461. data/spec/unit/knife/cookbook_show_spec.rb +3 -3
  462. data/spec/unit/knife/cookbook_site_install_spec.rb +1 -1
  463. data/spec/unit/knife/core/bootstrap_context_spec.rb +10 -2
  464. data/spec/unit/knife/core/ui_spec.rb +118 -0
  465. data/spec/unit/knife/data_bag_show_spec.rb +2 -2
  466. data/spec/unit/knife/environment_from_file_spec.rb +2 -2
  467. data/spec/unit/knife/index_rebuild_spec.rb +1 -1
  468. data/spec/unit/knife/node_delete_spec.rb +3 -3
  469. data/spec/unit/knife/node_edit_spec.rb +35 -8
  470. data/spec/unit/knife/node_list_spec.rb +3 -3
  471. data/spec/unit/knife/node_run_list_add_spec.rb +3 -3
  472. data/spec/unit/knife/node_show_spec.rb +3 -3
  473. data/spec/unit/knife/role_create_spec.rb +3 -3
  474. data/spec/unit/knife/role_delete_spec.rb +3 -3
  475. data/spec/unit/knife/role_list_spec.rb +2 -2
  476. data/spec/unit/knife/ssh_spec.rb +1 -8
  477. data/spec/unit/knife_spec.rb +0 -2
  478. data/spec/unit/log_spec.rb +2 -2
  479. data/spec/unit/mash_spec.rb +2 -2
  480. data/spec/unit/mixin/checksum_spec.rb +3 -3
  481. data/spec/unit/mixin/command_spec.rb +1 -1
  482. data/spec/unit/mixin/convert_to_class_name_spec.rb +7 -7
  483. data/spec/unit/mixin/deprecation_spec.rb +2 -2
  484. data/spec/unit/mixin/params_validate_spec.rb +72 -72
  485. data/spec/unit/mixin/securable_spec.rb +0 -14
  486. data/spec/unit/mixin/shell_out_spec.rb +1 -1
  487. data/spec/unit/mixin/template_spec.rb +34 -0
  488. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  489. data/spec/unit/mixin/xml_escape_spec.rb +2 -2
  490. data/spec/unit/node/attribute_spec.rb +11 -11
  491. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  492. data/spec/unit/node_spec.rb +5 -0
  493. data/spec/unit/platform_spec.rb +36 -35
  494. data/spec/unit/provider/cron/{solaris_spec.rb → unix_spec.rb} +6 -6
  495. data/spec/unit/provider/cron_spec.rb +21 -3
  496. data/spec/unit/provider/deploy/timestamped_spec.rb +5 -5
  497. data/spec/unit/provider/deploy_spec.rb +21 -7
  498. data/spec/unit/provider/env_spec.rb +2 -2
  499. data/spec/unit/provider/execute_spec.rb +2 -2
  500. data/spec/unit/provider/file/content_spec.rb +0 -8
  501. data/spec/unit/provider/git_spec.rb +29 -9
  502. data/spec/unit/provider/group/dscl_spec.rb +12 -12
  503. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  504. data/spec/unit/provider/group/groupadd_spec.rb +14 -0
  505. data/spec/unit/provider/group/groupmod_spec.rb +13 -13
  506. data/spec/unit/provider/group/pw_spec.rb +16 -16
  507. data/spec/unit/provider/group/usermod_spec.rb +10 -9
  508. data/spec/unit/provider/group/windows_spec.rb +14 -0
  509. data/spec/unit/provider/group_spec.rb +29 -29
  510. data/spec/unit/provider/http_request_spec.rb +15 -15
  511. data/spec/unit/provider/ifconfig/aix_spec.rb +180 -0
  512. data/spec/unit/provider/ifconfig_spec.rb +9 -9
  513. data/spec/unit/provider/link_spec.rb +2 -2
  514. data/spec/unit/provider/log_spec.rb +8 -8
  515. data/spec/unit/provider/mdadm_spec.rb +14 -11
  516. data/spec/unit/provider/mount/aix_spec.rb +237 -0
  517. data/spec/unit/provider/mount/mount_spec.rb +2 -0
  518. data/spec/unit/provider/mount/windows_spec.rb +2 -2
  519. data/spec/unit/provider/mount_spec.rb +6 -6
  520. data/spec/unit/provider/package/aix_spec.rb +171 -0
  521. data/spec/unit/provider/package/apt_spec.rb +130 -171
  522. data/spec/unit/provider/package/dpkg_spec.rb +3 -3
  523. data/spec/unit/provider/package/freebsd_spec.rb +28 -0
  524. data/spec/unit/provider/package/ips_spec.rb +1 -1
  525. data/spec/unit/provider/package/rpm_spec.rb +15 -15
  526. data/spec/unit/provider/package/smartos_spec.rb +21 -3
  527. data/spec/unit/provider/package_spec.rb +4 -2
  528. data/spec/unit/provider/powershell_spec.rb +3 -3
  529. data/spec/unit/provider/remote_directory_spec.rb +2 -2
  530. data/spec/unit/provider/remote_file/ftp_spec.rb +0 -5
  531. data/spec/unit/provider/remote_file/http_spec.rb +12 -28
  532. data/spec/unit/provider/remote_file/local_file_spec.rb +2 -1
  533. data/spec/unit/provider/route_spec.rb +2 -2
  534. data/spec/unit/provider/ruby_block_spec.rb +2 -2
  535. data/spec/unit/provider/service/arch_service_spec.rb +17 -17
  536. data/spec/unit/provider/service/debian_service_spec.rb +242 -152
  537. data/spec/unit/provider/service/freebsd_service_spec.rb +9 -9
  538. data/spec/unit/provider/service/gentoo_service_spec.rb +9 -9
  539. data/spec/unit/provider/service/init_service_spec.rb +11 -11
  540. data/spec/unit/provider/service/insserv_service_spec.rb +5 -5
  541. data/spec/unit/provider/service/invokercd_service_spec.rb +10 -10
  542. data/spec/unit/provider/service/redhat_spec.rb +6 -6
  543. data/spec/unit/provider/service/simple_service_spec.rb +6 -6
  544. data/spec/unit/provider/service/solaris_smf_service_spec.rb +4 -4
  545. data/spec/unit/provider/service/systemd_service_spec.rb +3 -3
  546. data/spec/unit/provider/service/upstart_service_spec.rb +5 -5
  547. data/spec/unit/provider/service/windows_spec.rb +7 -7
  548. data/spec/unit/provider/subversion_spec.rb +1 -1
  549. data/spec/unit/provider/user/dscl_spec.rb +21 -21
  550. data/spec/unit/provider/user/pw_spec.rb +2 -2
  551. data/spec/unit/provider/user/windows_spec.rb +5 -5
  552. data/spec/unit/provider/user_spec.rb +39 -47
  553. data/spec/unit/resource/apt_package_spec.rb +6 -6
  554. data/spec/unit/resource/bash_spec.rb +5 -5
  555. data/spec/unit/resource/batch_spec.rb +7 -7
  556. data/spec/unit/resource/breakpoint_spec.rb +8 -8
  557. data/spec/unit/resource/chef_gem_spec.rb +6 -6
  558. data/spec/unit/resource/cookbook_file_spec.rb +11 -11
  559. data/spec/unit/resource/cron_spec.rb +15 -15
  560. data/spec/unit/resource/csh_spec.rb +5 -5
  561. data/spec/unit/resource/deploy_revision_spec.rb +6 -6
  562. data/spec/unit/resource/deploy_spec.rb +50 -36
  563. data/spec/unit/resource/directory_spec.rb +1 -1
  564. data/spec/unit/resource/dpkg_package_spec.rb +6 -6
  565. data/spec/unit/resource/env_spec.rb +1 -1
  566. data/spec/unit/resource/erl_call_spec.rb +1 -1
  567. data/spec/unit/resource/freebsd_package_spec.rb +6 -6
  568. data/spec/unit/resource/gem_package_spec.rb +6 -6
  569. data/spec/unit/resource/git_spec.rb +8 -8
  570. data/spec/unit/resource/group_spec.rb +11 -11
  571. data/spec/unit/resource/http_request_spec.rb +7 -7
  572. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  573. data/spec/unit/resource/ips_package_spec.rb +6 -6
  574. data/spec/unit/resource/link_spec.rb +1 -1
  575. data/spec/unit/resource/log_spec.rb +13 -10
  576. data/spec/unit/resource/macports_package_spec.rb +2 -2
  577. data/spec/unit/resource/mdadm_spec.rb +3 -3
  578. data/spec/unit/resource/mount_spec.rb +13 -13
  579. data/spec/unit/resource/ohai_spec.rb +1 -1
  580. data/spec/unit/resource/package_spec.rb +6 -6
  581. data/spec/unit/resource/pacman_package_spec.rb +6 -6
  582. data/spec/unit/resource/perl_spec.rb +5 -5
  583. data/spec/unit/resource/portage_package_spec.rb +6 -6
  584. data/spec/unit/resource/powershell_spec.rb +5 -5
  585. data/spec/unit/resource/python_spec.rb +5 -5
  586. data/spec/unit/resource/registry_key_spec.rb +2 -2
  587. data/spec/unit/resource/remote_directory_spec.rb +9 -9
  588. data/spec/unit/resource/remote_file_spec.rb +4 -4
  589. data/spec/unit/resource/route_spec.rb +13 -13
  590. data/spec/unit/resource/rpm_package_spec.rb +2 -2
  591. data/spec/unit/resource/ruby_block_spec.rb +4 -4
  592. data/spec/unit/resource/ruby_spec.rb +5 -5
  593. data/spec/unit/resource/scm_spec.rb +14 -1
  594. data/spec/unit/resource/script_spec.rb +5 -5
  595. data/spec/unit/resource/service_spec.rb +18 -18
  596. data/spec/unit/resource/smartos_package_spec.rb +6 -6
  597. data/spec/unit/resource/solaris_package_spec.rb +57 -0
  598. data/spec/unit/resource/subversion_spec.rb +6 -6
  599. data/spec/unit/resource/timestamped_deploy_spec.rb +4 -4
  600. data/spec/unit/resource/user_spec.rb +13 -13
  601. data/spec/unit/resource/yum_package_spec.rb +7 -7
  602. data/spec/unit/resource_collection/stepable_iterator_spec.rb +21 -21
  603. data/spec/unit/resource_definition_spec.rb +23 -23
  604. data/spec/unit/resource_reporter_spec.rb +27 -0
  605. data/spec/unit/rest/auth_credentials_spec.rb +0 -94
  606. data/spec/unit/rest_spec.rb +117 -99
  607. data/spec/unit/role_spec.rb +57 -4
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +4 -20
  609. data/spec/unit/run_context_spec.rb +44 -3
  610. data/spec/unit/run_list/run_list_item_spec.rb +1 -1
  611. data/spec/unit/run_lock_spec.rb +6 -3
  612. data/spec/unit/scan_access_control_spec.rb +2 -2
  613. data/spec/unit/search/query_spec.rb +3 -3
  614. data/spec/unit/util/backup_spec.rb +6 -13
  615. data/spec/unit/util/diff_spec.rb +36 -53
  616. data/spec/unit/version/platform_spec.rb +3 -3
  617. data/spec/unit/version_class_spec.rb +5 -5
  618. data/spec/unit/version_constraint/platform_spec.rb +2 -2
  619. data/spec/unit/windows_service_spec.rb +54 -0
  620. metadata +290 -108
  621. checksums.yaml +0 -7
  622. data/distro/common/man/man1/knife-index.1 +0 -29
  623. data/distro/common/man/man8/chef-expander.8 +0 -97
  624. data/distro/common/man/man8/chef-expanderctl.8 +0 -62
  625. data/distro/common/man/man8/chef-server-webui.8 +0 -155
  626. data/distro/common/man/man8/chef-server.8 +0 -147
  627. data/distro/common/man/man8/chef-solr.8 +0 -122
  628. data/lib/chef/chef_fs/raw_request.rb +0 -79
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -29,10 +29,10 @@ shared_examples_for "a Windows script resource" do
29
29
  node.default["kernel"][:machine] = :x86_64.to_s
30
30
 
31
31
  run_context = Chef::RunContext.new(node, nil, nil)
32
-
32
+
33
33
  @resource = resource_instance
34
34
 
35
- end
35
+ end
36
36
 
37
37
  it "should be a kind of Chef::Resource::WindowsScript" do
38
38
  @resource.should be_a_kind_of(Chef::Resource)
@@ -40,9 +40,9 @@ shared_examples_for "a Windows script resource" do
40
40
  end
41
41
 
42
42
  context "script" do
43
- let(:script_resource) { resource_instance }
44
- it_should_behave_like "a script resource"
43
+ let(:script_resource) { resource_instance }
44
+ it_should_behave_like "a script resource"
45
45
  end
46
-
46
+
47
47
  end
48
48
 
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -57,7 +57,7 @@ describe Chef::ApiClient::Registration do
57
57
  end
58
58
 
59
59
  it "creates a new ApiClient on the server using the validator identity" do
60
- response = {"uri" => "https://chef.local/clients/silent-bob",
60
+ response = {"uri" => "https://chef.local/clients/silent-bob",
61
61
  "private_key" => "--begin rsa key etc--"}
62
62
  http_mock.should_receive(:post).
63
63
  with("clients", :name => 'silent-bob', :admin => false).
@@ -53,6 +53,19 @@ describe Chef::ApiClient do
53
53
  lambda { @client.admin(Hash.new) }.should raise_error(ArgumentError)
54
54
  end
55
55
 
56
+ it "has a 'validator' flag attribute" do
57
+ @client.validator(true)
58
+ @client.validator.should be_true
59
+ end
60
+
61
+ it "defaults to non-validator" do
62
+ @client.validator.should be_false
63
+ end
64
+
65
+ it "allows only boolean values for the 'validator' flag" do
66
+ lambda { @client.validator(false) }.should_not raise_error
67
+ lambda { @client.validator(Hash.new) }.should raise_error(ArgumentError)
68
+ end
56
69
 
57
70
  it "has a public key attribute" do
58
71
  @client.public_key("super public")
@@ -98,6 +111,10 @@ describe Chef::ApiClient do
98
111
  @json.should include(%q{"admin":false})
99
112
  end
100
113
 
114
+ it "includes the 'validator' flag" do
115
+ @json.should include(%q{"validator":false})
116
+ end
117
+
101
118
  it "includes the private key when present" do
102
119
  @client.private_key("monkeypants")
103
120
  @client.to_json.should include(%q{"private_key":"monkeypants"})
@@ -115,6 +132,7 @@ describe Chef::ApiClient do
115
132
  "public_key" => "crowes",
116
133
  "private_key" => "monkeypants",
117
134
  "admin" => true,
135
+ "validator" => true,
118
136
  "json_class" => "Chef::ApiClient"
119
137
  }
120
138
  @client = Chef::JSONCompat.from_json(client.to_json)
@@ -136,6 +154,10 @@ describe Chef::ApiClient do
136
154
  @client.admin.should be_true
137
155
  end
138
156
 
157
+ it "preserves the 'validator' status" do
158
+ @client.validator.should be_true
159
+ end
160
+
139
161
  it "includes the private key if present" do
140
162
  @client.private_key.should == "monkeypants"
141
163
  end
@@ -198,7 +220,7 @@ describe Chef::ApiClient do
198
220
  @api_client_with_key.name("lost-my-key")
199
221
  @api_client_with_key.private_key("the new private key")
200
222
  @http_client.should_receive(:put).
201
- with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :private_key => true).
223
+ with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
202
224
  and_return(@api_client_with_key)
203
225
  end
204
226
 
@@ -216,7 +238,7 @@ describe Chef::ApiClient do
216
238
  before do
217
239
  @api_client_with_key = {"name" => "lost-my-key", "private_key" => "the new private key"}
218
240
  @http_client.should_receive(:put).
219
- with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :private_key => true).
241
+ with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
220
242
  and_return(@api_client_with_key)
221
243
  end
222
244
 
@@ -227,6 +249,7 @@ describe Chef::ApiClient do
227
249
  response.private_key.should == "the new private key"
228
250
  response.name.should == "lost-my-key"
229
251
  response.admin.should be_false
252
+ response.validator.should be_false
230
253
  end
231
254
  end
232
255
 
@@ -20,20 +20,12 @@ require 'spec_helper'
20
20
  describe Chef::Application::Apply do
21
21
 
22
22
  before do
23
- @original_config = Chef::Config.configuration
24
23
  @app = Chef::Application::Recipe.new
25
24
  @app.stub!(:configure_logging).and_return(true)
26
25
  @recipe_text = "package 'nyancat'"
27
26
  Chef::Config[:solo] = true
28
27
  end
29
28
 
30
- after do
31
- Chef::Config[:solo] = nil
32
- Chef::Config.configuration.replace(@original_config)
33
- Chef::Config[:solo] = false
34
- end
35
-
36
-
37
29
  describe "configuring the application" do
38
30
  it "should set solo mode to true" do
39
31
  @app.reconfigure
@@ -68,7 +60,7 @@ describe Chef::Application::Apply do
68
60
  describe "temp_recipe_file" do
69
61
  before do
70
62
  @app.instance_variable_set(:@recipe_text, @recipe_text)
71
- @app.temp_recipe_file
63
+ @app.temp_recipe_file
72
64
  @recipe_fh = @app.instance_variable_get(:@recipe_fh)
73
65
  end
74
66
  it "should open a tempfile" do
@@ -19,21 +19,20 @@ require 'spec_helper'
19
19
 
20
20
  describe Chef::Application::Client, "reconfigure" do
21
21
  before do
22
- @original_config = Chef::Config.configuration.dup
22
+ @original_argv = ARGV.dup
23
+ ARGV.clear
23
24
 
24
25
  @app = Chef::Application::Client.new
25
26
  @app.stub!(:configure_opt_parser).and_return(true)
26
27
  @app.stub!(:configure_chef).and_return(true)
27
28
  @app.stub!(:configure_logging).and_return(true)
28
- Chef::Config[:json_attribs] = nil
29
29
  Chef::Config[:interval] = 10
30
- Chef::Config[:splay] = nil
31
30
 
32
31
  Chef::Config[:once] = false
33
32
  end
34
33
 
35
34
  after do
36
- Chef::Config.configuration.replace(@original_config)
35
+ ARGV.replace(@original_argv)
37
36
  end
38
37
 
39
38
  describe "when in daemonized mode and no interval has been set" do
@@ -70,49 +69,19 @@ describe Chef::Application::Client, "reconfigure" do
70
69
 
71
70
  describe "when the json_attribs configuration option is specified" do
72
71
 
73
- describe "and the json_attribs matches a HTTP regex" do
74
- before do
75
- @json = StringIO.new({:a=>"b"}.to_json)
76
- @json_tempfile = mock("Tempfile for remote JSON", :open => @json)
77
- @rest = mock("Chef::REST", :get_rest => @json_tempfile)
78
-
79
- Chef::Config[:json_attribs] = "https://foo.com/foo.json"
80
- Chef::REST.stub!(:new).with("https://foo.com/foo.json", nil, nil).and_return(@rest)
81
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
82
- end
83
-
84
- it "should perform a RESTful GET on the supplied URL" do
85
- @app.reconfigure
86
- @app.chef_client_json.should == {"a" => "b"}
87
- end
88
- end
72
+ let(:json_attribs) { {"a" => "b"} }
73
+ let(:config_fetcher) { double(Chef::ConfigFetcher, :fetch_json => json_attribs) }
74
+ let(:json_source) { "https://foo.com/foo.json" }
89
75
 
90
- describe "and the json_attribs does not match the HTTP regex" do
91
- before do
92
- Chef::Config[:json_attribs] = "/etc/chef/dna.json"
93
- @json = StringIO.new({:a=>"b"}.to_json)
94
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
95
- end
96
-
97
- it "should parse the json out of the file" do
98
- @app.reconfigure
99
- @app.chef_client_json.should == {"a" => "b"}
100
- end
76
+ before do
77
+ Chef::Config[:json_attribs] = json_source
78
+ Chef::ConfigFetcher.should_receive(:new).with(json_source).
79
+ and_return(config_fetcher)
101
80
  end
102
81
 
103
- describe "when parsing fails" do
104
- before do
105
- Chef::Config[:json_attribs] = "/etc/chef/dna.json"
106
- @json = mock("Tempfile", :read => {:a=>"b"}.to_json)
107
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
108
- Chef::JSONCompat.stub!(:from_json).with(@json.read).and_raise(JSON::ParserError)
109
- Chef::Application.stub!(:fatal!).and_return(true)
110
- end
111
-
112
- it "should hard fail the application" do
113
- Chef::Application.should_receive(:fatal!).with("Could not parse the provided JSON file (/etc/chef/dna.json)!: JSON::ParserError", 2).and_return(true)
114
- @app.reconfigure
115
- end
82
+ it "reads the JSON attributes from the specified source" do
83
+ @app.reconfigure
84
+ @app.chef_client_json.should == json_attribs
116
85
  end
117
86
  end
118
87
  end
@@ -137,10 +106,16 @@ end
137
106
 
138
107
  describe Chef::Application::Client, "configure_chef" do
139
108
  before do
109
+ @original_argv = ARGV.dup
110
+ ARGV.clear
140
111
  @app = Chef::Application::Client.new
141
112
  @app.configure_chef
142
113
  end
143
114
 
115
+ after do
116
+ ARGV.replace(@original_argv)
117
+ end
118
+
144
119
  it "should set the colored output to false by default on windows and true otherwise" do
145
120
  if windows?
146
121
  Chef::Config[:color].should be_false
@@ -19,25 +19,15 @@ require 'spec_helper'
19
19
 
20
20
  describe Chef::Application::Solo do
21
21
  before do
22
- @original_config = Chef::Config.configuration
23
-
24
-
25
22
  @app = Chef::Application::Solo.new
26
23
  @app.stub!(:configure_opt_parser).and_return(true)
27
24
  @app.stub!(:configure_chef).and_return(true)
28
25
  @app.stub!(:configure_logging).and_return(true)
29
26
  Chef::Config[:recipe_url] = false
30
27
  Chef::Config[:json_attribs] = false
31
- Chef::Config[:splay] = nil
32
28
  Chef::Config[:solo] = true
33
29
  end
34
30
 
35
- after do
36
- Chef::Config[:solo] = nil
37
- Chef::Config.configuration.replace(@original_config)
38
- Chef::Config[:solo] = false
39
- end
40
-
41
31
  describe "configuring the application" do
42
32
  it "should set solo mode to true" do
43
33
  @app.reconfigure
@@ -58,49 +48,19 @@ describe Chef::Application::Solo do
58
48
 
59
49
  describe "when the json_attribs configuration option is specified" do
60
50
 
61
- describe "and the json_attribs matches a HTTP regex" do
62
- before do
63
- @json = StringIO.new({:a=>"b"}.to_json)
64
- @json_tempfile = mock("Tempfile (mock)", :open => @json)
65
- @rest = mock("Chef::REST", :get_rest => @json_tempfile)
66
-
67
- Chef::Config[:json_attribs] = "https://foo.com/foo.json"
68
- Chef::REST.stub!(:new).with("https://foo.com/foo.json", nil, nil).and_return(@rest)
69
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
70
- end
71
-
72
- it "should perform a RESTful GET on the supplied URL" do
73
- @app.reconfigure
74
- @app.instance_variable_get(:@chef_client_json).should == {"a" => "b"}
75
- end
76
- end
51
+ let(:json_attribs) { {"a" => "b"} }
52
+ let(:config_fetcher) { double(Chef::ConfigFetcher, :fetch_json => json_attribs) }
53
+ let(:json_source) { "https://foo.com/foo.json" }
77
54
 
78
- describe "and the json_attribs does not match the HTTP regex" do
79
- before do
80
- Chef::Config[:json_attribs] = "/etc/chef/dna.json"
81
- @json = StringIO.new({:a=>"b"}.to_json)
82
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
83
- end
84
-
85
- it "should parse the json out of the file" do
86
- @app.reconfigure
87
- @app.instance_variable_get(:@chef_client_json).should == {"a" => "b"}
88
- end
55
+ before do
56
+ Chef::Config[:json_attribs] = json_source
57
+ Chef::ConfigFetcher.should_receive(:new).with(json_source).
58
+ and_return(config_fetcher)
89
59
  end
90
60
 
91
- describe "when parsing fails" do
92
- before do
93
- Chef::Config[:json_attribs] = "/etc/chef/dna.json"
94
- @json = mock("Tempfile", :read => {:a=>"b"}.to_json)
95
- @app.stub!(:open).with("/etc/chef/dna.json").and_return(@json)
96
- Chef::JSONCompat.stub!(:from_json).with(@json.read).and_raise(JSON::ParserError)
97
- Chef::Application.stub!(:fatal!).and_return(true)
98
- end
99
-
100
- it "should hard fail the application" do
101
- Chef::Application.should_receive(:fatal!).with("Could not parse the provided JSON file (/etc/chef/dna.json)!: JSON::ParserError", 2).and_return(true)
102
- @app.reconfigure
103
- end
61
+ it "reads the JSON attributes from the specified source" do
62
+ @app.reconfigure
63
+ @app.chef_solo_json.should == json_attribs
104
64
  end
105
65
  end
106
66
 
@@ -20,15 +20,17 @@ require 'spec_helper'
20
20
 
21
21
  describe Chef::Application do
22
22
  before do
23
- @original_conf = Chef::Config.configuration
23
+ @original_argv = ARGV.dup
24
+ ARGV.clear
24
25
  Chef::Log.logger = Logger.new(StringIO.new)
25
26
  @app = Chef::Application.new
26
27
  Dir.stub!(:chdir).and_return(0)
27
28
  @app.stub!(:reconfigure)
29
+ Chef::Log.init(STDERR)
28
30
  end
29
31
 
30
32
  after do
31
- Chef::Config.configuration.replace(@original_conf)
33
+ ARGV.replace(@original_argv)
32
34
  end
33
35
 
34
36
  describe "reconfigure" do
@@ -94,28 +96,30 @@ describe Chef::Application do
94
96
  end
95
97
 
96
98
  describe "when a config_file is present" do
97
- before do
98
- Chef::Config.configuration.delete('rspec_ran')
99
-
100
- @config_file = Tempfile.new("rspec-chef-config")
101
- @config_file.puts("rspec_ran('true')")
102
- @config_file.close
99
+ let(:config_content) { "rspec_ran('true')" }
100
+ let(:config_location) { "/etc/chef/default.rb" }
103
101
 
104
- @app.config[:config_file] = "/etc/chef/default.rb"
102
+ let(:config_location_pathname) do
103
+ p = Pathname.new(config_location)
104
+ p.stub(:realpath).and_return(config_location)
105
+ p
105
106
  end
106
107
 
107
- after do
108
- @config_file.unlink
108
+ before do
109
+ @app.config[:config_file] = config_location
110
+ Pathname.stub(:new).with(config_location).and_return(config_location_pathname)
111
+ File.should_receive(:read).
112
+ with(config_location).
113
+ and_return(config_content)
109
114
  end
110
115
 
111
116
  it "should configure chef::config from a file" do
112
- File.should_receive(:open).with("/etc/chef/default.rb").and_yield(@config_file)
113
- Chef::Config.should_receive(:from_file).with(@config_file.path)
117
+ Chef::Config.should_receive(:from_string).with(config_content, config_location)
114
118
  @app.configure_chef
115
119
  end
116
120
 
117
121
  it "should merge the local config hash into chef::config" do
118
- File.should_receive(:open).with("/etc/chef/default.rb").and_yield(@config_file)
122
+ #File.should_receive(:open).with("/etc/chef/default.rb").and_yield(@config_file)
119
123
  @app.configure_chef
120
124
  Chef::Config.rspec_ran.should == "true"
121
125
  end
@@ -127,9 +131,9 @@ describe Chef::Application do
127
131
  @app.config[:config_file] = nil
128
132
  end
129
133
 
130
- it "should raise a fatal" do
134
+ it "should emit a warning" do
131
135
  Chef::Config.should_not_receive(:from_file).with("/etc/chef/default.rb")
132
- Chef::Application.should_receive(:fatal!)
136
+ Chef::Log.should_receive(:warn).with("No config file found or specified on command line, using command line options.")
133
137
  @app.configure_chef
134
138
  end
135
139
  end
@@ -143,36 +147,6 @@ describe Chef::Application do
143
147
  @app.configure_chef
144
148
  end
145
149
  end
146
-
147
- describe "when the config_file is an URL" do
148
- before do
149
- Chef::Config.configuration.delete('rspec_ran')
150
-
151
- @app.config[:config_file] = "http://example.com/foo.rb"
152
-
153
- @config_file = Tempfile.new("rspec-chef-config")
154
- @config_file.puts("rspec_ran('true')")
155
- @config_file.close
156
-
157
-
158
- @cf = mock("cf")
159
- #@cf.stub!(:path).and_return("/tmp/some/path")
160
- #@cf.stub!(:nil?).and_return(false)
161
- @rest = mock("rest")
162
- #@rest.stub!(:get_rest).and_return(@rest)
163
- #@rest.stub!(:open).and_yield(@cf)
164
- Chef::REST.stub!(:new).and_return(@rest)
165
- end
166
-
167
- after {@config_file.unlink}
168
-
169
- it "should configure chef::config from an URL" do
170
- Chef::REST.should_receive(:new).with("", nil, nil).at_least(1).times.and_return(@rest)
171
- @rest.should_receive(:fetch).with("http://example.com/foo.rb").and_yield(@config_file)
172
- @app.configure_chef
173
- Chef::Config.rspec_ran.should == "true"
174
- end
175
- end
176
150
  end
177
151
 
178
152
  describe "when configuring the logger" do
@@ -189,17 +163,8 @@ describe Chef::Application do
189
163
  @app.configure_logging
190
164
  end
191
165
 
192
- it "should initialise the chef logger level" do
193
- Chef::Log.should_receive(:level=).with(Chef::Config[:log_level]).and_return(true)
194
- @app.configure_logging
195
- end
196
-
197
- context "and log_level is :auto" do
198
- before do
199
- Chef::Config[:log_level] = :auto
200
- end
201
-
202
- context "and STDOUT is to a tty" do
166
+ shared_examples_for "log_level_is_auto" do
167
+ context "when STDOUT is to a tty" do
203
168
  before do
204
169
  STDOUT.stub!(:tty?).and_return(true)
205
170
  end
@@ -209,7 +174,7 @@ describe Chef::Application do
209
174
  Chef::Log.level.should == :warn
210
175
  end
211
176
 
212
- context "and force_logger is configured" do
177
+ context "when force_logger is configured" do
213
178
  before do
214
179
  Chef::Config[:force_logger] = true
215
180
  end
@@ -221,7 +186,7 @@ describe Chef::Application do
221
186
  end
222
187
  end
223
188
 
224
- context "and STDOUT is not to a tty" do
189
+ context "when STDOUT is not to a tty" do
225
190
  before do
226
191
  STDOUT.stub!(:tty?).and_return(false)
227
192
  end
@@ -231,7 +196,7 @@ describe Chef::Application do
231
196
  Chef::Log.level.should == :info
232
197
  end
233
198
 
234
- context "and force_formatter is configured" do
199
+ context "when force_formatter is configured" do
235
200
  before do
236
201
  Chef::Config[:force_formatter] = true
237
202
  end
@@ -241,7 +206,18 @@ describe Chef::Application do
241
206
  end
242
207
  end
243
208
  end
209
+ end
210
+
211
+ context "when log_level is not set" do
212
+ it_behaves_like "log_level_is_auto"
213
+ end
214
+
215
+ context "when log_level is :auto" do
216
+ before do
217
+ Chef::Config[:log_level] = :auto
218
+ end
244
219
 
220
+ it_behaves_like "log_level_is_auto"
245
221
  end
246
222
  end
247
223
 
@@ -293,34 +269,29 @@ describe Chef::Application do
293
269
  end
294
270
  end
295
271
 
296
- describe "configuration errors" do
297
- before do
298
- Process.stub!(:exit).and_return(true)
299
- end
300
-
301
- def raises_informative_fatals_on_configure_chef
302
- config_file_regexp = Regexp.new @app.config[:config_file]
303
- Chef::Log.should_receive(:fatal).with(config_file_regexp).and_return(true)
304
- @app.configure_chef
305
- end
306
-
307
- def warns_informatively_on_configure_chef
272
+ context "when the config file is not available" do
273
+ it "should warn for bad config file path" do
274
+ @app.config[:config_file] = "/tmp/non-existing-dir/file"
308
275
  config_file_regexp = Regexp.new @app.config[:config_file]
309
276
  Chef::Log.should_receive(:warn).at_least(:once).with(config_file_regexp).and_return(true)
310
277
  Chef::Log.should_receive(:warn).any_number_of_times.and_return(true)
311
278
  @app.configure_chef
312
279
  end
280
+ end
313
281
 
314
- it "should warn for bad config file path" do
315
- @app.config[:config_file] = "/tmp/non-existing-dir/file"
316
- warns_informatively_on_configure_chef
282
+ describe "configuration errors" do
283
+ before do
284
+ Process.should_receive(:exit)
317
285
  end
318
286
 
319
- it "should raise informative fatals for bad config file url" do
320
- non_existing_url = "http://its-stubbed.com/foo.rb"
321
- @app.config[:config_file] = non_existing_url
322
- Chef::REST.any_instance.stub(:fetch).with(non_existing_url).and_raise(SocketError)
323
- raises_informative_fatals_on_configure_chef
287
+ def raises_informative_fatals_on_configure_chef
288
+ config_file_regexp = Regexp.new @app.config[:config_file]
289
+ Chef::Log.should_receive(:fatal).
290
+ with(/Configuration error/)
291
+ Chef::Log.should_receive(:fatal).
292
+ with(config_file_regexp).
293
+ at_least(1).times
294
+ @app.configure_chef
324
295
  end
325
296
 
326
297
  describe "when config file exists but contains errors" do