TrueCar-chef 0.10.0.beta.3

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 (372) hide show
  1. data/LICENSE +201 -0
  2. data/README.rdoc +171 -0
  3. data/bin/chef-client +26 -0
  4. data/bin/chef-solo +25 -0
  5. data/bin/knife +26 -0
  6. data/bin/shef +34 -0
  7. data/distro/README +2 -0
  8. data/distro/arch/etc/conf.d/chef-client.conf +5 -0
  9. data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
  10. data/distro/arch/etc/conf.d/chef-server.conf +10 -0
  11. data/distro/arch/etc/conf.d/chef-solr-indexer.conf +8 -0
  12. data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
  13. data/distro/arch/etc/rc.d/chef-client +76 -0
  14. data/distro/arch/etc/rc.d/chef-server +78 -0
  15. data/distro/arch/etc/rc.d/chef-server-webui +78 -0
  16. data/distro/arch/etc/rc.d/chef-solr +78 -0
  17. data/distro/arch/etc/rc.d/chef-solr-indexer +78 -0
  18. data/distro/common/man/man1/chef-indexer.1 +42 -0
  19. data/distro/common/man/man1/chef-server-webui.1 +106 -0
  20. data/distro/common/man/man1/chef-server.1 +107 -0
  21. data/distro/common/man/man1/chef-solr-indexer.1 +55 -0
  22. data/distro/common/man/man1/chef-solr.1 +55 -0
  23. data/distro/common/man/man8/chef-client.8 +63 -0
  24. data/distro/common/man/man8/chef-solo.8 +57 -0
  25. data/distro/common/man/man8/chef-solr-rebuild.8 +37 -0
  26. data/distro/common/man/man8/knife.8 +1349 -0
  27. data/distro/common/man/man8/shef.8 +45 -0
  28. data/distro/common/markdown/README +3 -0
  29. data/distro/common/markdown/knife.mkd +865 -0
  30. data/distro/debian/etc/default/chef-client +4 -0
  31. data/distro/debian/etc/default/chef-server +9 -0
  32. data/distro/debian/etc/default/chef-server-webui +9 -0
  33. data/distro/debian/etc/default/chef-solr +8 -0
  34. data/distro/debian/etc/default/chef-solr-indexer +7 -0
  35. data/distro/debian/etc/init.d/chef-client +175 -0
  36. data/distro/debian/etc/init.d/chef-server +122 -0
  37. data/distro/debian/etc/init.d/chef-server-webui +123 -0
  38. data/distro/debian/etc/init.d/chef-solr +176 -0
  39. data/distro/debian/etc/init.d/chef-solr-indexer +176 -0
  40. data/distro/debian/etc/init/chef-client.conf +17 -0
  41. data/distro/debian/etc/init/chef-server-webui.conf +17 -0
  42. data/distro/debian/etc/init/chef-server.conf +17 -0
  43. data/distro/debian/etc/init/chef-solr-indexer.conf +17 -0
  44. data/distro/debian/etc/init/chef-solr.conf +17 -0
  45. data/distro/redhat/etc/init.d/chef-client +106 -0
  46. data/distro/redhat/etc/init.d/chef-server +112 -0
  47. data/distro/redhat/etc/init.d/chef-server-webui +112 -0
  48. data/distro/redhat/etc/init.d/chef-solr +104 -0
  49. data/distro/redhat/etc/init.d/chef-solr-indexer +104 -0
  50. data/distro/redhat/etc/logrotate.d/chef-client +8 -0
  51. data/distro/redhat/etc/logrotate.d/chef-server +8 -0
  52. data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
  53. data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
  54. data/distro/redhat/etc/logrotate.d/chef-solr-indexer +8 -0
  55. data/distro/redhat/etc/sysconfig/chef-client +15 -0
  56. data/distro/redhat/etc/sysconfig/chef-server +14 -0
  57. data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
  58. data/distro/redhat/etc/sysconfig/chef-solr +8 -0
  59. data/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
  60. data/lib/chef.rb +40 -0
  61. data/lib/chef/api_client.rb +264 -0
  62. data/lib/chef/application.rb +137 -0
  63. data/lib/chef/application/agent.rb +18 -0
  64. data/lib/chef/application/client.rb +242 -0
  65. data/lib/chef/application/knife.rb +169 -0
  66. data/lib/chef/application/solo.rb +217 -0
  67. data/lib/chef/applications.rb +4 -0
  68. data/lib/chef/certificate.rb +194 -0
  69. data/lib/chef/checksum.rb +182 -0
  70. data/lib/chef/checksum_cache.rb +189 -0
  71. data/lib/chef/client.rb +362 -0
  72. data/lib/chef/config.rb +244 -0
  73. data/lib/chef/cookbook/chefignore.rb +66 -0
  74. data/lib/chef/cookbook/cookbook_collection.rb +45 -0
  75. data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
  76. data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
  77. data/lib/chef/cookbook/file_vendor.rb +48 -0
  78. data/lib/chef/cookbook/metadata.rb +592 -0
  79. data/lib/chef/cookbook/remote_file_vendor.rb +87 -0
  80. data/lib/chef/cookbook/syntax_check.rb +136 -0
  81. data/lib/chef/cookbook_loader.rb +103 -0
  82. data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
  83. data/lib/chef/cookbook_uploader.rb +125 -0
  84. data/lib/chef/cookbook_version.rb +979 -0
  85. data/lib/chef/cookbook_version_selector.rb +163 -0
  86. data/lib/chef/couchdb.rb +247 -0
  87. data/lib/chef/daemon.rb +172 -0
  88. data/lib/chef/data_bag.rb +223 -0
  89. data/lib/chef/data_bag_item.rb +267 -0
  90. data/lib/chef/encrypted_data_bag_item.rb +126 -0
  91. data/lib/chef/environment.rb +386 -0
  92. data/lib/chef/exceptions.rb +153 -0
  93. data/lib/chef/file_access_control.rb +140 -0
  94. data/lib/chef/file_cache.rb +218 -0
  95. data/lib/chef/handler.rb +206 -0
  96. data/lib/chef/handler/json_file.rb +58 -0
  97. data/lib/chef/index_queue.rb +29 -0
  98. data/lib/chef/index_queue/amqp_client.rb +116 -0
  99. data/lib/chef/index_queue/consumer.rb +76 -0
  100. data/lib/chef/index_queue/indexable.rb +109 -0
  101. data/lib/chef/json_compat.rb +52 -0
  102. data/lib/chef/knife.rb +424 -0
  103. data/lib/chef/knife/bootstrap.rb +185 -0
  104. data/lib/chef/knife/bootstrap/archlinux-gems.erb +47 -0
  105. data/lib/chef/knife/bootstrap/centos5-gems.erb +41 -0
  106. data/lib/chef/knife/bootstrap/client-install.vbs +80 -0
  107. data/lib/chef/knife/bootstrap/fedora13-gems.erb +38 -0
  108. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +32 -0
  109. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +46 -0
  110. data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
  111. data/lib/chef/knife/client_bulk_delete.rb +43 -0
  112. data/lib/chef/knife/client_create.rb +73 -0
  113. data/lib/chef/knife/client_delete.rb +48 -0
  114. data/lib/chef/knife/client_edit.rb +48 -0
  115. data/lib/chef/knife/client_list.rb +43 -0
  116. data/lib/chef/knife/client_reregister.rb +59 -0
  117. data/lib/chef/knife/client_show.rb +53 -0
  118. data/lib/chef/knife/configure.rb +136 -0
  119. data/lib/chef/knife/configure_client.rb +52 -0
  120. data/lib/chef/knife/cookbook_bulk_delete.rb +61 -0
  121. data/lib/chef/knife/cookbook_create.rb +274 -0
  122. data/lib/chef/knife/cookbook_delete.rb +149 -0
  123. data/lib/chef/knife/cookbook_download.rb +134 -0
  124. data/lib/chef/knife/cookbook_list.rb +50 -0
  125. data/lib/chef/knife/cookbook_metadata.rb +102 -0
  126. data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
  127. data/lib/chef/knife/cookbook_show.rb +101 -0
  128. data/lib/chef/knife/cookbook_site_download.rb +58 -0
  129. data/lib/chef/knife/cookbook_site_list.rb +56 -0
  130. data/lib/chef/knife/cookbook_site_search.rb +51 -0
  131. data/lib/chef/knife/cookbook_site_share.rb +114 -0
  132. data/lib/chef/knife/cookbook_site_show.rb +57 -0
  133. data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
  134. data/lib/chef/knife/cookbook_site_vendor.rb +145 -0
  135. data/lib/chef/knife/cookbook_test.rb +82 -0
  136. data/lib/chef/knife/cookbook_upload.rb +146 -0
  137. data/lib/chef/knife/data_bag_create.rb +94 -0
  138. data/lib/chef/knife/data_bag_delete.rb +51 -0
  139. data/lib/chef/knife/data_bag_edit.rb +94 -0
  140. data/lib/chef/knife/data_bag_from_file.rb +85 -0
  141. data/lib/chef/knife/data_bag_list.rb +46 -0
  142. data/lib/chef/knife/data_bag_show.rb +81 -0
  143. data/lib/chef/knife/environment_create.rb +53 -0
  144. data/lib/chef/knife/environment_delete.rb +45 -0
  145. data/lib/chef/knife/environment_edit.rb +45 -0
  146. data/lib/chef/knife/environment_from_file.rb +39 -0
  147. data/lib/chef/knife/environment_list.rb +42 -0
  148. data/lib/chef/knife/environment_show.rb +46 -0
  149. data/lib/chef/knife/exec.rb +51 -0
  150. data/lib/chef/knife/index_rebuild.rb +50 -0
  151. data/lib/chef/knife/node_bulk_delete.rb +46 -0
  152. data/lib/chef/knife/node_create.rb +50 -0
  153. data/lib/chef/knife/node_delete.rb +47 -0
  154. data/lib/chef/knife/node_edit.rb +163 -0
  155. data/lib/chef/knife/node_from_file.rb +45 -0
  156. data/lib/chef/knife/node_list.rb +46 -0
  157. data/lib/chef/knife/node_run_list_add.rb +67 -0
  158. data/lib/chef/knife/node_run_list_remove.rb +48 -0
  159. data/lib/chef/knife/node_show.rb +62 -0
  160. data/lib/chef/knife/recipe_list.rb +33 -0
  161. data/lib/chef/knife/role_bulk_delete.rb +47 -0
  162. data/lib/chef/knife/role_create.rb +55 -0
  163. data/lib/chef/knife/role_delete.rb +47 -0
  164. data/lib/chef/knife/role_edit.rb +48 -0
  165. data/lib/chef/knife/role_from_file.rb +49 -0
  166. data/lib/chef/knife/role_list.rb +43 -0
  167. data/lib/chef/knife/role_show.rb +54 -0
  168. data/lib/chef/knife/search.rb +123 -0
  169. data/lib/chef/knife/ssh.rb +318 -0
  170. data/lib/chef/knife/status.rb +90 -0
  171. data/lib/chef/knife/subcommand_loader.rb +101 -0
  172. data/lib/chef/knife/tag_create.rb +31 -0
  173. data/lib/chef/knife/tag_delete.rb +31 -0
  174. data/lib/chef/knife/tag_list.rb +29 -0
  175. data/lib/chef/knife/ui.rb +227 -0
  176. data/lib/chef/knife/windows_bootstrap.rb +157 -0
  177. data/lib/chef/log.rb +39 -0
  178. data/lib/chef/mash.rb +211 -0
  179. data/lib/chef/mixin/check_helper.rb +31 -0
  180. data/lib/chef/mixin/checksum.rb +32 -0
  181. data/lib/chef/mixin/command.rb +221 -0
  182. data/lib/chef/mixin/command/unix.rb +215 -0
  183. data/lib/chef/mixin/command/windows.rb +76 -0
  184. data/lib/chef/mixin/convert_to_class_name.rb +63 -0
  185. data/lib/chef/mixin/create_path.rb +56 -0
  186. data/lib/chef/mixin/deep_merge.rb +225 -0
  187. data/lib/chef/mixin/deprecation.rb +65 -0
  188. data/lib/chef/mixin/from_file.rb +50 -0
  189. data/lib/chef/mixin/language.rb +165 -0
  190. data/lib/chef/mixin/language_include_attribute.rb +61 -0
  191. data/lib/chef/mixin/language_include_recipe.rb +52 -0
  192. data/lib/chef/mixin/params_validate.rb +225 -0
  193. data/lib/chef/mixin/recipe_definition_dsl_core.rb +81 -0
  194. data/lib/chef/mixin/shell_out.rb +40 -0
  195. data/lib/chef/mixin/template.rb +95 -0
  196. data/lib/chef/mixin/xml_escape.rb +140 -0
  197. data/lib/chef/mixins.rb +15 -0
  198. data/lib/chef/monkey_patches/dir.rb +36 -0
  199. data/lib/chef/monkey_patches/numeric.rb +7 -0
  200. data/lib/chef/monkey_patches/regexp.rb +34 -0
  201. data/lib/chef/monkey_patches/string.rb +28 -0
  202. data/lib/chef/monkey_patches/tempfile.rb +64 -0
  203. data/lib/chef/nil_argument.rb +3 -0
  204. data/lib/chef/node.rb +661 -0
  205. data/lib/chef/node/attribute.rb +487 -0
  206. data/lib/chef/openid_registration.rb +187 -0
  207. data/lib/chef/platform.rb +409 -0
  208. data/lib/chef/provider.rb +124 -0
  209. data/lib/chef/provider/breakpoint.rb +36 -0
  210. data/lib/chef/provider/cookbook_file.rb +101 -0
  211. data/lib/chef/provider/cron.rb +186 -0
  212. data/lib/chef/provider/cron/solaris.rb +195 -0
  213. data/lib/chef/provider/deploy.rb +320 -0
  214. data/lib/chef/provider/deploy/revision.rb +80 -0
  215. data/lib/chef/provider/deploy/timestamped.rb +33 -0
  216. data/lib/chef/provider/directory.rb +72 -0
  217. data/lib/chef/provider/env.rb +152 -0
  218. data/lib/chef/provider/env/windows.rb +75 -0
  219. data/lib/chef/provider/erl_call.rb +100 -0
  220. data/lib/chef/provider/execute.rb +60 -0
  221. data/lib/chef/provider/file.rb +222 -0
  222. data/lib/chef/provider/git.rb +221 -0
  223. data/lib/chef/provider/group.rb +133 -0
  224. data/lib/chef/provider/group/aix.rb +70 -0
  225. data/lib/chef/provider/group/dscl.rb +121 -0
  226. data/lib/chef/provider/group/gpasswd.rb +53 -0
  227. data/lib/chef/provider/group/groupadd.rb +81 -0
  228. data/lib/chef/provider/group/pw.rb +84 -0
  229. data/lib/chef/provider/group/usermod.rb +57 -0
  230. data/lib/chef/provider/group/windows.rb +79 -0
  231. data/lib/chef/provider/http_request.rb +122 -0
  232. data/lib/chef/provider/ifconfig.rb +132 -0
  233. data/lib/chef/provider/link.rb +161 -0
  234. data/lib/chef/provider/log.rb +54 -0
  235. data/lib/chef/provider/mdadm.rb +91 -0
  236. data/lib/chef/provider/mount.rb +117 -0
  237. data/lib/chef/provider/mount/mount.rb +232 -0
  238. data/lib/chef/provider/mount/windows.rb +80 -0
  239. data/lib/chef/provider/ohai.rb +41 -0
  240. data/lib/chef/provider/package.rb +160 -0
  241. data/lib/chef/provider/package/apt.rb +110 -0
  242. data/lib/chef/provider/package/dpkg.rb +112 -0
  243. data/lib/chef/provider/package/easy_install.rb +136 -0
  244. data/lib/chef/provider/package/freebsd.rb +123 -0
  245. data/lib/chef/provider/package/macports.rb +105 -0
  246. data/lib/chef/provider/package/pacman.rb +101 -0
  247. data/lib/chef/provider/package/portage.rb +135 -0
  248. data/lib/chef/provider/package/rpm.rb +101 -0
  249. data/lib/chef/provider/package/rubygems.rb +462 -0
  250. data/lib/chef/provider/package/solaris.rb +127 -0
  251. data/lib/chef/provider/package/yum-dump.py +128 -0
  252. data/lib/chef/provider/package/yum.rb +261 -0
  253. data/lib/chef/provider/package/zypper.rb +133 -0
  254. data/lib/chef/provider/remote_directory.rb +138 -0
  255. data/lib/chef/provider/remote_file.rb +119 -0
  256. data/lib/chef/provider/route.rb +195 -0
  257. data/lib/chef/provider/ruby_block.rb +33 -0
  258. data/lib/chef/provider/script.rb +55 -0
  259. data/lib/chef/provider/service.rb +128 -0
  260. data/lib/chef/provider/service/arch.rb +109 -0
  261. data/lib/chef/provider/service/debian.rb +130 -0
  262. data/lib/chef/provider/service/freebsd.rb +156 -0
  263. data/lib/chef/provider/service/gentoo.rb +54 -0
  264. data/lib/chef/provider/service/init.rb +71 -0
  265. data/lib/chef/provider/service/insserv.rb +52 -0
  266. data/lib/chef/provider/service/redhat.rb +60 -0
  267. data/lib/chef/provider/service/simple.rb +118 -0
  268. data/lib/chef/provider/service/solaris.rb +85 -0
  269. data/lib/chef/provider/service/upstart.rb +192 -0
  270. data/lib/chef/provider/service/windows.rb +146 -0
  271. data/lib/chef/provider/subversion.rb +194 -0
  272. data/lib/chef/provider/template.rb +105 -0
  273. data/lib/chef/provider/user.rb +187 -0
  274. data/lib/chef/provider/user/dscl.rb +280 -0
  275. data/lib/chef/provider/user/pw.rb +113 -0
  276. data/lib/chef/provider/user/useradd.rb +137 -0
  277. data/lib/chef/provider/user/windows.rb +124 -0
  278. data/lib/chef/providers.rb +93 -0
  279. data/lib/chef/recipe.rb +128 -0
  280. data/lib/chef/resource.rb +530 -0
  281. data/lib/chef/resource/apt_package.rb +34 -0
  282. data/lib/chef/resource/bash.rb +33 -0
  283. data/lib/chef/resource/breakpoint.rb +35 -0
  284. data/lib/chef/resource/cookbook_file.rb +45 -0
  285. data/lib/chef/resource/cron.rb +188 -0
  286. data/lib/chef/resource/csh.rb +33 -0
  287. data/lib/chef/resource/deploy.rb +371 -0
  288. data/lib/chef/resource/deploy_revision.rb +35 -0
  289. data/lib/chef/resource/directory.rb +76 -0
  290. data/lib/chef/resource/dpkg_package.rb +34 -0
  291. data/lib/chef/resource/easy_install_package.rb +57 -0
  292. data/lib/chef/resource/env.rb +58 -0
  293. data/lib/chef/resource/erl_call.rb +83 -0
  294. data/lib/chef/resource/execute.rb +127 -0
  295. data/lib/chef/resource/file.rb +99 -0
  296. data/lib/chef/resource/freebsd_package.rb +35 -0
  297. data/lib/chef/resource/gem_package.rb +53 -0
  298. data/lib/chef/resource/git.rb +37 -0
  299. data/lib/chef/resource/group.rb +70 -0
  300. data/lib/chef/resource/http_request.rb +61 -0
  301. data/lib/chef/resource/ifconfig.rb +134 -0
  302. data/lib/chef/resource/link.rb +78 -0
  303. data/lib/chef/resource/log.rb +62 -0
  304. data/lib/chef/resource/macports_package.rb +29 -0
  305. data/lib/chef/resource/mdadm.rb +82 -0
  306. data/lib/chef/resource/mount.rb +135 -0
  307. data/lib/chef/resource/ohai.rb +40 -0
  308. data/lib/chef/resource/package.rb +80 -0
  309. data/lib/chef/resource/pacman_package.rb +33 -0
  310. data/lib/chef/resource/perl.rb +33 -0
  311. data/lib/chef/resource/portage_package.rb +33 -0
  312. data/lib/chef/resource/python.rb +33 -0
  313. data/lib/chef/resource/remote_directory.rb +109 -0
  314. data/lib/chef/resource/remote_file.rb +83 -0
  315. data/lib/chef/resource/route.rb +135 -0
  316. data/lib/chef/resource/rpm_package.rb +34 -0
  317. data/lib/chef/resource/ruby.rb +33 -0
  318. data/lib/chef/resource/ruby_block.rb +40 -0
  319. data/lib/chef/resource/scm.rb +147 -0
  320. data/lib/chef/resource/script.rb +60 -0
  321. data/lib/chef/resource/service.rb +160 -0
  322. data/lib/chef/resource/solaris_package.rb +36 -0
  323. data/lib/chef/resource/subversion.rb +36 -0
  324. data/lib/chef/resource/template.rb +69 -0
  325. data/lib/chef/resource/timestamped_deploy.rb +31 -0
  326. data/lib/chef/resource/user.rb +130 -0
  327. data/lib/chef/resource/yum_package.rb +43 -0
  328. data/lib/chef/resource_collection.rb +217 -0
  329. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  330. data/lib/chef/resource_definition.rb +67 -0
  331. data/lib/chef/resource_definition_list.rb +38 -0
  332. data/lib/chef/resources.rb +64 -0
  333. data/lib/chef/rest.rb +386 -0
  334. data/lib/chef/rest/auth_credentials.rb +71 -0
  335. data/lib/chef/rest/cookie_jar.rb +31 -0
  336. data/lib/chef/rest/rest_request.rb +188 -0
  337. data/lib/chef/role.rb +341 -0
  338. data/lib/chef/run_context.rb +126 -0
  339. data/lib/chef/run_list.rb +165 -0
  340. data/lib/chef/run_list/run_list_expansion.rb +193 -0
  341. data/lib/chef/run_list/run_list_item.rb +92 -0
  342. data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
  343. data/lib/chef/run_status.rb +121 -0
  344. data/lib/chef/runner.rb +99 -0
  345. data/lib/chef/sandbox.rb +153 -0
  346. data/lib/chef/search/query.rb +65 -0
  347. data/lib/chef/shef.rb +326 -0
  348. data/lib/chef/shef/ext.rb +569 -0
  349. data/lib/chef/shef/model_wrapper.rb +120 -0
  350. data/lib/chef/shef/shef_rest.rb +28 -0
  351. data/lib/chef/shef/shef_session.rb +284 -0
  352. data/lib/chef/shell_out.rb +238 -0
  353. data/lib/chef/shell_out/unix.rb +223 -0
  354. data/lib/chef/shell_out/windows.rb +98 -0
  355. data/lib/chef/solr_query.rb +187 -0
  356. data/lib/chef/solr_query/lucene.treetop +150 -0
  357. data/lib/chef/solr_query/lucene_nodes.rb +285 -0
  358. data/lib/chef/solr_query/query_transform.rb +65 -0
  359. data/lib/chef/solr_query/solr_http_request.rb +118 -0
  360. data/lib/chef/streaming_cookbook_uploader.rb +201 -0
  361. data/lib/chef/tasks/chef_repo.rake +256 -0
  362. data/lib/chef/util/file_edit.rb +122 -0
  363. data/lib/chef/util/windows.rb +56 -0
  364. data/lib/chef/util/windows/net_group.rb +101 -0
  365. data/lib/chef/util/windows/net_use.rb +121 -0
  366. data/lib/chef/util/windows/net_user.rb +198 -0
  367. data/lib/chef/util/windows/volume.rb +59 -0
  368. data/lib/chef/version.rb +23 -0
  369. data/lib/chef/version_class.rb +70 -0
  370. data/lib/chef/version_constraint.rb +116 -0
  371. data/lib/chef/webui_user.rb +231 -0
  372. metadata +600 -0
@@ -0,0 +1,153 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Seth Falcon (<seth@opscode.com>)
4
+ # Copyright:: Copyright 2008-2010 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ class Chef
20
+ # == Chef::Exceptions
21
+ # Chef's custom exceptions are all contained within the Chef::Exceptions
22
+ # namespace.
23
+ class Exceptions
24
+ class Application < RuntimeError; end
25
+ class Cron < RuntimeError; end
26
+ class Env < RuntimeError; end
27
+ class Exec < RuntimeError; end
28
+ class ErlCall < RuntimeError; end
29
+ class FileNotFound < RuntimeError; end
30
+ class Package < RuntimeError; end
31
+ class Service < RuntimeError; end
32
+ class Route < RuntimeError; end
33
+ class SearchIndex < RuntimeError; end
34
+ class Override < RuntimeError; end
35
+ class UnsupportedAction < RuntimeError; end
36
+ class MissingLibrary < RuntimeError; end
37
+ class MissingRole < RuntimeError; end
38
+ class CannotDetermineNodeName < RuntimeError; end
39
+ class User < RuntimeError; end
40
+ class Group < RuntimeError; end
41
+ class Link < RuntimeError; end
42
+ class Mount < RuntimeError; end
43
+ class CouchDBNotFound < RuntimeError; end
44
+ class PrivateKeyMissing < RuntimeError; end
45
+ class CannotWritePrivateKey < RuntimeError; end
46
+ class RoleNotFound < RuntimeError; end
47
+ class ValidationFailed < ArgumentError; end
48
+ class InvalidPrivateKey < ArgumentError; end
49
+ class ConfigurationError < ArgumentError; end
50
+ class RedirectLimitExceeded < RuntimeError; end
51
+ class AmbiguousRunlistSpecification < ArgumentError; end
52
+ class CookbookNotFound < RuntimeError; end
53
+ # Cookbook loader used to raise an argument error when cookbook not found.
54
+ # for back compat, need to raise an error that inherits from ArgumentError
55
+ class CookbookNotFoundInRepo < ArgumentError; end
56
+ class AttributeNotFound < RuntimeError; end
57
+ class InvalidCommandOption < RuntimeError; end
58
+ class CommandTimeout < RuntimeError; end
59
+ class ShellCommandFailed < RuntimeError; end
60
+ class RequestedUIDUnavailable < RuntimeError; end
61
+ class InvalidHomeDirectory < ArgumentError; end
62
+ class DsclCommandFailed < RuntimeError; end
63
+ class UserIDNotFound < ArgumentError; end
64
+ class GroupIDNotFound < ArgumentError; end
65
+ class InvalidResourceReference < RuntimeError; end
66
+ class ResourceNotFound < RuntimeError; end
67
+ class InvalidResourceSpecification < ArgumentError; end
68
+ class SolrConnectionError < RuntimeError; end
69
+ class IllegalChecksumRevert < RuntimeError; end
70
+ class CookbookVersionNameMismatch < ArgumentError; end
71
+ class MissingParentDirectory < RuntimeError; end
72
+ class UnresolvableGitReference < RuntimeError; end
73
+ class InvalidEnvironmentRunListSpecification < ArgumentError; end
74
+ class InvalidDataBagItemID < ArgumentError; end
75
+ class InvalidDataBagName < ArgumentError; end
76
+ class EnclosingDirectoryDoesNotExist < ArgumentError; end
77
+
78
+ class ObsoleteDependencySyntax < ArgumentError; end
79
+
80
+ # A different version of a cookbook was added to a
81
+ # VersionedRecipeList than the one already there.
82
+ class CookbookVersionConflict < ArgumentError ; end
83
+
84
+ # does not follow X.Y.Z format. ArgumentError?
85
+ class InvalidCookbookVersion < ArgumentError; end
86
+
87
+ # version constraint should be a string or array, or it doesn't
88
+ # match OP VERSION. ArgumentError?
89
+ class InvalidVersionConstraint < ArgumentError; end
90
+
91
+ class CookbookVersionSelection
92
+
93
+ # Compound exception: In run_list expansion and resolution,
94
+ # run_list items referred to cookbooks that don't exist and/or
95
+ # have no versions available.
96
+ class InvalidRunListItems < StandardError
97
+ attr_reader :non_existent_cookbooks
98
+ attr_reader :cookbooks_with_no_matching_versions
99
+
100
+ def initialize(message, non_existent_cookbooks, cookbooks_with_no_matching_versions)
101
+ super(message)
102
+
103
+ @non_existent_cookbooks = non_existent_cookbooks
104
+ @cookbooks_with_no_matching_versions = cookbooks_with_no_matching_versions
105
+ end
106
+
107
+ def to_json(*a)
108
+ result = {
109
+ "message" => message,
110
+ "non_existent_cookbooks" => non_existent_cookbooks,
111
+ "cookbooks_with_no_versions" => cookbooks_with_no_matching_versions
112
+ }
113
+ result.to_json(*a)
114
+ end
115
+ end
116
+
117
+ # In run_list expansion and resolution, a constraint was
118
+ # unsatisfiable.
119
+ #
120
+ # This exception may not be the complete error report. If you
121
+ # resolve the misconfiguration represented by this exception and
122
+ # re-solve, you may get another exception
123
+ class UnsatisfiableRunListItem < StandardError
124
+ attr_reader :run_list_item
125
+ attr_reader :non_existent_cookbooks, :most_constrained_cookbooks
126
+
127
+ # most_constrained_cookbooks: if I were to remove constraints
128
+ # regarding these cookbooks, I would get a solution or move on
129
+ # to the next error (deeper in the graph). An item in this list
130
+ # may be unsatisfiable, but when resolved may also reveal
131
+ # further unsatisfiable constraints; this condition would not be
132
+ # reported.
133
+ def initialize(message, run_list_item, non_existent_cookbooks, most_constrained_cookbooks)
134
+ super(message)
135
+
136
+ @run_list_item = run_list_item
137
+ @non_existent_cookbooks = non_existent_cookbooks
138
+ @most_constrained_cookbooks = most_constrained_cookbooks
139
+ end
140
+
141
+ def to_json(*a)
142
+ result = {
143
+ "message" => message,
144
+ "unsatisfiable_run_list_item" => run_list_item,
145
+ "non_existent_cookbooks" => non_existent_cookbooks,
146
+ "most_constrained_cookbooks" => most_constrained_cookbooks
147
+ }
148
+ result.to_json(*a)
149
+ end
150
+ end
151
+ end
152
+ end
153
+ end
@@ -0,0 +1,140 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Daniel DeLeo (<dan@opscode.com>)
4
+ # Copyright:: Copyright (c) 2008, 2010 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require 'chef/log'
21
+
22
+ class Chef
23
+
24
+ # == Chef::FileAccessControl
25
+ # FileAccessControl objects set the owner, group and mode of +file+ to
26
+ # the values specified by a value object, usually a Chef::Resource.
27
+ class FileAccessControl
28
+ UINT = (1 << 32)
29
+ UID_MAX = (1 << 32) - 10
30
+
31
+ attr_reader :resource
32
+
33
+ attr_reader :file
34
+
35
+ # FileAccessControl objects set the owner, group and mode of +file+ to
36
+ # the values specified by +resource+. +file+ is completely independent
37
+ # of any file or path attribute on +resource+, so it is possible to set
38
+ # access control settings on a tempfile (for example).
39
+ # === Arguments:
40
+ # resource: probably a Chef::Resource::File object (or subclass), but
41
+ # this is not required. Must respond to +owner+, +group+,
42
+ # and +mode+
43
+ # file: The file whose access control settings you wish to modify,
44
+ # given as a String.
45
+ def initialize(resource, file)
46
+ @resource, @file = resource, file
47
+ @modified = false
48
+ end
49
+
50
+ def modified?
51
+ @modified
52
+ end
53
+
54
+ def set_all
55
+ set_owner
56
+ set_group
57
+ set_mode
58
+ end
59
+
60
+ # Workaround the fact that Ruby's Etc module doesn't believe in negative
61
+ # uids, so negative uids show up as the diminished radix complement of
62
+ # a uint. For example, a uid of -2 is reported as 4294967294
63
+ def dimished_radix_complement(int)
64
+ if int > UID_MAX
65
+ int - UINT
66
+ else
67
+ int
68
+ end
69
+ end
70
+
71
+ def target_uid
72
+ return nil if resource.owner.nil?
73
+ if resource.owner.kind_of?(String)
74
+ dimished_radix_complement( Etc.getpwnam(resource.owner).uid )
75
+ elsif resource.owner.kind_of?(Integer)
76
+ resource.owner
77
+ else
78
+ Chef::Log.error("The `owner` parameter of the #@resource resource is set to an invalid value (#{resource.owner.inspect})")
79
+ raise ArgumentError, "cannot resolve #{resource.owner.inspect} to uid, owner must be a string or integer"
80
+ end
81
+ rescue ArgumentError
82
+ raise Chef::Exceptions::UserIDNotFound, "cannot determine user id for '#{resource.owner}', does the user exist on this system?"
83
+ end
84
+
85
+ def set_owner
86
+ if (uid = target_uid) && (uid != stat.uid)
87
+ Chef::Log.debug("setting owner on #{file} to #{uid}")
88
+ File.chown(uid, nil, file)
89
+ modified
90
+ end
91
+ end
92
+
93
+ def target_gid
94
+ return nil if resource.group.nil?
95
+ if resource.group.kind_of?(String)
96
+ dimished_radix_complement( Etc.getgrnam(resource.group).gid )
97
+ elsif resource.group.kind_of?(Integer)
98
+ resource.group
99
+ else
100
+ Chef::Log.error("The `group` parameter of the #@resource resource is set to an invalid value (#{resource.owner.inspect})")
101
+ raise ArgumentError, "cannot resolve #{resource.group.inspect} to gid, group must be a string or integer"
102
+ end
103
+ rescue ArgumentError
104
+ raise Chef::Exceptions::GroupIDNotFound, "cannot determine group id for '#{resource.group}', does the group exist on this system?"
105
+ end
106
+
107
+ def set_group
108
+ if (gid = target_gid) && (gid != stat.gid)
109
+ Chef::Log.debug("setting group on #{file} to #{gid}")
110
+ File.chown(nil, gid, file)
111
+ modified
112
+ end
113
+ end
114
+
115
+ def target_mode
116
+ return nil if resource.mode.nil?
117
+ (resource.mode.respond_to?(:oct) ? resource.mode.oct : resource.mode.to_i) & 007777
118
+ end
119
+
120
+ def set_mode
121
+ if (mode = target_mode) && (mode != (stat.mode & 007777))
122
+ Chef::Log.debug("setting mode on #{file} to #{mode.to_s(8)}")
123
+ File.chmod(target_mode, file)
124
+ modified
125
+ end
126
+ end
127
+
128
+
129
+ def stat
130
+ @stat ||= ::File.stat(file)
131
+ end
132
+
133
+ private
134
+
135
+ def modified
136
+ @modified = true
137
+ end
138
+
139
+ end
140
+ end
@@ -0,0 +1,218 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 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
+ require 'chef/mixin/params_validate'
19
+ require 'chef/mixin/create_path'
20
+ require 'chef/exceptions'
21
+ require 'chef/json_compat'
22
+ require 'fileutils'
23
+
24
+ class Chef
25
+ class FileCache
26
+ class << self
27
+ include Chef::Mixin::ParamsValidate
28
+ include Chef::Mixin::CreatePath
29
+
30
+ # Write a file to the File Cache.
31
+ #
32
+ # === Parameters
33
+ # path<String>:: The path to the file you want to put in the cache - should
34
+ # be relative to file_cache_path
35
+ # contents<String>:: A string with the contents you want written to the file
36
+ #
37
+ # === Returns
38
+ # true
39
+ def store(path, contents)
40
+ validate(
41
+ {
42
+ :path => path,
43
+ :contents => contents
44
+ },
45
+ {
46
+ :path => { :kind_of => String },
47
+ :contents => { :kind_of => String },
48
+ }
49
+ )
50
+
51
+ file_path_array = File.split(path)
52
+ file_name = file_path_array.pop
53
+ cache_path = create_cache_path(File.join(file_path_array))
54
+ File.open(File.join(cache_path, file_name), "w") do |io|
55
+ io.print(contents)
56
+ end
57
+ true
58
+ end
59
+
60
+ # Move a file into the cache. Useful with the REST raw file output.
61
+ #
62
+ # === Parameters
63
+ # file<String>:: The path to the file you want in the cache
64
+ # path<String>:: The relative name you want the new file to use
65
+ def move_to(file, path)
66
+ validate(
67
+ {
68
+ :file => file,
69
+ :path => path
70
+ },
71
+ {
72
+ :file => { :kind_of => String },
73
+ :path => { :kind_of => String },
74
+ }
75
+ )
76
+
77
+ file_path_array = File.split(path)
78
+ file_name = file_path_array.pop
79
+ if File.exists?(file) && File.writable?(file)
80
+ FileUtils.mv(
81
+ file,
82
+ File.join(create_cache_path(File.join(file_path_array), true), file_name)
83
+ )
84
+ else
85
+ raise RuntimeError, "Cannot move #{file} to #{path}!"
86
+ end
87
+ end
88
+
89
+ # Read a file from the File Cache
90
+ #
91
+ # === Parameters
92
+ # path<String>:: The path to the file you want to load - should
93
+ # be relative to file_cache_path
94
+ # read<True/False>:: Whether to return the file contents, or the path.
95
+ # Defaults to true.
96
+ #
97
+ # === Returns
98
+ # String:: A string with the file contents, or the path to the file.
99
+ #
100
+ # === Raises
101
+ # Chef::Exceptions::FileNotFound:: If it cannot find the file in the cache
102
+ def load(path, read=true)
103
+ validate(
104
+ {
105
+ :path => path
106
+ },
107
+ {
108
+ :path => { :kind_of => String }
109
+ }
110
+ )
111
+ cache_path = create_cache_path(path, false)
112
+ raise Chef::Exceptions::FileNotFound, "Cannot find #{cache_path} for #{path}!" unless File.exists?(cache_path)
113
+ if read
114
+ File.read(cache_path)
115
+ else
116
+ cache_path
117
+ end
118
+ end
119
+
120
+ # Delete a file from the File Cache
121
+ #
122
+ # === Parameters
123
+ # path<String>:: The path to the file you want to delete - should
124
+ # be relative to file_cache_path
125
+ #
126
+ # === Returns
127
+ # true
128
+ def delete(path)
129
+ validate(
130
+ {
131
+ :path => path
132
+ },
133
+ {
134
+ :path => { :kind_of => String },
135
+ }
136
+ )
137
+ cache_path = create_cache_path(path, false)
138
+ if File.exists?(cache_path)
139
+ File.unlink(cache_path)
140
+ end
141
+ true
142
+ end
143
+
144
+ # List all the files in the Cache
145
+ #
146
+ # === Returns
147
+ # Array:: An array of files in the cache, suitable for use with load, delete and store
148
+ def list
149
+ find("**#{File::Separator}*")
150
+ end
151
+
152
+ ##
153
+ # Find files in the cache by +glob_pattern+
154
+ # === Returns
155
+ # [String] - An array of file cache keys matching the glob
156
+ def find(glob_pattern)
157
+ keys = Array.new
158
+ Dir[File.join(file_cache_path, glob_pattern)].each do |f|
159
+ if File.file?(f)
160
+ keys << f[/^#{Regexp.escape(Dir[file_cache_path].first) + File::Separator}(.+)/, 1]
161
+ end
162
+ end
163
+ keys
164
+ end
165
+
166
+ # Whether or not this file exists in the Cache
167
+ #
168
+ # === Parameters
169
+ # path:: The path to the file you want to check - is relative
170
+ # to file_cache_path
171
+ #
172
+ # === Returns
173
+ # True:: If the file exists
174
+ # False:: If it does not
175
+ def has_key?(path)
176
+ validate(
177
+ {
178
+ :path => path
179
+ },
180
+ {
181
+ :path => { :kind_of => String },
182
+ }
183
+ )
184
+ full_path = create_cache_path(path, false)
185
+ if File.exists?(full_path)
186
+ true
187
+ else
188
+ false
189
+ end
190
+ end
191
+
192
+ # Create a full path to a given file in the cache. By default,
193
+ # also creates the path if it does not exist.
194
+ #
195
+ # === Parameters
196
+ # path:: The path to create, relative to file_cache_path
197
+ # create_if_missing:: True by default - whether to create the path if it does not exist
198
+ #
199
+ # === Returns
200
+ # String:: The fully expanded path
201
+ def create_cache_path(path, create_if_missing=true)
202
+ cache_dir = File.expand_path(File.join(file_cache_path, path))
203
+ if create_if_missing
204
+ create_path(cache_dir)
205
+ else
206
+ cache_dir
207
+ end
208
+ end
209
+
210
+ private
211
+
212
+ def file_cache_path
213
+ Chef::Config[:file_cache_path]
214
+ end
215
+
216
+ end
217
+ end
218
+ end