veewee 0.4.0 → 0.4.1

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 (36) hide show
  1. checksums.yaml +8 -8
  2. data/doc/customize.md +25 -0
  3. data/lib/veewee/command/group_base.rb +3 -3
  4. data/lib/veewee/command/helpers.rb +2 -1
  5. data/lib/veewee/config/ostypes.yml +7 -7
  6. data/lib/veewee/definition.rb +7 -0
  7. data/lib/veewee/environment.rb +13 -6
  8. data/lib/veewee/provider/core/box/ssh.rb +13 -7
  9. data/lib/veewee/provider/core/helper/iso.rb +9 -8
  10. data/lib/veewee/provider/core/helper/shell.rb +19 -14
  11. data/lib/veewee/provider/core/helper/ssh.rb +197 -193
  12. data/lib/veewee/provider/kvm/box/helper/ssh_options.rb +5 -11
  13. data/lib/veewee/provider/parallels/box/export.rb +1 -1
  14. data/lib/veewee/provider/parallels/box/helper/ssh_options.rb +1 -7
  15. data/lib/veewee/provider/virtualbox/box/helper/ssh_options.rb +8 -14
  16. data/lib/veewee/provider/vmfusion/box/helper/ssh_options.rb +1 -7
  17. data/lib/veewee/provider/vmfusion/provider.rb +2 -2
  18. data/lib/veewee/version.rb +1 -1
  19. data/templates/Debian-7.0-amd64-netboot/definition.rb +1 -3
  20. data/templates/Debian-7.0-i386-netboot/definition.rb +1 -3
  21. data/templates/Debian-7.1.0-amd64-netboot/definition.rb +1 -3
  22. data/templates/Debian-7.1.0-i386-netboot/definition.rb +1 -3
  23. data/templates/Debian-7.2.0-amd64-netboot/definition.rb +1 -3
  24. data/templates/Debian-7.2.0-amd64-netboot/vagrant.sh +3 -2
  25. data/templates/Debian-7.2.0-i386-netboot/definition.rb +1 -3
  26. data/templates/Debian-7.2.0-i386-netboot/vagrant.sh +3 -2
  27. data/templates/Debian-7.3.0-amd64-netboot/definition.rb +1 -3
  28. data/templates/Debian-7.3.0-i386-netboot/definition.rb +1 -3
  29. data/templates/Debian-7.4.0-amd64-netboot/definition.rb +1 -3
  30. data/templates/Debian-7.4.0-i386-netboot/definition.rb +1 -3
  31. data/templates/Debian-7.5.0-amd64-netboot/definition.rb +1 -3
  32. data/templates/Debian-7.5.0-i386-netboot/definition.rb +1 -1
  33. data/templates/Debian-7.6.0-amd64-netboot/definition.rb +1 -1
  34. data/templates/Debian-7.6.0-i386-netboot/definition.rb +1 -1
  35. data/veewee.gemspec +2 -1
  36. metadata +6 -5
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZGJiYzY0MzVhMmQ3NWE3YWMzODhkZjg0NzJkOTVmYzEzYjg1YmM5OQ==
4
+ NjZjNmNkY2FiMjZjZGM0ZTk0ODUwYThmYzhiMzBmYWZkOGI4YmFkOA==
5
5
  data.tar.gz: !binary |-
6
- MmQzNmI5ZDI4OWIzM2QyNjM3MGY0NTVjNmZhMTYwZDgxZmVmNzkwMg==
6
+ MjUyM2UzZWIzOTJiNDk2YzBjOTU0YmYwOGMxNmIwNDcxNjYzMmEwMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MjIyMGM1YmVkMmI1YzU4ZjA2MzFmYTcwNmU3OWYwZDRhNWJmNTk4YmRjZDZi
10
- ZTI3MmFkNDA3MWI3MmZjNjA1MzdmY2MxYTQyOTEwNjZhMzgwMzA3ZDhiOGJm
11
- NDY3NTRhYmFhYjVhY2NlYWQwNjhiZjZjNWI4ZTkzOWU4OWUyNDc=
9
+ OTM3MzVlYzQ3NTZhNTEyODIwMjQ3NDcyMDNjNzFhZGNmOTk0MmViOTE1ZGVi
10
+ OTAyNjM3OWM4ZTY2MGQ2N2I2N2IxODA1YWJkMzE5MWEyNTYyZDliZTA4NDZh
11
+ NzVhOWNkN2M0M2FkMDM0OTY3YmU5MmUxYmVlNTYxOTA0ODBiNWY=
12
12
  data.tar.gz: !binary |-
13
- M2FiMDk4M2Q4ZWU0YTczZWJkM2YyOTczYWRkOGJjZmE3NzM3YTM4NWMxMGFm
14
- Yjg1OWUyMGRhZDhjMjJjOWFjZDUxZjc1MzkzYjM2NmVlNDllNmNjNThjNWVm
15
- NjNkY2I1M2VhMWQ1OTYzNTc1ZTc2YTY4MWFiNGYwNzFkMjMyNmI=
13
+ OWU3ZmQwMTRmY2JjNTI0YTFhYzNlMWU1YWExZDhjZWRjYjFjOGI1MjFlOTM5
14
+ OWI5ODlhMjA0MGJmN2NmNmQwMjVlY2U3ZjExYTM1YWYyNTNlOGQ2MGRlOWM0
15
+ NWI3MmYwODM4ZWVkMDI5NzhhMjFjMGFiODE2OTM1YzlkMDQyMGY=
@@ -192,6 +192,31 @@ Each provider _can_ take options that are specific the provider; more details wi
192
192
 
193
193
  This box will have `pae` and `ioapic` enabled with VirtualBox, and will use the `brlxc0` bridge with KVM (on libvirt).
194
194
 
195
+ ## Using Yaml for storing configuration
196
+
197
+ You can store definitions in `*.yml` files, loading them is as easy as:
198
+
199
+ Veewee::Definition.declare_yaml(file_name1, filename2 ...)
200
+
201
+ For example given those 3 files:
202
+
203
+ .
204
+ ├── definitions
205
+ │   └── myubuntubox
206
+ │   ├── definition.rb
207
+ │   ├── definition.yml
208
+ │   ├── 64bit.yml
209
+ │   ├── 32bit.yml
210
+ │   └── ...
211
+
212
+ And `definition.rb` with
213
+
214
+ Veewee::Definition.declare_yaml('definition.yml', '64bit.yml')
215
+
216
+ Then veewee will read first `definition.yml` and `64bit.yml`, this way
217
+ it is possible to mix multiple possible combinations of systems,
218
+ versions, and architectures. All the configurations available in
219
+ `declare` are also valid in `*yml` files.
195
220
 
196
221
  ## Up Next
197
222
 
@@ -92,9 +92,9 @@ module Veewee
92
92
  #
93
93
  def self.register(options = {})
94
94
  # self refers to the class object of the provider subclass
95
- self.class_variable_set(:@@command, options[:command])
96
- self.class_variable_set(:@@description, options[:description])
97
- self.class_variable_set(:@@provider, options[:provider])
95
+ self.send(:class_variable_set, :@@command, options[:command] )
96
+ self.send(:class_variable_set, :@@description, options[:description])
97
+ self.send(:class_variable_set, :@@provider, options[:provider] )
98
98
  CLI.register(self, options[:command], options[:command], options[:description], options[:opts])
99
99
  end
100
100
 
@@ -6,8 +6,9 @@ module Veewee
6
6
  def initialize_environment(args, options, config)
7
7
  raise Errors::CLIMissingEnvironment if !config[:env]
8
8
  @env = config[:env]
9
+ @env.cwd = File.expand_path(@options[:cwd]) if @options[:cwd]
9
10
  end
10
11
 
11
12
  end
12
13
  end
13
- end
14
+ end
@@ -10,22 +10,22 @@ Windows7:
10
10
  :vbox: Windows7
11
11
  :parallels: win-7
12
12
  Windows8:
13
- :fusion:
13
+ :fusion: windows8
14
14
  :kvm:
15
15
  :vbox: Windows8
16
16
  :parallels: win-8
17
17
  Windows8_64:
18
- :fusion:
18
+ :fusion: windows8-64
19
19
  :kvm:
20
20
  :vbox: Windows8_64
21
21
  :parallels: win-8
22
22
  Windows81:
23
- :fusion:
23
+ :fusion: windows8
24
24
  :kvm:
25
25
  :vbox: Windows81
26
26
  :parallels: win-8
27
27
  Windows81_64:
28
- :fusion:
28
+ :fusion: windows8-64
29
29
  :kvm:
30
30
  :vbox: Windows81_64
31
31
  :parallels: win-8
@@ -348,10 +348,10 @@ NetBSD_64:
348
348
  :vbox: NetBSD_64
349
349
  :parallels: other
350
350
  ESXi5:
351
- :fusion: vmkernel5
351
+ :fusion: vmkernel5
352
352
  :kvm:
353
- :vbox:
354
- :parallels:
353
+ :vbox:
354
+ :parallels:
355
355
  Darwin_10_7:
356
356
  :fusion: darwin11
357
357
  :kvm:
@@ -1,3 +1,4 @@
1
+ require 'yaml'
1
2
  require 'ostruct'
2
3
  require 'veewee/provider/core/helper/iso'
3
4
 
@@ -124,6 +125,12 @@ module Veewee
124
125
 
125
126
  end
126
127
 
128
+ def declare_yaml(*files)
129
+ files.each do |file|
130
+ declare(YAML.load_file(file))
131
+ end
132
+ end
133
+
127
134
  # Class method to loading a definition
128
135
  def self.load(name, env)
129
136
 
@@ -26,10 +26,10 @@ module Veewee
26
26
  # - :validation_dir : directory that contains a list of validation tests, that can be run after building a box
27
27
  # - :tmp_dir : directory that will be used for creating temporary files, needs to be rewritable, default to $environment_dir/tmp
28
28
  attr_accessor :template_path
29
- attr_accessor :definition_dir
30
- attr_accessor :iso_dir
29
+ attr_writer :definition_dir
30
+ attr_writer :iso_dir
31
31
  attr_accessor :validation_dir
32
- attr_accessor :tmp_dir
32
+ attr_writer :tmp_dir
33
33
 
34
34
  # The {UI} Object to communicate with the outside world
35
35
  attr_writer :ui
@@ -66,11 +66,8 @@ module Veewee
66
66
  defaults = {
67
67
  :cwd => cwd,
68
68
  :veewee_filename => "Veeweefile",
69
- :definition_dir => File.join(cwd, "definitions"),
70
69
  :template_path => [File.expand_path(File.join(File.dirname(__FILE__), "..", "..", 'templates')), "templates"],
71
- :iso_dir => File.join(cwd, "iso"),
72
70
  :validation_dir => File.join(File.expand_path(File.join(File.dirname(__FILE__), "..", "..")), "validation"),
73
- :tmp_dir => File.join(cwd, "tmp")
74
71
  }
75
72
 
76
73
  options = defaults.merge(options)
@@ -107,6 +104,16 @@ module Veewee
107
104
  return self
108
105
  end
109
106
 
107
+ def definition_dir
108
+ @definition_dir ||= File.join(cwd, "definitions")
109
+ end
110
+ def iso_dir
111
+ @iso_dir ||= File.join(cwd, "iso")
112
+ end
113
+ def tmp_dir
114
+ tmp_dir ||= File.join(cwd, "tmp")
115
+ end
116
+
110
117
  def self.workdir
111
118
  ENV['VEEWEE_DIR'] || Dir.pwd
112
119
  end
@@ -1,11 +1,12 @@
1
1
  require 'veewee/provider/core/helper/ssh'
2
2
  require 'shellwords'
3
+ require 'pathname'
4
+
3
5
  module Veewee
4
6
  module Provider
5
7
  module Core
6
8
  module BoxCommand
7
9
 
8
-
9
10
  def ssh(command=nil,options={})
10
11
 
11
12
  raise Veewee::Error,"Box is not running" unless self.running?
@@ -23,7 +24,8 @@ module Veewee
23
24
  end
24
25
  else
25
26
  ssh_options={:user => definition.ssh_user,:password => definition.ssh_password, :port => definition.ssh_host_port}
26
- ssh_execute(host_ip,command,ssh_options)
27
+ ssh_options[:keys] = ssh_key_to_a(definition.ssh_key) if definition.ssh_key
28
+ ssh_execute(host_ip, command, ssh_options)
27
29
  end
28
30
 
29
31
  end
@@ -37,13 +39,17 @@ module Veewee
37
39
  "-p #{ssh_options[:port]}",
38
40
  "-o UserKnownHostsFile=/dev/null",
39
41
  "-t -o StrictHostKeyChecking=no",
40
- "-o IdentitiesOnly=yes",
41
42
  "-o VerifyHostKeyDNS=no"
42
43
  ]
43
- if !(definition.ssh_key.nil? || definition.ssh_key.empty?)
44
- # Filenames of SSH keys are relative to their definition
45
- ssh_key = File.join(definition.path, definition.ssh_key)
46
- command_options << "-i #{ssh_key}"
44
+ if definition.ssh_key
45
+ command_options << "-o IdentitiesOnly=yes"
46
+ ssh_keys = ssh_key_to_a(ssh_key)
47
+ ssh_keys.each do |ssh_keys|
48
+ # Filenames of SSH keys are relative to their definition
49
+ ssh_key = Pathname.new(definition.ssh_key)
50
+ ssh_key = File.join(definition.path, ssh_key) if ssh_key.relative?
51
+ command_options << "-i #{ssh_key}"
52
+ end
47
53
  end
48
54
  commandline_options="#{command_options.join(" ")} ".strip
49
55
 
@@ -31,15 +31,15 @@ module Veewee
31
31
  pbar = nil
32
32
  uri = URI.parse(url)
33
33
  uri.open(
34
- :content_length_proc => lambda {|t|
35
- if t && 0 < t
36
- pbar = ProgressBar.new("Fetching file", t)
37
- pbar.file_transfer_mode
38
- end
39
- },
34
+ :content_length_proc => lambda { |t|
35
+ if t && 0 < t
36
+ pbar = ProgressBar.new("Fetching file", t)
37
+ pbar.file_transfer_mode
38
+ end
39
+ },
40
40
  :progress_proc => lambda {|s|
41
- pbar.set s if pbar
42
- },
41
+ pbar.set s if pbar
42
+ },
43
43
  #consider proxy env vars only if host is not excluded
44
44
  :proxy => !no_proxy?(uri.host)
45
45
  ) { |src|
@@ -58,6 +58,7 @@ module Veewee
58
58
 
59
59
  #return true if host is excluded from proxy via no_proxy env var, false otherwise
60
60
  def no_proxy? host
61
+ return false if host.nil?
61
62
  @no_proxy ||= (ENV['NO_PROXY'] || ENV['no_proxy'] || 'localhost, 127.0.0.1').split(/\s*,\s*/)
62
63
  @no_proxy.each do |host_addr|
63
64
  return true if host.match(Regexp.quote(host_addr)+'$')
@@ -20,31 +20,36 @@ module Veewee
20
20
  # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/185404
21
21
  # This should work on windows too now
22
22
  # This will result in a ShellResult structure with stdout, stderr and status
23
- def shell_exec(command,options = {:mute => true,:status => 0,:stderr => "&1"})
24
- defaults={:mute => true, :status => 0}
25
- options=defaults.merge(options)
26
- result=ShellResult.new("","",-1)
23
+ def shell_exec(command, options = {})
24
+ defaults = { :mute => true, :status => 0, :stderr => "&1" }
25
+ options = defaults.merge(options)
26
+ result = ShellResult.new("","",-1)
27
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 "-------"
31
- escaped_command=command
31
+ escaped_command = command
32
32
  stderr_redirect = options[:stderr]? options[:stderr] : "&1"
33
- IO.popen("#{escaped_command}"+ " 2>#{stderr_redirect}") { |p|
34
- p.each_line{ |l|
35
- result.stdout+=l
36
- ui.info(l,{:new_line => false}) unless options[:mute]
37
- env.logger.debug(l.chomp)
38
- }
39
- result.status=Process.waitpid2(p.pid)[1].exitstatus
40
- if result.status.to_i!=options[:status]
33
+ io_options = {}
34
+ io_options[:external_encoding] = options[:external_encoding] if options[:external_encoding]
35
+
36
+ IO.popen("#{escaped_command}"+ " 2>#{stderr_redirect}", io_options) do |pipe|
37
+ pipe.each_line do |line|
38
+ result.stdout += line
39
+ ui.info(line, :new_line => false) unless options[:mute]
40
+ env.logger.debug(line.chomp)
41
+ end
42
+ result.status = Process.waitpid2(pipe.pid)[1].exitstatus
43
+ if
44
+ result.status.to_i != options[:status]
45
+ then
41
46
  ui.error "Error: We executed a shell command and the exit status was not #{options[:status]}"
42
47
  ui.error "- Command :#{command}."
43
48
  ui.error "- Exitcode :#{result.status}."
44
49
  ui.error "- Output :\n#{result.stdout}"
45
50
  raise Veewee::Error,"Wrong exit code for command #{command}"
46
51
  end
47
- }
52
+ end
48
53
  return result
49
54
  end
50
55
 
@@ -1,3 +1,7 @@
1
+ require 'socket'
2
+ require 'net/ssh'
3
+ require 'net/scp'
4
+
1
5
  module Veewee
2
6
  module Provider
3
7
  module Core
@@ -15,211 +19,211 @@ module Veewee
15
19
  end
16
20
  end
17
21
 
18
- module Ssh
19
-
20
- require 'socket'
21
-
22
- # nonblocking ssh connection check
23
- def tcp_test_ssh(hostname, port, timeout = 2)
24
-
25
- addr = Socket.getaddrinfo(hostname, nil)
26
- sockaddr = Socket.pack_sockaddr_in(port, addr[0][3])
27
-
28
- Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0).tap do |socket|
29
- socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
30
- begin
31
- socket.connect_nonblock(sockaddr)
32
-
33
- rescue IO::WaitWritable
34
- if IO.select(nil, [socket], nil, timeout)
35
- begin
36
- result = socket.connect_nonblock(sockaddr)
37
- if result == 0
38
- socket.close
39
- return true
40
- end
41
- rescue Errno::EISCONN
42
- socket.close
43
- return true
44
- rescue
45
- socket.close
46
- return false
47
- end
48
- else
49
- socket.close
50
- return false
51
- end
52
- end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ module Veewee::Provider::Core::Helper::Ssh
28
+
29
+ def build_ssh_options
30
+ ssh_options={
31
+ :user => definition.ssh_user,
32
+ :port => 22,
33
+ :password => definition.ssh_password,
34
+ :timeout => definition.ssh_login_timeout.to_i
35
+ }
36
+ ssh_options[:keys] = ssh_key_to_a(definition.ssh_key) if definition.ssh_key
37
+ return ssh_options
38
+ end
39
+
40
+ def ssh_key_to_a(ssh_key)
41
+ case ssh_key
42
+ when "" then []
43
+ else Array(ssh_key)
44
+ end
45
+ end
46
+
47
+ # nonblocking ssh connection check
48
+ def tcp_test_ssh(hostname, port, timeout = 2)
49
+
50
+ addr = Socket.getaddrinfo(hostname, nil)
51
+ sockaddr = Socket.pack_sockaddr_in(port, addr[0][3])
52
+
53
+ Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0).tap do |socket|
54
+ socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
55
+ begin
56
+ socket.connect_nonblock(sockaddr)
57
+
58
+ rescue IO::WaitWritable
59
+ if IO.select(nil, [socket], nil, timeout)
60
+ begin
61
+ result = socket.connect_nonblock(sockaddr)
62
+ if result == 0
63
+ socket.close
64
+ return true
53
65
  end
54
- false
66
+ rescue Errno::EISCONN
67
+ socket.close
68
+ return true
69
+ rescue
70
+ socket.close
71
+ return false
55
72
  end
56
-
57
- require 'net/ssh'
58
- require 'net/scp'
59
-
60
- def when_ssh_login_works(ip="127.0.0.1", options = { } , &block)
61
-
62
- defaults={ :port => '22', :timeout => 20000 }
63
-
64
- options=defaults.merge(options)
65
-
66
- timeout = options[:timeout]
67
- timeout=ENV['VEEWEE_TIMEOUT'].to_i unless ENV['VEEWEE_TIMEOUT'].nil?
68
-
69
- unless options[:mute]
70
- ui.info "Waiting for ssh login on #{ip} with user #{options[:user]} to sshd on port => #{options[:port]} to work, timeout=#{timeout} sec"
71
- end
72
-
73
- run_hook(:before_ssh)
74
-
75
- begin
76
- Timeout::timeout(timeout) do
77
- connected=false
78
- while !connected do
79
- begin
80
- env.ui.info ".",{:new_line => false , :prefix => false} unless options[:mute]
81
- if tcp_test_ssh(ip, options[:port])
82
- Net::SSH.start(ip, options[:user],
83
- { :port => options[:port],
84
- :password => options[:password],
85
- :auth_methods => ['password','publickey','keyboard-interactive'],
86
- :paranoid => false ,
87
- :timeout => timeout }) do |ssh|
88
-
89
- ui.info "\n", {:prefix => false} unless options[:mute]
90
- block.call(ip);
91
- return true
92
- end
93
- else
94
- sleep 5
95
- end
96
- rescue Net::SSH::Disconnect, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ENETUNREACH, Errno::ETIMEDOUT
97
- sleep 5
98
- end
99
- end
73
+ else
74
+ socket.close
75
+ return false
76
+ end
77
+ end
78
+ end
79
+ false
80
+ end
81
+
82
+ def when_ssh_login_works(ip="127.0.0.1", options = { } , &block)
83
+ defaults={ :port => '22', :timeout => 20000 }
84
+ options=defaults.merge(options)
85
+
86
+ timeout = options[:timeout]
87
+ timeout = ENV['VEEWEE_TIMEOUT'].to_i unless ENV['VEEWEE_TIMEOUT'].nil?
88
+
89
+ unless options[:mute]
90
+ ui.info "Waiting for ssh login on #{ip} with user #{options[:user]} to sshd on port => #{options[:port]} to work, timeout=#{timeout} sec"
91
+ end
92
+
93
+ run_hook(:before_ssh)
94
+
95
+ begin
96
+ Timeout::timeout(timeout) do
97
+ connected=false
98
+ while !connected do
99
+ begin
100
+ env.ui.info ".",{:new_line => false , :prefix => false} unless options[:mute]
101
+ if
102
+ tcp_test_ssh(ip, options[:port])
103
+ then
104
+ ssh_connection(ip, options, :timeout => timeout ) do |ssh|
105
+ ui.info "\n", {:prefix => false} unless options[:mute]
106
+ block.call(ip);
107
+ return true
100
108
  end
101
- rescue IOError
102
- ui.info "Received a disconnect; moving on"
109
+ else
103
110
  sleep 5
104
- rescue Timeout::Error
105
- raise Veewee::Error, "Ssh timeout #{timeout} sec has been reached."
106
111
  end
107
- ui.info ""
108
- return false
112
+ rescue Net::SSH::Disconnect, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ENETUNREACH, Errno::ETIMEDOUT
113
+ sleep 5
109
114
  end
115
+ end
116
+ end
117
+ rescue IOError
118
+ ui.info "Received a disconnect; moving on"
119
+ sleep 5
120
+ rescue Timeout::Error
121
+ raise Veewee::Error, "Ssh timeout #{timeout} sec has been reached."
122
+ end
123
+ ui.info ""
124
+ return false
125
+ end
126
+
127
+ def ssh_transfer_file(host,filename,destination = '.' , options = {})
128
+
129
+ ssh_connection( host, options ) do |ssh|
130
+ ui.info "Transferring #{filename} to #{destination} "
131
+ ssh.scp.upload!( filename, destination ) do |ch, name, sent, total|
132
+ # print "\r#{destination}: #{(sent.to_f * 100 / total.to_f).to_i}%"
133
+ env.ui.info ".",{:new_line => false , :prefix => false}
134
+ end
135
+ end
136
+ ui.info "", {:prefix => false}
137
+ end
138
+
139
+
140
+ def ssh_execute(host,command, options = { :progress => "on"} )
141
+ defaults= { :port => "22", :exitcode => "0", :user => "root"}
142
+ options=defaults.merge(options)
143
+ pid=""
144
+ stdin=command
145
+ stdout=""
146
+ stderr=""
147
+ status=-99999
148
+
149
+ unless options[:mute]
150
+ ui.info "Executing command: #{command}"
151
+ end
152
+
153
+ ssh_connection( host, options ) do |ssh|
154
+
155
+ # open a new channel and configure a minimal set of callbacks, then run
156
+ # the event loop until the channel finishes (closes)
157
+ channel = ssh.open_channel do |ch|
158
+
159
+ #request pty for sudo stuff and so
160
+ ch.request_pty do |ch, success|
161
+ raise "Error requesting pty" unless success
162
+ end
110
163
 
164
+ ch.exec "#{command}" do |ch, success|
165
+ raise "could not execute command" unless success
111
166
 
112
- def ssh_transfer_file(host,filename,destination = '.' , options = {})
113
-
114
- defaults={
115
- :paranoid => false,
116
- :auth_methods => ['password','publickey','keyboard-interactive']
117
- }
118
- options=defaults.merge(options)
119
-
120
- Net::SSH.start( host,options[:user],options ) do |ssh|
121
- ui.info "Transferring #{filename} to #{destination} "
122
- ssh.scp.upload!( filename, destination ) do |ch, name, sent, total|
123
- # print "\r#{destination}: #{(sent.to_f * 100 / total.to_f).to_i}%"
124
- env.ui.info ".",{:new_line => false , :prefix => false}
125
- end
126
- end
127
- ui.info "", {:prefix => false}
167
+ # "on_data" is called when the process writes something to stdout
168
+ ch.on_data do |c, data|
169
+ stdout+=data
170
+ ui.info(data, :new_line => false) unless options[:mute]
128
171
  end
129
172
 
173
+ # "on_extended_data" is called when the process writes something to stderr
174
+ # NOTE: When requesting a pty (ch.request_pty), everything goes to stdout
175
+ ch.on_extended_data do |c, type, data|
176
+ stderr+=data
177
+ ui.info(data, :new_line => false) unless options[:mute]
178
+ end
130
179
 
131
- def ssh_execute(host,command, options = { :progress => "on"} )
132
- defaults= { :port => "22", :exitcode => "0", :user => "root"}
133
- options=defaults.merge(options)
134
- pid=""
135
- stdin=command
136
- stdout=""
137
- stderr=""
138
- status=-99999
139
-
140
- unless options[:mute]
141
- ui.info "Executing command: #{command}"
142
- end
143
-
144
- Net::SSH.start(host, options[:user], {
145
- :port => options[:port],
146
- :password => options[:password],
147
- :auth_methods => ['password','publickey','keyboard-interactive'],
148
- :paranoid => false }) do |ssh|
149
-
150
- # open a new channel and configure a minimal set of callbacks, then run
151
- # the event loop until the channel finishes (closes)
152
- channel = ssh.open_channel do |ch|
153
-
154
- #request pty for sudo stuff and so
155
- ch.request_pty do |ch, success|
156
- raise "Error requesting pty" unless success
157
- end
158
-
159
- ch.exec "#{command}" do |ch, success|
160
- raise "could not execute command" unless success
161
-
162
-
163
- # "on_data" is called when the process writes something to stdout
164
- ch.on_data do |c, data|
165
- stdout+=data
166
-
167
- ui.info(data, :new_line => false) unless options[:mute]
168
-
169
- end
170
-
171
- # "on_extended_data" is called when the process writes something to stderr
172
- # NOTE: When requesting a pty (ch.request_pty), everything goes to stdout
173
- ch.on_extended_data do |c, type, data|
174
- stderr+=data
175
-
176
- ui.info(data, :new_line => false) unless options[:mute]
177
-
178
- end
179
-
180
- #exit code
181
- #http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/a806b0f5dae4e1e2
182
- channel.on_request("exit-status") do |ch, data|
183
- exit_code = data.read_long
184
- status=exit_code
185
- if exit_code > 0
186
- ui.info "ERROR: exit code #{exit_code}" unless options[:mute]
187
- else
188
- #ui.info "Successfully executed"
189
- end
190
- end
191
-
192
- channel.on_request("exit-signal") do |ch, data|
193
- ui.info "SIGNAL: #{data.read_long}" unless options[:mute]
194
- end
195
-
196
- ch.on_close {
197
- #ui.info "done!"
198
- }
199
- #status=ch.exec "echo $?"
200
- end
201
- end
202
- channel.wait
203
- end
204
-
205
-
206
- if (status.to_s != options[:exitcode] )
207
- if (options[:exitcode]=="*")
208
- #its a test so we don't need to worry
209
- else
210
- raise Veewee::Provider::Core::Helper::SshResult.new(stdout,stderr,status), "Exitcode was not what we expected"
211
- end
212
-
180
+ #exit code
181
+ #http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/a806b0f5dae4e1e2
182
+ channel.on_request("exit-status") do |ch, data|
183
+ exit_code = data.read_long
184
+ status=exit_code
185
+ if exit_code > 0
186
+ ui.info "ERROR: exit code #{exit_code}" unless options[:mute]
187
+ else
188
+ #ui.info "Successfully executed"
213
189
  end
214
-
215
- return Veewee::Provider::Core::Helper::SshResult.new(stdout,stderr,status)
216
-
217
190
  end
218
191
 
192
+ channel.on_request("exit-signal") do |ch, data|
193
+ ui.info "SIGNAL: #{data.read_long}" unless options[:mute]
194
+ end
219
195
 
220
-
221
- end #Class
222
- end #Module
223
- end #Module
224
- end #Module
225
- end #Module
196
+ ch.on_close {
197
+ #ui.info "done!"
198
+ }
199
+ #status=ch.exec "echo $?"
200
+ end
201
+ end
202
+ channel.wait
203
+ end
204
+
205
+ if (status.to_s != options[:exitcode] )
206
+ if (options[:exitcode]=="*")
207
+ #its a test so we don't need to worry
208
+ else
209
+ raise Veewee::Provider::Core::Helper::SshResult.new(stdout,stderr,status), "Exitcode was not what we expected"
210
+ end
211
+
212
+ end
213
+
214
+ return Veewee::Provider::Core::Helper::SshResult.new(stdout,stderr,status)
215
+ end
216
+
217
+ def ssh_connection(host, options, defaults={}, &block)
218
+ options=defaults.merge(options)
219
+ options={
220
+ :auth_methods => %w[ password publickey keyboard-interactive ],
221
+ :paranoid => false
222
+ }.merge(options)
223
+ options=Hash[ options.select { |key, value| Net::SSH::VALID_OPTIONS.include?(key) } ]
224
+ Net::SSH.start( host, options[:user], options ) do |ssh|
225
+ yield ssh
226
+ end
227
+ end
228
+
229
+ end
@@ -4,16 +4,10 @@ module Veewee
4
4
  module BoxCommand
5
5
 
6
6
  def ssh_options
7
- ssh_options={
8
- :user => definition.ssh_user,
9
- :port => 22,
10
- :password => definition.ssh_password,
11
- :timeout => definition.ssh_login_timeout.to_i
12
- }
13
- return ssh_options
7
+ build_ssh_options
14
8
  end
15
9
 
16
- end # End Module
17
- end # End Module
18
- end # End Module
19
- end # End Module
10
+ end
11
+ end
12
+ end
13
+ end
@@ -175,7 +175,7 @@ module Veewee
175
175
  def optimize_disk
176
176
  env.ui.info "Optimizing Disk"
177
177
  path_to_hdd = File.join read_settings.fetch("Home"), "harddisk.hdd"
178
- optimize_command = "#{@prldisktool} compact --buildmap --hdd #{path_to_hdd}"
178
+ optimize_command = "#{@prldisktool} compact --hdd #{path_to_hdd}"
179
179
  shell_exec optimize_command
180
180
  end
181
181
  end #Module
@@ -5,13 +5,7 @@ module Veewee
5
5
 
6
6
  # Translate the definition ssh options to ssh options that can be passed to Net::Ssh calls
7
7
  def ssh_options
8
- ssh_options={
9
- :user => definition.ssh_user,
10
- :port => 22,
11
- :password => definition.ssh_password,
12
- :timeout => definition.ssh_login_timeout.to_i
13
- }
14
- return ssh_options
8
+ build_ssh_options
15
9
  end
16
10
 
17
11
  end
@@ -4,22 +4,16 @@ module Veewee
4
4
  module BoxCommand
5
5
 
6
6
  def ssh_options
7
- port=definition.ssh_host_port
8
- if self.exists?
9
- forward=self.forwarding("guestssh")
10
- unless forward.nil?
11
- port=forward[:host_port]
7
+ build_ssh_options.tap do |options|
8
+ port = definition.ssh_host_port
9
+ if self.exists?
10
+ forward=self.forwarding("guestssh")
11
+ unless forward.nil?
12
+ port=forward[:host_port]
13
+ end
12
14
  end
15
+ options[:port] = port
13
16
  end
14
-
15
- ssh_options={
16
- :user => definition.ssh_user,
17
- :port => port,
18
- :password => definition.ssh_password,
19
- :timeout => definition.ssh_login_timeout.to_i
20
- }
21
- return ssh_options
22
-
23
17
  end
24
18
 
25
19
  end
@@ -5,13 +5,7 @@ module Veewee
5
5
 
6
6
  # Translate the definition ssh options to ssh options that can be passed to Net::Ssh calls
7
7
  def ssh_options
8
- ssh_options={
9
- :user => definition.ssh_user,
10
- :port => 22,
11
- :password => definition.ssh_password,
12
- :timeout => definition.ssh_login_timeout.to_i
13
- }
14
- return ssh_options
8
+ build_ssh_options
15
9
  end
16
10
 
17
11
  end
@@ -22,12 +22,12 @@ module Veewee
22
22
 
23
23
  def fusion_version
24
24
  # We ask the system profiler for all installed software
25
- shell_results = shell_exec("system_profiler SPApplicationsDataType")
25
+ shell_results = shell_exec("system_profiler SPApplicationsDataType", :external_encoding => Encoding::UTF_8)
26
26
 
27
27
  env.logger.info("Checking version by querying the system_profiler")
28
28
  env.logger.debug(shell_results.stdout)
29
29
 
30
- if (shell_results.stdout == "")
30
+ if shell_results.stdout == ""
31
31
  ui.warn "Could not detect the exact version of vmware. assuming 5.1"
32
32
  version = "5.1"
33
33
  else
@@ -4,5 +4,5 @@ end
4
4
 
5
5
  # Only set the version constant if it wasn't set before
6
6
  unless defined?(Veewee::VERSION)
7
- ::Veewee::VERSION="0.4.0"
7
+ ::Veewee::VERSION="0.4.1"
8
8
  end
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.0.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.0.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.0.0/amd64/iso-cd/debian-7.0.0-amd64-netinst.iso",
12
10
  :iso_md5 => "6a55096340b5b1b7d335d5b559e13ea0",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -7,9 +7,7 @@ Veewee::Definition.declare({
7
7
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
8
8
  :os_type_id => 'Debian',
9
9
  :iso_file => "debian-7.0.0-i386-netinst.iso",
10
- :iso_src => "",
11
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
12
- "Visit http://cdimage.debian.org/cdimage/archive/7.0.0/i386/ and download it via torrent or jigdo",
10
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.0.0/i386/iso-cd/debian-7.0.0-i386-netinst.iso",
13
11
  :iso_md5 => "a6b93666a5393334accb7ac4ee28d949",
14
12
  :iso_download_timeout => "1000",
15
13
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.1.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.1.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.1.0/amd64/iso-cd/debian-7.1.0-amd64-netinst.iso",
12
10
  :iso_md5 => "80f498a1f9daa76bc911ae13692e4495",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -4,9 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.1.0-i386-netinst.iso",
7
- :iso_src => "",
8
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
9
- "Visit http://cdimage.debian.org/cdimage/archive/7.1.0/i386/ and download it via torrent or jigdo",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.1.0/i386/iso-cd/debian-7.1.0-i386-netinst.iso",
10
8
  :iso_md5 => "a70efb67ca061175eabe7c5dc04ab323",
11
9
  :iso_download_timeout => "1000",
12
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.2.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.2.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.2.0/amd64/iso-cd/debian-7.2.0-amd64-netinst.iso",
12
10
  :iso_md5 => "b86774fe4de88be6378ba3d71b8029bd",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -7,8 +7,9 @@ useradd -G sudo -p $(perl -e'print crypt("vagrant", "vagrant")') -m -s /bin/bash
7
7
 
8
8
  # Install vagrant keys
9
9
  mkdir -pm 700 /home/vagrant/.ssh
10
- curl -Lo /home/vagrant/.ssh/authorized_keys \
11
- 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
10
+ curl -fLo /home/vagrant/.ssh/authorized_keys \
11
+ 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' ||
12
+ exit $?
12
13
  chmod 0600 /home/vagrant/.ssh/authorized_keys
13
14
  chown -R vagrant:vagrant /home/vagrant/.ssh
14
15
 
@@ -4,9 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.2.0-i386-netinst.iso",
7
- :iso_src => "",
8
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
9
- "Visit http://cdimage.debian.org/cdimage/archive/7.2.0/i386/ and download it via torrent or jigdo",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.2.0/i386/iso-cd/debian-7.2.0-i386-netinst.iso",
10
8
  :iso_md5 => "564282a81b5aef7015501e497fc63d81",
11
9
  :iso_download_timeout => "1000",
12
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -11,8 +11,9 @@ useradd -G sudo -p $(perl -e'print crypt("vagrant", "vagrant")') -m -s /bin/bash
11
11
 
12
12
  # Install vagrant keys
13
13
  mkdir -pm 700 /home/vagrant/.ssh
14
- curl -Lo /home/vagrant/.ssh/authorized_keys \
15
- 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
14
+ curl -fLo /home/vagrant/.ssh/authorized_keys \
15
+ 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' ||
16
+ exit $?
16
17
  chmod 0600 /home/vagrant/.ssh/authorized_keys
17
18
  chown -R vagrant:vagrant /home/vagrant/.ssh
18
19
 
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.3.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.3.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.3.0/amd64/iso-cd/debian-7.3.0-amd64-netinst.iso",
12
10
  :iso_md5 => "72473e8a5e65b61acc7efde90d9f71d1",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -4,9 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.3.0-i386-netinst.iso",
7
- :iso_src => "",
8
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
9
- "Visit http://cdimage.debian.org/cdimage/archive/7.3.0/i386/ and download it via torrent or jigdo",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.3.0/i386/iso-cd/debian-7.3.0-i386-netinst.iso",
10
8
  :iso_md5 => "04c58f30744e64a0459caf7d7cace479",
11
9
  :iso_download_timeout => "1000",
12
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.4.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.4.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.4.0/amd64/iso-cd/debian-7.4.0-amd64-netinst.iso",
12
10
  :iso_md5 => "e7e9433973f082a297793c3c5010b2c5",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -4,9 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.4.0-i386-netinst.iso",
7
- :iso_src => "",
8
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
9
- "Visit http://cdimage.debian.org/cdimage/archive/7.4.0/i386/ and download it via torrent or jigdo",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.4.0/i386/iso-cd/debian-7.4.0-i386-netinst.iso",
10
8
  :iso_md5 => "7339b668a81b417ac023d73739dc6a03",
11
9
  :iso_download_timeout => "1000",
12
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -6,9 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.5.0-amd64-netinst.iso",
9
- :iso_src => "",
10
- :iso_download_instructions => "- You need to download this manually as the ISO is no longer directly downloadable.\n"+
11
- "Visit http://cdimage.debian.org/cdimage/archive/7.5.0/amd64/ and download it via torrent or jigdo",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.5.0/amd64/iso-cd/debian-7.5.0-amd64-netinst.iso",
12
10
  :iso_md5 => "8fdb6715228ea90faba58cb84644d296",
13
11
  :iso_download_timeout => "1000",
14
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -4,7 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.5.0-i386-netinst.iso",
7
- :iso_src => "http://cdimage.debian.org/cdimage/archive/7.5.0/i386/iso-cd/debian-7.5.0-i386-netinst.iso",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.5.0/i386/iso-cd/debian-7.5.0-i386-netinst.iso",
8
8
  :iso_md5 => "0e6eaacb5a5828473afe90f6df9c8f16",
9
9
  :iso_download_timeout => "1000",
10
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -6,7 +6,7 @@ Veewee::Definition.declare({
6
6
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
7
7
  :os_type_id => 'Debian_64',
8
8
  :iso_file => "debian-7.6.0-amd64-netinst.iso",
9
- :iso_src => "http://cdimage.debian.org/debian-cd/7.6.0/amd64/iso-cd/debian-7.6.0-amd64-netinst.iso",
9
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.6.0/amd64/iso-cd/debian-7.6.0-amd64-netinst.iso",
10
10
  :iso_md5 => "8a3c2ad7fd7a9c4c7e9bcb5cae38c135",
11
11
  :iso_download_timeout => "1000",
12
12
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -4,7 +4,7 @@ Veewee::Definition.declare({
4
4
  :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
5
5
  :os_type_id => 'Debian',
6
6
  :iso_file => "debian-7.6.0-i386-netinst.iso",
7
- :iso_src => "http://cdimage.debian.org/debian-cd/7.6.0/i386/iso-cd/debian-7.6.0-i386-netinst.iso",
7
+ :iso_src => "http://mirror.i3d.net/pub/debian-cd/7.6.0/i386/iso-cd/debian-7.6.0-i386-netinst.iso",
8
8
  :iso_md5 => "528e1a7315da1bbf50bd4d187880a519",
9
9
  :iso_download_timeout => "1000",
10
10
  :boot_wait => "10", :boot_cmd_sequence => [
@@ -5,6 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.name = "veewee"
6
6
  s.version = Veewee::VERSION
7
7
  s.platform = Gem::Platform::RUBY
8
+ s.license = 'MIT'
8
9
  s.authors = ["Patrick Debois"]
9
10
  s.email = ["patrick.debois@jedi.be"]
10
11
  s.homepage = "http://github.com/jedi4ever/veewee/"
@@ -34,7 +35,7 @@ Gem::Specification.new do |s|
34
35
  s.add_dependency "fog", "~> 1.8"
35
36
  s.add_dependency "childprocess"
36
37
  s.add_dependency "grit"
37
- s.add_dependency "fission", "0.4.0"
38
+ s.add_dependency "fission", "0.5.0"
38
39
  s.add_dependency "to_slug"
39
40
  s.add_dependency "os", "~> 0.9.6"
40
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veewee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Debois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-01 00:00:00.000000000 Z
11
+ date: 2014-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -198,14 +198,14 @@ dependencies:
198
198
  requirements:
199
199
  - - '='
200
200
  - !ruby/object:Gem::Version
201
- version: 0.4.0
201
+ version: 0.5.0
202
202
  type: :runtime
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - '='
207
207
  - !ruby/object:Gem::Version
208
- version: 0.4.0
208
+ version: 0.5.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: to_slug
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -2327,7 +2327,8 @@ files:
2327
2327
  - validation/vagrant.pub
2328
2328
  - veewee.gemspec
2329
2329
  homepage: http://github.com/jedi4ever/veewee/
2330
- licenses: []
2330
+ licenses:
2331
+ - MIT
2331
2332
  metadata: {}
2332
2333
  post_install_message:
2333
2334
  rdoc_options: []