From 8572dfd59c21d2032b030adc9dc9a973c6e1c3f5 Mon Sep 17 00:00:00 2001 From: elijah Date: Sat, 8 Dec 2012 20:02:27 -0800 Subject: added commands 'node add' 'node rm' and 'node mv' --- lib/leap_cli/commands/vagrant.rb | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'lib/leap_cli/commands/vagrant.rb') diff --git a/lib/leap_cli/commands/vagrant.rb b/lib/leap_cli/commands/vagrant.rb index cd3e71b..a9c2928 100644 --- a/lib/leap_cli/commands/vagrant.rb +++ b/lib/leap_cli/commands/vagrant.rb @@ -10,7 +10,6 @@ module LeapCli; module Commands local.arg_name 'node-filter', :optional => true #, :multiple => false local.command :start do |start| start.action do |global_options,options,args| - vagrant_setup vagrant_command(["up", "sandbox on"], args) end end @@ -19,7 +18,6 @@ module LeapCli; module Commands local.arg_name 'node-filter', :optional => true #, :multiple => false local.command :stop do |stop| stop.action do |global_options,options,args| - vagrant_setup vagrant_command("halt", args) end end @@ -28,7 +26,6 @@ module LeapCli; module Commands local.arg_name 'node-filter', :optional => true #, :multiple => false local.command :reset do |reset| reset.action do |global_options,options,args| - vagrant_setup vagrant_command("sandbox rollback", args) end end @@ -37,7 +34,6 @@ module LeapCli; module Commands local.arg_name 'node-filter', :optional => true #, :multiple => false local.command :destroy do |destroy| destroy.action do |global_options,options,args| - vagrant_setup vagrant_command("destroy", args) end end @@ -46,7 +42,6 @@ module LeapCli; module Commands local.arg_name 'node-filter', :optional => true #, :multiple => false local.command :status do |status| status.action do |global_options,options,args| - vagrant_setup vagrant_command("status", args) end end @@ -66,18 +61,10 @@ module LeapCli; module Commands return file_path end - private - - def vagrant_setup - assert_bin! 'vagrant', 'run "sudo gem install vagrant"' - unless `vagrant gem which sahara`.chars.any? - log :installing, "vagrant plugin 'sahara'" - assert_run! 'vagrant gem install sahara' - end - create_vagrant_file - end + protected def vagrant_command(cmds, args) + vagrant_setup cmds = cmds.to_a assert_config! 'provider.vagrant.network' if args.empty? @@ -99,6 +86,17 @@ module LeapCli; module Commands end end + private + + def vagrant_setup + assert_bin! 'vagrant', 'run "sudo gem install vagrant"' + unless `vagrant gem which sahara`.chars.any? + log :installing, "vagrant plugin 'sahara'" + assert_run! 'vagrant gem install sahara' + end + create_vagrant_file + end + def execute(cmd) log 2, :run, cmd exec cmd @@ -123,4 +121,15 @@ module LeapCli; module Commands write_file! :vagrantfile, lines.join("\n") end + def pick_next_vagrant_ip_address + taken_ips = manager.nodes[:local => true].field(:ip_address) + if taken_ips.any? + highest_ip = taken_ips.map{|ip| IPAddr.new(ip)}.max + new_ip = highest_ip.succ + else + new_ip = IPAddr.new(manager.provider.vagrant.network).succ.succ + end + return new_ip.to_s + end + end; end \ No newline at end of file -- cgit v1.2.3