tylerrick-chef 0.10.8

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 (450) 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-expander.conf +8 -0
  10. data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
  11. data/distro/arch/etc/conf.d/chef-server.conf +10 -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-expander +78 -0
  15. data/distro/arch/etc/rc.d/chef-server +78 -0
  16. data/distro/arch/etc/rc.d/chef-server-webui +78 -0
  17. data/distro/arch/etc/rc.d/chef-solr +78 -0
  18. data/distro/common/html/chef-client.8.html +146 -0
  19. data/distro/common/html/chef-expander.8.html +164 -0
  20. data/distro/common/html/chef-expanderctl.8.html +146 -0
  21. data/distro/common/html/chef-server-webui.8.html +185 -0
  22. data/distro/common/html/chef-server.8.html +182 -0
  23. data/distro/common/html/chef-solo.8.html +191 -0
  24. data/distro/common/html/chef-solr.8.html +165 -0
  25. data/distro/common/html/knife-bootstrap.1.html +243 -0
  26. data/distro/common/html/knife-client.1.html +219 -0
  27. data/distro/common/html/knife-configure.1.html +170 -0
  28. data/distro/common/html/knife-cookbook-site.1.html +241 -0
  29. data/distro/common/html/knife-cookbook.1.html +384 -0
  30. data/distro/common/html/knife-data-bag.1.html +234 -0
  31. data/distro/common/html/knife-environment.1.html +267 -0
  32. data/distro/common/html/knife-exec.1.html +134 -0
  33. data/distro/common/html/knife-index.1.html +125 -0
  34. data/distro/common/html/knife-node.1.html +250 -0
  35. data/distro/common/html/knife-recipe.1.html +92 -0
  36. data/distro/common/html/knife-role.1.html +200 -0
  37. data/distro/common/html/knife-search.1.html +288 -0
  38. data/distro/common/html/knife-ssh.1.html +157 -0
  39. data/distro/common/html/knife-status.1.html +128 -0
  40. data/distro/common/html/knife-tag.1.html +137 -0
  41. data/distro/common/html/knife.1.html +321 -0
  42. data/distro/common/html/shef.1.html +283 -0
  43. data/distro/common/man/man1/knife-bootstrap.1 +197 -0
  44. data/distro/common/man/man1/knife-client.1 +99 -0
  45. data/distro/common/man/man1/knife-configure.1 +88 -0
  46. data/distro/common/man/man1/knife-cookbook-site.1 +145 -0
  47. data/distro/common/man/man1/knife-cookbook.1 +345 -0
  48. data/distro/common/man/man1/knife-data-bag.1 +130 -0
  49. data/distro/common/man/man1/knife-environment.1 +178 -0
  50. data/distro/common/man/man1/knife-exec.1 +46 -0
  51. data/distro/common/man/man1/knife-index.1 +29 -0
  52. data/distro/common/man/man1/knife-node.1 +134 -0
  53. data/distro/common/man/man1/knife-role.1 +88 -0
  54. data/distro/common/man/man1/knife-search.1 +280 -0
  55. data/distro/common/man/man1/knife-ssh.1 +83 -0
  56. data/distro/common/man/man1/knife-status.1 +29 -0
  57. data/distro/common/man/man1/knife-tag.1 +43 -0
  58. data/distro/common/man/man1/knife.1 +292 -0
  59. data/distro/common/man/man1/shef.1 +256 -0
  60. data/distro/common/man/man8/chef-client.8 +104 -0
  61. data/distro/common/man/man8/chef-expander.8 +97 -0
  62. data/distro/common/man/man8/chef-expanderctl.8 +62 -0
  63. data/distro/common/man/man8/chef-server-webui.8 +155 -0
  64. data/distro/common/man/man8/chef-server.8 +147 -0
  65. data/distro/common/man/man8/chef-solo.8 +158 -0
  66. data/distro/common/man/man8/chef-solr.8 +122 -0
  67. data/distro/common/markdown/README +3 -0
  68. data/distro/common/markdown/man1/knife-bootstrap.mkd +142 -0
  69. data/distro/common/markdown/man1/knife-client.mkd +103 -0
  70. data/distro/common/markdown/man1/knife-configure.mkd +70 -0
  71. data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -0
  72. data/distro/common/markdown/man1/knife-cookbook.mkd +263 -0
  73. data/distro/common/markdown/man1/knife-data-bag.mkd +117 -0
  74. data/distro/common/markdown/man1/knife-environment.mkd +151 -0
  75. data/distro/common/markdown/man1/knife-exec.mkd +37 -0
  76. data/distro/common/markdown/man1/knife-index.mkd +30 -0
  77. data/distro/common/markdown/man1/knife-node.mkd +130 -0
  78. data/distro/common/markdown/man1/knife-role.mkd +85 -0
  79. data/distro/common/markdown/man1/knife-search.mkd +180 -0
  80. data/distro/common/markdown/man1/knife-ssh.mkd +72 -0
  81. data/distro/common/markdown/man1/knife-status.mkd +36 -0
  82. data/distro/common/markdown/man1/knife-tag.mkd +39 -0
  83. data/distro/common/markdown/man1/knife.mkd +220 -0
  84. data/distro/common/markdown/man1/shef.mkd +189 -0
  85. data/distro/common/markdown/man8/chef-client.mkd +75 -0
  86. data/distro/common/markdown/man8/chef-expander.mkd +82 -0
  87. data/distro/common/markdown/man8/chef-expanderctl.mkd +58 -0
  88. data/distro/common/markdown/man8/chef-server-webui.mkd +121 -0
  89. data/distro/common/markdown/man8/chef-server.mkd +121 -0
  90. data/distro/common/markdown/man8/chef-solo.mkd +107 -0
  91. data/distro/common/markdown/man8/chef-solr.mkd +89 -0
  92. data/distro/debian/etc/default/chef-client +4 -0
  93. data/distro/debian/etc/default/chef-expander +8 -0
  94. data/distro/debian/etc/default/chef-server +9 -0
  95. data/distro/debian/etc/default/chef-server-webui +9 -0
  96. data/distro/debian/etc/default/chef-solr +8 -0
  97. data/distro/debian/etc/init.d/chef-client +185 -0
  98. data/distro/debian/etc/init.d/chef-expander +176 -0
  99. data/distro/debian/etc/init.d/chef-server +122 -0
  100. data/distro/debian/etc/init.d/chef-server-webui +123 -0
  101. data/distro/debian/etc/init.d/chef-solr +176 -0
  102. data/distro/debian/etc/init/chef-client.conf +17 -0
  103. data/distro/debian/etc/init/chef-expander.conf +17 -0
  104. data/distro/debian/etc/init/chef-server-webui.conf +17 -0
  105. data/distro/debian/etc/init/chef-server.conf +17 -0
  106. data/distro/debian/etc/init/chef-solr.conf +17 -0
  107. data/distro/redhat/etc/init.d/chef-client +110 -0
  108. data/distro/redhat/etc/init.d/chef-expander +104 -0
  109. data/distro/redhat/etc/init.d/chef-server +112 -0
  110. data/distro/redhat/etc/init.d/chef-server-webui +112 -0
  111. data/distro/redhat/etc/init.d/chef-solr +104 -0
  112. data/distro/redhat/etc/logrotate.d/chef-client +8 -0
  113. data/distro/redhat/etc/logrotate.d/chef-expander +8 -0
  114. data/distro/redhat/etc/logrotate.d/chef-server +8 -0
  115. data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
  116. data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
  117. data/distro/redhat/etc/sysconfig/chef-client +15 -0
  118. data/distro/redhat/etc/sysconfig/chef-expander +7 -0
  119. data/distro/redhat/etc/sysconfig/chef-server +14 -0
  120. data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
  121. data/distro/redhat/etc/sysconfig/chef-solr +8 -0
  122. data/lib/chef.rb +41 -0
  123. data/lib/chef/api_client.rb +271 -0
  124. data/lib/chef/application.rb +152 -0
  125. data/lib/chef/application/agent.rb +18 -0
  126. data/lib/chef/application/client.rb +285 -0
  127. data/lib/chef/application/knife.rb +188 -0
  128. data/lib/chef/application/solo.rb +218 -0
  129. data/lib/chef/applications.rb +4 -0
  130. data/lib/chef/certificate.rb +194 -0
  131. data/lib/chef/checksum.rb +167 -0
  132. data/lib/chef/checksum/storage.rb +18 -0
  133. data/lib/chef/checksum/storage/filesystem.rb +56 -0
  134. data/lib/chef/checksum_cache.rb +189 -0
  135. data/lib/chef/client.rb +366 -0
  136. data/lib/chef/config.rb +248 -0
  137. data/lib/chef/cookbook/chefignore.rb +66 -0
  138. data/lib/chef/cookbook/cookbook_collection.rb +45 -0
  139. data/lib/chef/cookbook/cookbook_version_loader.rb +173 -0
  140. data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
  141. data/lib/chef/cookbook/file_vendor.rb +48 -0
  142. data/lib/chef/cookbook/metadata.rb +629 -0
  143. data/lib/chef/cookbook/remote_file_vendor.rb +88 -0
  144. data/lib/chef/cookbook/syntax_check.rb +136 -0
  145. data/lib/chef/cookbook_loader.rb +121 -0
  146. data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
  147. data/lib/chef/cookbook_uploader.rb +154 -0
  148. data/lib/chef/cookbook_version.rb +1096 -0
  149. data/lib/chef/cookbook_version_selector.rb +168 -0
  150. data/lib/chef/couchdb.rb +246 -0
  151. data/lib/chef/daemon.rb +172 -0
  152. data/lib/chef/data_bag.rb +235 -0
  153. data/lib/chef/data_bag_item.rb +273 -0
  154. data/lib/chef/encrypted_data_bag_item.rb +139 -0
  155. data/lib/chef/environment.rb +455 -0
  156. data/lib/chef/exceptions.rb +154 -0
  157. data/lib/chef/file_access_control.rb +144 -0
  158. data/lib/chef/file_cache.rb +218 -0
  159. data/lib/chef/handler.rb +227 -0
  160. data/lib/chef/handler/error_report.rb +33 -0
  161. data/lib/chef/handler/json_file.rb +58 -0
  162. data/lib/chef/index_queue.rb +29 -0
  163. data/lib/chef/index_queue/amqp_client.rb +116 -0
  164. data/lib/chef/index_queue/consumer.rb +76 -0
  165. data/lib/chef/index_queue/indexable.rb +109 -0
  166. data/lib/chef/json_compat.rb +52 -0
  167. data/lib/chef/knife.rb +520 -0
  168. data/lib/chef/knife/bootstrap.rb +207 -0
  169. data/lib/chef/knife/bootstrap/archlinux-gems.erb +60 -0
  170. data/lib/chef/knife/bootstrap/centos5-gems.erb +56 -0
  171. data/lib/chef/knife/bootstrap/fedora13-gems.erb +43 -0
  172. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +49 -0
  173. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +50 -0
  174. data/lib/chef/knife/client_bulk_delete.rb +65 -0
  175. data/lib/chef/knife/client_create.rb +79 -0
  176. data/lib/chef/knife/client_delete.rb +46 -0
  177. data/lib/chef/knife/client_edit.rb +45 -0
  178. data/lib/chef/knife/client_list.rb +42 -0
  179. data/lib/chef/knife/client_reregister.rb +58 -0
  180. data/lib/chef/knife/client_show.rb +52 -0
  181. data/lib/chef/knife/configure.rb +149 -0
  182. data/lib/chef/knife/configure_client.rb +50 -0
  183. data/lib/chef/knife/cookbook_bulk_delete.rb +72 -0
  184. data/lib/chef/knife/cookbook_create.rb +274 -0
  185. data/lib/chef/knife/cookbook_delete.rb +151 -0
  186. data/lib/chef/knife/cookbook_download.rb +137 -0
  187. data/lib/chef/knife/cookbook_list.rb +47 -0
  188. data/lib/chef/knife/cookbook_metadata.rb +107 -0
  189. data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
  190. data/lib/chef/knife/cookbook_show.rb +102 -0
  191. data/lib/chef/knife/cookbook_site_download.rb +70 -0
  192. data/lib/chef/knife/cookbook_site_install.rb +148 -0
  193. data/lib/chef/knife/cookbook_site_list.rb +62 -0
  194. data/lib/chef/knife/cookbook_site_search.rb +51 -0
  195. data/lib/chef/knife/cookbook_site_share.rb +114 -0
  196. data/lib/chef/knife/cookbook_site_show.rb +57 -0
  197. data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
  198. data/lib/chef/knife/cookbook_site_vendor.rb +46 -0
  199. data/lib/chef/knife/cookbook_test.rb +93 -0
  200. data/lib/chef/knife/cookbook_upload.rb +240 -0
  201. data/lib/chef/knife/core/bootstrap_context.rb +100 -0
  202. data/lib/chef/knife/core/cookbook_scm_repo.rb +148 -0
  203. data/lib/chef/knife/core/generic_presenter.rb +191 -0
  204. data/lib/chef/knife/core/node_editor.rb +127 -0
  205. data/lib/chef/knife/core/node_presenter.rb +136 -0
  206. data/lib/chef/knife/core/object_loader.rb +75 -0
  207. data/lib/chef/knife/core/subcommand_loader.rb +112 -0
  208. data/lib/chef/knife/core/text_formatter.rb +100 -0
  209. data/lib/chef/knife/core/ui.rb +216 -0
  210. data/lib/chef/knife/data_bag_create.rb +93 -0
  211. data/lib/chef/knife/data_bag_delete.rb +51 -0
  212. data/lib/chef/knife/data_bag_edit.rb +94 -0
  213. data/lib/chef/knife/data_bag_from_file.rb +87 -0
  214. data/lib/chef/knife/data_bag_list.rb +46 -0
  215. data/lib/chef/knife/data_bag_show.rb +81 -0
  216. data/lib/chef/knife/environment_create.rb +53 -0
  217. data/lib/chef/knife/environment_delete.rb +45 -0
  218. data/lib/chef/knife/environment_edit.rb +45 -0
  219. data/lib/chef/knife/environment_from_file.rb +50 -0
  220. data/lib/chef/knife/environment_list.rb +42 -0
  221. data/lib/chef/knife/environment_show.rb +46 -0
  222. data/lib/chef/knife/exec.rb +51 -0
  223. data/lib/chef/knife/help.rb +103 -0
  224. data/lib/chef/knife/help_topics.rb +4 -0
  225. data/lib/chef/knife/index_rebuild.rb +50 -0
  226. data/lib/chef/knife/node_bulk_delete.rb +80 -0
  227. data/lib/chef/knife/node_create.rb +50 -0
  228. data/lib/chef/knife/node_delete.rb +47 -0
  229. data/lib/chef/knife/node_edit.rb +72 -0
  230. data/lib/chef/knife/node_from_file.rb +50 -0
  231. data/lib/chef/knife/node_list.rb +46 -0
  232. data/lib/chef/knife/node_run_list_add.rb +67 -0
  233. data/lib/chef/knife/node_run_list_remove.rb +48 -0
  234. data/lib/chef/knife/node_show.rb +73 -0
  235. data/lib/chef/knife/recipe_list.rb +32 -0
  236. data/lib/chef/knife/role_bulk_delete.rb +70 -0
  237. data/lib/chef/knife/role_create.rb +55 -0
  238. data/lib/chef/knife/role_delete.rb +47 -0
  239. data/lib/chef/knife/role_edit.rb +48 -0
  240. data/lib/chef/knife/role_from_file.rb +56 -0
  241. data/lib/chef/knife/role_list.rb +43 -0
  242. data/lib/chef/knife/role_show.rb +54 -0
  243. data/lib/chef/knife/search.rb +141 -0
  244. data/lib/chef/knife/ssh.rb +367 -0
  245. data/lib/chef/knife/status.rb +104 -0
  246. data/lib/chef/knife/tag_create.rb +52 -0
  247. data/lib/chef/knife/tag_delete.rb +60 -0
  248. data/lib/chef/knife/tag_list.rb +47 -0
  249. data/lib/chef/log.rb +39 -0
  250. data/lib/chef/mash.rb +211 -0
  251. data/lib/chef/mixin/check_helper.rb +31 -0
  252. data/lib/chef/mixin/checksum.rb +32 -0
  253. data/lib/chef/mixin/command.rb +163 -0
  254. data/lib/chef/mixin/command/unix.rb +215 -0
  255. data/lib/chef/mixin/command/windows.rb +76 -0
  256. data/lib/chef/mixin/convert_to_class_name.rb +63 -0
  257. data/lib/chef/mixin/create_path.rb +57 -0
  258. data/lib/chef/mixin/deep_merge.rb +225 -0
  259. data/lib/chef/mixin/deprecation.rb +65 -0
  260. data/lib/chef/mixin/from_file.rb +50 -0
  261. data/lib/chef/mixin/get_source_from_package.rb +42 -0
  262. data/lib/chef/mixin/language.rb +163 -0
  263. data/lib/chef/mixin/language_include_attribute.rb +61 -0
  264. data/lib/chef/mixin/language_include_recipe.rb +52 -0
  265. data/lib/chef/mixin/params_validate.rb +225 -0
  266. data/lib/chef/mixin/recipe_definition_dsl_core.rb +78 -0
  267. data/lib/chef/mixin/shell_out.rb +41 -0
  268. data/lib/chef/mixin/template.rb +95 -0
  269. data/lib/chef/mixin/xml_escape.rb +140 -0
  270. data/lib/chef/mixins.rb +15 -0
  271. data/lib/chef/monkey_patches/dir.rb +36 -0
  272. data/lib/chef/monkey_patches/numeric.rb +15 -0
  273. data/lib/chef/monkey_patches/object.rb +9 -0
  274. data/lib/chef/monkey_patches/regexp.rb +34 -0
  275. data/lib/chef/monkey_patches/string.rb +49 -0
  276. data/lib/chef/monkey_patches/tempfile.rb +64 -0
  277. data/lib/chef/nil_argument.rb +3 -0
  278. data/lib/chef/node.rb +677 -0
  279. data/lib/chef/node/attribute.rb +487 -0
  280. data/lib/chef/openid_registration.rb +187 -0
  281. data/lib/chef/platform.rb +434 -0
  282. data/lib/chef/provider.rb +124 -0
  283. data/lib/chef/provider/breakpoint.rb +36 -0
  284. data/lib/chef/provider/cookbook_file.rb +100 -0
  285. data/lib/chef/provider/cron.rb +186 -0
  286. data/lib/chef/provider/cron/solaris.rb +195 -0
  287. data/lib/chef/provider/deploy.rb +418 -0
  288. data/lib/chef/provider/deploy/revision.rb +80 -0
  289. data/lib/chef/provider/deploy/timestamped.rb +33 -0
  290. data/lib/chef/provider/directory.rb +72 -0
  291. data/lib/chef/provider/env.rb +152 -0
  292. data/lib/chef/provider/env/windows.rb +75 -0
  293. data/lib/chef/provider/erl_call.rb +101 -0
  294. data/lib/chef/provider/execute.rb +65 -0
  295. data/lib/chef/provider/file.rb +226 -0
  296. data/lib/chef/provider/git.rb +243 -0
  297. data/lib/chef/provider/group.rb +133 -0
  298. data/lib/chef/provider/group/aix.rb +70 -0
  299. data/lib/chef/provider/group/dscl.rb +121 -0
  300. data/lib/chef/provider/group/gpasswd.rb +53 -0
  301. data/lib/chef/provider/group/groupadd.rb +91 -0
  302. data/lib/chef/provider/group/pw.rb +84 -0
  303. data/lib/chef/provider/group/suse.rb +53 -0
  304. data/lib/chef/provider/group/usermod.rb +57 -0
  305. data/lib/chef/provider/group/windows.rb +79 -0
  306. data/lib/chef/provider/http_request.rb +122 -0
  307. data/lib/chef/provider/ifconfig.rb +195 -0
  308. data/lib/chef/provider/link.rb +164 -0
  309. data/lib/chef/provider/log.rb +54 -0
  310. data/lib/chef/provider/mdadm.rb +91 -0
  311. data/lib/chef/provider/mount.rb +114 -0
  312. data/lib/chef/provider/mount/mount.rb +240 -0
  313. data/lib/chef/provider/mount/windows.rb +81 -0
  314. data/lib/chef/provider/ohai.rb +42 -0
  315. data/lib/chef/provider/package.rb +200 -0
  316. data/lib/chef/provider/package/apt.rb +145 -0
  317. data/lib/chef/provider/package/dpkg.rb +115 -0
  318. data/lib/chef/provider/package/easy_install.rb +136 -0
  319. data/lib/chef/provider/package/freebsd.rb +125 -0
  320. data/lib/chef/provider/package/macports.rb +105 -0
  321. data/lib/chef/provider/package/pacman.rb +101 -0
  322. data/lib/chef/provider/package/portage.rb +135 -0
  323. data/lib/chef/provider/package/rpm.rb +104 -0
  324. data/lib/chef/provider/package/rubygems.rb +465 -0
  325. data/lib/chef/provider/package/solaris.rb +130 -0
  326. data/lib/chef/provider/package/yum-dump.py +286 -0
  327. data/lib/chef/provider/package/yum.rb +1173 -0
  328. data/lib/chef/provider/package/zypper.rb +144 -0
  329. data/lib/chef/provider/remote_directory.rb +137 -0
  330. data/lib/chef/provider/remote_file.rb +118 -0
  331. data/lib/chef/provider/route.rb +193 -0
  332. data/lib/chef/provider/ruby_block.rb +34 -0
  333. data/lib/chef/provider/script.rb +55 -0
  334. data/lib/chef/provider/service.rb +122 -0
  335. data/lib/chef/provider/service/arch.rb +116 -0
  336. data/lib/chef/provider/service/debian.rb +130 -0
  337. data/lib/chef/provider/service/freebsd.rb +154 -0
  338. data/lib/chef/provider/service/gentoo.rb +53 -0
  339. data/lib/chef/provider/service/init.rb +71 -0
  340. data/lib/chef/provider/service/insserv.rb +52 -0
  341. data/lib/chef/provider/service/invokercd.rb +35 -0
  342. data/lib/chef/provider/service/redhat.rb +60 -0
  343. data/lib/chef/provider/service/simple.rb +120 -0
  344. data/lib/chef/provider/service/solaris.rb +85 -0
  345. data/lib/chef/provider/service/systemd.rb +102 -0
  346. data/lib/chef/provider/service/upstart.rb +198 -0
  347. data/lib/chef/provider/service/windows.rb +155 -0
  348. data/lib/chef/provider/subversion.rb +197 -0
  349. data/lib/chef/provider/template.rb +104 -0
  350. data/lib/chef/provider/user.rb +186 -0
  351. data/lib/chef/provider/user/dscl.rb +280 -0
  352. data/lib/chef/provider/user/pw.rb +113 -0
  353. data/lib/chef/provider/user/useradd.rb +137 -0
  354. data/lib/chef/provider/user/windows.rb +124 -0
  355. data/lib/chef/providers.rb +95 -0
  356. data/lib/chef/recipe.rb +129 -0
  357. data/lib/chef/resource.rb +609 -0
  358. data/lib/chef/resource/apt_package.rb +34 -0
  359. data/lib/chef/resource/bash.rb +33 -0
  360. data/lib/chef/resource/breakpoint.rb +35 -0
  361. data/lib/chef/resource/conditional.rb +90 -0
  362. data/lib/chef/resource/cookbook_file.rb +45 -0
  363. data/lib/chef/resource/cron.rb +188 -0
  364. data/lib/chef/resource/csh.rb +33 -0
  365. data/lib/chef/resource/deploy.rb +389 -0
  366. data/lib/chef/resource/deploy_revision.rb +40 -0
  367. data/lib/chef/resource/directory.rb +76 -0
  368. data/lib/chef/resource/dpkg_package.rb +34 -0
  369. data/lib/chef/resource/easy_install_package.rb +57 -0
  370. data/lib/chef/resource/env.rb +58 -0
  371. data/lib/chef/resource/erl_call.rb +83 -0
  372. data/lib/chef/resource/execute.rb +127 -0
  373. data/lib/chef/resource/file.rb +99 -0
  374. data/lib/chef/resource/freebsd_package.rb +35 -0
  375. data/lib/chef/resource/gem_package.rb +53 -0
  376. data/lib/chef/resource/git.rb +46 -0
  377. data/lib/chef/resource/group.rb +78 -0
  378. data/lib/chef/resource/http_request.rb +61 -0
  379. data/lib/chef/resource/ifconfig.rb +144 -0
  380. data/lib/chef/resource/link.rb +78 -0
  381. data/lib/chef/resource/log.rb +62 -0
  382. data/lib/chef/resource/macports_package.rb +29 -0
  383. data/lib/chef/resource/mdadm.rb +82 -0
  384. data/lib/chef/resource/mount.rb +134 -0
  385. data/lib/chef/resource/ohai.rb +40 -0
  386. data/lib/chef/resource/package.rb +80 -0
  387. data/lib/chef/resource/pacman_package.rb +33 -0
  388. data/lib/chef/resource/perl.rb +33 -0
  389. data/lib/chef/resource/portage_package.rb +33 -0
  390. data/lib/chef/resource/python.rb +33 -0
  391. data/lib/chef/resource/remote_directory.rb +109 -0
  392. data/lib/chef/resource/remote_file.rb +83 -0
  393. data/lib/chef/resource/route.rb +135 -0
  394. data/lib/chef/resource/rpm_package.rb +34 -0
  395. data/lib/chef/resource/ruby.rb +33 -0
  396. data/lib/chef/resource/ruby_block.rb +40 -0
  397. data/lib/chef/resource/scm.rb +147 -0
  398. data/lib/chef/resource/script.rb +60 -0
  399. data/lib/chef/resource/service.rb +151 -0
  400. data/lib/chef/resource/solaris_package.rb +36 -0
  401. data/lib/chef/resource/subversion.rb +36 -0
  402. data/lib/chef/resource/template.rb +69 -0
  403. data/lib/chef/resource/timestamped_deploy.rb +31 -0
  404. data/lib/chef/resource/user.rb +130 -0
  405. data/lib/chef/resource/yum_package.rb +63 -0
  406. data/lib/chef/resource_collection.rb +217 -0
  407. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  408. data/lib/chef/resource_definition.rb +67 -0
  409. data/lib/chef/resource_definition_list.rb +38 -0
  410. data/lib/chef/resources.rb +64 -0
  411. data/lib/chef/rest.rb +400 -0
  412. data/lib/chef/rest/auth_credentials.rb +71 -0
  413. data/lib/chef/rest/cookie_jar.rb +31 -0
  414. data/lib/chef/rest/rest_request.rb +213 -0
  415. data/lib/chef/role.rb +343 -0
  416. data/lib/chef/run_context.rb +126 -0
  417. data/lib/chef/run_list.rb +165 -0
  418. data/lib/chef/run_list/run_list_expansion.rb +193 -0
  419. data/lib/chef/run_list/run_list_item.rb +92 -0
  420. data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
  421. data/lib/chef/run_status.rb +121 -0
  422. data/lib/chef/runner.rb +105 -0
  423. data/lib/chef/sandbox.rb +153 -0
  424. data/lib/chef/search/query.rb +65 -0
  425. data/lib/chef/shef.rb +327 -0
  426. data/lib/chef/shef/ext.rb +569 -0
  427. data/lib/chef/shef/model_wrapper.rb +120 -0
  428. data/lib/chef/shef/shef_rest.rb +28 -0
  429. data/lib/chef/shef/shef_session.rb +285 -0
  430. data/lib/chef/shell_out.rb +249 -0
  431. data/lib/chef/shell_out/unix.rb +223 -0
  432. data/lib/chef/shell_out/windows.rb +588 -0
  433. data/lib/chef/solr_query.rb +187 -0
  434. data/lib/chef/solr_query/lucene.treetop +150 -0
  435. data/lib/chef/solr_query/lucene_nodes.rb +285 -0
  436. data/lib/chef/solr_query/query_transform.rb +65 -0
  437. data/lib/chef/solr_query/solr_http_request.rb +132 -0
  438. data/lib/chef/streaming_cookbook_uploader.rb +201 -0
  439. data/lib/chef/tasks/chef_repo.rake +334 -0
  440. data/lib/chef/util/file_edit.rb +122 -0
  441. data/lib/chef/util/windows.rb +56 -0
  442. data/lib/chef/util/windows/net_group.rb +101 -0
  443. data/lib/chef/util/windows/net_use.rb +121 -0
  444. data/lib/chef/util/windows/net_user.rb +198 -0
  445. data/lib/chef/util/windows/volume.rb +59 -0
  446. data/lib/chef/version.rb +23 -0
  447. data/lib/chef/version_class.rb +70 -0
  448. data/lib/chef/version_constraint.rb +116 -0
  449. data/lib/chef/webui_user.rb +231 -0
  450. metadata +764 -0
@@ -0,0 +1,54 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009 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/knife'
20
+
21
+ class Chef
22
+ class Knife
23
+ class RoleShow < Knife
24
+
25
+ deps do
26
+ require 'chef/node'
27
+ require 'chef/json_compat'
28
+ end
29
+
30
+ banner "knife role show ROLE (options)"
31
+
32
+ option :attribute,
33
+ :short => "-a ATTR",
34
+ :long => "--attribute ATTR",
35
+ :description => "Show only one attribute"
36
+
37
+ def run
38
+ @role_name = @name_args[0]
39
+
40
+ if @role_name.nil?
41
+ show_usage
42
+ ui.fatal("You must specify a role name")
43
+ exit 1
44
+ end
45
+
46
+ role = Chef::Role.load(@role_name)
47
+ output(format_for_display(config[:environment] ? role.environment(config[:environment]) : role))
48
+ end
49
+
50
+ end
51
+ end
52
+ end
53
+
54
+
@@ -0,0 +1,141 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009 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/knife'
20
+ require 'chef/knife/core/node_presenter'
21
+
22
+ class Chef
23
+ class Knife
24
+ class Search < Knife
25
+
26
+ deps do
27
+ require 'chef/node'
28
+ require 'chef/environment'
29
+ require 'chef/api_client'
30
+ require 'chef/search/query'
31
+ end
32
+
33
+ include Knife::Core::NodeFormattingOptions
34
+
35
+ banner "knife search INDEX QUERY (options)"
36
+
37
+ option :sort,
38
+ :short => "-o SORT",
39
+ :long => "--sort SORT",
40
+ :description => "The order to sort the results in",
41
+ :default => nil
42
+
43
+ option :start,
44
+ :short => "-b ROW",
45
+ :long => "--start ROW",
46
+ :description => "The row to start returning results at",
47
+ :default => 0,
48
+ :proc => lambda { |i| i.to_i }
49
+
50
+ option :rows,
51
+ :short => "-R INT",
52
+ :long => "--rows INT",
53
+ :description => "The number of rows to return",
54
+ :default => 1000,
55
+ :proc => lambda { |i| i.to_i }
56
+
57
+ option :attribute,
58
+ :short => "-a ATTR",
59
+ :long => "--attribute ATTR",
60
+ :description => "Show only one attribute"
61
+
62
+ option :run_list,
63
+ :short => "-r",
64
+ :long => "--run-list",
65
+ :description => "Show only the run list"
66
+
67
+ option :id_only,
68
+ :short => "-i",
69
+ :long => "--id-only",
70
+ :description => "Show only the ID of matching objects"
71
+
72
+ option :query,
73
+ :short => "-q QUERY",
74
+ :long => "--query QUERY",
75
+ :description => "The search query; useful to protect queries starting with -"
76
+
77
+ def run
78
+ if config[:query] && @name_args[1]
79
+ ui.error "please specify query as an argument or an option via -q, not both"
80
+ ui.msg opt_parser
81
+ exit 1
82
+ end
83
+ raw_query = config[:query] || @name_args[1]
84
+ if !raw_query || raw_query.empty?
85
+ ui.error "no query specified"
86
+ ui.msg opt_parser
87
+ exit 1
88
+ end
89
+
90
+ if name_args[0].nil?
91
+ ui.error "you must specify an item type to search for"
92
+ exit 1
93
+ end
94
+
95
+ if name_args[0] == 'node'
96
+ ui.use_presenter Knife::Core::NodePresenter
97
+ end
98
+
99
+
100
+ q = Chef::Search::Query.new
101
+ query = URI.escape(raw_query,
102
+ Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
103
+
104
+ result_items = []
105
+ result_count = 0
106
+
107
+ rows = config[:rows]
108
+ start = config[:start]
109
+ begin
110
+ q.search(@name_args[0], query, config[:sort], start, rows) do |item|
111
+ formatted_item = format_for_display(item)
112
+ if formatted_item.respond_to?(:has_key?) && !formatted_item.has_key?('id')
113
+ formatted_item['id'] = item.has_key?('id') ? item['id'] : item.name
114
+ end
115
+ result_items << formatted_item
116
+ result_count += 1
117
+ end
118
+ rescue Net::HTTPServerException => e
119
+ msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
120
+ ui.error("knife search failed: #{msg}")
121
+ exit 1
122
+ end
123
+
124
+ if ui.interchange?
125
+ output({:results => result_count, :rows => result_items})
126
+ else
127
+ ui.msg "#{result_count} items found"
128
+ ui.msg("\n")
129
+ result_items.each do |item|
130
+ output(item)
131
+ ui.msg("\n")
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
138
+
139
+
140
+
141
+
@@ -0,0 +1,367 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009 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/knife'
20
+
21
+ class Chef
22
+ class Knife
23
+ class Ssh < Knife
24
+
25
+ deps do
26
+ require 'net/ssh'
27
+ require 'net/ssh/multi'
28
+ require 'readline'
29
+ require 'chef/search/query'
30
+ require 'chef/mixin/command'
31
+ end
32
+
33
+ attr_writer :password
34
+
35
+ banner "knife ssh QUERY COMMAND (options)"
36
+
37
+ option :concurrency,
38
+ :short => "-C NUM",
39
+ :long => "--concurrency NUM",
40
+ :description => "The number of concurrent connections",
41
+ :default => nil,
42
+ :proc => lambda { |o| o.to_i }
43
+
44
+ option :attribute,
45
+ :short => "-a ATTR",
46
+ :long => "--attribute ATTR",
47
+ :description => "The attribute to use for opening the connection - default is fqdn",
48
+ :default => "fqdn"
49
+
50
+ option :manual,
51
+ :short => "-m",
52
+ :long => "--manual-list",
53
+ :boolean => true,
54
+ :description => "QUERY is a space separated list of servers",
55
+ :default => false
56
+
57
+ option :ssh_user,
58
+ :short => "-x USERNAME",
59
+ :long => "--ssh-user USERNAME",
60
+ :description => "The ssh username"
61
+
62
+ option :ssh_password,
63
+ :short => "-P PASSWORD",
64
+ :long => "--ssh-password PASSWORD",
65
+ :description => "The ssh password"
66
+
67
+ option :ssh_port,
68
+ :short => "-p PORT",
69
+ :long => "--ssh-port PORT",
70
+ :description => "The ssh port",
71
+ :default => "22",
72
+ :proc => Proc.new { |key| Chef::Config[:knife][:ssh_port] = key }
73
+
74
+ option :identity_file,
75
+ :short => "-i IDENTITY_FILE",
76
+ :long => "--identity-file IDENTITY_FILE",
77
+ :description => "The SSH identity file used for authentication"
78
+
79
+ option :no_host_key_verify,
80
+ :long => "--no-host-key-verify",
81
+ :description => "Disable host key verification",
82
+ :boolean => true,
83
+ :default => false
84
+
85
+ def session
86
+ config[:on_error] ||= :skip
87
+ ssh_error_handler = Proc.new do |server|
88
+ if config[:manual]
89
+ node_name = server.host
90
+ else
91
+ @action_nodes.each do |n|
92
+ node_name = n if format_for_display(n)[config[:attribute]] == server.host
93
+ end
94
+ end
95
+ case config[:on_error]
96
+ when :skip
97
+ ui.warn "Failed to connect to #{node_name} -- #{$!.class.name}: #{$!.message}"
98
+ $!.backtrace.each { |l| Chef::Log.debug(l) }
99
+ when :raise
100
+ #Net::SSH::Multi magic to force exception to be re-raised.
101
+ throw :go, :raise
102
+ end
103
+ end
104
+
105
+ @session ||= Net::SSH::Multi.start(:concurrent_connections => config[:concurrency], :on_error => ssh_error_handler)
106
+ end
107
+
108
+ def configure_session
109
+ list = case config[:manual]
110
+ when true
111
+ @name_args[0].split(" ")
112
+ when false
113
+ r = Array.new
114
+ q = Chef::Search::Query.new
115
+ @action_nodes = q.search(:node, @name_args[0])[0]
116
+ @action_nodes.each do |item|
117
+ i = format_for_display(item)[config[:attribute]]
118
+ r.push(i) unless i.nil?
119
+ end
120
+ r
121
+ end
122
+ (ui.fatal("No nodes returned from search!"); exit 10) if list.length == 0
123
+ session_from_list(list)
124
+ end
125
+
126
+ def session_from_list(list)
127
+ list.each do |item|
128
+ Chef::Log.debug("Adding #{item}")
129
+
130
+ hostspec = config[:ssh_user] ? "#{config[:ssh_user]}@#{item}" : item
131
+ session_opts = {}
132
+ session_opts[:keys] = File.expand_path(config[:identity_file]) if config[:identity_file]
133
+ session_opts[:password] = config[:ssh_password] if config[:ssh_password]
134
+ session_opts[:port] = Chef::Config[:knife][:ssh_port] || config[:ssh_port]
135
+ session_opts[:logger] = Chef::Log.logger if Chef::Log.level == :debug
136
+
137
+ if config[:no_host_key_verify]
138
+ session_opts[:paranoid] = false
139
+ session_opts[:user_known_hosts_file] = "/dev/null"
140
+ end
141
+
142
+ session.use(hostspec, session_opts)
143
+
144
+ @longest = item.length if item.length > @longest
145
+ end
146
+
147
+ session
148
+ end
149
+
150
+ def fixup_sudo(command)
151
+ command.sub(/^sudo/, 'sudo -p \'knife sudo password: \'')
152
+ end
153
+
154
+ def print_data(host, data)
155
+ if data =~ /\n/
156
+ data.split(/\n/).each { |d| print_data(host, d) }
157
+ else
158
+ padding = @longest - host.length
159
+ str = ui.color(host, :cyan) + (" " * (padding + 1)) + data
160
+ ui.msg(str)
161
+ end
162
+ end
163
+
164
+ def ssh_command(command, subsession=nil)
165
+ subsession ||= session
166
+ command = fixup_sudo(command)
167
+ subsession.open_channel do |ch|
168
+ ch.request_pty
169
+ ch.exec command do |ch, success|
170
+ raise ArgumentError, "Cannot execute #{command}" unless success
171
+ ch.on_data do |ichannel, data|
172
+ print_data(ichannel[:host], data)
173
+ if data =~ /^knife sudo password: /
174
+ ichannel.send_data("#{get_password}\n")
175
+ end
176
+ end
177
+ end
178
+ end
179
+ session.loop
180
+ end
181
+
182
+ def get_password
183
+ @password ||= ui.ask("Enter your password: ") { |q| q.echo = false }
184
+ end
185
+
186
+ # Present the prompt and read a single line from the console. It also
187
+ # detects ^D and returns "exit" in that case. Adds the input to the
188
+ # history, unless the input is empty. Loops repeatedly until a non-empty
189
+ # line is input.
190
+ def read_line
191
+ loop do
192
+ command = reader.readline("#{ui.color('knife-ssh>', :bold)} ", true)
193
+
194
+ if command.nil?
195
+ command = "exit"
196
+ puts(command)
197
+ else
198
+ command.strip!
199
+ end
200
+
201
+ unless command.empty?
202
+ return command
203
+ end
204
+ end
205
+ end
206
+
207
+ def reader
208
+ Readline
209
+ end
210
+
211
+ def interactive
212
+ puts "Connected to #{ui.list(session.servers_for.collect { |s| ui.color(s.host, :cyan) }, :inline, " and ")}"
213
+ puts
214
+ puts "To run a command on a list of servers, do:"
215
+ puts " on SERVER1 SERVER2 SERVER3; COMMAND"
216
+ puts " Example: on latte foamy; echo foobar"
217
+ puts
218
+ puts "To exit interactive mode, use 'quit!'"
219
+ puts
220
+ while 1
221
+ command = read_line
222
+ case command
223
+ when 'quit!'
224
+ puts 'Bye!'
225
+ break
226
+ when /^on (.+?); (.+)$/
227
+ raw_list = $1.split(" ")
228
+ server_list = Array.new
229
+ session.servers.each do |session_server|
230
+ server_list << session_server if raw_list.include?(session_server.host)
231
+ end
232
+ command = $2
233
+ ssh_command(command, session.on(*server_list))
234
+ else
235
+ ssh_command(command)
236
+ end
237
+ end
238
+ end
239
+
240
+ def screen
241
+ tf = Tempfile.new("knife-ssh-screen")
242
+ if File.exist? "#{ENV["HOME"]}/.screenrc"
243
+ tf.puts("source #{ENV["HOME"]}/.screenrc")
244
+ end
245
+ tf.puts("caption always '%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<'")
246
+ tf.puts("hardstatus alwayslastline 'knife ssh #{@name_args[0]}'")
247
+ window = 0
248
+ session.servers_for.each do |server|
249
+ tf.print("screen -t \"#{server.host}\" #{window} ssh ")
250
+ tf.print("-i #{config[:identity_file]} ") if config[:identity_file]
251
+ server.user ? tf.puts("#{server.user}@#{server.host}") : tf.puts(server.host)
252
+ window += 1
253
+ end
254
+ tf.close
255
+ exec("screen -c #{tf.path}")
256
+ end
257
+
258
+ def tmux
259
+ ssh_dest = lambda do |server|
260
+ identity = "-i #{config[:identity_file]} " if config[:identity_file]
261
+ prefix = server.user ? "#{server.user}@" : ""
262
+ "'ssh #{identity}#{prefix}#{server.host}'"
263
+ end
264
+
265
+ new_window_cmds = lambda do
266
+ if session.servers_for.size > 1
267
+ [""] + session.servers_for[1..-1].map do |server|
268
+ "new-window -a -n '#{server.host}' #{ssh_dest.call(server)}"
269
+ end
270
+ else
271
+ []
272
+ end.join(" \\; ")
273
+ end
274
+
275
+ tmux_name = "'knife ssh #{@name_args[0].gsub(/:/,'=')}'"
276
+ begin
277
+ server = session.servers_for.first
278
+ cmd = ["tmux new-session -d -s #{tmux_name}",
279
+ "-n '#{server.host}'", ssh_dest.call(server),
280
+ new_window_cmds.call].join(" ")
281
+ Chef::Mixin::Command.run_command(:command => cmd)
282
+ exec("tmux attach-session -t #{tmux_name}")
283
+ rescue Chef::Exceptions::Exec
284
+ end
285
+ end
286
+
287
+ def macterm
288
+ begin
289
+ require 'appscript'
290
+ rescue LoadError
291
+ STDERR.puts "you need the rb-appscript gem to use knife ssh macterm. `(sudo) gem install rb-appscript` to install"
292
+ raise
293
+ end
294
+
295
+ Appscript.app("/Applications/Utilities/Terminal.app").windows.first.activate
296
+ Appscript.app("System Events").application_processes["Terminal.app"].keystroke("n", :using=>:command_down)
297
+ term = Appscript.app('Terminal')
298
+ window = term.windows.first.get
299
+
300
+ (session.servers_for.size - 1).times do |i|
301
+ window.activate
302
+ Appscript.app("System Events").application_processes["Terminal.app"].keystroke("t", :using=>:command_down)
303
+ end
304
+
305
+ session.servers_for.each_with_index do |server, tab_number|
306
+ cmd = "unset PROMPT_COMMAND; echo -e \"\\033]0;#{server.host}\\007\"; ssh #{server.user ? "#{server.user}@#{server.host}" : server.host}"
307
+ Appscript.app('Terminal').do_script(cmd, :in => window.tabs[tab_number + 1].get)
308
+ end
309
+ end
310
+
311
+ def configure_attribute
312
+ config[:attribute] = (config[:attribute] ||
313
+ Chef::Config[:knife][:ssh_attribute] ||
314
+ "fqdn").strip
315
+ end
316
+
317
+ def csshx
318
+ csshx_cmd = "csshX"
319
+ session.servers_for.each do |server|
320
+ csshx_cmd << " #{server.user ? "#{server.user}@#{server.host}" : server.host}"
321
+ end
322
+ exec(csshx_cmd)
323
+ end
324
+
325
+ def configure_user
326
+ config[:ssh_user] = (config[:ssh_user] ||
327
+ Chef::Config[:knife][:ssh_user])
328
+ config[:ssh_user].strip! unless config[:ssh_user].nil?
329
+ end
330
+
331
+ def configure_identity_file
332
+ config[:identity_file] = (config[:identity_file] || Chef::Config[:knife][:ssh_identity_file])
333
+ config[:identity_file].strip! unless config[:identity_file].nil?
334
+ end
335
+
336
+ def run
337
+ extend Chef::Mixin::Command
338
+
339
+ @longest = 0
340
+
341
+ configure_attribute
342
+ configure_user
343
+ configure_identity_file
344
+ configure_session
345
+
346
+ case @name_args[1]
347
+ when "interactive"
348
+ interactive
349
+ when "screen"
350
+ screen
351
+ when "tmux"
352
+ tmux
353
+ when "macterm"
354
+ macterm
355
+ when "csshx"
356
+ csshx
357
+ else
358
+ ssh_command(@name_args[1..-1].join(" "))
359
+ end
360
+
361
+ session.close
362
+ end
363
+
364
+ end
365
+ end
366
+ end
367
+