virtualbox 0.8.3 → 0.8.4
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.
- data/lib/virtualbox/com/ffi/interfaces.rb +1 -0
- data/lib/virtualbox/com/implementer/mscom.rb +40 -26
- data/lib/virtualbox/com/interface/4.0.x/bandwidth_control.rb +18 -0
- data/lib/virtualbox/com/interface/4.0.x/bandwidth_group.rb +16 -0
- data/lib/virtualbox/com/interface/4.0.x/bandwidth_group_type.rb +11 -0
- data/lib/virtualbox/com/interface/4.0.x/chipset_type.rb +11 -0
- data/lib/virtualbox/com/interface/4.0.x/data_type.rb +11 -0
- data/lib/virtualbox/com/interface/4.0.x/pci_device_attachment.rb +16 -0
- data/lib/virtualbox/com/interface/4.0.x/storage_controller.rb +1 -0
- data/lib/virtualbox/ext/platform.rb +4 -0
- data/lib/virtualbox/version.rb +1 -1
- data/lib/virtualbox/vm.rb +21 -6
- data/virtualbox.gemspec +1 -1
- metadata +12 -26
@@ -73,34 +73,48 @@ module VirtualBox
|
|
73
73
|
end
|
74
74
|
end.compact
|
75
75
|
|
76
|
-
spec = spec.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
76
|
+
spec = spec.inject([]) do |results, item|
|
77
|
+
single_type_to_arg(args, item, results)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# Converts a single type and args list to the proper formal args list
|
82
|
+
def single_type_to_arg(args, item, results)
|
83
|
+
if item.is_a?(Array) && item.length == 1
|
84
|
+
# Array argument
|
85
|
+
data = args.shift
|
86
|
+
|
87
|
+
# If its a regular type (int, bool, etc.) then just make it an
|
88
|
+
# array of that
|
89
|
+
results << data.inject([]) do |converted_data, single|
|
90
|
+
single_type_to_arg([single], item[0], converted_data)
|
91
|
+
end
|
92
|
+
elsif item.to_s[0,1] == item.to_s[0,1].upcase
|
93
|
+
# Try to get the class from the interfaces
|
94
|
+
interface = interface_klass(item.to_sym)
|
95
|
+
|
96
|
+
if interface.superclass == COM::AbstractInterface
|
97
|
+
# For interfaces, get the instance, then dig deep to get the pointer
|
98
|
+
# to the VtblParent, which is what the API expects
|
99
|
+
instance = args.shift
|
100
|
+
|
101
|
+
results << if !instance.nil?
|
102
|
+
# Get the actual MSCOM object, rather than the AbstractInterface
|
103
|
+
instance.implementer.object
|
104
|
+
else
|
105
|
+
# If the argument was nil, just pass a nil pointer as the argument
|
106
|
+
nil
|
98
107
|
end
|
99
|
-
|
100
|
-
#
|
101
|
-
|
102
|
-
args.shift
|
108
|
+
elsif interface.superclass == COM::AbstractEnum
|
109
|
+
# For enums, we need the value of the enum
|
110
|
+
results << interface.index(args.shift.to_sym)
|
103
111
|
end
|
112
|
+
elsif item == T_BOOL
|
113
|
+
results << (args.shift ? 1 : 0)
|
114
|
+
else
|
115
|
+
# Simply replace spec item with next item in args
|
116
|
+
# list
|
117
|
+
results << args.shift
|
104
118
|
end
|
105
119
|
end
|
106
120
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module VirtualBox
|
2
|
+
module COM
|
3
|
+
module Interface
|
4
|
+
module Version_4_0_X
|
5
|
+
class BandwidthControl < AbstractInterface
|
6
|
+
IID_STR = "D0A24DB0-F756-11DF-98CF-0800200C9A66"
|
7
|
+
|
8
|
+
property :num_groups, T_UINT32, :readonly => true
|
9
|
+
|
10
|
+
function :create_bandwidth_group, nil, [WSTRING, :BandwidthGroupType, T_UINT32]
|
11
|
+
function :delete_bandwidth_group, nil, [WSTRING]
|
12
|
+
function :get_bandwidth_group, :BandwidthGroup, [WSTRING]
|
13
|
+
function :get_all_bandwidth_groups, [:BandwidthGroup], []
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module VirtualBox
|
2
|
+
module COM
|
3
|
+
module Interface
|
4
|
+
module Version_4_0_X
|
5
|
+
class BandwidthGroup < AbstractInterface
|
6
|
+
IID_STR = "BADEA2D7-0261-4146-89F0-6A57CC34833D"
|
7
|
+
|
8
|
+
property :name, WSTRING, :readonly => true
|
9
|
+
property :type, :BandwidthGroupType, :readonly => true
|
10
|
+
property :reference, T_UINT32, :readonly => true
|
11
|
+
property :max_mb_per_sec, T_UINT32, :readonly => true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module VirtualBox
|
2
|
+
module COM
|
3
|
+
module Interface
|
4
|
+
module Version_4_0_X
|
5
|
+
class PciDeviceAttachment < AbstractInterface
|
6
|
+
IID_STR = "91F33D6F-E621-4F70-A77E-15F0E3C714D5"
|
7
|
+
|
8
|
+
property :name, WSTRING, :readonly => true
|
9
|
+
property :is_physical_device, T_BOOL, :readonly => true
|
10
|
+
property :host_address, T_UINT32, :readonly => true
|
11
|
+
property :guest_address, T_UINT32, :readonly => true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -14,6 +14,7 @@ module VirtualBox
|
|
14
14
|
property :bus, :StorageBus, :readonly => true
|
15
15
|
property :controller_type, :StorageControllerType
|
16
16
|
property :use_host_io_cache, T_BOOL
|
17
|
+
property :bootable, T_BOOL, :readonly => true
|
17
18
|
|
18
19
|
function :get_ide_emulation_port, T_INT32, [T_INT32]
|
19
20
|
function :set_ide_emulation_port, nil, [T_INT32, T_INT32]
|
data/lib/virtualbox/version.rb
CHANGED
data/lib/virtualbox/vm.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'virtualbox/ext/platform'
|
3
|
+
|
1
4
|
module VirtualBox
|
2
5
|
# Represents a single VirtualBox virtual machine. All attributes which are
|
3
6
|
# not read-only can be modified and saved.
|
@@ -556,12 +559,24 @@ module VirtualBox
|
|
556
559
|
media = interface.unregister(:full)
|
557
560
|
|
558
561
|
if !media.empty?
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
562
|
+
if Platform.windows? && !Platform.jruby?
|
563
|
+
# The MSCOM interface in CRuby to delete media is broken,
|
564
|
+
# so we do this ghettoness.
|
565
|
+
path = interface.settings_file_path
|
566
|
+
|
567
|
+
# A simple sanity check to make sure we don't attempt to delete
|
568
|
+
# the root or something
|
569
|
+
if path.length > 10
|
570
|
+
Pathname.new(path).parent.rmtree
|
571
|
+
end
|
572
|
+
else
|
573
|
+
interface.delete(media)
|
574
|
+
|
575
|
+
# TODO: This sleep is silly. The progress object returned by the media
|
576
|
+
# delete always fails to "wait" for some reason, so I do this. I hope
|
577
|
+
# to solve this issue soon.
|
578
|
+
sleep 1
|
579
|
+
end
|
565
580
|
end
|
566
581
|
end
|
567
582
|
|
data/virtualbox.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
s.rubyforge_project = "virtualbox"
|
16
16
|
|
17
|
-
s.add_dependency "ffi", "~> 0
|
17
|
+
s.add_dependency "ffi", "~> 1.0"
|
18
18
|
s.add_development_dependency "contest", "~> 0.1.2"
|
19
19
|
s.add_development_dependency "mocha", "~> 0.9.8"
|
20
20
|
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: virtualbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 8
|
8
|
-
- 3
|
9
|
-
version: 0.8.3
|
4
|
+
prerelease:
|
5
|
+
version: 0.8.4
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Mitchell Hashimoto
|
@@ -14,7 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
13
|
+
date: 2011-05-12 00:00:00 -07:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
@@ -24,11 +20,7 @@ dependencies:
|
|
24
20
|
requirements:
|
25
21
|
- - ~>
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
- 6
|
30
|
-
- 3
|
31
|
-
version: 0.6.3
|
23
|
+
version: "1.0"
|
32
24
|
type: :runtime
|
33
25
|
prerelease: false
|
34
26
|
version_requirements: *id001
|
@@ -39,10 +31,6 @@ dependencies:
|
|
39
31
|
requirements:
|
40
32
|
- - ~>
|
41
33
|
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 0
|
44
|
-
- 1
|
45
|
-
- 2
|
46
34
|
version: 0.1.2
|
47
35
|
type: :development
|
48
36
|
prerelease: false
|
@@ -54,10 +42,6 @@ dependencies:
|
|
54
42
|
requirements:
|
55
43
|
- - ~>
|
56
44
|
- !ruby/object:Gem::Version
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
- 9
|
60
|
-
- 8
|
61
45
|
version: 0.9.8
|
62
46
|
type: :development
|
63
47
|
prerelease: false
|
@@ -266,12 +250,17 @@ files:
|
|
266
250
|
- lib/virtualbox/com/interface/4.0.x/audio_controller_type.rb
|
267
251
|
- lib/virtualbox/com/interface/4.0.x/audio_driver_type.rb
|
268
252
|
- lib/virtualbox/com/interface/4.0.x/auth_type.rb
|
253
|
+
- lib/virtualbox/com/interface/4.0.x/bandwidth_control.rb
|
254
|
+
- lib/virtualbox/com/interface/4.0.x/bandwidth_group.rb
|
255
|
+
- lib/virtualbox/com/interface/4.0.x/bandwidth_group_type.rb
|
269
256
|
- lib/virtualbox/com/interface/4.0.x/bios_boot_menu_mode.rb
|
270
257
|
- lib/virtualbox/com/interface/4.0.x/bios_settings.rb
|
258
|
+
- lib/virtualbox/com/interface/4.0.x/chipset_type.rb
|
271
259
|
- lib/virtualbox/com/interface/4.0.x/cleanup_mode.rb
|
272
260
|
- lib/virtualbox/com/interface/4.0.x/clipboard_mode.rb
|
273
261
|
- lib/virtualbox/com/interface/4.0.x/console.rb
|
274
262
|
- lib/virtualbox/com/interface/4.0.x/cpu_property_type.rb
|
263
|
+
- lib/virtualbox/com/interface/4.0.x/data_type.rb
|
275
264
|
- lib/virtualbox/com/interface/4.0.x/device_type.rb
|
276
265
|
- lib/virtualbox/com/interface/4.0.x/dhcp_server.rb
|
277
266
|
- lib/virtualbox/com/interface/4.0.x/event_source.rb
|
@@ -306,6 +295,7 @@ files:
|
|
306
295
|
- lib/virtualbox/com/interface/4.0.x/nsiexception.rb
|
307
296
|
- lib/virtualbox/com/interface/4.0.x/nsisupports.rb
|
308
297
|
- lib/virtualbox/com/interface/4.0.x/parallel_port.rb
|
298
|
+
- lib/virtualbox/com/interface/4.0.x/pci_device_attachment.rb
|
309
299
|
- lib/virtualbox/com/interface/4.0.x/pointing_hid_type.rb
|
310
300
|
- lib/virtualbox/com/interface/4.0.x/port_mode.rb
|
311
301
|
- lib/virtualbox/com/interface/4.0.x/progress.rb
|
@@ -435,7 +425,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
435
425
|
requirements:
|
436
426
|
- - ">="
|
437
427
|
- !ruby/object:Gem::Version
|
438
|
-
hash:
|
428
|
+
hash: -3965605946174079114
|
439
429
|
segments:
|
440
430
|
- 0
|
441
431
|
version: "0"
|
@@ -444,15 +434,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
444
434
|
requirements:
|
445
435
|
- - ">="
|
446
436
|
- !ruby/object:Gem::Version
|
447
|
-
segments:
|
448
|
-
- 1
|
449
|
-
- 3
|
450
|
-
- 6
|
451
437
|
version: 1.3.6
|
452
438
|
requirements: []
|
453
439
|
|
454
440
|
rubyforge_project: virtualbox
|
455
|
-
rubygems_version: 1.
|
441
|
+
rubygems_version: 1.5.0
|
456
442
|
signing_key:
|
457
443
|
specification_version: 3
|
458
444
|
summary: Create and modify virtual machines in VirtualBox using pure ruby
|