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
@@ -27,16 +27,17 @@ describe Chef::Checksum::Storage::Filesystem do
27
27
  @now = Time.now
28
28
 
29
29
  Time.stub!(:now).and_return(@now)
30
+ Chef::Config.stub!(:checksum_path).and_return("/var/chef/checksums")
30
31
 
31
32
  @checksum_of_the_file = "3fafecfb15585ede6b840158cbc2f399"
32
- @storage = Chef::Checksum::Storage::Filesystem.new(Chef::Config.checksum_path, @checksum_of_the_file)
33
+ @storage = Chef::Checksum::Storage::Filesystem.new("/not/used/path", @checksum_of_the_file)
33
34
  end
34
35
 
35
36
  it "has the path to the file in the checksum repo" do
36
37
  @storage.file_location.should == "/var/chef/checksums/3f/3fafecfb15585ede6b840158cbc2f399"
37
38
  end
38
39
 
39
- it "has the path the the file's subdirectory in the checksum repo" do
40
+ it "has the path the file's subdirectory in the checksum repo" do
40
41
  @storage.checksum_repo_directory.should == "/var/chef/checksums/3f"
41
42
  end
42
43
 
@@ -0,0 +1,47 @@
1
+ #
2
+ # Author:: John Keiser (<jkeiser@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+ require 'chef/chef_fs/file_system/operation_failed_error'
21
+
22
+ describe Chef::ChefFS::FileSystem::OperationFailedError do
23
+ context 'message' do
24
+ let(:error_message) { 'HTTP error writing: 400 "Bad Request"' }
25
+
26
+ context 'has a cause attribute and HTTP result code is 400' do
27
+ it 'include error cause' do
28
+ allow_message_expectations_on_nil
29
+ response_body = '{"error":["Invalid key test in request body"]}'
30
+ @response.stub(:code).and_return("400")
31
+ @response.stub(:body).and_return(response_body)
32
+ exception = Net::HTTPServerException.new("(exception) unauthorized", @response)
33
+ proc {
34
+ raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
35
+ }.should raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
36
+ end
37
+ end
38
+
39
+ context 'does not have a cause attribute' do
40
+ it 'does not include error cause' do
41
+ proc {
42
+ raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self), error_message
43
+ }.should raise_error(Chef::ChefFS::FileSystem::OperationFailedError, error_message)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -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.
@@ -74,23 +74,13 @@ shared_examples_for Chef::Client do
74
74
  end
75
75
 
76
76
  describe "configuring output formatters" do
77
- before do
78
- @original_config = Chef::Config.configuration
79
- end
80
-
81
- after do
82
- Chef::Config.configuration.replace(@original_config)
83
- end
84
77
  context "when no formatter has been configured" do
85
78
  before do
86
- Chef::Config.formatters.clear
87
79
  @client = Chef::Client.new
88
80
  end
89
81
 
90
82
  context "and STDOUT is a TTY" do
91
83
  before do
92
- Chef::Config[:force_formatter] = false
93
- Chef::Config[:force_logger] = false
94
84
  STDOUT.stub!(:tty?).and_return(true)
95
85
  end
96
86
 
@@ -114,7 +104,6 @@ shared_examples_for Chef::Client do
114
104
 
115
105
  context "and STDOUT is not a TTY" do
116
106
  before do
117
- Chef::Config[:force_formatter] = false
118
107
  STDOUT.stub!(:tty?).and_return(false)
119
108
  end
120
109
 
@@ -137,7 +126,6 @@ shared_examples_for Chef::Client do
137
126
  context "when a formatter is configured" do
138
127
  context "with no output path" do
139
128
  before do
140
- Chef::Config.formatters.clear
141
129
  @client = Chef::Client.new
142
130
  Chef::Config.add_formatter(:min)
143
131
  end
@@ -156,7 +144,6 @@ shared_examples_for Chef::Client do
156
144
 
157
145
  context "with an output path" do
158
146
  before do
159
- Chef::Config.formatters.clear
160
147
  @client = Chef::Client.new
161
148
  @tmpout = Tempfile.open("rspec-for-client-formatter-selection-#{Process.pid}")
162
149
  Chef::Config.add_formatter(:min, @tmpout.path)
@@ -226,6 +213,7 @@ shared_examples_for Chef::Client do
226
213
  mock_chef_rest_for_node_save.should_receive(:put_rest).with("nodes/#{@fqdn}", @node).and_return(true)
227
214
 
228
215
  Chef::RunLock.any_instance.should_receive(:acquire)
216
+ Chef::RunLock.any_instance.should_receive(:save_pid)
229
217
  Chef::RunLock.any_instance.should_receive(:release)
230
218
 
231
219
  # Post conditions: check that node has been filled in correctly
@@ -463,19 +451,15 @@ shared_examples_for Chef::Client do
463
451
  end
464
452
 
465
453
  describe Chef::Client do
454
+ Chef::Config[:client_fork] = false
466
455
  it_behaves_like Chef::Client
467
456
  end
468
457
 
469
458
  describe "Chef::Client Forked" do
470
459
  before do
471
- @original_config = Chef::Config.configuration
472
460
  Chef::Config[:client_fork] = true
473
461
  end
474
462
 
475
- after do
476
- Chef::Config.configuration.replace(@original_config)
477
- end
478
-
479
463
  it_behaves_like Chef::Client
480
464
 
481
465
  end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+ require 'chef/config_fetcher'
3
+ describe Chef::ConfigFetcher do
4
+ let(:valid_json) { {:a=>"b"}.to_json }
5
+ let(:invalid_json) { %q[{"syntax-error": "missing quote}] }
6
+ let(:http) { double("Chef::HTTP::Simple") }
7
+
8
+ let(:config_location_regex) { Regexp.escape(config_location) }
9
+ let(:invalid_json_error_regex) { %r[Could not parse the provided JSON file \(#{config_location_regex}\)] }
10
+
11
+ let(:config_jail_path) { nil }
12
+
13
+ let(:fetcher) { Chef::ConfigFetcher.new(config_location, config_jail_path) }
14
+
15
+ context "when loading a local file" do
16
+ let(:config_location) { "/etc/chef/client.rb" }
17
+ let(:config_content) { "# The client.rb content" }
18
+
19
+ it "reads the file from disk" do
20
+ ::File.should_receive(:read).
21
+ with(config_location).
22
+ and_return(config_content)
23
+ fetcher.read_config.should == config_content
24
+ end
25
+
26
+ context "and consuming JSON" do
27
+
28
+ let(:config_location) { "/etc/chef/first-boot.json" }
29
+
30
+
31
+ it "returns the parsed JSON" do
32
+ ::File.should_receive(:read).
33
+ with(config_location).
34
+ and_return(valid_json)
35
+
36
+ fetcher.fetch_json.should == {"a" => "b"}
37
+ end
38
+
39
+ context "and the JSON is invalid" do
40
+
41
+ it "reports the JSON error" do
42
+
43
+
44
+ ::File.should_receive(:read).
45
+ with(config_location).
46
+ and_return(invalid_json)
47
+
48
+ Chef::Application.should_receive(:fatal!).
49
+ with(invalid_json_error_regex, 2)
50
+ fetcher.fetch_json
51
+ end
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ context "when loading a file over HTTP" do
58
+
59
+ let(:config_location) { "https://example.com/client.rb" }
60
+ let(:config_content) { "# The client.rb content" }
61
+
62
+ before do
63
+ Chef::HTTP::Simple.should_receive(:new).
64
+ with(config_location).
65
+ and_return(http)
66
+ end
67
+
68
+ it "reads the file over HTTP" do
69
+ http.should_receive(:get).
70
+ with("").and_return(config_content)
71
+ fetcher.read_config.should == config_content
72
+ end
73
+
74
+ context "and consuming JSON" do
75
+ let(:config_location) { "https://example.com/foo.json" }
76
+
77
+ it "fetches the file and parses it" do
78
+ http.should_receive(:get).
79
+ with("").and_return(valid_json)
80
+ fetcher.fetch_json.should == {"a" => "b"}
81
+ end
82
+
83
+ context "and the JSON is invalid" do
84
+ it "reports the JSON error" do
85
+ http.should_receive(:get).
86
+ with("").and_return(invalid_json)
87
+
88
+ Chef::Application.should_receive(:fatal!).
89
+ with(invalid_json_error_regex, 2)
90
+ fetcher.fetch_json
91
+ end
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+
98
+ end
@@ -22,7 +22,6 @@ require 'chef/exceptions'
22
22
 
23
23
  describe Chef::Config do
24
24
  before(:all) do
25
- @original_config = Chef::Config.hash_dup
26
25
  @original_env = { 'HOME' => ENV['HOME'], 'SYSTEMDRIVE' => ENV['SYSTEMDRIVE'], 'HOMEPATH' => ENV['HOMEPATH'], 'USERPROFILE' => ENV['USERPROFILE'] }
27
26
  end
28
27
 
@@ -82,22 +81,18 @@ describe Chef::Config do
82
81
  # log_level = info or defualt
83
82
  # end
84
83
  #
85
- before do
86
- @config_class = Class.new(Chef::Config)
87
- end
88
-
89
84
  it "has an empty list of formatters by default" do
90
- @config_class.formatters.should == []
85
+ Chef::Config.formatters.should == []
91
86
  end
92
87
 
93
88
  it "configures a formatter with a short name" do
94
- @config_class.add_formatter(:doc)
95
- @config_class.formatters.should == [[:doc, nil]]
89
+ Chef::Config.add_formatter(:doc)
90
+ Chef::Config.formatters.should == [[:doc, nil]]
96
91
  end
97
92
 
98
93
  it "configures a formatter with a file output" do
99
- @config_class.add_formatter(:doc, "/var/log/formatter.log")
100
- @config_class.formatters.should == [[:doc, "/var/log/formatter.log"]]
94
+ Chef::Config.add_formatter(:doc, "/var/log/formatter.log")
95
+ Chef::Config.formatters.should == [[:doc, "/var/log/formatter.log"]]
101
96
  end
102
97
 
103
98
  end
@@ -142,10 +137,6 @@ describe Chef::Config do
142
137
  and_return(@mockfile)
143
138
  end
144
139
 
145
- after do
146
- Chef::Config.log_location = STDOUT
147
- end
148
-
149
140
  it "should configure itself to use a File object based upon the String" do
150
141
  Chef::Config.log_location = "/var/log/chef/client.log"
151
142
  Chef::Config.log_location.path.should == "/var/log/chef/client.log"
@@ -174,15 +165,6 @@ describe Chef::Config do
174
165
  end
175
166
 
176
167
  describe "default values" do
177
- before(:each) do
178
- # reload Chef::Config to ensure defaults are truely active
179
- load File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "chef", "config.rb"))
180
- end
181
-
182
- after(:each) do
183
- # reload spec helper to re-set any spec specific Chef::Config values
184
- load File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper.rb"))
185
- end
186
168
 
187
169
  it "Chef::Config[:file_backup_path] defaults to /var/chef/backup" do
188
170
  backup_path = if windows?
@@ -201,8 +183,14 @@ describe Chef::Config do
201
183
  Chef::Config[:ssl_ca_path].should be_nil
202
184
  end
203
185
 
204
- it "Chef::Config[:ssl_ca_file] defaults to nil" do
205
- Chef::Config[:ssl_ca_file].should be_nil
186
+ describe "when on UNIX" do
187
+ before do
188
+ Chef::Config.stub(:on_windows?).and_return(false)
189
+ end
190
+
191
+ it "Chef::Config[:ssl_ca_file] defaults to nil" do
192
+ Chef::Config[:ssl_ca_file].should be_nil
193
+ end
206
194
  end
207
195
 
208
196
  it "Chef::Config[:data_bag_path] defaults to /var/chef/data_bags" do
@@ -220,6 +208,100 @@ describe Chef::Config do
220
208
 
221
209
  Chef::Config[:environment_path].should == environment_path
222
210
  end
211
+
212
+ describe "joining platform specific paths" do
213
+
214
+ context "on UNIX" do
215
+ before do
216
+ Chef::Config.stub(:on_windows?).and_return(false)
217
+ end
218
+
219
+ it "joins components when some end with separators" do
220
+ Chef::Config.path_join("/foo/", "bar", "baz").should == "/foo/bar/baz"
221
+ end
222
+
223
+ it "joins components that don't end in separators" do
224
+ Chef::Config.path_join("/foo", "bar", "baz").should == "/foo/bar/baz"
225
+ end
226
+
227
+ end
228
+
229
+ context "on Windows" do
230
+ before do
231
+ Chef::Config.stub(:on_windows?).and_return(true)
232
+ end
233
+
234
+ it "joins components with the windows separator" do
235
+ Chef::Config.path_join('c:\\foo\\', 'bar', "baz").should == 'c:\\foo\\bar\\baz'
236
+ end
237
+ end
238
+ end
239
+
240
+ describe "setting the config dir" do
241
+
242
+ before do
243
+ Chef::Config.stub(:on_windows?).and_return(false)
244
+ Chef::Config.config_file = "/etc/chef/client.rb"
245
+ end
246
+
247
+ context "by default" do
248
+ it "is the parent dir of the config file" do
249
+ Chef::Config.config_dir.should == "/etc/chef"
250
+ end
251
+ end
252
+
253
+ context "when chef is running in local mode" do
254
+ before do
255
+ Chef::Config.local_mode = true
256
+ Chef::Config.user_home = "/home/charlie"
257
+ end
258
+
259
+ it "is in the user's home dir" do
260
+ Chef::Config.config_dir.should == "/home/charlie/.chef/"
261
+ end
262
+ end
263
+
264
+ context "when explicitly set" do
265
+ before do
266
+ Chef::Config.config_dir = "/other/config/dir/"
267
+ end
268
+
269
+ it "uses the explicit value" do
270
+ Chef::Config.config_dir.should == "/other/config/dir/"
271
+ end
272
+ end
273
+
274
+ end
275
+
276
+ describe "finding the windows embedded dir" do
277
+ let(:default_config_location) { "c:/opscode/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/config.rb" }
278
+ let(:alternate_install_location) { "c:/my/alternate/install/place/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/config.rb" }
279
+ let(:non_omnibus_location) { "c:/my/dev/stuff/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/config.rb" }
280
+
281
+ let(:default_ca_file) { "c:/opscode/chef/embedded/ssl/certs/cacert.pem" }
282
+
283
+ it "finds the embedded dir in the default location" do
284
+ Chef::Config.stub(:_this_file).and_return(default_config_location)
285
+ Chef::Config.embedded_dir.should == "c:/opscode/chef/embedded"
286
+ end
287
+
288
+ it "finds the embedded dir in a custom install location" do
289
+ Chef::Config.stub(:_this_file).and_return(alternate_install_location)
290
+ Chef::Config.embedded_dir.should == "c:/my/alternate/install/place/chef/embedded"
291
+ end
292
+
293
+ it "doesn't error when not in an omnibus install" do
294
+ Chef::Config.stub(:_this_file).and_return(non_omnibus_location)
295
+ Chef::Config.embedded_dir.should be_nil
296
+ end
297
+
298
+ it "sets the ssl_ca_cert path if the cert file is available" do
299
+ Chef::Config.stub(:_this_file).and_return(default_config_location)
300
+ Chef::Config.stub(:on_windows?).and_return(true)
301
+ File.stub(:exist?).with(default_ca_file).and_return(true)
302
+ Chef::Config.ssl_ca_file.should == default_ca_file
303
+ end
304
+ end
223
305
  end
224
306
 
225
307
  describe "Chef::Config[:user_home]" do
@@ -278,8 +360,4 @@ describe Chef::Config do
278
360
  expect{Chef::Config.log_location = missing_path}.to raise_error Chef::Exceptions::ConfigurationError
279
361
  end
280
362
  end
281
-
282
- after(:each) do
283
- Chef::Config.configuration = @original_config
284
- end
285
363
  end
@@ -7,9 +7,9 @@
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
9
9
  # You may obtain a copy of the License at
10
- #
10
+ #
11
11
  # http://www.apache.org/licenses/LICENSE-2.0
12
- #
12
+ #
13
13
  # Unless required by applicable law or agreed to in writing, software
14
14
  # distributed under the License is distributed on an "AS IS" BASIS,
15
15
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,7 +20,7 @@
20
20
  require 'spec_helper'
21
21
  require 'chef/cookbook/metadata'
22
22
 
23
- describe Chef::Cookbook::Metadata do
23
+ describe Chef::Cookbook::Metadata do
24
24
  before(:each) do
25
25
  @cookbook = Chef::CookbookVersion.new('test_cookbook')
26
26
  @meta = Chef::Cookbook::Metadata.new(@cookbook)
@@ -86,7 +86,7 @@ describe Chef::Cookbook::Metadata do
86
86
  it "should return a Chef::Cookbook::Metadata object" do
87
87
  @meta.should be_a_kind_of(Chef::Cookbook::Metadata)
88
88
  end
89
-
89
+
90
90
  it "should allow a cookbook as the first argument" do
91
91
  lambda { Chef::Cookbook::Metadata.new(@cookbook) }.should_not raise_error
92
92
  end
@@ -96,7 +96,7 @@ describe Chef::Cookbook::Metadata do
96
96
  end
97
97
 
98
98
  it "should set the maintainer name from the second argument" do
99
- md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown')
99
+ md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown')
100
100
  md.maintainer.should == 'Bobo T. Clown'
101
101
  end
102
102
 
@@ -105,7 +105,7 @@ describe Chef::Cookbook::Metadata do
105
105
  end
106
106
 
107
107
  it "should set the maintainer email from the third argument" do
108
- md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown', 'bobo@clown.co')
108
+ md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown', 'bobo@clown.co')
109
109
  md.maintainer_email.should == 'bobo@clown.co'
110
110
  end
111
111
 
@@ -114,10 +114,10 @@ describe Chef::Cookbook::Metadata do
114
114
  end
115
115
 
116
116
  it "should set the license from the fourth argument" do
117
- md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown', 'bobo@clown.co', 'Clown License v1')
117
+ md = Chef::Cookbook::Metadata.new(@cookbook, 'Bobo T. Clown', 'bobo@clown.co', 'Clown License v1')
118
118
  md.license.should == 'Clown License v1'
119
119
  end
120
- end
120
+ end
121
121
 
122
122
  describe "cookbook" do
123
123
  it "should return the cookbook we were initialized with" do
@@ -133,7 +133,7 @@ describe Chef::Cookbook::Metadata do
133
133
 
134
134
  describe "platforms" do
135
135
  it "should return the current platform hash" do
136
- @meta.platforms.should be_a_kind_of(Hash)
136
+ @meta.platforms.should be_a_kind_of(Hash)
137
137
  end
138
138
  end
139
139
 
@@ -235,7 +235,7 @@ describe Chef::Cookbook::Metadata do
235
235
  end
236
236
  end
237
237
  end
238
-
238
+
239
239
  describe "attribute groupings" do
240
240
  it "should allow you set a grouping" do
241
241
  group = {
@@ -312,7 +312,7 @@ describe Chef::Cookbook::Metadata do
312
312
  @meta.attribute("db/mysql/databases", {})
313
313
  @meta.attributes["db/mysql/databases"][:choice].should == []
314
314
  end
315
-
315
+
316
316
  it "should let calculated be true or false" do
317
317
  lambda {
318
318
  @meta.attribute("db/mysql/databases", :calculated => true)
@@ -324,7 +324,7 @@ describe Chef::Cookbook::Metadata do
324
324
  @meta.attribute("db/mysql/databases", :calculated => Hash.new)
325
325
  }.should raise_error(ArgumentError)
326
326
  end
327
-
327
+
328
328
  it "should set calculated to false by default" do
329
329
  @meta.attribute("db/mysql/databases", {})
330
330
  @meta.attributes["db/mysql/databases"][:calculated].should == false
@@ -350,7 +350,7 @@ describe Chef::Cookbook::Metadata do
350
350
  @meta.attribute("db/mysql/databases", :type => "symbol")
351
351
  }.should_not raise_error(ArgumentError)
352
352
  end
353
-
353
+
354
354
  it "should let type be hash (backwards compatability only)" do
355
355
  lambda {
356
356
  @meta.attribute("db/mysql/databases", :type => "hash")
@@ -375,7 +375,7 @@ describe Chef::Cookbook::Metadata do
375
375
  }.should_not raise_error(ArgumentError)
376
376
  #attrib = @meta.attributes["db/mysql/databases"][:required].should == "required"
377
377
  end
378
-
378
+
379
379
  it "should convert required false to optional" do
380
380
  lambda {
381
381
  @meta.attribute("db/mysql/databases", :required => false)
@@ -387,7 +387,7 @@ describe Chef::Cookbook::Metadata do
387
387
  @meta.attribute("db/mysql/databases", {})
388
388
  @meta.attributes["db/mysql/databases"][:required].should == 'optional'
389
389
  end
390
-
390
+
391
391
  it "should make sure recipes is an array" do
392
392
  lambda {
393
393
  @meta.attribute("db/mysql/databases", :recipes => [])
@@ -399,7 +399,7 @@ describe Chef::Cookbook::Metadata do
399
399
 
400
400
  it "should set recipes to an empty array by default" do
401
401
  @meta.attribute("db/mysql/databases", {})
402
- @meta.attributes["db/mysql/databases"][:recipes].should == []
402
+ @meta.attributes["db/mysql/databases"][:recipes].should == []
403
403
  end
404
404
 
405
405
  it "should allow the default value to be a string, array, or hash" do
@@ -438,14 +438,14 @@ describe Chef::Cookbook::Metadata do
438
438
  lambda {
439
439
  attrs = {
440
440
  :choice => [ "a", "b", "c"],
441
- :default => "b"
441
+ :default => "b"
442
442
  }
443
443
  @meta.attribute("db/mysql/databases", attrs)
444
444
  }.should_not raise_error(ArgumentError)
445
445
  lambda {
446
446
  attrs = {
447
447
  :choice => [ "a", "b", "c", "d", "e"],
448
- :default => ["b", "d"]
448
+ :default => ["b", "d"]
449
449
  }
450
450
  @meta.attribute("db/mysql/databases", attrs)
451
451
  }.should_not raise_error(ArgumentError)
@@ -455,7 +455,7 @@ describe Chef::Cookbook::Metadata do
455
455
  lambda {
456
456
  attrs = {
457
457
  :choice => [ "a", "b", "c"],
458
- :default => "d"
458
+ :default => "d"
459
459
  }
460
460
  @meta.attribute("db/mysql/databases", attrs)
461
461
  }.should raise_error(ArgumentError)
@@ -470,11 +470,11 @@ describe Chef::Cookbook::Metadata do
470
470
  end
471
471
 
472
472
  describe "recipes" do
473
- before(:each) do
473
+ before(:each) do
474
474
  @cookbook.recipe_files = [ "default.rb", "enlighten.rb" ]
475
475
  @meta = Chef::Cookbook::Metadata.new(@cookbook)
476
476
  end
477
-
477
+
478
478
  it "should have the names of the recipes" do
479
479
  @meta.recipes["test_cookbook"].should == ""
480
480
  @meta.recipes["test_cookbook::enlighten"].should == ""
@@ -493,7 +493,7 @@ describe Chef::Cookbook::Metadata do
493
493
  end
494
494
 
495
495
  describe "json" do
496
- before(:each) do
496
+ before(:each) do
497
497
  @cookbook.recipe_files = [ "default.rb", "enlighten.rb" ]
498
498
  @meta = Chef::Cookbook::Metadata.new(@cookbook)
499
499
  @meta.version "1.0"
@@ -509,8 +509,8 @@ describe Chef::Cookbook::Metadata do
509
509
  @meta.provides "foo(:bar, :baz)"
510
510
  @meta.replaces "snarkitron"
511
511
  @meta.recipe "test_cookbook::enlighten", "is your buddy"
512
- @meta.attribute "bizspark/has_login",
513
- :display_name => "You have nothing"
512
+ @meta.attribute "bizspark/has_login",
513
+ :display_name => "You have nothing"
514
514
  @meta.version "1.2.3"
515
515
  end
516
516
 
@@ -524,23 +524,23 @@ describe Chef::Cookbook::Metadata do
524
524
  end
525
525
 
526
526
  %w{
527
- name
528
- description
529
- long_description
530
- maintainer
531
- maintainer_email
527
+ name
528
+ description
529
+ long_description
530
+ maintainer
531
+ maintainer_email
532
532
  license
533
- platforms
534
- dependencies
535
- suggestions
536
- recommendations
537
- conflicting
533
+ platforms
534
+ dependencies
535
+ suggestions
536
+ recommendations
537
+ conflicting
538
538
  providing
539
- replacing
540
- attributes
539
+ replacing
540
+ attributes
541
541
  recipes
542
542
  version
543
- }.each do |t|
543
+ }.each do |t|
544
544
  it "should include '#{t}'" do
545
545
  @serial[t].should == @meta.send(t.to_sym)
546
546
  end
@@ -557,23 +557,23 @@ describe Chef::Cookbook::Metadata do
557
557
  end
558
558
 
559
559
  %w{
560
- name
561
- description
562
- long_description
563
- maintainer
564
- maintainer_email
560
+ name
561
+ description
562
+ long_description
563
+ maintainer
564
+ maintainer_email
565
565
  license
566
- platforms
567
- dependencies
568
- suggestions
569
- recommendations
570
- conflicting
566
+ platforms
567
+ dependencies
568
+ suggestions
569
+ recommendations
570
+ conflicting
571
571
  providing
572
- replacing
573
- attributes
572
+ replacing
573
+ attributes
574
574
  recipes
575
575
  version
576
- }.each do |t|
576
+ }.each do |t|
577
577
  it "should match '#{t}'" do
578
578
  @deserial.send(t.to_sym).should == @meta.send(t.to_sym)
579
579
  end