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,127 @@
1
+ #
2
+ # Author:: Toomas Pelberg (<toomasp@gmx.net>)
3
+ # Copyright:: Copyright (c) 2010 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/provider/package'
19
+ require 'chef/mixin/command'
20
+ require 'chef/resource/package'
21
+
22
+ class Chef
23
+ class Provider
24
+ class Package
25
+ class Solaris < Chef::Provider::Package
26
+
27
+ # def initialize(*args)
28
+ # super
29
+ # @current_resource = Chef::Resource::Package.new(@new_resource.name)
30
+ # end
31
+
32
+ def load_current_resource
33
+ @current_resource = Chef::Resource::Package.new(@new_resource.name)
34
+ @current_resource.package_name(@new_resource.package_name)
35
+ @new_resource.version(nil)
36
+
37
+ if @new_resource.source
38
+ unless ::File.exists?(@new_resource.source)
39
+ raise Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
40
+ end
41
+
42
+ Chef::Log.debug("Checking pkg status for #{@new_resource.package_name}")
43
+ status = popen4("pkginfo -l -d #{@new_resource.source} #{@new_resource.package_name}") do |pid, stdin, stdout, stderr|
44
+ stdout.each do |line|
45
+ case line
46
+ when /VERSION:\s+(.+)/
47
+ @new_resource.version($1)
48
+ end
49
+ end
50
+ end
51
+ elsif Array(@new_resource.action).include?(:install)
52
+ raise Chef::Exceptions::Package, "Source for package #{@new_resource.name} required for action install"
53
+ end
54
+
55
+ Chef::Log.debug("Checking install state for #{@current_resource.package_name}")
56
+ status = popen4("pkginfo -l #{@current_resource.package_name}") do |pid, stdin, stdout, stderr|
57
+ stdout.each do |line|
58
+ case line
59
+ when /VERSION:\s+(.+)/
60
+ Chef::Log.debug("Package #{@current_resource.package_name} #{$1} is already installed")
61
+ @current_resource.version($1)
62
+ end
63
+ end
64
+ end
65
+
66
+ unless status.exitstatus == 0 || status.exitstatus == 1
67
+ raise Chef::Exceptions::Package, "pkginfo failed - #{status.inspect}!"
68
+ end
69
+
70
+ unless @current_resource.version.nil?
71
+ @current_resource.version(nil)
72
+ end
73
+
74
+ @current_resource
75
+ end
76
+
77
+ def candidate_version
78
+ return @candidate_version if @candidate_version
79
+ status = popen4("pkginfo -l -d #{@new_resource.source} #{new_resource.package_name}") do |pid, stdin, stdout, stderr|
80
+ stdout.each_line do |line|
81
+ case line
82
+ when /VERSION:\s+(.+)/
83
+ @candidate_version = $1
84
+ @new_resource.version($1)
85
+ Chef::Log.debug("candidate_version: setting install candidate version to #{@candidate_version}")
86
+ end
87
+ end
88
+ end
89
+ unless status.exitstatus == 0
90
+ raise Chef::Exceptions::Package, "pkginfo -l -d #{@new_resource.source} - #{status.inspect}!"
91
+ end
92
+ @candidate_version
93
+ end
94
+
95
+ def install_package(name, version)
96
+ Chef::Log.debug("Options: #{@new_resource.options}")
97
+ if @new_resource.options.nil?
98
+ run_command_with_systems_locale(
99
+ :command => "pkgadd -n -d #{@new_resource.source} all"
100
+ )
101
+ Chef::Log.debug("Installed package: #{@new_resource.package_name} #{@new_resource.version} from: #{@new_resource.source}")
102
+ else
103
+ run_command_with_systems_locale(
104
+ :command => "pkgadd -n#{expand_options(@new_resource.options)} -d #{@new_resource.source} all"
105
+ )
106
+ Chef::Log.debug("Installed package: #{@new_resource.package_name} #{@new_resource.version} from: #{@new_resource.source}")
107
+ end
108
+ end
109
+
110
+ def remove_package(name, version)
111
+ if @new_resource.options.nil?
112
+ run_command_with_systems_locale(
113
+ :command => "pkgrm -n #{name}"
114
+ )
115
+ Chef::Log.debug("Removed package #{@new_resource.package_name} #{@new_resource.version}")
116
+ else
117
+ run_command_with_systems_locale(
118
+ :command => "pkgrm -n#{expand_options(@new_resource.options)} #{name}"
119
+ )
120
+ Chef::Log.debug("Removed package #{@new_resource.package_name} #{@new_resource.version}")
121
+ end
122
+ end
123
+
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,128 @@
1
+ #
2
+ # Author:: Matthew Kent (<mkent@magoazul.com>)
3
+ # Copyright:: Copyright (c) 2009 Matthew Kent
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
+ # yum-dump.py
20
+ # Inspired by yumhelper.py by David Lutterkort
21
+ #
22
+ # Produce a list of installed and available packages using yum and dump the
23
+ # result to stdout.
24
+ #
25
+ # This invokes yum just as the command line would which makes it subject to
26
+ # all the caching related configuration paramaters in yum.conf.
27
+ #
28
+ # Can be run as non root, but that won't update the cache.
29
+
30
+ import os
31
+ import sys
32
+ import time
33
+ import yum
34
+
35
+ from yum import Errors
36
+
37
+ PIDFILE='/var/run/yum.pid'
38
+
39
+ # Seconds to wait for exclusive access to yum
40
+ lock_timeout = 10
41
+
42
+ failure = False
43
+
44
+ # Can't do try: except: finally: in python 2.4 it seems, hence this fun.
45
+ try:
46
+ try:
47
+ y = yum.YumBase()
48
+ try:
49
+ # Only want our output
50
+ y.doConfigSetup(errorlevel=0,debuglevel=0)
51
+ except:
52
+ # but of course, yum on even moderately old
53
+ # redhat/centosen doesn't know how to do logging properly
54
+ # so we duck punch our way to victory
55
+ def __log(a,b): pass
56
+ y.doConfigSetup()
57
+ y.log = __log
58
+ y.errorlog = __log
59
+
60
+ # Yum assumes it can update the cache directory. Disable this for non root
61
+ # users.
62
+ y.conf.cache = os.geteuid() != 0
63
+
64
+ # Override any setting in yum.conf - we only care about the newest
65
+ y.conf.showdupesfromrepos = False
66
+
67
+ # Spin up to lock_timeout.
68
+ countdown = lock_timeout
69
+ while True:
70
+ try:
71
+ y.doLock(PIDFILE)
72
+ except Errors.LockError, e:
73
+ time.sleep(1)
74
+ countdown -= 1
75
+ if countdown == 0:
76
+ print >> sys.stderr, "Error! Couldn't obtain an exclusive yum lock in %d seconds. Giving up." % lock_timeout
77
+ failure = True
78
+ sys.exit(1)
79
+ else:
80
+ break
81
+
82
+ y.doTsSetup()
83
+ y.doRpmDBSetup()
84
+
85
+ try:
86
+ db = y.doPackageLists('all')
87
+ except AttributeError:
88
+ # some people claim that testing for yum.__version__ should be
89
+ # enough to see if this is required, but I say they're liars.
90
+ # the yum on 4.8 at least understands yum.__version__ but still
91
+ # needs to get its repos and sacks set up manually.
92
+ # Thus, we just try it, fail, and then try again. WCPGW?
93
+ y.doRepoSetup()
94
+ y.doSackSetup()
95
+ db = y.doPackageLists('all')
96
+
97
+ y.closeRpmDB()
98
+
99
+ except Errors.YumBaseError, e:
100
+ print >> sys.stderr, "Error! %s" % e
101
+ failure = True
102
+ sys.exit(1)
103
+
104
+ # Ensure we clear the lock.
105
+ finally:
106
+ try:
107
+ y.doUnlock(PIDFILE)
108
+ # Keep Unlock from raising a second exception as it does with a yum.conf
109
+ # config error.
110
+ except Errors.YumBaseError:
111
+ if failure == False:
112
+ print >> sys.stderr, "Error! %s" % e
113
+ sys.exit(1)
114
+
115
+ for pkg in db.installed:
116
+ print '%s,installed,%s,%s,%s,%s' % ( pkg.name,
117
+ pkg.epoch,
118
+ pkg.version,
119
+ pkg.release,
120
+ pkg.arch )
121
+ for pkg in db.available:
122
+ print '%s,available,%s,%s,%s,%s' % ( pkg.name,
123
+ pkg.epoch,
124
+ pkg.version,
125
+ pkg.release,
126
+ pkg.arch )
127
+
128
+ sys.exit(0)
@@ -0,0 +1,261 @@
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 Yum < Chef::Provider::Package
28
+
29
+ class YumCache
30
+ include Chef::Mixin::Command
31
+ include Singleton
32
+
33
+ def initialize
34
+ load_data
35
+ end
36
+
37
+ def stale?
38
+ interval = Chef::Config[:interval].to_f
39
+
40
+ # run once mode
41
+ if interval == 0
42
+ return false
43
+ elsif (Time.now - @updated_at) > interval
44
+ return true
45
+ end
46
+
47
+ false
48
+ end
49
+
50
+ def refresh
51
+ if @data.empty?
52
+ reload
53
+ elsif stale?
54
+ reload
55
+ end
56
+ end
57
+
58
+ def load_data
59
+ @data = Hash.new
60
+ error = String.new
61
+
62
+ helper = ::File.join(::File.dirname(__FILE__), 'yum-dump.py')
63
+ status = popen4("python #{helper}", :waitlast => true) do |pid, stdin, stdout, stderr|
64
+ stdout.each do |line|
65
+ line.chomp!
66
+ name, type, epoch, version, release, arch = line.split(',')
67
+ type_sym = type.to_sym
68
+ if !@data.has_key?(name)
69
+ @data[name] = Hash.new
70
+ end
71
+ if !@data[name].has_key?(type_sym)
72
+ @data[name][type_sym] = Hash.new
73
+ end
74
+ @data[name][type_sym][arch] = { :epoch => epoch, :version => version,
75
+ :release => release }
76
+ end
77
+
78
+ error = stderr.readlines
79
+ end
80
+
81
+ unless status.exitstatus == 0
82
+ raise Chef::Exceptions::Package, "yum failed - #{status.inspect} - returns: #{error}"
83
+ end
84
+
85
+ @updated_at = Time.now
86
+ end
87
+ alias :reload :load_data
88
+
89
+ def version(package_name, type, arch)
90
+ if (x = @data[package_name])
91
+ if (y = x[type])
92
+ if arch
93
+ if (z = y[arch])
94
+ return "#{z[:version]}-#{z[:release]}"
95
+ end
96
+ else
97
+ # no arch specified - take the first match
98
+ z = y.to_a[0][1]
99
+ return "#{z[:version]}-#{z[:release]}"
100
+ end
101
+ end
102
+ end
103
+
104
+ nil
105
+ end
106
+
107
+ def version_available?(package_name, desired_version, arch)
108
+ if (package_data = @data[package_name])
109
+ if (available_versions = package_data[:available])
110
+ if arch
111
+ # arch gets passed like ".x86_64"
112
+ matching_versions = [ available_versions[arch.sub(/^./, '')]]
113
+ else
114
+ matching_versions = available_versions.values
115
+ end
116
+
117
+ if matching_versions.nil?
118
+ if arch.empty?
119
+ arch_msg = ""
120
+ else
121
+ arch_msg = "with arch #{arch.sub(/^./, '')} "
122
+ end
123
+
124
+ raise ArgumentError, "#{package_name}: Found no available versions #{arch_msg}to match"
125
+ end
126
+
127
+ # Expect [ { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" } ] ???
128
+ matching_versions.each do |ver|
129
+ Chef::Log.debug("#{package_name}: trying to match #{desired_version} to version #{ver[:version]} and release #{ver[:release]}")
130
+ if (desired_version == "#{ver[:version]}-#{ver[:release]}")
131
+ return true
132
+ end
133
+ end
134
+ end
135
+ end
136
+
137
+ nil
138
+ end
139
+
140
+ def installed_version(package_name, arch)
141
+ version(package_name, :installed, arch)
142
+ end
143
+
144
+ def candidate_version(package_name, arch)
145
+ version(package_name, :available, arch)
146
+ end
147
+
148
+ def flush
149
+ @data.clear
150
+ end
151
+ end
152
+
153
+ def initialize(new_resource, run_context)
154
+ super
155
+ @yum = YumCache.instance
156
+ end
157
+
158
+ def arch
159
+ if @new_resource.respond_to?("arch")
160
+ @new_resource.arch
161
+ else
162
+ nil
163
+ end
164
+ end
165
+
166
+ def yum_arch
167
+ arch ? ".#{arch}" : nil
168
+ end
169
+
170
+ def load_current_resource
171
+ @current_resource = Chef::Resource::Package.new(@new_resource.name)
172
+ @current_resource.package_name(@new_resource.package_name)
173
+
174
+ if @new_resource.source
175
+ unless ::File.exists?(@new_resource.source)
176
+ raise Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
177
+ end
178
+
179
+ Chef::Log.debug("Checking rpm status for #{@new_resource.package_name}")
180
+ status = popen4("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@new_resource.source}") do |pid, stdin, stdout, stderr|
181
+ stdout.each do |line|
182
+ case line
183
+ when /([\w\d_.-]+)\s([\w\d_.-]+)/
184
+ @current_resource.package_name($1)
185
+ @new_resource.version($2)
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ Chef::Log.debug("Checking yum info for #{@new_resource.package_name}#{yum_arch}")
192
+
193
+ @yum.refresh
194
+
195
+ installed_version = @yum.installed_version(@new_resource.package_name, arch)
196
+ @candidate_version = @yum.candidate_version(@new_resource.package_name, arch)
197
+
198
+ @current_resource.version(installed_version)
199
+ if candidate_version
200
+ @candidate_version = candidate_version
201
+ else
202
+ @candidate_version = installed_version
203
+ end
204
+ Chef::Log.debug("#{@current_resource.name}: Installed version: #{installed_version} Candidate version: #{candidate_version}")
205
+
206
+ @current_resource
207
+ end
208
+
209
+ def install_package(name, version)
210
+ if @new_resource.source
211
+ run_command_with_systems_locale(
212
+ :command => "yum -d0 -e0 -y #{@new_resource.options} localinstall #{@new_resource.source}"
213
+ )
214
+ else
215
+ # Work around yum not exiting with an error if a package doesn't exist for CHEF-2062
216
+ if @yum.version_available?(name, version, yum_arch)
217
+ run_command_with_systems_locale(
218
+ :command => "yum -d0 -e0 -y #{@new_resource.options} install #{name}-#{version}#{yum_arch}"
219
+ )
220
+ else
221
+ raise ArgumentError, "#{@new_resource.name}: Version #{version} of #{name} not found. Did you specify both version and release? (version-release, e.g. 1.84-10.fc6)"
222
+ end
223
+ end
224
+ @yum.flush
225
+ end
226
+
227
+ def upgrade_package(name, version)
228
+ # If we're not given a version, running update is the correct
229
+ # option. If we are, then running install_package is right.
230
+ unless version
231
+ run_command_with_systems_locale(
232
+ :command => "yum -d0 -e0 -y #{@new_resource.options} update #{name}#{yum_arch}"
233
+ )
234
+ @yum.flush
235
+ else
236
+ install_package(name, version)
237
+ end
238
+ end
239
+
240
+ def remove_package(name, version)
241
+ if version
242
+ run_command_with_systems_locale(
243
+ :command => "yum -d0 -e0 -y #{@new_resource.options} remove #{name}-#{version}#{yum_arch}"
244
+ )
245
+ else
246
+ run_command_with_systems_locale(
247
+ :command => "yum -d0 -e0 -y #{@new_resource.options} remove #{name}#{yum_arch}"
248
+ )
249
+ end
250
+
251
+ @yum.flush
252
+ end
253
+
254
+ def purge_package(name, version)
255
+ remove_package(name, version)
256
+ end
257
+
258
+ end
259
+ end
260
+ end
261
+ end