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,8 @@
1
+ /var/log/chef/server-webui.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-server-webui condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,8 @@
1
+ /var/log/chef/solr.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-solr condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,8 @@
1
+ /var/log/chef/solr-indexer.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-solr-indexer condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,15 @@
1
+ # Configuration file for the chef-client service
2
+
3
+ #CONFIG=/etc/chef/client.rb
4
+ #PIDFILE=/var/run/chef/client.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-client
6
+ #LOGFILE=/var/log/chef/client.log
7
+ # Sleep interval between runs.
8
+ # This value is in seconds.
9
+ #INTERVAL=1800
10
+ # Maximum amount of random delay before starting a run. Prevents every client
11
+ # from contacting the server at the exact same time.
12
+ # This value is in seconds.
13
+ #SPLAY=20
14
+ # Any additional chef-client options.
15
+ #OPTIONS=
@@ -0,0 +1,14 @@
1
+ # Configuration file for the chef-server service
2
+
3
+ #CONFIG=/etc/chef/server.rb
4
+ #PIDFILE=/var/run/chef/server.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-server
6
+ #LOGFILE=/var/log/chef/server.log
7
+ #PORT=4000
8
+ #ENVIRONMENT=production
9
+ #ADAPTER=thin
10
+ #CHILDPIDFILES=/var/run/chef/server.%s.pid
11
+ #SERVER_USER=chef
12
+ #SERVER_GROUP=chef
13
+ # Any additional chef-server options.
14
+ #OPTIONS=
@@ -0,0 +1,14 @@
1
+ # Configuration file for the chef-server-webui service
2
+
3
+ #CONFIG=/etc/chef/webui.rb
4
+ #PIDFILE=/var/run/chef/server-webui.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-server-webui
6
+ #LOGFILE=/var/log/chef/server-webui.log
7
+ #PORT=4040
8
+ #ENVIRONMENT=production
9
+ #ADAPTER=thin
10
+ #CHILDPIDFILES=/var/run/chef/server-webui.%s.pid
11
+ #SERVER_USER=chef
12
+ #SERVER_GROUP=chef
13
+ # Any additional chef-server-webui options.
14
+ #OPTIONS=
@@ -0,0 +1,8 @@
1
+ # Configuration file for the chef-solr service
2
+
3
+ #CONFIG=/etc/chef/solr.rb
4
+ #PIDFILE=/var/run/chef/solr.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-solr
6
+ #LOGFILE=/var/log/chef/solr.log
7
+ # Options for Java. Need to start with -j followed by options.
8
+ #OPTIONS="-j "
@@ -0,0 +1,7 @@
1
+ # Configuration file for the chef-solr-indexer service
2
+
3
+ #PIDFILE=/var/run/chef/solr-indexer.pid
4
+ #CONFIG=/etc/chef/solr-indexer.rb
5
+ #LOGFILE=/var/log/chef/solr-indexer.log
6
+ # Any additional chef-solr-indexer options.
7
+ #OPTIONS=
@@ -0,0 +1,40 @@
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
+
19
+ require 'chef/version'
20
+ require 'chef/nil_argument'
21
+ require 'chef/mash'
22
+ require 'chef/exceptions'
23
+ require 'chef/log'
24
+ require 'chef/config'
25
+ require 'chef/providers'
26
+ require 'chef/resources'
27
+ require 'chef/shell_out'
28
+
29
+ require 'chef/daemon'
30
+ require 'chef/webui_user'
31
+ require 'chef/openid_registration'
32
+
33
+ require 'chef/run_status'
34
+ require 'chef/handler'
35
+ require 'chef/handler/json_file'
36
+
37
+ require 'chef/monkey_patches/tempfile'
38
+ require 'chef/monkey_patches/dir'
39
+ require 'chef/monkey_patches/string'
40
+ require 'chef/monkey_patches/numeric'
@@ -0,0 +1,264 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Nuo Yan (<nuo@opscode.com>)
4
+ # Copyright:: Copyright (c) 2008 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/config'
21
+ require 'chef/mixin/params_validate'
22
+ require 'chef/mixin/from_file'
23
+ require 'chef/couchdb'
24
+ require 'chef/certificate'
25
+ require 'chef/index_queue'
26
+ require 'chef/mash'
27
+ require 'chef/json_compat'
28
+
29
+ class Chef
30
+ class ApiClient
31
+
32
+ include Chef::Mixin::FromFile
33
+ include Chef::Mixin::ParamsValidate
34
+ include Chef::IndexQueue::Indexable
35
+
36
+
37
+ DESIGN_DOCUMENT = {
38
+ "version" => 1,
39
+ "language" => "javascript",
40
+ "views" => {
41
+ "all" => {
42
+ "map" => <<-EOJS
43
+ function(doc) {
44
+ if (doc.chef_type == "client") {
45
+ emit(doc.name, doc);
46
+ }
47
+ }
48
+ EOJS
49
+ },
50
+ "all_id" => {
51
+ "map" => <<-EOJS
52
+ function(doc) {
53
+ if (doc.chef_type == "client") {
54
+ emit(doc.name, doc.name);
55
+ }
56
+ }
57
+ EOJS
58
+ }
59
+ }
60
+ }
61
+
62
+ attr_accessor :couchdb_rev, :couchdb_id, :couchdb
63
+
64
+ # Create a new Chef::ApiClient object.
65
+ def initialize(couchdb=nil)
66
+ @name = ''
67
+ @public_key = nil
68
+ @private_key = nil
69
+ @couchdb_rev = nil
70
+ @couchdb_id = nil
71
+ @admin = false
72
+ @couchdb = (couchdb || Chef::CouchDB.new)
73
+ end
74
+
75
+ # Gets or sets the client name.
76
+ #
77
+ # @params [Optional String] The name must be alpha-numeric plus - and _.
78
+ # @return [String] The current value of the name.
79
+ def name(arg=nil)
80
+ set_or_return(
81
+ :name,
82
+ arg,
83
+ :regex => /^[\-[:alnum:]_\.]+$/
84
+ )
85
+ end
86
+
87
+ # Gets or sets whether this client is an admin.
88
+ #
89
+ # @params [Optional True/False] Should be true or false - default is false.
90
+ # @return [True/False] The current value
91
+ def admin(arg=nil)
92
+ set_or_return(
93
+ :admin,
94
+ arg,
95
+ :kind_of => [ TrueClass, FalseClass ]
96
+ )
97
+ end
98
+
99
+ # Gets or sets the public key.
100
+ #
101
+ # @params [Optional String] The string representation of the public key.
102
+ # @return [String] The current value.
103
+ def public_key(arg=nil)
104
+ set_or_return(
105
+ :public_key,
106
+ arg,
107
+ :kind_of => String
108
+ )
109
+ end
110
+
111
+ # Gets or sets the private key.
112
+ #
113
+ # @params [Optional String] The string representation of the private key.
114
+ # @return [String] The current value.
115
+ def private_key(arg=nil)
116
+ set_or_return(
117
+ :private_key,
118
+ arg,
119
+ :kind_of => String
120
+ )
121
+ end
122
+
123
+ # Creates a new public/private key pair, and populates the public_key and
124
+ # private_key attributes.
125
+ #
126
+ # @return [True]
127
+ def create_keys
128
+ results = Chef::Certificate.gen_keypair(self.name)
129
+ self.public_key(results[0].to_s)
130
+ self.private_key(results[1].to_s)
131
+ true
132
+ end
133
+
134
+ # The hash representation of the object. Includes the name and public_key,
135
+ # but never the private key.
136
+ #
137
+ # @return [Hash]
138
+ def to_hash
139
+ result = {
140
+ "name" => @name,
141
+ "public_key" => @public_key,
142
+ "admin" => @admin,
143
+ 'json_class' => self.class.name,
144
+ "chef_type" => "client"
145
+ }
146
+ result["_rev"] = @couchdb_rev if @couchdb_rev
147
+ result
148
+ end
149
+
150
+ # The JSON representation of the object.
151
+ #
152
+ # @return [String] the JSON string.
153
+ def to_json(*a)
154
+ to_hash.to_json(*a)
155
+ end
156
+
157
+ def self.json_create(o)
158
+ client = Chef::ApiClient.new
159
+ client.name(o["name"] || o["clientname"])
160
+ client.public_key(o["public_key"])
161
+ client.admin(o["admin"])
162
+ client.couchdb_rev = o["_rev"]
163
+ client.couchdb_id = o["_id"]
164
+ client.index_id = client.couchdb_id
165
+ client
166
+ end
167
+
168
+ # List all the Chef::ApiClient objects in the CouchDB. If inflate is set
169
+ # to true, you will get the full list of all ApiClients, fully inflated.
170
+ def self.cdb_list(inflate=false, couchdb=nil)
171
+ rs = (couchdb || Chef::CouchDB.new).list("clients", inflate)
172
+ lookup = (inflate ? "value" : "key")
173
+ rs["rows"].collect { |r| r[lookup] }
174
+ end
175
+
176
+ def self.list(inflate=false)
177
+ if inflate
178
+ response = Hash.new
179
+ Chef::Search::Query.new.search(:client) do |n|
180
+ n = self.json_create(n) if n.instance_of?(Hash)
181
+ response[n.name] = n
182
+ end
183
+ response
184
+ else
185
+ Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("clients")
186
+ end
187
+ end
188
+
189
+ # Load a client by name from CouchDB
190
+ #
191
+ # @params [String] The name of the client to load
192
+ # @return [Chef::ApiClient] The resulting Chef::ApiClient object
193
+ def self.cdb_load(name, couchdb=nil)
194
+ (couchdb || Chef::CouchDB.new).load("client", name)
195
+ end
196
+
197
+ # Load a client by name via the API
198
+ def self.load(name)
199
+ response = Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("clients/#{name}")
200
+ if response.kind_of?(Chef::ApiClient)
201
+ response
202
+ else
203
+ client = Chef::ApiClient.new
204
+ client.name(response['clientname'])
205
+ client
206
+ end
207
+ end
208
+
209
+ # Remove this client from the CouchDB
210
+ #
211
+ # @params [String] The name of the client to delete
212
+ # @return [Chef::ApiClient] The last version of the object
213
+ def cdb_destroy
214
+ @couchdb.delete("client", @name, @couchdb_rev)
215
+ end
216
+
217
+ # Remove this client via the REST API
218
+ def destroy
219
+ Chef::REST.new(Chef::Config[:chef_server_url]).delete_rest("clients/#{@name}")
220
+ end
221
+
222
+ # Save this client to the CouchDB
223
+ def cdb_save
224
+ @couchdb_rev = @couchdb.store("client", @name, self)["rev"]
225
+ end
226
+
227
+ # Save this client via the REST API, returns a hash including the private key
228
+ def save(new_key=false, validation=false)
229
+ if validation
230
+ r = Chef::REST.new(Chef::Config[:chef_server_url], Chef::Config[:validation_client_name], Chef::Config[:validation_key])
231
+ else
232
+ r = Chef::REST.new(Chef::Config[:chef_server_url])
233
+ end
234
+ # First, try and create a new registration
235
+ begin
236
+ r.post_rest("clients", {:name => self.name, :admin => self.admin })
237
+ rescue Net::HTTPServerException => e
238
+ # If that fails, go ahead and try and update it
239
+ if e.response.code == "409"
240
+ r.put_rest("clients/#{name}", { :name => self.name, :admin => self.admin, :private_key => new_key })
241
+ else
242
+ raise e
243
+ end
244
+ end
245
+ end
246
+
247
+ # Create the client via the REST API
248
+ def create
249
+ Chef::REST.new(Chef::Config[:chef_server_url]).post_rest("clients", self)
250
+ end
251
+
252
+ # Set up our CouchDB design document
253
+ def self.create_design_document(couchdb=nil)
254
+ (couchdb ||= Chef::CouchDB.new).create_design_document("clients", DESIGN_DOCUMENT)
255
+ end
256
+
257
+ # As a string
258
+ def to_s
259
+ "client[#{@name}]"
260
+ end
261
+
262
+ end
263
+ end
264
+
@@ -0,0 +1,137 @@
1
+ #
2
+ # Author:: AJ Christensen (<aj@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/config'
19
+ require 'chef/exceptions'
20
+ require 'chef/log'
21
+ require 'mixlib/cli'
22
+
23
+ class Chef::Application
24
+ include Mixlib::CLI
25
+
26
+ def initialize
27
+ super
28
+
29
+ trap("TERM") do
30
+ Chef::Application.fatal!("SIGTERM received, stopping", 1)
31
+ end
32
+
33
+ trap("INT") do
34
+ Chef::Application.fatal!("SIGINT received, stopping", 2)
35
+ end
36
+
37
+ unless RUBY_PLATFORM =~ /mswin|mingw32|windows/
38
+ trap("QUIT") do
39
+ Chef::Log.info("SIGQUIT received, call stack:\n " + caller.join("\n "))
40
+ end
41
+
42
+ trap("HUP") do
43
+ Chef::Log.info("SIGHUP received, reconfiguring")
44
+ reconfigure
45
+ end
46
+ end
47
+
48
+ # Always switch to a readable directory. Keeps subsequent Dir.chdir() {}
49
+ # from failing due to permissions when launched as a less privileged user.
50
+ end
51
+
52
+ # Reconfigure the application. You'll want to override and super this method.
53
+ def reconfigure
54
+ configure_chef
55
+ configure_logging
56
+ end
57
+
58
+ # Get this party started
59
+ def run
60
+ reconfigure
61
+ setup_application
62
+ run_application
63
+ end
64
+
65
+ # Parse the configuration file
66
+ def configure_chef
67
+ parse_options
68
+
69
+ begin
70
+ case config[:config_file]
71
+ when /^(http|https):\/\//
72
+ Chef::REST.new("", nil, nil).fetch(config[:config_file]) { |f| apply_config(f.path) }
73
+ else
74
+ ::File::open(config[:config_file]) { |f| apply_config(f.path) }
75
+ end
76
+ rescue SocketError => error
77
+ Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}", 2)
78
+ rescue Exception => error
79
+ Chef::Log.warn("*****************************************")
80
+ Chef::Log.warn("Can not find config file: #{config[:config_file]}, using defaults.")
81
+ Chef::Log.warn("#{error.message}")
82
+ Chef::Log.warn("*****************************************")
83
+
84
+ Chef::Config.merge!(config)
85
+ end
86
+
87
+ end
88
+
89
+ # Initialize and configure the logger. If the configured log location is not
90
+ # STDOUT, but stdout is a TTY and we're not daemonizing, we set up a secondary
91
+ # logger with output to stdout. This way, we magically do the right thing when
92
+ # the user has configured logging to a file but they're running chef in the
93
+ # shell to debug something.
94
+ def configure_logging
95
+ Chef::Log.init(Chef::Config[:log_location])
96
+ if ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize])
97
+ stdout_logger = Logger.new(STDOUT)
98
+ STDOUT.sync = true
99
+ stdout_logger.formatter = Chef::Log.logger.formatter
100
+ Chef::Log.loggers << stdout_logger
101
+ end
102
+ Chef::Log.level = Chef::Config[:log_level]
103
+ end
104
+
105
+ # Called prior to starting the application, by the run method
106
+ def setup_application
107
+ raise Chef::Exceptions::Application, "#{self.to_s}: you must override setup_application"
108
+ end
109
+
110
+ # Actually run the application
111
+ def run_application
112
+ raise Chef::Exceptions::Application, "#{self.to_s}: you must override run_application"
113
+ end
114
+
115
+ private
116
+
117
+ def apply_config(config_file_path)
118
+ Chef::Config.from_file(config_file_path)
119
+ Chef::Config.merge!(config)
120
+ end
121
+
122
+
123
+ class << self
124
+ # Log a fatal error message to both STDERR and the Logger, exit the application
125
+ def fatal!(msg, err = -1)
126
+ STDERR.puts("FATAL: #{msg}")
127
+ Chef::Log.fatal(msg)
128
+ Process.exit err
129
+ end
130
+
131
+ def exit!(msg, err = -1)
132
+ Chef::Log.debug(msg)
133
+ Process.exit err
134
+ end
135
+ end
136
+
137
+ end