veewee 0.3.6 → 0.3.7

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 (96) hide show
  1. data/README.md +1 -1
  2. data/Rakefile +23 -23
  3. data/bin/veewee +1 -1
  4. data/doc/kvm.md +58 -9
  5. data/doc/providers.md +2 -2
  6. data/doc/vagrant.md +1 -1
  7. data/lib/vagrant_init.rb +0 -1
  8. data/lib/veewee/cli.rb +1 -1
  9. data/lib/veewee/command.rb +2 -2
  10. data/lib/veewee/command/fusion.rb +2 -2
  11. data/lib/veewee/command/kvm.rb +1 -1
  12. data/lib/veewee/command/parallels.rb +2 -2
  13. data/lib/veewee/command/vagrant/define.rb +1 -1
  14. data/lib/veewee/command/vagrant/undefine.rb +1 -1
  15. data/lib/veewee/command/vbox.rb +2 -2
  16. data/lib/veewee/config.rb +8 -10
  17. data/lib/veewee/definition.rb +41 -41
  18. data/lib/veewee/definitions.rb +27 -30
  19. data/lib/veewee/environment.rb +16 -16
  20. data/lib/veewee/error.rb +18 -15
  21. data/lib/veewee/provider/core/box/build.rb +1 -1
  22. data/lib/veewee/provider/kvm/box.rb +1 -6
  23. data/lib/veewee/provider/kvm/box/validate_kvm.rb +1 -1
  24. data/lib/veewee/provider/kvm/provider.rb +19 -32
  25. data/lib/veewee/provider/virtualbox/box/helper/create.rb +5 -1
  26. data/lib/veewee/providers.rb +22 -21
  27. data/lib/veewee/template.rb +9 -9
  28. data/lib/veewee/templates.rb +14 -15
  29. data/lib/veewee/ui.rb +7 -7
  30. data/lib/veewee/version.rb +1 -1
  31. data/templates/CentOS-6.3-i386-minimal/base.sh +1 -1
  32. data/templates/CentOS-6.3-i386-minimal/definition.rb +13 -4
  33. data/templates/CentOS-6.3-i386-minimal/ks.cfg +50 -14
  34. data/templates/CentOS-6.3-i386-minimal/virtualbox.sh +3 -3
  35. data/templates/CentOS-6.3-x86_64-minimal/base.sh +1 -1
  36. data/templates/CentOS-6.3-x86_64-netboot/base.sh +14 -0
  37. data/templates/CentOS-6.3-x86_64-netboot/chef.sh +3 -0
  38. data/templates/CentOS-6.3-x86_64-netboot/cleanup.sh +5 -0
  39. data/templates/CentOS-6.3-x86_64-netboot/definition.rb +40 -0
  40. data/templates/CentOS-6.3-x86_64-netboot/ks.cfg +41 -0
  41. data/templates/CentOS-6.3-x86_64-netboot/puppet.sh +12 -0
  42. data/templates/CentOS-6.3-x86_64-netboot/ruby.sh +3 -0
  43. data/templates/CentOS-6.3-x86_64-netboot/vagrant.sh +18 -0
  44. data/templates/CentOS-6.3-x86_64-netboot/virtualbox.sh +8 -0
  45. data/templates/{Debian-7.0-b2-i386-netboot → CentOS-6.3-x86_64-netboot}/zerodisk.sh +0 -0
  46. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/base.sh +2 -3
  47. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/chef.sh +0 -0
  48. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/cleanup-virtualbox.sh +0 -0
  49. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/cleanup.sh +0 -0
  50. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-amd64-netboot}/definition.rb +3 -3
  51. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-amd64-netboot}/preseed.cfg +0 -0
  52. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/puppet.sh +0 -0
  53. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/ruby.sh +0 -0
  54. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/vagrant.sh +0 -0
  55. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-amd64-netboot}/virtualbox.sh +0 -0
  56. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-amd64-netboot}/zerodisk.sh +0 -0
  57. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/base.sh +2 -3
  58. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/chef.sh +0 -0
  59. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/cleanup-virtualbox.sh +0 -0
  60. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/cleanup.sh +0 -0
  61. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-i386-netboot}/definition.rb +3 -3
  62. data/templates/{Debian-7.0-b2-i386-netboot → Debian-7.0-b4-i386-netboot}/preseed.cfg +0 -0
  63. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/puppet.sh +0 -0
  64. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/ruby.sh +0 -0
  65. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/vagrant.sh +0 -0
  66. data/templates/{Debian-7.0-b3-amd64-netboot → Debian-7.0-b4-i386-netboot}/virtualbox.sh +0 -0
  67. data/templates/Debian-7.0-b4-i386-netboot/zerodisk.sh +3 -0
  68. data/templates/Fedora-18-i386/definition.rb +6 -6
  69. data/templates/Fedora-18-i386/postinstall.sh +3 -1
  70. data/templates/Fedora-18-x86_64/definition.rb +5 -5
  71. data/templates/Fedora-18-x86_64/postinstall.sh +6 -1
  72. data/templates/ubuntu-12.04.1-server-amd64-packages/postinstall.sh +4 -5
  73. data/templates/ubuntu-12.04.1-server-amd64/postinstall.sh +4 -5
  74. data/templates/ubuntu-8.04.4-server-amd64/postinstall.sh +6 -6
  75. data/templates/ubuntu-8.04.4-server-i386/postinstall.sh +6 -6
  76. data/templates/windows-8-amd64/Autounattend.xml +140 -0
  77. data/templates/windows-8-amd64/README.md +134 -0
  78. data/templates/windows-8-amd64/cygwin-setup.exe +0 -0
  79. data/templates/windows-8-amd64/definition.rb +101 -0
  80. data/templates/windows-8-amd64/install-cygwin-sshd.bat +38 -0
  81. data/templates/windows-8-amd64/install-winrm.bat +11 -0
  82. data/templates/windows-8-amd64/oracle-cert.cer +0 -0
  83. data/templates/windows-8-amd64/postinstall.sh +122 -0
  84. data/templates/windows-8-amd64/winrm.rb +8 -0
  85. data/templates/windows-8-i386/Autounattend.xml +140 -0
  86. data/templates/windows-8-i386/README.md +134 -0
  87. data/templates/windows-8-i386/cygwin-setup.exe +0 -0
  88. data/templates/windows-8-i386/definition.rb +101 -0
  89. data/templates/windows-8-i386/install-cygwin-sshd.bat +38 -0
  90. data/templates/windows-8-i386/install-winrm.bat +11 -0
  91. data/templates/windows-8-i386/oracle-cert.cer +0 -0
  92. data/templates/windows-8-i386/postinstall.sh +122 -0
  93. data/templates/windows-8-i386/winrm.rb +8 -0
  94. data/test/build_realtest.rb +4 -4
  95. data/veewee.gemspec +8 -9
  96. metadata +55 -27
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  **VeeWee:** the tool to easily build vagrant base boxes or kvm,virtualbox and fusion images
2
2
 
3
3
  Vagrant is a great tool to test new things or changes in a virtual machine(Virtualbox) using either chef or puppet.
4
- The first step is to download an existing 'base box'. I believe this scares a lot of people as they don't know who or how this box was build. Therefore lots of people end up first building their own base box to use with vagrant.
4
+ The first step is to download an existing 'base box'. I believe this scares a lot of people as they don't know who or how this box was built. Therefore lots of people end up first building their own base box to use with vagrant.
5
5
 
6
6
  Besides building Vagrant boxes, veewee can also be used for:
7
7
 
data/Rakefile CHANGED
@@ -25,33 +25,33 @@ Rake::TestTask.new do |t|
25
25
  end
26
26
 
27
27
  desc 'Verify ISO'
28
- task :iso, [:template_name] do |t,args|
28
+ task :iso, [:template_name] do |t, args|
29
29
  require 'net/http'
30
30
  #if args.to_hash.size!=1
31
31
  #puts "needs one arguments: rake iso [\"yourname\"]"
32
32
  #exit
33
33
  #end
34
34
  Dir.glob("templates/*").each do |name|
35
- definition_name=File.basename(name)
35
+ definition_name = File.basename(name)
36
36
  puts name
37
- definition=Veewee::Environment.new(:cwd => ".",:definition_dir => "templates").definitions[definition_name]
38
- next if definition.nil? || definition.iso_src.nil? || definition.iso_src==""
37
+ definition = Veewee::Environment.new(:cwd => ".", :definition_dir => "templates").definitions[definition_name]
38
+ next if definition.nil? || definition.iso_src.nil? || definition.iso_src == ""
39
39
  begin
40
- url=definition.iso_src
41
- found=false
40
+ url = definition.iso_src
41
+ found = false
42
42
  response = nil
43
- while found==false
44
- uri=URI.parse(url)
43
+ while found == false
44
+ uri = URI.parse(url)
45
45
  if uri.is_a?(URI::HTTP)
46
- Net::HTTP.start(uri.host,uri.port) {|http|
46
+ Net::HTTP.start(uri.host, uri.port) { |http|
47
47
  response = http.head(uri.path)
48
48
  }
49
49
  unless response['location'].nil?
50
50
  #puts "Redirecting to "+response['location']
51
- url=response['location']
51
+ url = response['location']
52
52
  else
53
- length=response['content-length']
54
- found=true
53
+ length = response['content-length']
54
+ found = true
55
55
  end
56
56
  elsif uri.is_a?(URI::FTP)
57
57
  require 'net/ftp'
@@ -62,7 +62,7 @@ task :iso, [:template_name] do |t,args|
62
62
  found = true
63
63
  rescue Net::FTPReplyError => e
64
64
  reply = e.message
65
- err_code = reply[0,3].to_i
65
+ err_code = reply[0, 3].to_i
66
66
  unless err_code == 500 || err_code == 502
67
67
  # other problem, raise
68
68
  raise "Got ftp site but doesn't support size subcommand"
@@ -75,22 +75,22 @@ task :iso, [:template_name] do |t,args|
75
75
  if length.to_i < 10000
76
76
  puts definition.iso_src
77
77
  puts "Incorrect length #{length.to_i}"
78
- puts uri.host,uri.port, uri.path,response.code
78
+ puts uri.host, uri.port, uri.path, response.code
79
79
  end
80
80
  rescue Exception => ex
81
- puts "Error"+ex.to_s+definition.iso_src
81
+ puts "Error" + ex.to_s + definition.iso_src
82
82
  end
83
83
  end
84
84
  end
85
85
 
86
86
  desc 'Autobuilds all templates and runs validation.'
87
- task :autotest, [:pattern] do |t,args|
87
+ task :autotest, [:pattern] do |t, args|
88
88
 
89
89
  # We overrule all timeouts for tcp and ssh
90
90
  #ENV['VEEWEE_TIMEOUT']='600'
91
91
 
92
- ve=Veewee::Environment.new()
93
- ve.templates.each do |name,template|
92
+ ve = Veewee::Environment.new
93
+ ve.templates.each do |name, template|
94
94
 
95
95
  # If pattern was given, only take the ones that match the pattern
96
96
  unless args[:pattern].nil?
@@ -98,11 +98,11 @@ task :autotest, [:pattern] do |t,args|
98
98
  end
99
99
 
100
100
  begin
101
- ve.definitions.define("auto",name, { 'force' => true})
102
- vd=ve.definitions["auto"]
103
- box=ve.providers["virtualbox"].get_box("auto")
101
+ ve.definitions.define("auto", name, { 'force' => true })
102
+ vd = ve.definitions["auto"]
103
+ box = ve.providers["virtualbox"].get_box("auto")
104
104
  puts "AUTO: Building #{name}"
105
- box.build({"auto" => true,"force" => true, 'nogui' => true })
105
+ box.build({ "auto" => true, "force" => true, 'nogui' => true })
106
106
  puts "AUTO: Validating #{name}"
107
107
  box.validate_vagrant
108
108
  puts "AUTO: Success #{name}"
@@ -111,7 +111,7 @@ task :autotest, [:pattern] do |t,args|
111
111
  puts "AUTO: Template #{name} failed - #{ex}"
112
112
  if box.running?
113
113
  begin
114
- screenshot="screenshot-auto-#{name}.png"
114
+ screenshot = "screenshot-auto-#{name}.png"
115
115
  puts "AUTO: Taking snapshot #{screenshot}"
116
116
  box.screenshot(screenshot)
117
117
  rescue Veewee::Error => ex
data/bin/veewee CHANGED
@@ -20,7 +20,7 @@ begin
20
20
  env.load!
21
21
 
22
22
  # Start the CLI
23
- ::Veewee::CLI.start(ARGV,:env => env)
23
+ ::Veewee::CLI.start(ARGV, :env => env)
24
24
 
25
25
  rescue Veewee::Error => e
26
26
  env.ui.error "#{e}"
data/doc/kvm.md CHANGED
@@ -1,8 +1,10 @@
1
- NOTE:Virtualbox doesn't like KVM to be enabled
1
+ # KVM Provider
2
2
 
3
- ## Prerequires
3
+ NOTE: Virtualbox doesn't like KVM to be enabled
4
4
 
5
- To check if you're kernel can run kvm :
5
+ ## Prerequisites
6
+
7
+ To check if your kernel can run kvm :
6
8
 
7
9
  # kvm_ok or kvm-ok command (on Ubuntu at least)
8
10
  kvm_ok
@@ -11,10 +13,59 @@ To check if you're kernel can run kvm :
11
13
 
12
14
  The modules needed are the following : kvm, kvm_intel or kvm-amd.
13
15
 
14
- ## Define a new box
16
+ You need to have at least one storage pool defined in libvirt. You can check all
17
+ available storage pools with
18
+
19
+ virsh pool-list
20
+
21
+ If no storage pool is listed, you can create a new storage pool which saves all
22
+ VM images in the directory /var/lib/libvirt/images with
23
+
24
+ mkdir -p /var/lib/libvirt/images
25
+ cat > /tmp/pool.xml << EOF
26
+ <pool type="dir">
27
+ <name>virtimages</name>
28
+ <target>
29
+ <path>/var/lib/libvirt/images</path>
30
+ <format type='qcow2'/>
31
+ </target>
32
+ </pool>
33
+ EOF
34
+ virsh pool-create /tmp/pool.xml
35
+
36
+ You need to have at least one network defined. You can check all available
37
+ networks with
38
+
39
+ virsh net-list
40
+
41
+ If there is no default network, consult the documentation of your operating
42
+ system to find out how to creat it.
43
+
44
+ If you are using libvirt with a URI different than the default `qemu:///system`,
45
+ you need to create a config file for fog.io. If your libvirt endpoint is
46
+ accessible at `qemu+ssh://cloud@myhost.com/system` you can create the .fog config
47
+ file with
48
+
49
+ cat > ~/.fog << EOF
50
+ :default:
51
+ :libvirt_uri: qemu+ssh://cloud@myhost.com/system
52
+
53
+ ## Using VeeWee
54
+
55
+ List available templates
56
+
57
+ veewee kvm templates
58
+
59
+ Use one of the listed templates to define a new box e.g. with
60
+
61
+ veewee kvm define 'My Ubuntu 12.10 box' 'ubuntu-12.10-server-amd64'
62
+
63
+ Build the box using KVM / Quemu (this will take a while)
64
+
65
+ veewee kvm build 'My Ubuntu 12.10 box'
15
66
 
16
- The workflow to create a box is almost the same as with the Virtualbox
17
- provider (and others).
67
+ You may want to use the VNC console (e.g. through virt-manager) to monitor /
68
+ check the build process.
18
69
 
19
70
  ## Options
20
71
 
@@ -25,9 +76,7 @@ There is currently few options supported :
25
76
  2. **network_bridge_name**: the name of the bridge. It is used just in case
26
77
  **network_type** is set to _bridge_.
27
78
  3. **pool_name**: the _storage_ pool name to be used when creating the box. If
28
- not specified, the default one is used. _Note: it is currently not working
29
- with the current fog version (1.7.0) but should be fixed as soon as the fog
30
- gem is released_.
79
+ not specified, the default one is used.
31
80
 
32
81
  ## Notes
33
82
 
data/doc/providers.md CHANGED
@@ -18,6 +18,6 @@ To interact with the screen , veewee enables VNC on the created vmware fusion ma
18
18
 
19
19
  ## KVM
20
20
 
21
- To interact with KVM veewee, uses [libvirt support](http://libvirt.org/ruby/) provided through [Fog gem](http://fog.io) libvirt support
21
+ To interact with KVM veewee, uses [libvirt support](http://libvirt.org/ruby/) provided through [Fog gem](http://fog.io).
22
22
 
23
- To interact with the screen , veewee enables VNC on the created vmware fusion machines and use the [Ruby-VNC gem](http://code.google.com/p/ruby-vnc/) to send the keystrokes. Here too , sending keystrokes too fast is a problem.
23
+ To interact with the screen , veewee enables VNC on the created kvm machines and use the [Ruby-VNC gem](http://code.google.com/p/ruby-vnc/) to send the keystrokes. Here too , sending keystrokes too fast is a problem.
data/doc/vagrant.md CHANGED
@@ -3,7 +3,7 @@ Let's define a Ubuntu 10.10 server i386 basebox called myunbuntubox
3
3
  this is essentially making a copy based on the templates provided above.
4
4
 
5
5
  $ veewee vbox define 'myubuntubox' 'ubuntu-10.10-server-i386'
6
- The basebox 'myubuntubox' has been succesfully created from the template ''ubuntu-10.10-server-i386'
6
+ The basebox 'myubuntubox' has been successfully created from the template ''ubuntu-10.10-server-i386'
7
7
  You can now edit the definition files stored in definitions/myubuntubox
8
8
  or build the box with:
9
9
  veewee vbox build 'myubuntubox'
data/lib/vagrant_init.rb CHANGED
@@ -5,5 +5,4 @@ rescue LoadError
5
5
  require 'rubygems'
6
6
  require 'veewee/command/vagrant'
7
7
  require 'veewee/command/kvm'
8
-
9
8
  end
data/lib/veewee/cli.rb CHANGED
@@ -30,7 +30,7 @@ module Veewee
30
30
  # command listing.
31
31
  # @param [Hash] opts Other options (not gone into detail here, look at
32
32
  # the source instead).
33
- def self.register(klass, name, usage, description, opts=nil)
33
+ def self.register(klass, name, usage, description, opts = nil)
34
34
  opts ||= {}
35
35
 
36
36
  if klass <= Command::GroupBase
@@ -1,8 +1,8 @@
1
1
  module Veewee
2
2
  module Command
3
- autoload :Base, 'veewee/command/base'
3
+ autoload :Base, 'veewee/command/base'
4
4
  autoload :GroupBase, 'veewee/command/group_base'
5
- autoload :Helpers, 'veewee/command/helpers'
5
+ autoload :Helpers, 'veewee/command/helpers'
6
6
  autoload :NamedBase, 'veewee/command/named_base'
7
7
  end
8
8
  end
@@ -93,7 +93,7 @@ module Veewee
93
93
  venv=Veewee::Environment.new(options)
94
94
  venv.ui=env.ui
95
95
  venv.definitions.define(definition_name,template_name,options)
96
- env.ui.info "The basebox '#{definition_name}' has been succesfully created from the template '#{template_name}'"
96
+ env.ui.info "The basebox '#{definition_name}' has been successfully created from the template '#{template_name}'"
97
97
  env.ui.info "You can now edit the definition files stored in definitions/#{definition_name} or build the box with:"
98
98
  env.ui.info "veewee fusion build '#{definition_name}'"
99
99
  end
@@ -106,7 +106,7 @@ module Veewee
106
106
  venv=Veewee::Environment.new(options)
107
107
  venv.ui=env.ui
108
108
  venv.definitions.undefine(definition_name,options)
109
- env.ui.info "Definition #{definition_name} succesfully removed",:prefix => false
109
+ env.ui.info "Definition #{definition_name} successfully removed",:prefix => false
110
110
  rescue Error => ex
111
111
  env.ui.error "#{ex}" , :prefix => false
112
112
  exit -1
@@ -60,7 +60,7 @@ module Veewee
60
60
  venv=Veewee::Environment.new(options)
61
61
  venv.ui=env.ui
62
62
  venv.definitions.define(definition_name,template_name,options)
63
- env.ui.info "The basebox '#{definition_name}' has been succesfully created from the template '#{template_name}'"
63
+ env.ui.info "The basebox '#{definition_name}' has been successfully created from the template '#{template_name}'"
64
64
  env.ui.info "You can now edit the definition files stored in definitions/#{definition_name} or build the box with:"
65
65
  env.ui.info "veewee kvm build '#{definition_name}'"
66
66
  end
@@ -57,7 +57,7 @@ module Veewee
57
57
  venv=Veewee::Environment.new(options)
58
58
  venv.ui=env.ui
59
59
  venv.definitions.define(definition_name,template_name,options)
60
- env.ui.info "The basebox '#{definition_name}' has been succesfully created from the template '#{template_name}'"
60
+ env.ui.info "The basebox '#{definition_name}' has been successfully created from the template '#{template_name}'"
61
61
  env.ui.info "You can now edit the definition files stored in definitions/#{definition_name} or build the box with:"
62
62
  env.ui.info "veewee parallels build '#{definition_name}'"
63
63
  end
@@ -70,7 +70,7 @@ module Veewee
70
70
  venv=Veewee::Environment.new(options)
71
71
  venv.ui=env.ui
72
72
  venv.definitions.undefine(definition_name,options)
73
- env.ui.info "Definition #{definition_name} succesfully removed",:prefix => false
73
+ env.ui.info "Definition #{definition_name} successfully removed",:prefix => false
74
74
  rescue Error => ex
75
75
  env.ui.error "#{ex}" , :prefix => false
76
76
  exit -1
@@ -33,7 +33,7 @@ module Veewee
33
33
  definition_name=argv[0]
34
34
  template_name=argv[1]
35
35
  venv.definitions.define(definition_name,template_name,options)
36
- venv.ui.info "The basebox '#{definition_name}' has been succesfully created from the template '#{template_name}'"
36
+ venv.ui.info "The basebox '#{definition_name}' has been successfully created from the template '#{template_name}'"
37
37
  venv.ui.info "You can now edit the definition files stored in definitions/#{definition_name} or build the box with:"
38
38
  venv.ui.info "vagrant basebox build '#{definition_name}'"
39
39
  rescue Veewee::Error => ex
@@ -28,7 +28,7 @@ module Veewee
28
28
  venv.ui=@env.ui
29
29
  definition_name=argv[0]
30
30
  venv.definitions.undefine(definition_name,options)
31
- venv.ui.info("Definition '#{definition_name}' succesfully removed",:prefix => false)
31
+ venv.ui.info("Definition '#{definition_name}' successfully removed",:prefix => false)
32
32
  rescue Veewee::Error => ex
33
33
  venv.ui.error(ex,:prefix => false)
34
34
  exit -1
@@ -79,7 +79,7 @@ module Veewee
79
79
  venv=Veewee::Environment.new(options)
80
80
  venv.ui=env.ui
81
81
  venv.definitions.define(definition_name,template_name,options)
82
- env.ui.info "The basebox '#{definition_name}' has been succesfully created from the template '#{template_name}'"
82
+ env.ui.info "The basebox '#{definition_name}' has been successfully created from the template '#{template_name}'"
83
83
  env.ui.info "You can now edit the definition files stored in definitions/#{definition_name} or build the box with:"
84
84
  env.ui.info "veewee vbox build '#{definition_name}'"
85
85
  rescue Error => ex
@@ -96,7 +96,7 @@ module Veewee
96
96
  venv=Veewee::Environment.new(options)
97
97
  venv.ui=env.ui
98
98
  venv.definitions.undefine(definition_name,options)
99
- env.ui.info "Definition #{definition_name} succesfully removed" , :prefix => false
99
+ env.ui.info "Definition #{definition_name} successfully removed" , :prefix => false
100
100
  rescue Error => ex
101
101
  env.ui.error("#{ex}",:prefix => false)
102
102
  exit -1
data/lib/veewee/config.rb CHANGED
@@ -10,18 +10,18 @@ module Veewee
10
10
  attr_reader :env
11
11
 
12
12
  def initialize(options)
13
- @env=options[:env]
13
+ @env = options[:env]
14
14
 
15
15
  # Initialize with defaults
16
- @veewee=::Veewee::Config::Veewee.new(self)
16
+ @veewee = ::Veewee::Config::Veewee.new(self)
17
17
 
18
18
  end
19
19
 
20
20
  def define()
21
- config=OpenStruct.new
21
+ config = OpenStruct.new
22
22
 
23
23
  # Expose the veewee config
24
- config.veewee=@veewee
24
+ config.veewee = @veewee
25
25
 
26
26
  # Process config file
27
27
  yield config
@@ -30,12 +30,12 @@ module Veewee
30
30
 
31
31
  # We put a long name to not clash with any function in the Veewee file itself
32
32
  def load_veewee_config()
33
- veewee_configurator=self
33
+ veewee_configurator = self
34
34
  begin
35
- filename=File.join(Dir.pwd,"Veeweefile")
35
+ filename = File.join(Dir.pwd, "Veeweefile")
36
36
  if File.exists?(filename)
37
- veeweefile=File.read(filename)
38
- veeweefile["Veewee::Config.run"]="veewee_configurator.define"
37
+ veeweefile = File.read(filename)
38
+ veeweefile["Veewee::Config.run"] = "veewee_configurator.define"
39
39
  # http://www.dan-manges.com/blog/ruby-dsls-instance-eval-with-delegation
40
40
  instance_eval(veeweefile)
41
41
  else
@@ -57,7 +57,5 @@ module Veewee
57
57
  return self
58
58
  end
59
59
 
60
-
61
-
62
60
  end #End Class
63
61
  end #End Module
@@ -10,18 +10,18 @@ module Veewee
10
10
  attr_accessor :env
11
11
  attr_accessor :path
12
12
 
13
- attr_accessor :cpu_count,:memory_size,:iso_file
13
+ attr_accessor :cpu_count, :memory_size, :video_memory_size, :iso_file
14
14
  attr_accessor :disk_size, :disk_format, :disk_variant
15
15
 
16
16
  attr_accessor :os_type_id
17
17
 
18
- attr_accessor :boot_wait,:boot_cmd_sequence
18
+ attr_accessor :boot_wait, :boot_cmd_sequence
19
19
 
20
- attr_accessor :kickstart_port,:kickstart_ip,:kickstart_timeout, :kickstart_file
20
+ attr_accessor :kickstart_port, :kickstart_ip, :kickstart_timeout, :kickstart_file
21
21
 
22
- attr_accessor :ssh_login_timeout, :ssh_user , :ssh_password, :ssh_key, :ssh_host_port, :ssh_guest_port
22
+ attr_accessor :ssh_login_timeout, :ssh_user, :ssh_password, :ssh_key, :ssh_host_port, :ssh_guest_port
23
23
 
24
- attr_accessor :winrm_login_timeout, :winrm_user , :winrm_password, :winrm_host_port, :winrm_guest_port
24
+ attr_accessor :winrm_login_timeout, :winrm_user, :winrm_password, :winrm_host_port, :winrm_guest_port
25
25
 
26
26
  attr_accessor :sudo_cmd
27
27
  attr_accessor :shutdown_cmd
@@ -32,10 +32,9 @@ module Veewee
32
32
 
33
33
  attr_accessor :floppy_files
34
34
 
35
+ attr_accessor :use_hw_virt_ext, :use_pae, :hostiocache, :use_sata
35
36
 
36
- attr_accessor :use_hw_virt_ext,:use_pae,:hostiocache, :use_sata
37
-
38
- attr_accessor :iso_dowload_timeout, :iso_src,:iso_md5 ,:iso_download_instructions
37
+ attr_accessor :iso_dowload_timeout, :iso_src, :iso_md5, :iso_download_instructions
39
38
 
40
39
  attr_accessor :virtualbox
41
40
  attr_accessor :vmfusion
@@ -50,22 +49,22 @@ module Veewee
50
49
  @_ui
51
50
  end
52
51
 
53
- def initialize(name,path,env)
52
+ def initialize(name, path, env)
54
53
 
55
- @name=name
56
- @env=env
54
+ @name = name
55
+ @env = env
57
56
 
58
- if path.nil?
59
- @path=File.join(env.definition_dir,name)
57
+ if path.nil?
58
+ @path = File.join(env.definition_dir, name)
60
59
  else
61
- @path=path
60
+ @path = path
62
61
  end
63
62
 
64
- # Default is 1 CPU + 256 Mem of memory
65
- @cpu_count='1' ; @memory_size='256';
63
+ # Default is 1 CPU + 256 Mem of memory + 8 Mem of video memory
64
+ @cpu_count = '1' ; @memory_size = '256'; @video_memory_size = '8'
66
65
 
67
66
  # Default there is no ISO file mounted
68
- @iso_file = nil, @iso_src = nil ; @iso_md5 = nil ; @iso_download_timeout=1000 ; @iso_download_instructions = nil
67
+ @iso_file = nil, @iso_src = nil ; @iso_md5 = nil ; @iso_download_timeout = 1000 ; @iso_download_instructions = nil
69
68
 
70
69
  # Shares to add
71
70
  @add_shares = []
@@ -75,10 +74,10 @@ module Veewee
75
74
 
76
75
  # Default there are no post install files
77
76
  @pre_postinstall_file = nil
78
- @postinstall_files=[]; @postinstall_timeout = 10000;
77
+ @postinstall_files = [] ; @postinstall_timeout = 10000 ;
79
78
 
80
- @iso_file=""
81
- @disk_size = '10240'; @disk_format = 'VDI'; @disk_variant = 'Standard'
79
+ @iso_file = ""
80
+ @disk_size = '10240' ; @disk_format = 'VDI' ; @disk_variant = 'Standard'
82
81
  @use_sata = true
83
82
 
84
83
  # :hostiocache => 'off' ,
@@ -86,17 +85,17 @@ module Veewee
86
85
  # :boot_wait => "10", :boot_cmd_sequence => [ "boot"],
87
86
  # :kickstart_port => "7122", :kickstart_ip => "127.0.0.1", :kickstart_timeout => 10000,#
88
87
  # :ssh_login_timeout => "10000", :ssh_user => "vagrant", :ssh_password => "vagrant",:ssh_key => "",
89
- @ssh_host_port = "2222"; @ssh_guest_port = "22"
88
+ @ssh_host_port = "2222" ; @ssh_guest_port = "22"
90
89
  # :ssh_host_port => "2222", :ssh_guest_port => "22", :sudo_cmd => "echo '%p'|sudo -S sh '%f'",
91
90
  # :shutdown_cmd => "shutdown -h now",
92
91
  # :kickstart_file => nil,
93
- @winrm_host_port = "5985"; @winrm_guest_port = "5985"
92
+ @winrm_host_port = "5985" ; @winrm_guest_port = "5985"
94
93
  @winrm_login_timeout = "10000"
95
94
  @boot_cmd_sequence = [] # Empty list by default
96
95
 
97
- @virtualbox={:vm_options => {}}
98
- @vmfusion={:vm_options => {}}
99
- @kvm={:vm_options => {}}
96
+ @virtualbox = { :vm_options => {} }
97
+ @vmfusion = { :vm_options => {} }
98
+ @kvm = { :vm_options => {} }
100
99
 
101
100
  end
102
101
 
@@ -111,56 +110,56 @@ module Veewee
111
110
  end
112
111
 
113
112
  # Class method to loading a definition
114
- def self.load(name,env)
113
+ def self.load(name, env)
115
114
 
116
115
  # Construct the path to the definition
117
116
 
118
- path=File.join(env.definition_dir,name)
119
- definition=Veewee::Definition.new(name,path,env)
117
+ path = File.join(env.definition_dir, name)
118
+ definition = Veewee::Definition.new(name, path, env)
120
119
  env.logger.info "Loading definition directory #{definition.path}"
121
120
  unless definition.exists?
122
- raise Veewee::DefinitionNotExist,"Error: Definition #{name} does not seem to exist"
121
+ raise Veewee::DefinitionNotExist, "Error: Definition #{name} does not seem to exist"
123
122
  end
124
123
 
125
124
  # We create this longer name to avoid clashes
126
- veewee_definition=definition
125
+ veewee_definition = definition
127
126
 
128
127
  if definition.exists?
129
- definition_file=File.join(definition.path,"definition.rb")
130
- content=File.read(definition_file)
128
+ definition_file = File.join(definition.path, "definition.rb")
129
+ content = File.read(definition_file)
131
130
 
132
- content.gsub!("Veewee::Session.declare","veewee_definition.declare")
133
- content.gsub!("Veewee::Definition.declare","veewee_definition.declare")
131
+ content.gsub!("Veewee::Session.declare", "veewee_definition.declare")
132
+ content.gsub!("Veewee::Definition.declare", "veewee_definition.declare")
134
133
 
135
134
  env.logger.info(content)
136
135
 
137
136
  begin
138
- cwd=FileUtils.pwd
137
+ cwd = FileUtils.pwd
139
138
  env.logger.info("Entering path #{definition.path}")
140
139
  FileUtils.cd(definition.path)
141
140
  self.instance_eval(content)
142
- env.logger.info("Returning to path #{cwd}")
141
+ env.logger.info("Returning to path #{cwd}")
143
142
  FileUtils.cd(cwd)
144
143
  rescue NameError => ex
145
- raise Veewee::DefinitionError,"NameError reading definition from file #{definition_file} #{ex}"
144
+ raise Veewee::DefinitionError, "NameError reading definition from file #{definition_file} #{ex}"
146
145
  rescue Exception => ex
147
- raise Veewee::DefinitionError,"Error in the definition from file #{definition_file}\n#{ex}"
146
+ raise Veewee::DefinitionError, "Error in the definition from file #{definition_file}\n#{ex}"
148
147
  end
149
148
  else
150
149
  env.logger.fatal("#{definition_file} not found")
151
- raise Veewee::DefinitionNotExist,"#{definition_file} not found"
150
+ raise Veewee::DefinitionNotExist, "#{definition_file} not found"
152
151
  end
153
152
 
154
153
  if definition.valid?
155
154
  return definition
156
155
  else
157
156
  env.logger.fatal("Invalid Definition")
158
- raise Veewee::DefinitionError,"Invalid Definition"
157
+ raise Veewee::DefinitionError, "Invalid Definition"
159
158
  end
160
159
  end
161
160
 
162
161
  def exists?
163
- filename=File.join(path,"definition.rb")
162
+ filename = File.join(path, "definition.rb")
164
163
  unless File.exists?(filename)
165
164
  return false
166
165
  end
@@ -190,6 +189,7 @@ module Veewee
190
189
  end
191
190
 
192
191
  private
192
+
193
193
  def ostype_valid?
194
194
  unless env.ostypes.has_key?(@os_type_id)
195
195
  env.ui.info("The ostype: #{@os_type_id} is not available")