virtualbox 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
data/lib/virtualbox.rb CHANGED
@@ -3,7 +3,7 @@ libdir = File.join(File.dirname(__FILE__), "virtualbox")
3
3
  require File.expand_path("ext/glob_loader", libdir)
4
4
 
5
5
  # Load them up
6
- VirtualBox::GlobLoader.glob_require(libdir, %w{ext/logger ext/platform ext/subclass_listing com abstract_model medium})
6
+ VirtualBox::GlobLoader.glob_require(libdir, %w{ext/logger ext/platform ext/subclass_listing ext/byte_normalizer com abstract_model medium})
7
7
 
8
8
  # Setup the top-level module methods
9
9
  module VirtualBox
@@ -137,7 +137,8 @@ module VirtualBox
137
137
  # a custom populate key to use for {Attributable#populate_attributes}
138
138
  def attribute(name, options = {})
139
139
  name = name.to_sym
140
- attributes[name] = options
140
+ attributes[name] = @__attribute_scope || {}
141
+ attributes[name].merge!(options)
141
142
 
142
143
  # Create the method for reading this attribute
143
144
  define_method(name) { read_attribute(name) }
@@ -153,6 +154,19 @@ module VirtualBox
153
154
  end
154
155
  end
155
156
 
157
+ # Defines the specified scope for all attributes within the block.
158
+ # The scope is reset to the previous value once the block ends. Multiple
159
+ # scopes can be nested and they'll inherit from each other.
160
+ def attribute_scope(options, &block)
161
+ @__attribute_scope ||= {}
162
+ old_value = @__attribute_scope
163
+ @__attribute_scope = old_value.merge(options)
164
+
165
+ instance_eval(&block)
166
+
167
+ @__attribute_scope = old_value
168
+ end
169
+
156
170
  # Returns the hash of attributes and their associated options.
157
171
  def attributes
158
172
  @attributes ||= {}
@@ -28,7 +28,7 @@ module VirtualBox
28
28
 
29
29
  # Convert the getter to a proc and call it
30
30
  getter = spec_to_proc(getter)
31
- write_attribute(key, getter.call(interface))
31
+ write_attribute(key, getter.call(self, interface, key))
32
32
  end
33
33
 
34
34
  # Saves all the attributes which have an interface setter.
@@ -55,7 +55,7 @@ module VirtualBox
55
55
 
56
56
  # Convert the setter to a proc and call it
57
57
  setter = spec_to_proc(setter)
58
- setter.call(interface, read_attribute(key))
58
+ setter.call(self, interface, key, read_attribute(key))
59
59
  end
60
60
 
61
61
  # Converts a getter/setter specification to a Proc which can be called
@@ -88,7 +88,7 @@ module VirtualBox
88
88
  if spec.is_a?(Symbol)
89
89
  # For symbols, wrap up a method send in a Proc and return
90
90
  # that
91
- return Proc.new { |m, *args| m.send(spec, *args) }
91
+ return Proc.new { |this, m, key, *args| m.send(spec, *args) }
92
92
  end
93
93
  end
94
94
  end
@@ -4,6 +4,13 @@ module VirtualBox
4
4
  class Base < AbstractImplementer
5
5
  include Logger
6
6
 
7
+ # Returns the Ruby version as a float
8
+ #
9
+ # @return [Float]
10
+ def ruby_version
11
+ RUBY_VERSION.to_f
12
+ end
13
+
7
14
  # Finds and returns the `COM::Interface` class associated with the type.
8
15
  # If the class does not exist, a `NameError` will be raised.
9
16
  #
@@ -19,7 +19,12 @@ module VirtualBox
19
19
  # Reads a property from the interface with the given name.
20
20
  def read_property(name, opts)
21
21
  # First get the basic value from the COM object
22
- value = @object[COM::FFI::Util.camelize(name.to_s)]
22
+ method = COM::FFI::Util.camelize(name.to_s)
23
+ value = if ruby_version >= 1.9
24
+ @object.send(method)
25
+ else
26
+ @object[method]
27
+ end
23
28
 
24
29
  # Then depending on the value type, we either return as-is or
25
30
  # must wrap it up in another interface class
@@ -30,7 +35,14 @@ module VirtualBox
30
35
  # value.
31
36
  def write_property(name, value, opts)
32
37
  # Set the property with a prepared value
33
- @object[COM::FFI::Util.camelize(name.to_s)] = spec_to_args([opts[:value_type]], [value]).first
38
+ method = COM::FFI::Util.camelize(name.to_s)
39
+ value = spec_to_args([opts[:value_type]], [value]).first
40
+
41
+ if ruby_version >= 1.9
42
+ @object.send("#{method}=", value)
43
+ else
44
+ @object[method] = value
45
+ end
34
46
  end
35
47
 
36
48
  # Calls a function from the interface with the given name
@@ -41,15 +41,15 @@ module VirtualBox
41
41
  last_reported = -100
42
42
 
43
43
  while true
44
- break if completed || canceled
45
-
46
44
  delta = percent - last_reported
47
45
  last_reported += delta
48
- yield last_reported if delta >= interval_percent
46
+ yield self if delta >= interval_percent
49
47
 
50
48
  # This either sleeps for half a second or returns on
51
49
  # completion
52
50
  wait_for_completion(500)
51
+
52
+ break if completed || canceled
53
53
  end
54
54
  end
55
55
  end
@@ -4,9 +4,6 @@ module VirtualBox
4
4
  module Exceptions
5
5
  class Exception < ::Exception; end
6
6
 
7
- class CommandFailedException < Exception; end
8
- class ConfigurationException < Exception; end
9
- class InvalidRelationshipObjectException < Exception; end
10
7
  class NonSettableRelationshipException < Exception; end
11
8
  class ValidationFailedException < Exception; end
12
9
 
@@ -0,0 +1,17 @@
1
+ module VirtualBox::ByteNormalizer
2
+ # So that this is only defined once (suppress warnings)
3
+ if !defined?(THOUSAND)
4
+ THOUSAND = 1024.0
5
+ BYTE = 1.0
6
+ KILOBYTE = BYTE * THOUSAND
7
+ MEGABYTE = KILOBYTE * THOUSAND
8
+ end
9
+
10
+ def bytes_to_megabytes(b)
11
+ b / MEGABYTE
12
+ end
13
+
14
+ def megabytes_to_bytes(mb)
15
+ mb * MEGABYTE
16
+ end
17
+ end
@@ -77,6 +77,8 @@ module VirtualBox
77
77
  # There are more attributes on the {Medium} model, which {HardDrive} inherits
78
78
  # from.
79
79
  class HardDrive < Medium
80
+ include ByteNormalizer
81
+
80
82
  attribute :format, :default => "VDI", :property => :format
81
83
  attribute :logical_size, :property => :logical_size
82
84
  attribute :physical_size, :readonly => true, :property => :size
@@ -105,6 +107,11 @@ module VirtualBox
105
107
  end
106
108
  end
107
109
 
110
+ # Custom getter to convert the physical size from bytes to megabytes.
111
+ def physical_size
112
+ bytes_to_megabytes(read_attribute(:physical_size))
113
+ end
114
+
108
115
  # Clone hard drive, possibly also converting formats. All formats
109
116
  # supported by your local VirtualBox installation are supported
110
117
  # here. If no format is specified, the format of the source drive
@@ -0,0 +1,57 @@
1
+ module VirtualBox
2
+ # Represents the HW virtualization properties on a VM.
3
+ class HWVirtualization < AbstractModel
4
+ attribute :parent, :readonly => true, :property => false
5
+ attribute_scope(:property_getter => Proc.new { |instance, *args| instance.get_property(*args) },
6
+ :property_setter => Proc.new { |instance, *args| instance.set_property(*args) }) do
7
+ attribute :enabled
8
+ attribute :exclusive
9
+ attribute :vpid
10
+ attribute :nested_paging
11
+ end
12
+
13
+ class <<self
14
+ # Populates a relationship with another model.
15
+ #
16
+ # **This method typically won't be used except internally.**
17
+ #
18
+ # @return [HWVirtualization]
19
+ def populate_relationship(caller, imachine)
20
+ data = new(caller, imachine)
21
+ end
22
+
23
+ # Saves the relationship.
24
+ #
25
+ # **This method typically won't be used except internally.**
26
+ def save_relationship(caller, instance)
27
+ instance.save
28
+ end
29
+ end
30
+
31
+ def initialize(parent, imachine)
32
+ write_attribute(:parent, parent)
33
+
34
+ # Load the attributes and mark the whole thing as existing
35
+ load_interface_attributes(imachine)
36
+ clear_dirty!
37
+ existing_record!
38
+ end
39
+
40
+ def get_property(interface, key)
41
+ interface.get_hw_virt_ex_property(key)
42
+ end
43
+
44
+ def set_property(interface, key, value)
45
+ interface.set_hw_virt_ex_property(key, value)
46
+ end
47
+
48
+ def save
49
+ parent.with_open_session do |session|
50
+ machine = session.machine
51
+
52
+ # Save them
53
+ save_changed_interface_attributes(machine)
54
+ end
55
+ end
56
+ end
57
+ end
data/lib/virtualbox/vm.rb CHANGED
@@ -121,6 +121,7 @@ module VirtualBox
121
121
  attribute :interface, :readonly => true, :property => false
122
122
  relationship :audio_adapter, :AudioAdapter
123
123
  relationship :bios, :BIOS
124
+ relationship :hw_virt, :HWVirtualization
124
125
  relationship :storage_controllers, :StorageController, :dependent => :destroy
125
126
  relationship :medium_attachments, :MediumAttachment
126
127
  relationship :shared_folders, :SharedFolder
@@ -27,6 +27,40 @@ class AttributableTest < Test::Unit::TestCase
27
27
  end
28
28
  end
29
29
 
30
+ context "attribute scopes" do
31
+ class AttributeScopeA < EmptyAttributeModel
32
+ attribute :foo
33
+ attribute_scope(:bar => 7) do
34
+ attribute :foo2
35
+
36
+ attribute_scope(:baz => 3) do
37
+ attribute :bazzed
38
+ end
39
+ end
40
+
41
+ attribute :foo3, :bar => 10
42
+ end
43
+
44
+ setup do
45
+ @klass = AttributeScopeA
46
+ end
47
+
48
+ should "use attribute scope" do
49
+ assert_equal 7, @klass.attributes[:foo2][:bar]
50
+ end
51
+
52
+ should "not use attribute scope outside of the block" do
53
+ assert !@klass.attributes[:foo].has_key?(:bar)
54
+ assert_equal 10, @klass.attributes[:foo3][:bar]
55
+ end
56
+
57
+ should "properly nest" do
58
+ bazzed = @klass.attributes[:bazzed]
59
+ assert_equal 3, bazzed[:baz]
60
+ assert_equal 7, bazzed[:bar]
61
+ end
62
+ end
63
+
30
64
  context "attribute options" do
31
65
  context "custom populate keys" do
32
66
  class CustomPopulateModel < AttributeModel
@@ -25,14 +25,14 @@ class InterfaceAttributesTest < Test::Unit::TestCase
25
25
  result = mock("result")
26
26
  proc = @instance.spec_to_proc(:foo)
27
27
  @interface.expects(:foo).once.returns(result)
28
- assert_equal result, proc.call(@interface)
28
+ assert_equal result, proc.call(nil, @interface)
29
29
  end
30
30
 
31
31
  should "forward all parameters" do
32
32
  result = mock("result")
33
33
  proc = @instance.spec_to_proc(:foo)
34
34
  @interface.expects(:foo).with(1, 2, 3).once.returns(result)
35
- assert_equal result, proc.call(@interface, 1, 2, 3)
35
+ assert_equal result, proc.call(nil, @interface, :key, 1, 2, 3)
36
36
  end
37
37
  end
38
38
 
@@ -59,26 +59,70 @@ class COMImplementerMSCOMTest < Test::Unit::TestCase
59
59
  end
60
60
 
61
61
  context "reading a property" do
62
- should "read the property on the object and return it" do
63
- name = :foo_bar
64
- value = mock("value")
65
- result = mock("result")
66
- opts = { :value_type => :foo }
67
- @object.expects(:[]).with('FooBar').once.returns(value)
68
- @instance.expects(:returnable_value).with(value, opts[:value_type]).returns(result)
62
+ context "with ruby 1.8" do
63
+ setup do
64
+ @instance.stubs(:ruby_version).returns(1.8)
65
+ end
66
+
67
+ should "read the property on the object and return it" do
68
+ name = :foo_bar
69
+ value = mock("value")
70
+ result = mock("result")
71
+ opts = { :value_type => :foo }
72
+ @object.expects(:[]).with('FooBar').once.returns(value)
73
+ @instance.expects(:returnable_value).with(value, opts[:value_type]).returns(result)
69
74
 
70
- assert_equal result, @instance.read_property(name, opts)
75
+ assert_equal result, @instance.read_property(name, opts)
76
+ end
77
+ end
78
+
79
+ context "with ruby 1.9" do
80
+ setup do
81
+ @instance.stubs(:ruby_version).returns(1.9)
82
+ end
83
+
84
+ should "read the property on the object and return it" do
85
+ name = :foo_bar
86
+ value = mock("value")
87
+ result = mock("result")
88
+ opts = { :value_type => :foo }
89
+ @object.expects(:FooBar).once.returns(value)
90
+ @instance.expects(:returnable_value).with(value, opts[:value_type]).returns(result)
91
+
92
+ assert_equal result, @instance.read_property(name, opts)
93
+ end
71
94
  end
72
95
  end
73
96
 
74
97
  context "writing a property" do
75
- should "convert the args and set it on the object" do
76
- name = :foo_bar
77
- opts = { :value_type => :foo }
78
- @instance.expects(:spec_to_args).with([:foo], [:value]).returns([:modified])
79
- @object.expects(:[]=).with('FooBar', :modified).once
98
+ context "on ruby 1.8" do
99
+ setup do
100
+ @instance.stubs(:ruby_version).returns(1.8)
101
+ end
80
102
 
81
- @instance.write_property(name, :value, opts)
103
+ should "convert the args and set it on the object" do
104
+ name = :foo_bar
105
+ opts = { :value_type => :foo }
106
+ @instance.expects(:spec_to_args).with([:foo], [:value]).returns([:modified])
107
+ @object.expects(:[]=).with('FooBar', :modified).once
108
+
109
+ @instance.write_property(name, :value, opts)
110
+ end
111
+ end
112
+
113
+ context "on ruby 1.9" do
114
+ setup do
115
+ @instance.stubs(:ruby_version).returns(1.9)
116
+ end
117
+
118
+ should "convert the args and set it on the object" do
119
+ name = :foo_bar
120
+ opts = { :value_type => :foo }
121
+ @instance.expects(:spec_to_args).with([:foo], [:value]).returns([:modified])
122
+ @object.expects(:FooBar=).with(:modified).once
123
+
124
+ @instance.write_property(name, :value, opts)
125
+ end
82
126
  end
83
127
  end
84
128
 
@@ -0,0 +1,34 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
2
+ require 'virtualbox/ext/byte_normalizer'
3
+
4
+ class ByteNormalizerTest < Test::Unit::TestCase
5
+ class A
6
+ include VirtualBox::ByteNormalizer
7
+ end
8
+
9
+ setup do
10
+ @instance = A.new
11
+ end
12
+
13
+ should "convert megabytes to bytes" do
14
+ expected = {
15
+ 1 => 1_048_576,
16
+ 345.4 => 362_178_150.4
17
+ }
18
+
19
+ expected.each do |input, out|
20
+ assert_equal out, @instance.megabytes_to_bytes(input)
21
+ end
22
+ end
23
+
24
+ should "convert bytes to megabytes" do
25
+ expected = {
26
+ 1_048_576 => 1,
27
+ 362_178_150.4 => 345.4
28
+ }
29
+
30
+ expected.each do |input, out|
31
+ assert_equal out, @instance.bytes_to_megabytes(input)
32
+ end
33
+ end
34
+ end
@@ -54,6 +54,15 @@ class HardDriveTest < Test::Unit::TestCase
54
54
  @instance = @klass.new(@interface)
55
55
  end
56
56
 
57
+ context "physical size" do
58
+ should "convert bytes to megabytes" do
59
+ nonnormalized = 37548181
60
+ normalized = @instance.bytes_to_megabytes(nonnormalized)
61
+ @instance.expects(:read_attribute).with(:physical_size).returns(nonnormalized)
62
+ assert_equal normalized, @instance.physical_size
63
+ end
64
+ end
65
+
57
66
  context "cloning" do
58
67
  setup do
59
68
  @system_properties = mock("system_properties")
@@ -0,0 +1,103 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
+
3
+ class HWVirtualizationTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = VirtualBox::HWVirtualization
6
+ @interface = mock("interface")
7
+ @parent = mock("parent")
8
+ end
9
+
10
+ context "class methods" do
11
+ context "populating relationship" do
12
+ setup do
13
+ @instance = mock("instance")
14
+ @klass.stubs(:new).returns(@instance)
15
+ end
16
+
17
+ should "call new for the interface" do
18
+ @klass.expects(:new).with(nil, @interface).once.returns(@instance)
19
+ assert_equal @instance, @klass.populate_relationship(nil, @interface)
20
+ end
21
+ end
22
+
23
+ context "saving relationship" do
24
+ should "call save with the interface on the instance" do
25
+ instance = mock("instance")
26
+ instance.expects(:save).once
27
+
28
+ @klass.save_relationship(nil, instance)
29
+ end
30
+ end
31
+ end
32
+
33
+ context "initializing" do
34
+ setup do
35
+ @klass.any_instance.stubs(:load_interface_attributes)
36
+ end
37
+
38
+ should "load interface attribtues" do
39
+ @klass.any_instance.expects(:load_interface_attributes).with(@interface).once
40
+ @klass.new(@parent, @interface)
41
+ end
42
+
43
+ should "not be dirty" do
44
+ @instance = @klass.new(@parent, @interface)
45
+ assert !@instance.changed?
46
+ end
47
+
48
+ should "be existing record" do
49
+ @instance = @klass.new(@parent, @interface)
50
+ assert !@instance.new_record?
51
+ end
52
+ end
53
+
54
+ context "instance methods" do
55
+ setup do
56
+ @klass.any_instance.stubs(:load_interface_attributes)
57
+
58
+ @parent = mock("parent")
59
+ @interface = mock("interface")
60
+ @instance = @klass.new(@parent, @interface)
61
+ end
62
+
63
+ context "getting a property" do
64
+ setup do
65
+ @key = :foo
66
+ end
67
+
68
+ should "call proper function on interface" do
69
+ result = mock("result")
70
+ @interface.expects(:get_hw_virt_ex_property).with(@key).returns(result)
71
+ assert_equal result, @instance.get_property(@interface, @key)
72
+ end
73
+ end
74
+
75
+ context "setting a property" do
76
+ setup do
77
+ @key = :foo
78
+ @value = :bar
79
+ end
80
+
81
+ should "call proper function on interface" do
82
+ @interface.expects(:set_hw_virt_ex_property).with(@key, @value).once
83
+ @instance.set_property(@interface, @key, @value)
84
+ end
85
+ end
86
+
87
+ context "saving" do
88
+ setup do
89
+ @bios_settings = mock("bios_settings")
90
+ @session = mock("session")
91
+ @machine = mock("machine")
92
+ @session.stubs(:machine).returns(@machine)
93
+ @parent.stubs(:with_open_session).yields(@session)
94
+ end
95
+
96
+ should "save the interface settings with the new bios settings" do
97
+ save_seq = sequence("save_seq")
98
+ @instance.expects(:save_changed_interface_attributes).with(@machine).once.in_sequence(save_seq)
99
+ @instance.save
100
+ end
101
+ end
102
+ end
103
+ end
data/virtualbox.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{virtualbox}
8
- s.version = "0.6.0"
8
+ s.version = "0.6.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mitchell Hashimoto"]
12
- s.date = %q{2010-04-15}
12
+ s.date = %q{2010-04-24}
13
13
  s.description = %q{Create and modify virtual machines in VirtualBox using pure ruby.}
14
14
  s.email = %q{mitchell.hashimoto@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -113,6 +113,7 @@ Gem::Specification.new do |s|
113
113
  "lib/virtualbox/com/util.rb",
114
114
  "lib/virtualbox/dvd.rb",
115
115
  "lib/virtualbox/exceptions.rb",
116
+ "lib/virtualbox/ext/byte_normalizer.rb",
116
117
  "lib/virtualbox/ext/glob_loader.rb",
117
118
  "lib/virtualbox/ext/logger.rb",
118
119
  "lib/virtualbox/ext/platform.rb",
@@ -121,6 +122,7 @@ Gem::Specification.new do |s|
121
122
  "lib/virtualbox/forwarded_port.rb",
122
123
  "lib/virtualbox/global.rb",
123
124
  "lib/virtualbox/hard_drive.rb",
125
+ "lib/virtualbox/hw_virtualization.rb",
124
126
  "lib/virtualbox/lib.rb",
125
127
  "lib/virtualbox/media.rb",
126
128
  "lib/virtualbox/medium.rb",
@@ -156,12 +158,14 @@ Gem::Specification.new do |s|
156
158
  "test/virtualbox/com/mscom_interface_test.rb",
157
159
  "test/virtualbox/com/util_test.rb",
158
160
  "test/virtualbox/dvd_test.rb",
161
+ "test/virtualbox/ext/byte_normalizer_test.rb",
159
162
  "test/virtualbox/ext/platform_test.rb",
160
163
  "test/virtualbox/ext/subclass_listing_test.rb",
161
164
  "test/virtualbox/extra_data_test.rb",
162
165
  "test/virtualbox/forwarded_port_test.rb",
163
166
  "test/virtualbox/global_test.rb",
164
167
  "test/virtualbox/hard_drive_test.rb",
168
+ "test/virtualbox/hw_virtualization_test.rb",
165
169
  "test/virtualbox/lib_test.rb",
166
170
  "test/virtualbox/medium_attachment_test.rb",
167
171
  "test/virtualbox/medium_test.rb",
@@ -205,12 +209,14 @@ Gem::Specification.new do |s|
205
209
  "test/virtualbox/com/mscom_interface_test.rb",
206
210
  "test/virtualbox/com/util_test.rb",
207
211
  "test/virtualbox/dvd_test.rb",
212
+ "test/virtualbox/ext/byte_normalizer_test.rb",
208
213
  "test/virtualbox/ext/platform_test.rb",
209
214
  "test/virtualbox/ext/subclass_listing_test.rb",
210
215
  "test/virtualbox/extra_data_test.rb",
211
216
  "test/virtualbox/forwarded_port_test.rb",
212
217
  "test/virtualbox/global_test.rb",
213
218
  "test/virtualbox/hard_drive_test.rb",
219
+ "test/virtualbox/hw_virtualization_test.rb",
214
220
  "test/virtualbox/lib_test.rb",
215
221
  "test/virtualbox/medium_attachment_test.rb",
216
222
  "test/virtualbox/medium_test.rb",
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 0
9
- version: 0.6.0
8
+ - 1
9
+ version: 0.6.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mitchell Hashimoto
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-15 00:00:00 -07:00
17
+ date: 2010-04-24 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -137,6 +137,7 @@ files:
137
137
  - lib/virtualbox/com/util.rb
138
138
  - lib/virtualbox/dvd.rb
139
139
  - lib/virtualbox/exceptions.rb
140
+ - lib/virtualbox/ext/byte_normalizer.rb
140
141
  - lib/virtualbox/ext/glob_loader.rb
141
142
  - lib/virtualbox/ext/logger.rb
142
143
  - lib/virtualbox/ext/platform.rb
@@ -145,6 +146,7 @@ files:
145
146
  - lib/virtualbox/forwarded_port.rb
146
147
  - lib/virtualbox/global.rb
147
148
  - lib/virtualbox/hard_drive.rb
149
+ - lib/virtualbox/hw_virtualization.rb
148
150
  - lib/virtualbox/lib.rb
149
151
  - lib/virtualbox/media.rb
150
152
  - lib/virtualbox/medium.rb
@@ -180,12 +182,14 @@ files:
180
182
  - test/virtualbox/com/mscom_interface_test.rb
181
183
  - test/virtualbox/com/util_test.rb
182
184
  - test/virtualbox/dvd_test.rb
185
+ - test/virtualbox/ext/byte_normalizer_test.rb
183
186
  - test/virtualbox/ext/platform_test.rb
184
187
  - test/virtualbox/ext/subclass_listing_test.rb
185
188
  - test/virtualbox/extra_data_test.rb
186
189
  - test/virtualbox/forwarded_port_test.rb
187
190
  - test/virtualbox/global_test.rb
188
191
  - test/virtualbox/hard_drive_test.rb
192
+ - test/virtualbox/hw_virtualization_test.rb
189
193
  - test/virtualbox/lib_test.rb
190
194
  - test/virtualbox/medium_attachment_test.rb
191
195
  - test/virtualbox/medium_test.rb
@@ -253,12 +257,14 @@ test_files:
253
257
  - test/virtualbox/com/mscom_interface_test.rb
254
258
  - test/virtualbox/com/util_test.rb
255
259
  - test/virtualbox/dvd_test.rb
260
+ - test/virtualbox/ext/byte_normalizer_test.rb
256
261
  - test/virtualbox/ext/platform_test.rb
257
262
  - test/virtualbox/ext/subclass_listing_test.rb
258
263
  - test/virtualbox/extra_data_test.rb
259
264
  - test/virtualbox/forwarded_port_test.rb
260
265
  - test/virtualbox/global_test.rb
261
266
  - test/virtualbox/hard_drive_test.rb
267
+ - test/virtualbox/hw_virtualization_test.rb
262
268
  - test/virtualbox/lib_test.rb
263
269
  - test/virtualbox/medium_attachment_test.rb
264
270
  - test/virtualbox/medium_test.rb