veewee 0.3.0.alpha6 → 0.3.0.alpha7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/lib/veewee/command/kvm.rb +1 -1
  2. data/lib/veewee/command/vagrant/basebox.rb +2 -0
  3. data/lib/veewee/command/vagrant/build.rb +1 -1
  4. data/lib/veewee/command/vagrant/define.rb +1 -1
  5. data/lib/veewee/command/vagrant/destroy.rb +1 -1
  6. data/lib/veewee/command/vagrant/export.rb +1 -1
  7. data/lib/veewee/command/vagrant/halt.rb +1 -1
  8. data/lib/veewee/command/vagrant/list.rb +2 -2
  9. data/lib/veewee/command/vagrant/ostypes.rb +2 -2
  10. data/lib/veewee/command/vagrant/ssh.rb +1 -2
  11. data/lib/veewee/command/vagrant/templates.rb +3 -3
  12. data/lib/veewee/command/vagrant/undefine.rb +2 -2
  13. data/lib/veewee/command/vagrant/up.rb +1 -1
  14. data/lib/veewee/command/vagrant/validate.rb +44 -0
  15. data/lib/veewee/command/virtualbox.rb +3 -3
  16. data/lib/veewee/config/definition.rb +4 -4
  17. data/lib/veewee/definition.rb +8 -0
  18. data/lib/veewee/provider/core/box.rb +7 -0
  19. data/lib/veewee/provider/core/box/build.rb +12 -12
  20. data/lib/veewee/provider/core/box/exec.rb +2 -2
  21. data/lib/veewee/provider/core/box/scp.rb +2 -2
  22. data/lib/veewee/provider/core/box/ssh.rb +1 -1
  23. data/lib/veewee/provider/core/box/vnc.rb +3 -3
  24. data/lib/veewee/provider/core/helper/iso.rb +30 -30
  25. data/lib/veewee/provider/core/helper/scancode.rb +1 -1
  26. data/lib/veewee/provider/core/helper/shell.rb +6 -6
  27. data/lib/veewee/provider/core/helper/ssh.rb +15 -17
  28. data/lib/veewee/provider/core/helper/tcp.rb +4 -4
  29. data/lib/veewee/provider/core/helper/web.rb +6 -6
  30. data/lib/veewee/provider/core/provider.rb +20 -13
  31. data/lib/veewee/provider/core/provider/tunnel.rb +8 -8
  32. data/lib/veewee/provider/kvm/box/helper/console_type.rb +1 -1
  33. data/lib/veewee/provider/kvm/box/validate_kvm.rb +2 -2
  34. data/lib/veewee/provider/parallels/box/create.rb +1 -1
  35. data/lib/veewee/provider/parallels/box/destroy.rb +1 -1
  36. data/lib/veewee/provider/parallels/box/helper/buildinfo.rb +1 -1
  37. data/lib/veewee/provider/parallels/box/helper/console_type.rb +5 -5
  38. data/lib/veewee/provider/parallels/box/validate_parallels.rb +2 -2
  39. data/lib/veewee/provider/virtualbox/box/destroy.rb +7 -7
  40. data/lib/veewee/provider/virtualbox/box/export_vagrant.rb +18 -18
  41. data/lib/veewee/provider/virtualbox/box/helper/console_type.rb +8 -8
  42. data/lib/veewee/provider/virtualbox/box/helper/create.rb +8 -8
  43. data/lib/veewee/provider/virtualbox/box/helper/guest_additions.rb +1 -1
  44. data/lib/veewee/provider/virtualbox/box/poweroff.rb +1 -1
  45. data/lib/veewee/provider/virtualbox/box/up.rb +2 -2
  46. data/lib/veewee/provider/virtualbox/box/validate_vagrant.rb +3 -3
  47. data/lib/veewee/providers.rb +1 -1
  48. data/lib/veewee/ui.rb +2 -0
  49. data/lib/veewee/version.rb +1 -1
  50. data/templates/CentOS-5.7-i386-netboot/definition.rb +1 -1
  51. data/templates/CentOS-5.7-i386-netboot/ks.cfg +1 -1
  52. data/templates/Debian-6.0.3-amd64-netboot/definition.rb +1 -1
  53. data/templates/Debian-6.0.3-i386-netboot/definition.rb +1 -1
  54. metadata +3 -2
@@ -98,7 +98,7 @@ module Veewee
98
98
  if !code.nil?
99
99
  keycodes=keycodes+code+' '
100
100
  else
101
- env.ui.info "no scan code for #{thestring.slice(0,1)}"
101
+ ui.error "no scan code for #{thestring.slice(0,1)}"
102
102
  end
103
103
  #pop one
104
104
  thestring=thestring.slice(1,thestring.length-1)
@@ -24,7 +24,7 @@ module Veewee
24
24
  defaults={:mute => true, :status => 0}
25
25
  options=defaults.merge(options)
26
26
  result=ShellResult.new("","",-1)
27
- env.ui.info "Executing #{command}" unless options[:mute]
27
+ ui.info "Executing #{command}" unless options[:mute]
28
28
  env.logger.debug "Command: \"#{command}\""
29
29
  env.logger.debug "Output:"
30
30
  env.logger.debug "-------"
@@ -32,15 +32,15 @@ module Veewee
32
32
  IO.popen("#{escaped_command}"+ " 2>&1") { |p|
33
33
  p.each_line{ |l|
34
34
  result.stdout+=l
35
- env.ui.info(l,{:new_line => false}) unless options[:mute]
35
+ ui.info(l,{:new_line => false}) unless options[:mute]
36
36
  env.logger.debug(l.chomp)
37
37
  }
38
38
  result.status=Process.waitpid2(p.pid)[1].exitstatus
39
39
  if result.status.to_i!=options[:status]
40
- env.ui.error "Error: We executed a shell command and the exit status was not #{options[:status]}"
41
- env.ui.error "- Command :#{command}."
42
- env.ui.error "- Exitcode :#{result.status}."
43
- env.ui.error "- Output :\n#{result.stdout}"
40
+ ui.error "Error: We executed a shell command and the exit status was not #{options[:status]}"
41
+ ui.error "- Command :#{command}."
42
+ ui.error "- Exitcode :#{result.status}."
43
+ ui.error "- Output :\n#{result.stdout}"
44
44
  raise Veewee::Error,"Wrong exit code for command #{command}"
45
45
  end
46
46
  }
@@ -26,19 +26,18 @@ module Veewee
26
26
 
27
27
  options=defaults.merge(options)
28
28
 
29
- env.ui.info "Waiting for ssh login on #{ip} with user #{options[:user]} to sshd on port => #{options[:port]} to work, timeout=#{options[:timeout]} sec"
29
+ ui.info "Waiting for ssh login on #{ip} with user #{options[:user]} to sshd on port => #{options[:port]} to work, timeout=#{options[:timeout]} sec"
30
30
 
31
31
  begin
32
32
  Timeout::timeout(options[:timeout]) do
33
33
  connected=false
34
34
  while !connected do
35
35
  begin
36
- env.ui.info ".",{:new_line => false}
36
+ env.ui.info ".",{:new_line => false , :prefix => false}
37
37
  Net::SSH.start(ip, options[:user], { :port => options[:port] , :password => options[:password], :paranoid => false , :timeout => options[:timeout] }) do |ssh|
38
- env.ui.info "\n"
39
38
 
39
+ ui.info "\n", {:prefix => false}
40
40
  block.call(ip);
41
- env.ui.info ""
42
41
  return true
43
42
  end
44
43
  rescue Net::SSH::Disconnect,Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ENETUNREACH,Errno::ETIMEDOUT, Errno::ENETUNREACH
@@ -47,10 +46,10 @@ module Veewee
47
46
  end
48
47
  end
49
48
  rescue Timeout::Error
50
- env.ui.error "Ssh timeout #{options[:timeout]} sec has been reached."
49
+ ui.error "Ssh timeout #{options[:timeout]} sec has been reached."
51
50
  exit -1
52
51
  end
53
- env.ui.info ""
52
+ ui.info ""
54
53
  return false
55
54
  end
56
55
 
@@ -61,14 +60,13 @@ module Veewee
61
60
  options=defaults.merge(options)
62
61
 
63
62
  Net::SSH.start( host,options[:user],options ) do |ssh|
64
- env.ui.info "Transferring #{filename} to #{destination} "
63
+ ui.info "Transferring #{filename} to #{destination} "
65
64
  ssh.scp.upload!( filename, destination ) do |ch, name, sent, total|
66
65
  # print "\r#{destination}: #{(sent.to_f * 100 / total.to_f).to_i}%"
67
- env.ui.info ".",{:new_line => false}
68
-
66
+ env.ui.info ".",{:new_line => false , :prefix => false}
69
67
  end
70
68
  end
71
- env.ui.info ""
69
+ ui.info "", {:prefix => false}
72
70
  end
73
71
 
74
72
 
@@ -81,7 +79,7 @@ module Veewee
81
79
  stderr=""
82
80
  status=-99999
83
81
 
84
- env.ui.info "Executing command: #{command}"
82
+ ui.info "Executing command: #{command}"
85
83
 
86
84
  Net::SSH.start(host, options[:user], { :port => options[:port], :password => options[:password], :paranoid => false }) do |ssh|
87
85
 
@@ -102,7 +100,7 @@ module Veewee
102
100
  ch.on_data do |c, data|
103
101
  stdout+=data
104
102
 
105
- env.ui.info data,{:new_line => false}
103
+ ui.info data
106
104
 
107
105
  end
108
106
 
@@ -110,7 +108,7 @@ module Veewee
110
108
  ch.on_extended_data do |c, type, data|
111
109
  stderr+=data
112
110
 
113
- env.ui.info data,{:new_line => false}
111
+ ui.info data
114
112
 
115
113
  end
116
114
 
@@ -120,18 +118,18 @@ module Veewee
120
118
  exit_code = data.read_long
121
119
  status=exit_code
122
120
  if exit_code > 0
123
- env.ui.info "ERROR: exit code #{exit_code}"
121
+ ui.info "ERROR: exit code #{exit_code}"
124
122
  else
125
- #env.ui.info "Successfully executed"
123
+ #ui.info "Successfully executed"
126
124
  end
127
125
  end
128
126
 
129
127
  channel.on_request("exit-signal") do |ch, data|
130
- env.ui.info "SIGNAL: #{data.read_long}"
128
+ ui.info "SIGNAL: #{data.read_long}"
131
129
  end
132
130
 
133
131
  ch.on_close {
134
- #env.ui.info "done!"
132
+ #ui.info "done!"
135
133
  }
136
134
  #status=ch.exec "echo $?"
137
135
  end
@@ -26,7 +26,7 @@ module Veewee
26
26
 
27
27
  # This tries to guess a local free tcp port
28
28
  def guess_free_port(min_port,max_port)
29
- env.ui.info "Received port hint - #{min_port}"
29
+ ui.info "Received port hint - #{min_port}"
30
30
 
31
31
  guessed_port=nil
32
32
 
@@ -38,10 +38,10 @@ module Veewee
38
38
  end
39
39
 
40
40
  if guessed_port.nil?
41
- env.ui.info "No free port available: tried #{min_port}..#{max_port}"
41
+ ui.error "No free port available: tried #{min_port}..#{max_port}"
42
42
  exit -1
43
43
  else
44
- env.ui.info "Found port #{guessed_port} available"
44
+ ui.info "Found port #{guessed_port} available"
45
45
  end
46
46
 
47
47
  return guessed_port
@@ -58,7 +58,7 @@ module Veewee
58
58
  connected=false
59
59
  while !connected do
60
60
  begin
61
- env.ui.info "trying connection"
61
+ ui.info "trying connection"
62
62
  s = TCPSocket.new(ip, options[:port])
63
63
  s.close
64
64
  block.call(ip);
@@ -9,19 +9,19 @@ module Veewee
9
9
 
10
10
  class FileServlet < WEBrick::HTTPServlet::AbstractServlet
11
11
 
12
- attr_reader :env
12
+ attr_reader :ui
13
13
 
14
- def initialize(server,localfile,env)
14
+ def initialize(server,localfile,ui)
15
15
  super(server)
16
16
  @server=server
17
17
  @localfile=localfile
18
- @env=env
18
+ @ui=ui
19
19
  end
20
20
 
21
21
  def do_GET(request,response)
22
22
  response['Content-Type']='text/plain'
23
23
  response.status = 200
24
- env.ui.info "Serving file #{@localfile}"
24
+ ui.info "Serving file #{@localfile}"
25
25
  displayfile=File.open(@localfile,'r')
26
26
  content=displayfile.read()
27
27
  response.body=content
@@ -51,10 +51,10 @@ module Veewee
51
51
  :AccessLog => webrick_logger
52
52
  )
53
53
  env.logger.debug("mounting file /#{filename}")
54
- s.mount("/#{filename}", Veewee::Provider::Core::Helper::Servlet::FileServlet,File.join(web_dir,filename),env)
54
+ s.mount("/#{filename}", Veewee::Provider::Core::Helper::Servlet::FileServlet,File.join(web_dir,filename),ui)
55
55
  trap("INT"){
56
56
  s.shutdown
57
- env.ui.info "Stopping webserver"
57
+ ui.info "Stopping webserver"
58
58
  exit
59
59
  }
60
60
  s.start
@@ -12,6 +12,13 @@ module Veewee
12
12
 
13
13
  include ::Veewee::Provider::Core::Helper::Shell
14
14
 
15
+ def ui
16
+ return @_ui if defined?(@_ui)
17
+ @_ui = @env.ui.dup
18
+ @_ui.resource = @name
19
+ @_ui
20
+ end
21
+
15
22
  def initialize(name,options,env)
16
23
 
17
24
  @env=env
@@ -29,7 +36,7 @@ module Veewee
29
36
  # Get a real box object from the Provider
30
37
  box=Object.const_get("Veewee").const_get("Provider").const_get(type.to_s.capitalize).const_get("Box").new(name,env)
31
38
  rescue Error => ex
32
- env.ui.error "Could not instante the box #{name} with provider #{type} ,#{ex}"
39
+ ui.error "Could not instante the box #{name} with provider #{type} ,#{ex}"
33
40
  raise
34
41
  end
35
42
  end
@@ -44,19 +51,19 @@ module Veewee
44
51
  end
45
52
 
46
53
  def gem_available?(gemname)
47
- env.logger.info "Checking for gem #{gemname}"
54
+ env.logger.info "Checking for gem #{gemname}"
55
+ available=false
56
+ begin
57
+ available=true unless Gem::Specification::find_by_name("#{gemname}").nil?
58
+ rescue Gem::LoadError
59
+ env.logger.info "Error loading gem #{gemname}"
48
60
  available=false
49
- begin
50
- available=true unless Gem::Specification::find_by_name("#{gemname}").nil?
51
- rescue Gem::LoadError
52
- env.logger.info "Error loading gem #{gemname}"
53
- available=false
54
- rescue
55
- env.logger.info "Falling back to old syntax for #{gemname}"
56
- available=Gem.available?("#{gemname}")
57
- env.logger.info "Old syntax #{gemname}.available? #{available}"
58
- end
59
- return available
61
+ rescue
62
+ env.logger.info "Falling back to old syntax for #{gemname}"
63
+ available=Gem.available?("#{gemname}")
64
+ env.logger.info "Old syntax #{gemname}.available? #{available}"
65
+ end
66
+ return available
60
67
  end
61
68
 
62
69
  def gems_available?(names)
@@ -13,27 +13,27 @@ module Veewee
13
13
  host=@connection.uri.host
14
14
  user=@connection.uri.user
15
15
 
16
- env.ui.info "Enabling tunneling"
16
+ ui.info "Enabling tunneling"
17
17
  @forward_threads=Array.new
18
18
  @forward_threads<< Thread.new {
19
19
  Net::SSH.start(host, user, ssh_options) do |ssh_session|
20
20
  forwardings.each do |forwarding|
21
21
  begin
22
- env.ui.info "Forwarding remote port #{forwarding[:remote_port]} from #{box_name} to local port #{forwarding[:local_port]}"
23
- env.ui.info host
24
- env.ui.info user
25
- env.ui.info ""
22
+ ui.info "Forwarding remote port #{forwarding[:remote_port]} from #{box_name} to local port #{forwarding[:local_port]}"
23
+ ui.info host
24
+ ui.info user
25
+ ui.info ""
26
26
  ssh_session.forward.local(forwarding[:local_port], "127.0.0.1",forwarding[:remote_port])
27
27
  rescue Errno::EACCES
28
- env.ui.info " Error - Access denied to forward remote port #{forwarding[:remote_port]} from #{name} to local port #{forwarding[:local_port]}"
28
+ ui.info " Error - Access denied to forward remote port #{forwarding[:remote_port]} from #{name} to local port #{forwarding[:local_port]}"
29
29
  end
30
30
  end
31
31
  ssh_session.loop {true}
32
32
  end
33
33
  }
34
- env.ui.info @forward_threads.first.status
34
+ ui.info @forward_threads.first.status
35
35
  @forward_threads.first.run
36
- env.ui.info @forward_threads.first.status
36
+ ui.info @forward_threads.first.status
37
37
 
38
38
  end
39
39
 
@@ -10,7 +10,7 @@ module Veewee
10
10
  def console_type(sequence,type_options={})
11
11
  vnc_port=@connection.servers.all(:name => name).first.vnc_port
12
12
  display_port=vnc_port.to_i - 5900
13
- env.ui.success "Sending keystrokes to VNC port :#{display_port} - TCP port: #{vnc_port}"
13
+ ui.success "Sending keystrokes to VNC port :#{display_port} - TCP port: #{vnc_port}"
14
14
  vnc_type(sequence,"127.0.0.1",display_port)
15
15
  end
16
16
 
@@ -34,8 +34,8 @@ module Veewee
34
34
  rescue SystemExit => e
35
35
  Kernel.exit(e.status)
36
36
  rescue Exception => e
37
- env.ui.error("#{e.message} (#{e.class})")
38
- env.ui.error(e.backtrace.join("\n"))
37
+ ui.error("#{e.message} (#{e.class})")
38
+ ui.error(e.backtrace.join("\n"))
39
39
  Kernel.exit(1)
40
40
  end
41
41
 
@@ -45,7 +45,7 @@ module Veewee
45
45
  #
46
46
  # Attach cdrom
47
47
  full_iso_file=File.join(env.config.veewee.iso_dir,definition.iso_file)
48
- env.ui.info "Mounting cdrom: #{full_iso_file}"
48
+ ui.info "Mounting cdrom: #{full_iso_file}"
49
49
  command ="prlctl set '#{self.name}' --device-add cdrom --enable --image '#{full_iso_file}'"
50
50
  shell_exec("#{command}")
51
51
 
@@ -5,7 +5,7 @@ module Veewee
5
5
 
6
6
  def destroy(options={})
7
7
  unless self.exists?
8
- env.ui.error "Error:: You tried to destroy a non-existing box '#{name}'"
8
+ ui.error "Error:: You tried to destroy a non-existing box '#{name}'"
9
9
  exit -1
10
10
  end
11
11
 
@@ -34,7 +34,7 @@ module Veewee
34
34
  # When we get here, ssh is available and no postinstall scripts have been executed yet
35
35
  # So we begin by transferring the ISO file of the vmware tools
36
36
 
37
- env.logger.info "About to transfer parallels tools iso buildinfo to the box #{name} - #{ip_address} - #{ssh_options}"
37
+ ui.info "About to transfer parallels tools iso buildinfo to the box #{name} - #{ip_address} - #{ssh_options}"
38
38
  iso_image=guest_iso_path
39
39
  self.scp(iso_image,File.basename(iso_image))
40
40
  end
@@ -11,13 +11,13 @@ module Veewee
11
11
 
12
12
  def send_sequence(sequence)
13
13
 
14
- env.ui.info ""
14
+ ui.info ""
15
15
 
16
16
  counter=0
17
17
  sequence.each { |s|
18
18
  counter=counter+1
19
19
 
20
- env.ui.info "Typing:[#{counter}]: "+s
20
+ ui.info "Typing:[#{counter}]: "+s
21
21
 
22
22
  keycodes=self.string_to_parallels_keycode(s)
23
23
 
@@ -33,8 +33,8 @@ module Veewee
33
33
  #sleep after each sequence (needs to be param)
34
34
  }
35
35
 
36
- env.ui.info "Done typing."
37
- env.ui.info ""
36
+ ui.info "Done typing."
37
+ ui.info ""
38
38
 
39
39
 
40
40
  end
@@ -179,7 +179,7 @@ module Veewee
179
179
  keycodes << c
180
180
  end
181
181
  else
182
- env.ui.info "no scan code for #{thestring.slice(0,1)}"
182
+ ui.info "no scan code for #{thestring.slice(0,1)}"
183
183
  end
184
184
  #pop one
185
185
  thestring=thestring.slice(1,thestring.length-1)
@@ -34,8 +34,8 @@ module Veewee
34
34
  rescue SystemExit => e
35
35
  Kernel.exit(e.status)
36
36
  rescue Exception => e
37
- env.ui.error("#{e.message} (#{e.class})")
38
- env.ui.error(e.backtrace.join("\n"))
37
+ ui.error("#{e.message} (#{e.class})")
38
+ ui.error(e.backtrace.join("\n"))
39
39
  Kernel.exit(1)
40
40
  end
41
41
 
@@ -6,7 +6,7 @@ module Veewee
6
6
  def destroy(option={})
7
7
 
8
8
  unless self.exists?
9
- env.ui.error "Error:: You tried to destroy a non-existing box '#{name}'"
9
+ ui.error "Error:: You tried to destroy a non-existing box '#{name}'"
10
10
  exit -1
11
11
  end
12
12
 
@@ -20,8 +20,8 @@ module Veewee
20
20
  end
21
21
 
22
22
  command="#{@vboxcmd} unregistervm \"#{name}\" --delete"
23
- env.ui.info command
24
- env.ui.info "Deleting vm #{name}"
23
+ ui.info command
24
+ ui.info "Deleting vm #{name}"
25
25
 
26
26
  #Exec and system stop the execution here
27
27
  shell_exec("#{command}",{:mute => true})
@@ -44,14 +44,14 @@ module Veewee
44
44
  command="#{@vboxcmd} closemedium disk \"#{location}\""
45
45
  end
46
46
 
47
- env.ui.info "Deleting disk #{location}"
48
- env.ui.info "#{command}"
47
+ ui.info "Deleting disk #{location}"
48
+ ui.info "#{command}"
49
49
 
50
50
  shell_exec("#{command}",{:mute => true})
51
51
 
52
52
  if File.exists?(location)
53
- env.ui.info "We tried to delete the disk file via virtualbox '#{location} but failed"
54
- env.ui.info "Removing it manually"
53
+ ui.info "We tried to delete the disk file via virtualbox '#{location} but failed"
54
+ ui.info "Removing it manually"
55
55
  FileUtils.rm(location)
56
56
  exit -1
57
57
  end
@@ -10,7 +10,7 @@ module Veewee
10
10
 
11
11
  # Check if box already exists
12
12
  unless self.exists?
13
- env.ui.info "#{name} is not found, maybe you need to build it first?"
13
+ ui.info "#{name} is not found, maybe you need to build it first?"
14
14
  exit
15
15
  end
16
16
 
@@ -28,19 +28,19 @@ module Veewee
28
28
 
29
29
  # We need to shutdown first
30
30
  if self.running?
31
- env.ui.info "Vagrant requires the box to be shutdown, before it can export"
32
- env.ui.info "Sudo also needs to work for user #{definition.ssh_user}"
33
- env.ui.info "Performing a clean shutdown now."
31
+ ui.info "Vagrant requires the box to be shutdown, before it can export"
32
+ ui.info "Sudo also needs to work for user #{definition.ssh_user}"
33
+ ui.info "Performing a clean shutdown now."
34
34
 
35
35
  self.halt
36
36
 
37
37
  #Wait for state poweroff
38
38
  while (self.running?) do
39
- env.ui.info ".",{:new_line => false}
39
+ ui.info ".",{:new_line => false}
40
40
  sleep 1
41
41
  end
42
- env.ui.info ""
43
- env.ui.info "Machine #{name} is powered off cleanly"
42
+ ui.info ""
43
+ ui.info "Machine #{name} is powered off cleanly"
44
44
  end
45
45
 
46
46
  #Vagrant requires a relative path for output of boxes
@@ -54,28 +54,28 @@ module Veewee
54
54
  box_path=path1.relative_path_from(path2).to_s
55
55
 
56
56
  if File.exists?("#{box_path}")
57
- env.ui.info "box #{name}.box already exists"
57
+ ui.info "box #{name}.box already exists"
58
58
  exit
59
59
  end
60
60
 
61
- env.ui.info "Executing vagrant voodoo:"
61
+ ui.info "Executing vagrant voodoo:"
62
62
  export_command="vagrant package --base '#{name}' --output '#{box_path}'"
63
- env.ui.info "#{export_command}"
63
+ ui.info "#{export_command}"
64
64
  shell_exec("#{export_command}") #hmm, needs to get the gem_home set?
65
- env.ui.info ""
65
+ ui.info ""
66
66
 
67
67
  #add_ssh_nat_mapping back!!!!
68
68
  #vagrant removes the mapping
69
69
  #we need to restore it in order to be able to login again
70
70
  self.add_ssh_nat_mapping
71
71
 
72
- env.ui.info "To import it into vagrant type:"
73
- env.ui.info "vagrant box add '#{name}' '#{box_path}'"
74
- env.ui.info ""
75
- env.ui.info "To use it:"
76
- env.ui.info "vagrant init '#{name}'"
77
- env.ui.info "vagrant up"
78
- env.ui.info "vagrant ssh"
72
+ ui.info "To import it into vagrant type:"
73
+ ui.info "vagrant box add '#{name}' '#{box_path}'"
74
+ ui.info ""
75
+ ui.info "To use it:"
76
+ ui.info "vagrant init '#{name}'"
77
+ ui.info "vagrant up"
78
+ ui.info "vagrant ssh"
79
79
  end
80
80
 
81
81
  end #Module