veewee 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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")