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,133 @@
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/provider/package'
20
+ require 'chef/mixin/command'
21
+ require 'chef/resource/package'
22
+ require 'singleton'
23
+
24
+ class Chef
25
+ class Provider
26
+ class Package
27
+ class Zypper < Chef::Provider::Package
28
+
29
+
30
+ def load_current_resource
31
+ @current_resource = Chef::Resource::Package.new(@new_resource.name)
32
+ @current_resource.package_name(@new_resource.package_name)
33
+
34
+ is_installed=false
35
+ is_out_of_date=false
36
+ version=''
37
+ oud_version=''
38
+ Chef::Log.debug("Checking zypper for #{@new_resource.package_name}")
39
+ status = popen4("zypper info #{@new_resource.package_name}") do |pid, stdin, stdout, stderr|
40
+ stdout.each do |line|
41
+ case line
42
+ when /^Version: (.+)$/
43
+ version = $1
44
+ Chef::Log.debug("zypper version=#{$1}")
45
+ when /^Installed: Yes$/
46
+ is_installed=true
47
+ Chef::Log.debug("zypper installed true")
48
+
49
+ when /^Installed: No$/
50
+ is_installed=false
51
+ Chef::Log.debug("zypper installed false")
52
+ when /^Status: out-of-date \(version (.+) installed\)$/
53
+ is_out_of_date=true
54
+ oud_version=$1
55
+ Chef::Log.debug("zypper out of date version=#{$1}")
56
+ end
57
+ end
58
+ end
59
+
60
+ if is_installed==false
61
+ @candidate_version=version
62
+ @current_resource.version(nil)
63
+ Chef::Log.debug("dentro installed false");
64
+ end
65
+
66
+ if is_installed==true
67
+ if is_out_of_date==true
68
+ @current_resource.version(oud_version)
69
+ @candidate_version=version
70
+ Chef::Log.debug("dentro installed outofdate");
71
+ else
72
+ @current_resource.version(version)
73
+ @candidate_version=version
74
+ Chef::Log.debug("dentro installed");
75
+ end
76
+ end
77
+
78
+
79
+ unless status.exitstatus == 0
80
+ raise Chef::Exceptions::Package, "zypper failed - #{status.inspect}!"
81
+ end
82
+
83
+
84
+ Chef::Log.debug("zypper current resource #{@current_resource}")
85
+ @current_resource
86
+ end
87
+
88
+ def install_package(name, version)
89
+ if version
90
+ run_command(
91
+ :command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
92
+ )
93
+ else
94
+ run_command(
95
+ :command => "zypper -n --no-gpg-checks install -l #{name}"
96
+ )
97
+ end
98
+ end
99
+
100
+ def upgrade_package(name, version)
101
+ if version
102
+ run_command(
103
+ :command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
104
+ )
105
+ else
106
+ run_command(
107
+ :command => "zypper -n --no-gpg-checks install -l #{name}"
108
+ )
109
+ end
110
+ end
111
+
112
+ def remove_package(name, version)
113
+ if version
114
+ run_command(
115
+ :command => "zypper -n --no-gpg-checks remove #{name}=#{version}"
116
+ )
117
+ else
118
+ run_command(
119
+ :command => "zypper -n --no-gpg-checks remove #{name}"
120
+ )
121
+ end
122
+
123
+
124
+ end
125
+
126
+ def purge_package(name, version)
127
+ remove_package(name, version)
128
+ end
129
+
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,138 @@
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/provider/file'
20
+ require 'chef/provider/directory'
21
+ require 'chef/resource/directory'
22
+ require 'chef/resource/remote_file'
23
+ require 'chef/platform'
24
+ require 'uri'
25
+ require 'tempfile'
26
+ require 'net/https'
27
+ require 'set'
28
+
29
+ class Chef
30
+ class Provider
31
+ class RemoteDirectory < Chef::Provider::Directory
32
+
33
+ def action_create
34
+ super
35
+ Chef::Log.debug("Doing a remote recursive directory transfer for #{@new_resource}")
36
+
37
+ files_to_purge = Set.new(
38
+ Dir.glob(::File.join(@new_resource.path, '**', '*'), ::File::FNM_DOTMATCH).select do |name|
39
+ name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/
40
+ end
41
+ )
42
+ files_to_transfer.each do |cookbook_file_relative_path|
43
+ create_cookbook_file(cookbook_file_relative_path)
44
+ files_to_purge.delete(::File.dirname(::File.join(@new_resource.path, cookbook_file_relative_path)))
45
+ files_to_purge.delete(::File.join(@new_resource.path, cookbook_file_relative_path))
46
+ end
47
+ purge_unmanaged_files(files_to_purge)
48
+ end
49
+
50
+ def action_create_if_missing
51
+ # if this action is called, ignore the existing overwrite flag
52
+ @new_resource.overwrite = false
53
+ action_create
54
+ end
55
+
56
+ protected
57
+
58
+ def purge_unmanaged_files(unmanaged_files)
59
+ if @new_resource.purge
60
+ unmanaged_files.sort.reverse.each do |f|
61
+ if ::File.directory?(f)
62
+ Chef::Log.debug("Removing directory #{f}")
63
+ Dir::rmdir(f)
64
+ else
65
+ Chef::Log.debug("Deleting file #{f}")
66
+ ::File.delete(f)
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ def files_to_transfer
73
+ cookbook = run_context.cookbook_collection[resource_cookbook]
74
+ files = cookbook.relative_filenames_in_preferred_directory(node, :files, @new_resource.source)
75
+ files.sort.reverse
76
+ end
77
+
78
+ def directory_root_in_cookbook_cache
79
+ @directory_root_in_cookbook_cache ||= begin
80
+ cookbook = run_context.cookbook_collection[resource_cookbook]
81
+ cookbook.preferred_filename_on_disk_location(node, :files, @new_resource.source, @new_resource.path)
82
+ end
83
+ end
84
+
85
+ # Determine the cookbook to get the file from. If new resource sets an
86
+ # explicit cookbook, use it, otherwise fall back to the implicit cookbook
87
+ # i.e., the cookbook the resource was declared in.
88
+ def resource_cookbook
89
+ @new_resource.cookbook || @new_resource.cookbook_name
90
+ end
91
+
92
+ def create_cookbook_file(cookbook_file_relative_path)
93
+ full_path = ::File.join(@new_resource.path, cookbook_file_relative_path)
94
+
95
+ ensure_directory_exists(::File.dirname(full_path))
96
+
97
+ file_to_fetch = cookbook_file_resource(full_path, cookbook_file_relative_path)
98
+ if @new_resource.overwrite
99
+ file_to_fetch.run_action(:create)
100
+ else
101
+ file_to_fetch.run_action(:create_if_missing)
102
+ end
103
+ @new_resource.updated_by_last_action(true) if file_to_fetch.updated?
104
+ end
105
+
106
+ def cookbook_file_resource(target_path, relative_source_path)
107
+ cookbook_file = Chef::Resource::CookbookFile.new(target_path, run_context)
108
+ cookbook_file.cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
109
+ cookbook_file.source(::File.join(@new_resource.source, relative_source_path))
110
+ cookbook_file.mode(@new_resource.files_mode) if @new_resource.files_mode
111
+ cookbook_file.group(@new_resource.files_group) if @new_resource.files_group
112
+ cookbook_file.owner(@new_resource.files_owner) if @new_resource.files_owner
113
+ cookbook_file.backup(@new_resource.files_backup) if @new_resource.files_backup
114
+
115
+ cookbook_file
116
+ end
117
+
118
+ def ensure_directory_exists(path)
119
+ unless ::File.directory?(path)
120
+ directory_to_create = resource_for_directory(path)
121
+ directory_to_create.run_action(:create)
122
+ @new_resource.updated_by_last_action(true) if directory_to_create.updated?
123
+ end
124
+ end
125
+
126
+ def resource_for_directory(path)
127
+ dir = Chef::Resource::Directory.new(path, run_context)
128
+ dir.cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
129
+ dir.mode(@new_resource.mode)
130
+ dir.group(@new_resource.group)
131
+ dir.owner(@new_resource.owner)
132
+ dir.recursive(true)
133
+ dir
134
+ end
135
+
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,119 @@
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/provider/file'
20
+ require 'chef/rest'
21
+ require 'uri'
22
+ require 'tempfile'
23
+ require 'net/https'
24
+
25
+ class Chef
26
+ class Provider
27
+ class RemoteFile < Chef::Provider::File
28
+
29
+ def load_current_resource
30
+ super
31
+ @current_resource.checksum(checksum(@current_resource.path)) if ::File.exist?(@current_resource.path)
32
+ end
33
+
34
+ def action_create
35
+ assert_enclosing_directory_exists!
36
+
37
+ Chef::Log.debug("Checking #{@new_resource} for changes")
38
+
39
+ if current_resource_matches_target_checksum?
40
+ Chef::Log.debug("File #{@new_resource} checksum matches target checksum (#{@new_resource.checksum}), not updating")
41
+ else
42
+ Chef::REST.new(@new_resource.source, nil, nil).fetch(@new_resource.source) do |raw_file|
43
+ if matches_current_checksum?(raw_file)
44
+ Chef::Log.debug "#{@new_resource}: Target and Source checksums are the same, taking no action"
45
+ else
46
+ backup_new_resource
47
+ Chef::Log.debug "copying remote file from origin #{raw_file.path} to destination #{@new_resource.path}"
48
+ FileUtils.cp raw_file.path, @new_resource.path
49
+ @new_resource.updated_by_last_action(true)
50
+ end
51
+ end
52
+ end
53
+ enforce_ownership_and_permissions
54
+
55
+ @new_resource.updated_by_last_action?
56
+ end
57
+
58
+ def action_create_if_missing
59
+ if ::File.exists?(@new_resource.path)
60
+ Chef::Log.debug("File #{@new_resource.path} exists, taking no action.")
61
+ else
62
+ action_create
63
+ end
64
+ end
65
+
66
+ def enforce_ownership_and_permissions
67
+ set_owner if @new_resource.owner
68
+ set_group if @new_resource.group
69
+ set_mode if @new_resource.mode
70
+ end
71
+
72
+ def current_resource_matches_target_checksum?
73
+ @new_resource.checksum && @current_resource.checksum && @current_resource.checksum =~ /^#{Regexp.escape(@new_resource.checksum)}/
74
+ end
75
+
76
+ def matches_current_checksum?(candidate_file)
77
+ Chef::Log.debug "#{@new_resource}: Checking for file existence of #{@new_resource.path}"
78
+ if ::File.exists?(@new_resource.path)
79
+ Chef::Log.debug "#{@new_resource}: File exists at #{@new_resource.path}"
80
+ @new_resource.checksum(checksum(candidate_file.path))
81
+ Chef::Log.debug "#{@new_resource}: Target checksum: #{@current_resource.checksum}"
82
+ Chef::Log.debug "#{@new_resource}: Source checksum: #{@new_resource.checksum}"
83
+
84
+ @new_resource.checksum == @current_resource.checksum
85
+ else
86
+ Chef::Log.info "#{@new_resource}: Creating #{@new_resource.path}"
87
+ false
88
+ end
89
+ end
90
+
91
+ def backup_new_resource
92
+ if ::File.exists?(@new_resource.path)
93
+ Chef::Log.debug "#{@new_resource}: checksum changed from #{@current_resource.checksum} to #{@new_resource.checksum}"
94
+ Chef::Log.info "#{@new_resource}: Updating #{@new_resource.path}"
95
+ backup @new_resource.path
96
+ end
97
+ end
98
+
99
+ def source_file(source, current_checksum, &block)
100
+ if absolute_uri?(source)
101
+ fetch_from_uri(source, &block)
102
+ elsif !Chef::Config[:solo]
103
+ fetch_from_chef_server(source, current_checksum, &block)
104
+ else
105
+ fetch_from_local_cookbook(source, &block)
106
+ end
107
+ end
108
+
109
+ private
110
+
111
+ def absolute_uri?(source)
112
+ URI.parse(source).absolute?
113
+ rescue URI::InvalidURIError
114
+ false
115
+ end
116
+
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,195 @@
1
+ #
2
+ # Author:: Bryan McLellan (btm@loftninjas.org), Jesse Nelson (spheromak@gmail.com)
3
+ # Copyright:: Copyright (c) 2009 Bryan McLellan
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/log'
20
+ require 'chef/mixin/command'
21
+ require 'chef/provider'
22
+ require 'ipaddr'
23
+
24
+ class Chef::Provider::Route < Chef::Provider
25
+ include Chef::Mixin::Command
26
+
27
+ attr_accessor :is_running
28
+
29
+ MASK = {'0.0.0.0' => '0',
30
+ '128.0.0.0' => '1',
31
+ '192.0.0.0' => '2',
32
+ '224.0.0.0' => '3',
33
+ '240.0.0.0' => '4',
34
+ '248.0.0.0' => '5',
35
+ '252.0.0.0' => '6',
36
+ '254.0.0.0' => '7',
37
+ '255.0.0.0' => '8',
38
+ '255.128.0.0' => '9',
39
+ '255.192.0.0' => '10',
40
+ '255.224.0.0' => '11',
41
+ '255.240.0.0' => '12',
42
+ '255.248.0.0' => '13',
43
+ '255.252.0.0' => '14',
44
+ '255.254.0.0' => '15',
45
+ '255.255.0.0' => '16',
46
+ '255.255.128.0' => '17',
47
+ '255.255.192.0' => '18',
48
+ '255.255.224.0' => '19',
49
+ '255.255.240.0' => '20',
50
+ '255.255.248.0' => '21',
51
+ '255.255.252.0' => '22',
52
+ '255.255.254.0' => '23',
53
+ '255.255.255.0' => '24',
54
+ '255.255.255.128' => '25',
55
+ '255.255.255.192' => '26',
56
+ '255.255.255.224' => '27',
57
+ '255.255.255.240' => '28',
58
+ '255.255.255.248' => '29',
59
+ '255.255.255.252' => '30',
60
+ '255.255.255.254' => '31',
61
+ '255.255.255.255' => '32' }
62
+
63
+ def load_current_resource
64
+ is_running = nil
65
+
66
+ Chef::Log.debug("Configuring Route #{@new_resource.name}")
67
+
68
+ # cidr or quad dot mask
69
+ if @new_resource.netmask
70
+ new_ip = IPAddr.new("#{@new_resource.target}/#{@new_resource.netmask}")
71
+ else
72
+ new_ip = IPAddr.new(@new_resource.target)
73
+ end
74
+
75
+ # pull routes from proc
76
+ if node[:os] == "linux"
77
+ route_file = ::File.open("/proc/net/route", "r")
78
+ while (line = route_file.gets)
79
+ # proc layout
80
+ iface,destination,gateway,flags,refcnt,use,metric,mask,mtu,window,irtt = line.split
81
+
82
+ # need to convert packed adresses int quad dot
83
+ # the addrs are reversed hex packed decimal addrs. so this unwraps them. tho you could
84
+ # do this without ipaddr using unpack. ipaddr has no htoa method.
85
+ #
86
+ destination = IPAddr.new(destination.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
87
+ gateway = IPAddr.new(gateway.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
88
+ mask = IPAddr.new(mask.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
89
+ Chef::Log.debug( "System has route: dest=#{destination} mask=#{mask} gw=#{gateway}")
90
+
91
+ # check if what were trying to configure is already there
92
+ # use an ipaddr object with ip/mask this way we can have
93
+ # a new resource be in cidr format (i don't feel like
94
+ # expanding bitmask by hand.
95
+ #
96
+ running_ip = IPAddr.new("#{destination}/#{mask}")
97
+ Chef::Log.debug( "new ip: #{new_ip.inspect} running ip: #{running_ip.inspect} ")
98
+ is_running = true if running_ip == new_ip
99
+ end
100
+ route_file.close
101
+ end
102
+ end
103
+
104
+ def action_add
105
+ # check to see if load_current_resource found the route
106
+ if is_running
107
+ Chef::Log.debug("Route #{@new_resource.name} already active ")
108
+ else
109
+ command = generate_command(:add)
110
+
111
+ Chef::Log.info("Adding route: #{command} ")
112
+ run_command( :command => command )
113
+ @new_resource.updated_by_last_action(true)
114
+ end
115
+
116
+ #for now we always write the file (ugly but its what it is)
117
+ generate_config
118
+ end
119
+
120
+ def action_delete
121
+ if is_running
122
+ command = generate_command(:delete)
123
+
124
+ Chef::Log.info("Removing route: #{command}")
125
+ run_command( :command => command )
126
+ @new_resource.updated_by_last_action(true)
127
+ else
128
+ Chef::Log.debug("Route #{@new_resource.name} does not exist")
129
+ end
130
+ end
131
+
132
+ def generate_config
133
+ conf = Hash.new
134
+ case node[:platform]
135
+ when ("centos" || "redhat" || "fedora")
136
+ # walk the collection
137
+ run_context.resource_collection.each do |resource|
138
+ if resource.is_a? Chef::Resource::Route
139
+ # default to eth0
140
+ if resource.device
141
+ dev = resource.device
142
+ else
143
+ dev = "eth0"
144
+ end
145
+
146
+ conf[dev] = String.new if conf[dev].nil?
147
+ if resource.action == :add
148
+ conf[dev] = config_file_contents(:add, :target => resource.target, :netmask => resource.netmask, :gateway => resource.gateway)
149
+ else
150
+ # need to do this for the case when the last route on an int
151
+ # is removed
152
+ conf[dev] = config_file_contents(:delete)
153
+ end
154
+ end
155
+ end
156
+ conf.each do |k, v|
157
+ network_file = ::File.new("/etc/sysconfig/network-scripts/route-#{k}", "w")
158
+ network_file.puts(conf[k])
159
+ Chef::Log.debug("writing route.#{k}\n#{conf[k]}")
160
+ network_file.close
161
+ end
162
+ end
163
+ end
164
+
165
+ def generate_command(action)
166
+ common_route_items = ''
167
+ common_route_items << "/#{MASK[@new_resource.netmask.to_s]}" if @new_resource.netmask
168
+ common_route_items << " via #{@new_resource.gateway} " if @new_resource.gateway
169
+
170
+ case action
171
+ when :add
172
+ command = "ip route replace #{@new_resource.target}"
173
+ command << common_route_items
174
+ command << " dev #{@new_resource.device} " if @new_resource.device
175
+ when :delete
176
+ command = "ip route delete #{@new_resource.target}"
177
+ command << common_route_items
178
+ end
179
+
180
+ return command
181
+ end
182
+
183
+ def config_file_contents(action, options={})
184
+ content = ''
185
+ case action
186
+ when :add
187
+ content << "#{options[:target]}"
188
+ content << "/#{options[:netmask]}" if options[:netmask]
189
+ content << " via #{options[:gateway]}" if options[:gateway]
190
+ content << "\n"
191
+ end
192
+
193
+ return content
194
+ end
195
+ end