bbrowning-virtualbox 0.7.6.dev

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 (281) hide show
  1. data/.gitignore +8 -0
  2. data/.yardopts +3 -0
  3. data/Gemfile +16 -0
  4. data/LICENSE +19 -0
  5. data/Rakefile +33 -0
  6. data/Readme.md +70 -0
  7. data/docs/GettingStarted.md +196 -0
  8. data/docs/WhatsNew.md +12 -0
  9. data/features/README.md +33 -0
  10. data/features/global.feature +19 -0
  11. data/features/global_extra_data.feature +27 -0
  12. data/features/step_definitions/abstract_model_steps.rb +39 -0
  13. data/features/step_definitions/extra_data_steps.rb +36 -0
  14. data/features/step_definitions/global_steps.rb +29 -0
  15. data/features/step_definitions/nat_engine_steps.rb +76 -0
  16. data/features/step_definitions/network_adapter_steps.rb +38 -0
  17. data/features/step_definitions/shared_folder_steps.rb +76 -0
  18. data/features/step_definitions/snapshot_steps.rb +74 -0
  19. data/features/step_definitions/storage_controller_steps.rb +16 -0
  20. data/features/step_definitions/virtualbox_steps.rb +17 -0
  21. data/features/step_definitions/vm_steps.rb +50 -0
  22. data/features/support/env.rb +61 -0
  23. data/features/support/helpers.rb +38 -0
  24. data/features/support/hooks.rb +30 -0
  25. data/features/support/ordered_hash.rb +49 -0
  26. data/features/support/vboxmanage.rb +191 -0
  27. data/features/version.feature +16 -0
  28. data/features/vm.feature +13 -0
  29. data/features/vm_bios.feature +29 -0
  30. data/features/vm_cpu.feature +29 -0
  31. data/features/vm_extra_data.feature +35 -0
  32. data/features/vm_hw_virt.feature +29 -0
  33. data/features/vm_nat_engine.feature +57 -0
  34. data/features/vm_network_adapters.feature +27 -0
  35. data/features/vm_shared_folders.feature +42 -0
  36. data/features/vm_snapshots.feature +29 -0
  37. data/features/vm_storage_controllers.feature +11 -0
  38. data/lib/virtualbox.rb +11 -0
  39. data/lib/virtualbox/abstract_model.rb +281 -0
  40. data/lib/virtualbox/abstract_model/attributable.rb +290 -0
  41. data/lib/virtualbox/abstract_model/dirty.rb +177 -0
  42. data/lib/virtualbox/abstract_model/interface_attributes.rb +98 -0
  43. data/lib/virtualbox/abstract_model/relatable.rb +332 -0
  44. data/lib/virtualbox/abstract_model/validatable.rb +167 -0
  45. data/lib/virtualbox/abstract_model/version_matcher.rb +35 -0
  46. data/lib/virtualbox/appliance.rb +62 -0
  47. data/lib/virtualbox/audio_adapter.rb +52 -0
  48. data/lib/virtualbox/bios.rb +50 -0
  49. data/lib/virtualbox/com.rb +23 -0
  50. data/lib/virtualbox/com/abstract_enum.rb +43 -0
  51. data/lib/virtualbox/com/abstract_implementer.rb +45 -0
  52. data/lib/virtualbox/com/abstract_interface.rb +167 -0
  53. data/lib/virtualbox/com/base_interface.rb +38 -0
  54. data/lib/virtualbox/com/ffi/interface.rb +150 -0
  55. data/lib/virtualbox/com/ffi/interfaces.rb +54 -0
  56. data/lib/virtualbox/com/ffi/util.rb +119 -0
  57. data/lib/virtualbox/com/ffi/vboxxpcomc.rb +31 -0
  58. data/lib/virtualbox/com/ffi_interface.rb +96 -0
  59. data/lib/virtualbox/com/implementer/base.rb +59 -0
  60. data/lib/virtualbox/com/implementer/ffi.rb +361 -0
  61. data/lib/virtualbox/com/implementer/mscom.rb +175 -0
  62. data/lib/virtualbox/com/implementer/nil.rb +10 -0
  63. data/lib/virtualbox/com/interface/3.1.x/access_mode.rb +11 -0
  64. data/lib/virtualbox/com/interface/3.1.x/appliance.rb +22 -0
  65. data/lib/virtualbox/com/interface/3.1.x/audio_adapter.rb +15 -0
  66. data/lib/virtualbox/com/interface/3.1.x/audio_controller_type.rb +11 -0
  67. data/lib/virtualbox/com/interface/3.1.x/audio_driver_type.rb +11 -0
  68. data/lib/virtualbox/com/interface/3.1.x/bios_boot_menu_mode.rb +11 -0
  69. data/lib/virtualbox/com/interface/3.1.x/bios_settings.rb +21 -0
  70. data/lib/virtualbox/com/interface/3.1.x/clipboard_mode.rb +11 -0
  71. data/lib/virtualbox/com/interface/3.1.x/console.rb +50 -0
  72. data/lib/virtualbox/com/interface/3.1.x/cpu_property_type.rb +11 -0
  73. data/lib/virtualbox/com/interface/3.1.x/device_type.rb +11 -0
  74. data/lib/virtualbox/com/interface/3.1.x/dhcp_server.rb +22 -0
  75. data/lib/virtualbox/com/interface/3.1.x/firmware_type.rb +11 -0
  76. data/lib/virtualbox/com/interface/3.1.x/guest_os_type.rb +23 -0
  77. data/lib/virtualbox/com/interface/3.1.x/host.rb +42 -0
  78. data/lib/virtualbox/com/interface/3.1.x/host_network_interface.rb +30 -0
  79. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_medium_type.rb +11 -0
  80. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_status.rb +11 -0
  81. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_type.rb +11 -0
  82. data/lib/virtualbox/com/interface/3.1.x/host_usb_device.rb +13 -0
  83. data/lib/virtualbox/com/interface/3.1.x/host_usb_device_filter.rb +13 -0
  84. data/lib/virtualbox/com/interface/3.1.x/hw_virt_ex_property_type.rb +11 -0
  85. data/lib/virtualbox/com/interface/3.1.x/machine.rb +105 -0
  86. data/lib/virtualbox/com/interface/3.1.x/machine_state.rb +14 -0
  87. data/lib/virtualbox/com/interface/3.1.x/medium.rb +50 -0
  88. data/lib/virtualbox/com/interface/3.1.x/medium_attachment.rb +18 -0
  89. data/lib/virtualbox/com/interface/3.1.x/medium_format.rb +18 -0
  90. data/lib/virtualbox/com/interface/3.1.x/medium_state.rb +11 -0
  91. data/lib/virtualbox/com/interface/3.1.x/medium_type.rb +11 -0
  92. data/lib/virtualbox/com/interface/3.1.x/medium_variant.rb +11 -0
  93. data/lib/virtualbox/com/interface/3.1.x/network_adapter.rb +30 -0
  94. data/lib/virtualbox/com/interface/3.1.x/network_adapter_type.rb +11 -0
  95. data/lib/virtualbox/com/interface/3.1.x/network_attachment_type.rb +11 -0
  96. data/lib/virtualbox/com/interface/3.1.x/nsiexception.rb +23 -0
  97. data/lib/virtualbox/com/interface/3.1.x/nsisupports.rb +15 -0
  98. data/lib/virtualbox/com/interface/3.1.x/parallel_port.rb +17 -0
  99. data/lib/virtualbox/com/interface/3.1.x/port_mode.rb +11 -0
  100. data/lib/virtualbox/com/interface/3.1.x/progress.rb +63 -0
  101. data/lib/virtualbox/com/interface/3.1.x/serial_port.rb +19 -0
  102. data/lib/virtualbox/com/interface/3.1.x/session.rb +18 -0
  103. data/lib/virtualbox/com/interface/3.1.x/session_state.rb +11 -0
  104. data/lib/virtualbox/com/interface/3.1.x/session_type.rb +11 -0
  105. data/lib/virtualbox/com/interface/3.1.x/shared_folder.rb +17 -0
  106. data/lib/virtualbox/com/interface/3.1.x/snapshot.rb +20 -0
  107. data/lib/virtualbox/com/interface/3.1.x/storage_bus.rb +11 -0
  108. data/lib/virtualbox/com/interface/3.1.x/storage_controller.rb +23 -0
  109. data/lib/virtualbox/com/interface/3.1.x/storage_controller_type.rb +11 -0
  110. data/lib/virtualbox/com/interface/3.1.x/system_properties.rb +37 -0
  111. data/lib/virtualbox/com/interface/3.1.x/usb_controller.rb +20 -0
  112. data/lib/virtualbox/com/interface/3.1.x/usb_device.rb +24 -0
  113. data/lib/virtualbox/com/interface/3.1.x/usb_device_filter.rb +23 -0
  114. data/lib/virtualbox/com/interface/3.1.x/usb_device_filter_action.rb +11 -0
  115. data/lib/virtualbox/com/interface/3.1.x/usb_device_state.rb +11 -0
  116. data/lib/virtualbox/com/interface/3.1.x/virtual_box_error_info.rb +17 -0
  117. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description.rb +19 -0
  118. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description_type.rb +14 -0
  119. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description_value_type.rb +11 -0
  120. data/lib/virtualbox/com/interface/3.1.x/virtualbox.rb +67 -0
  121. data/lib/virtualbox/com/interface/3.1.x/vrdp_auth_type.rb +11 -0
  122. data/lib/virtualbox/com/interface/3.1.x/vrdp_server.rb +19 -0
  123. data/lib/virtualbox/com/interface/3.2.x/access_mode.rb +11 -0
  124. data/lib/virtualbox/com/interface/3.2.x/appliance.rb +22 -0
  125. data/lib/virtualbox/com/interface/3.2.x/audio_adapter.rb +15 -0
  126. data/lib/virtualbox/com/interface/3.2.x/audio_controller_type.rb +11 -0
  127. data/lib/virtualbox/com/interface/3.2.x/audio_driver_type.rb +11 -0
  128. data/lib/virtualbox/com/interface/3.2.x/bios_boot_menu_mode.rb +11 -0
  129. data/lib/virtualbox/com/interface/3.2.x/bios_settings.rb +21 -0
  130. data/lib/virtualbox/com/interface/3.2.x/clipboard_mode.rb +11 -0
  131. data/lib/virtualbox/com/interface/3.2.x/console.rb +50 -0
  132. data/lib/virtualbox/com/interface/3.2.x/cpu_property_type.rb +11 -0
  133. data/lib/virtualbox/com/interface/3.2.x/device_type.rb +11 -0
  134. data/lib/virtualbox/com/interface/3.2.x/dhcp_server.rb +22 -0
  135. data/lib/virtualbox/com/interface/3.2.x/firmware_type.rb +11 -0
  136. data/lib/virtualbox/com/interface/3.2.x/guest.rb +13 -0
  137. data/lib/virtualbox/com/interface/3.2.x/guest_os_type.rb +33 -0
  138. data/lib/virtualbox/com/interface/3.2.x/host.rb +43 -0
  139. data/lib/virtualbox/com/interface/3.2.x/host_network_interface.rb +30 -0
  140. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_medium_type.rb +11 -0
  141. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_status.rb +11 -0
  142. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_type.rb +11 -0
  143. data/lib/virtualbox/com/interface/3.2.x/host_usb_device.rb +13 -0
  144. data/lib/virtualbox/com/interface/3.2.x/host_usb_device_filter.rb +13 -0
  145. data/lib/virtualbox/com/interface/3.2.x/hw_virt_ex_property_type.rb +11 -0
  146. data/lib/virtualbox/com/interface/3.2.x/keyboard_hid_type.rb +11 -0
  147. data/lib/virtualbox/com/interface/3.2.x/machine.rb +118 -0
  148. data/lib/virtualbox/com/interface/3.2.x/machine_state.rb +14 -0
  149. data/lib/virtualbox/com/interface/3.2.x/medium.rb +51 -0
  150. data/lib/virtualbox/com/interface/3.2.x/medium_attachment.rb +18 -0
  151. data/lib/virtualbox/com/interface/3.2.x/medium_format.rb +18 -0
  152. data/lib/virtualbox/com/interface/3.2.x/medium_state.rb +11 -0
  153. data/lib/virtualbox/com/interface/3.2.x/medium_type.rb +11 -0
  154. data/lib/virtualbox/com/interface/3.2.x/medium_variant.rb +11 -0
  155. data/lib/virtualbox/com/interface/3.2.x/nat_alias_mode.rb +11 -0
  156. data/lib/virtualbox/com/interface/3.2.x/nat_engine.rb +27 -0
  157. data/lib/virtualbox/com/interface/3.2.x/nat_protocol.rb +11 -0
  158. data/lib/virtualbox/com/interface/3.2.x/network_adapter.rb +34 -0
  159. data/lib/virtualbox/com/interface/3.2.x/network_adapter_type.rb +11 -0
  160. data/lib/virtualbox/com/interface/3.2.x/network_attachment_type.rb +11 -0
  161. data/lib/virtualbox/com/interface/3.2.x/nsiexception.rb +23 -0
  162. data/lib/virtualbox/com/interface/3.2.x/nsisupports.rb +15 -0
  163. data/lib/virtualbox/com/interface/3.2.x/parallel_port.rb +17 -0
  164. data/lib/virtualbox/com/interface/3.2.x/pointing_hid_type.rb +11 -0
  165. data/lib/virtualbox/com/interface/3.2.x/port_mode.rb +11 -0
  166. data/lib/virtualbox/com/interface/3.2.x/progress.rb +63 -0
  167. data/lib/virtualbox/com/interface/3.2.x/serial_port.rb +19 -0
  168. data/lib/virtualbox/com/interface/3.2.x/session.rb +18 -0
  169. data/lib/virtualbox/com/interface/3.2.x/session_state.rb +11 -0
  170. data/lib/virtualbox/com/interface/3.2.x/session_type.rb +11 -0
  171. data/lib/virtualbox/com/interface/3.2.x/shared_folder.rb +17 -0
  172. data/lib/virtualbox/com/interface/3.2.x/snapshot.rb +20 -0
  173. data/lib/virtualbox/com/interface/3.2.x/storage_bus.rb +11 -0
  174. data/lib/virtualbox/com/interface/3.2.x/storage_controller.rb +24 -0
  175. data/lib/virtualbox/com/interface/3.2.x/storage_controller_type.rb +11 -0
  176. data/lib/virtualbox/com/interface/3.2.x/system_properties.rb +42 -0
  177. data/lib/virtualbox/com/interface/3.2.x/usb_controller.rb +21 -0
  178. data/lib/virtualbox/com/interface/3.2.x/usb_device.rb +24 -0
  179. data/lib/virtualbox/com/interface/3.2.x/usb_device_filter.rb +23 -0
  180. data/lib/virtualbox/com/interface/3.2.x/usb_device_filter_action.rb +11 -0
  181. data/lib/virtualbox/com/interface/3.2.x/usb_device_state.rb +11 -0
  182. data/lib/virtualbox/com/interface/3.2.x/virtual_box_error_info.rb +17 -0
  183. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description.rb +19 -0
  184. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description_type.rb +14 -0
  185. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description_value_type.rb +11 -0
  186. data/lib/virtualbox/com/interface/3.2.x/virtualbox.rb +67 -0
  187. data/lib/virtualbox/com/interface/3.2.x/vrdp_auth_type.rb +11 -0
  188. data/lib/virtualbox/com/interface/3.2.x/vrdp_server.rb +21 -0
  189. data/lib/virtualbox/com/mscom_interface.rb +44 -0
  190. data/lib/virtualbox/com/nil_interface.rb +7 -0
  191. data/lib/virtualbox/com/util.rb +32 -0
  192. data/lib/virtualbox/cpu.rb +61 -0
  193. data/lib/virtualbox/dhcp_server.rb +89 -0
  194. data/lib/virtualbox/dvd.rb +27 -0
  195. data/lib/virtualbox/exceptions.rb +39 -0
  196. data/lib/virtualbox/ext/byte_normalizer.rb +17 -0
  197. data/lib/virtualbox/ext/glob_loader.rb +22 -0
  198. data/lib/virtualbox/ext/logger.rb +38 -0
  199. data/lib/virtualbox/ext/platform.rb +27 -0
  200. data/lib/virtualbox/ext/subclass_listing.rb +24 -0
  201. data/lib/virtualbox/extra_data.rb +127 -0
  202. data/lib/virtualbox/forwarded_port.rb +222 -0
  203. data/lib/virtualbox/global.rb +102 -0
  204. data/lib/virtualbox/guest_property.rb +116 -0
  205. data/lib/virtualbox/hard_drive.rb +246 -0
  206. data/lib/virtualbox/host.rb +71 -0
  207. data/lib/virtualbox/host_network_interface.rb +137 -0
  208. data/lib/virtualbox/hw_virtualization.rb +63 -0
  209. data/lib/virtualbox/lib.rb +84 -0
  210. data/lib/virtualbox/media.rb +20 -0
  211. data/lib/virtualbox/medium.rb +145 -0
  212. data/lib/virtualbox/medium_attachment.rb +61 -0
  213. data/lib/virtualbox/nat_engine.rb +71 -0
  214. data/lib/virtualbox/nat_forwarded_port.rb +171 -0
  215. data/lib/virtualbox/network_adapter.rb +166 -0
  216. data/lib/virtualbox/proxies/collection.rb +57 -0
  217. data/lib/virtualbox/shared_folder.rb +220 -0
  218. data/lib/virtualbox/snapshot.rb +185 -0
  219. data/lib/virtualbox/storage_controller.rb +160 -0
  220. data/lib/virtualbox/system_properties.rb +74 -0
  221. data/lib/virtualbox/usb_controller.rb +59 -0
  222. data/lib/virtualbox/usb_device_filter.rb +74 -0
  223. data/lib/virtualbox/version.rb +36 -0
  224. data/lib/virtualbox/virtual_system_description.rb +47 -0
  225. data/lib/virtualbox/vm.rb +684 -0
  226. data/lib/virtualbox/vrdp_server.rb +59 -0
  227. data/test/test_helper.rb +18 -0
  228. data/test/virtualbox/abstract_model/attributable_test.rb +269 -0
  229. data/test/virtualbox/abstract_model/dirty_test.rb +83 -0
  230. data/test/virtualbox/abstract_model/interface_attributes_test.rb +194 -0
  231. data/test/virtualbox/abstract_model/relatable_test.rb +348 -0
  232. data/test/virtualbox/abstract_model/validatable_test.rb +308 -0
  233. data/test/virtualbox/abstract_model/version_matcher_test.rb +41 -0
  234. data/test/virtualbox/abstract_model_test.rb +462 -0
  235. data/test/virtualbox/appliance_test.rb +159 -0
  236. data/test/virtualbox/audio_adapter_test.rb +83 -0
  237. data/test/virtualbox/bios_test.rb +83 -0
  238. data/test/virtualbox/com/abstract_enum_test.rb +49 -0
  239. data/test/virtualbox/com/abstract_implementer_test.rb +40 -0
  240. data/test/virtualbox/com/abstract_interface_test.rb +140 -0
  241. data/test/virtualbox/com/ffi/interface_test.rb +249 -0
  242. data/test/virtualbox/com/ffi/util_test.rb +108 -0
  243. data/test/virtualbox/com/ffi_interface_test.rb +42 -0
  244. data/test/virtualbox/com/implementer/base_test.rb +38 -0
  245. data/test/virtualbox/com/implementer/ffi_test.rb +527 -0
  246. data/test/virtualbox/com/implementer/mscom_test.rb +247 -0
  247. data/test/virtualbox/com/mscom_interface_test.rb +17 -0
  248. data/test/virtualbox/com/util_test.rb +17 -0
  249. data/test/virtualbox/cpu_test.rb +103 -0
  250. data/test/virtualbox/dhcp_server_test.rb +165 -0
  251. data/test/virtualbox/dvd_test.rb +28 -0
  252. data/test/virtualbox/ext/byte_normalizer_test.rb +34 -0
  253. data/test/virtualbox/ext/platform_test.rb +50 -0
  254. data/test/virtualbox/ext/subclass_listing_test.rb +25 -0
  255. data/test/virtualbox/extra_data_test.rb +155 -0
  256. data/test/virtualbox/forwarded_port_test.rb +286 -0
  257. data/test/virtualbox/global_test.rb +46 -0
  258. data/test/virtualbox/hard_drive_test.rb +141 -0
  259. data/test/virtualbox/host_network_interface_test.rb +254 -0
  260. data/test/virtualbox/host_test.rb +94 -0
  261. data/test/virtualbox/hw_virtualization_test.rb +103 -0
  262. data/test/virtualbox/lib_test.rb +93 -0
  263. data/test/virtualbox/medium_attachment_test.rb +147 -0
  264. data/test/virtualbox/medium_test.rb +192 -0
  265. data/test/virtualbox/nat_engine_test.rb +106 -0
  266. data/test/virtualbox/nat_forwarded_port_test.rb +222 -0
  267. data/test/virtualbox/network_adapter_test.rb +191 -0
  268. data/test/virtualbox/proxies/collection_test.rb +102 -0
  269. data/test/virtualbox/shared_folder_test.rb +219 -0
  270. data/test/virtualbox/snapshot_test.rb +231 -0
  271. data/test/virtualbox/storage_controller_test.rb +197 -0
  272. data/test/virtualbox/system_properties_test.rb +87 -0
  273. data/test/virtualbox/usb_controller_test.rb +112 -0
  274. data/test/virtualbox/usb_device_filter_test.rb +93 -0
  275. data/test/virtualbox/version_test.rb +59 -0
  276. data/test/virtualbox/virtual_system_description_test.rb +61 -0
  277. data/test/virtualbox/vm_test.rb +637 -0
  278. data/test/virtualbox/vrdp_server_test.rb +83 -0
  279. data/test/virtualbox_test.rb +11 -0
  280. data/virtualbox.gemspec +25 -0
  281. metadata +397 -0
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class SessionState < AbstractEnum
6
+ map [:null, :closed, :open, :spawning, :closing]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class SessionType < AbstractEnum
6
+ map [:null, :direct, :remote, :existing]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class SharedFolder < AbstractInterface
6
+ IID = "64637bb2-9e17-471c-b8f3-f8968dd9884e"
7
+
8
+ property :name, WSTRING, :readonly => true
9
+ property :host_path, WSTRING, :readonly => true
10
+ property :accessible, T_BOOL, :readonly => true
11
+ property :writable, T_BOOL, :readonly => true
12
+ property :last_access_error, WSTRING, :readonly => true
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class Snapshot < AbstractInterface
6
+ IID = "1a2d0551-58a4-4107-857e-ef414fc42ffc"
7
+
8
+ property :id, WSTRING, :readonly => true
9
+ property :name, WSTRING
10
+ property :description, WSTRING
11
+ property :time_stamp, T_INT64, :readonly => true
12
+ property :online, T_BOOL, :readonly => true
13
+ property :machine, :Machine, :readonly => true
14
+ property :parent, :Snapshot, :readonly => true
15
+ property :children, [:Snapshot], :readonly => true
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class StorageBus < AbstractEnum
6
+ map [:null, :ide, :sata, :scsi, :floppy, :sas]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class StorageController < AbstractInterface
6
+ IID = "6bf8335b-d14a-44a5-9b45-ddc49ce7d5b2"
7
+
8
+ property :name, WSTRING, :readonly => true
9
+ property :max_devices_per_port_count, T_UINT32, :readonly => true
10
+ property :min_port_count, T_UINT32, :readonly => true
11
+ property :max_port_count, T_UINT32, :readonly => true
12
+ property :instance, T_UINT32
13
+ property :port_count, T_UINT32
14
+ property :bus, :StorageBus, :readonly => true
15
+ property :controller_type, :StorageControllerType
16
+ property :use_host_io_cache, T_BOOL
17
+
18
+ function :get_ide_emulation_port, T_INT32, [T_INT32]
19
+ function :set_ide_emulation_port, nil, [T_INT32, T_INT32]
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class StorageControllerType < AbstractEnum
6
+ map [:null, :lsi_logic, :bus_logic, :intel_ahci, :piix3, :piix4, :ich6, :i82078, :lsi_logic_sas]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,42 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class SystemProperties < AbstractInterface
6
+ IID = "8030645c-8fef-4320-bb7b-c829f00069dc"
7
+
8
+ property :min_guest_ram, T_UINT32, :readonly => true
9
+ property :max_guest_ram, T_UINT32, :readonly => true
10
+ property :min_guest_vram, T_UINT32, :readonly => true
11
+ property :max_guest_vram, T_UINT32, :readonly => true
12
+ property :min_guest_cpu_count, T_UINT32, :readonly => true
13
+ property :max_guest_cpu_count, T_UINT32, :readonly => true
14
+ property :max_guest_monitors, T_UINT32, :readonly => true
15
+ property :max_vdi_size, T_UINT64, :readonly => true
16
+ property :network_adapter_count, T_UINT32, :readonly => true
17
+ property :serial_port_count, T_UINT32, :readonly => true
18
+ property :parallel_port_count, T_UINT32, :readonly => true
19
+ property :max_boot_position, T_UINT32, :readonly => true
20
+ property :default_machine_folder, WSTRING
21
+ property :default_hard_disk_folder, WSTRING
22
+ property :medium_formats, [:MediumFormat], :readonly => true
23
+ property :default_hard_disk_format, WSTRING
24
+ property :free_disk_space_warning, T_UINT64
25
+ property :free_disk_space_percent_warning, T_UINT32
26
+ property :free_disk_space_error, T_UINT64
27
+ property :free_disk_space_percent_error, T_UINT64
28
+ property :remote_display_auth_library, WSTRING
29
+ property :web_service_auth_library, WSTRING
30
+ property :log_history_count, T_UINT32
31
+ property :default_audio_driver, :AudioDriverType, :readonly => true
32
+
33
+ function :get_max_devices_per_port_for_storage_bus, T_UINT32, [:StorageBus]
34
+ function :get_min_port_count_for_storage_bus, T_UINT32, [:StorageBus]
35
+ function :get_max_port_count_for_storage_bus, T_UINT32, [:StorageBus]
36
+ function :get_max_instances_of_storage_bus, T_UINT32, [:StorageBus]
37
+ function :get_device_types_for_storage_bus, [:DeviceType], [:StorageBus]
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,21 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class USBController < AbstractInterface
6
+ IID = "238540fa-4b73-435a-a38e-4e1d9eab5c17"
7
+
8
+ property :enabled, T_BOOL
9
+ property :enabled_ehci, T_BOOL
10
+ property :proxy_available, T_BOOL, :readonly => true
11
+ property :usb_standard, T_UINT16, :readonly => true
12
+ property :device_filters, [:USBDeviceFilter], :readonly => true
13
+
14
+ function :create_device_filter, :USBDeviceFilter, [WSTRING]
15
+ function :insert_device_filter, nil, [T_UINT32, :USBDeviceFilter]
16
+ function :remove_device_filter, :USBDeviceFilter, [T_UINT32]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class USBDevice < AbstractInterface
6
+ IID = "f8967b0b-4483-400f-92b5-8b675d98a85b"
7
+
8
+ property :id, WSTRING, :readonly => true
9
+ property :vendor_id, T_UINT16, :readonly => true
10
+ property :product_id, T_UINT16, :readonly => true
11
+ property :revision, T_UINT16, :readonly => true
12
+ property :manfacturer, WSTRING, :readonly => true
13
+ property :product, WSTRING, :readonly => true
14
+ property :serial_number, WSTRING, :readonly => true
15
+ property :address, WSTRING, :readonly => true
16
+ property :port, T_UINT16, :readonly => true
17
+ property :version, T_UINT16, :readonly => true
18
+ property :port_version, T_UINT16, :readonly => true
19
+ property :remote, T_BOOL, :readonly => true
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class USBDeviceFilter < AbstractInterface
6
+ IID = "d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
7
+
8
+ property :name, WSTRING
9
+ property :active, T_BOOL
10
+ property :vendor_id, WSTRING
11
+ property :product_id, WSTRING
12
+ property :revision, WSTRING
13
+ property :manufacturer, WSTRING
14
+ property :product, WSTRING
15
+ property :serial_number, WSTRING
16
+ property :port, WSTRING
17
+ property :remote, WSTRING
18
+ property :masked_interfaces, T_UINT32
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class USBDeviceFilterAction < AbstractEnum
6
+ map [:null, :ignore, :hold]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class USBDeviceState < AbstractEnum
6
+ map [:not_supported, :unavailable, :busy, :available, :help, :captured]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VirtualBoxErrorInfo < AbstractInterface
6
+ IID = "4b86d186-407e-4f9e-8be8-e50061be8725"
7
+
8
+ property :result_code, T_UINT32, :readonly => true
9
+ property :interface_i_d, WSTRING, :readonly => true
10
+ property :component, WSTRING, :readonly => true
11
+ property :text, WSTRING, :readonly => true
12
+ property :next, :VirtualBoxErrorInfo, :readonly => true
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VirtualSystemDescription < AbstractInterface
6
+ IID = "d7525e6c-531a-4c51-8e04-41235083a3d8"
7
+
8
+ property :count, T_UINT32, :readonly => true
9
+
10
+ function :get_description, nil, [[:out, [:VirtualSystemDescriptionType]], [:out, [WSTRING]], [:out, [WSTRING]], [:out, [WSTRING]], [:out, [WSTRING]]]
11
+ function :get_description_by_type, nil, [:VirtualSystemDescriptionType, [:out, [:VirtualSystemDescriptionType]], [:out, [WSTRING]], [:out, [WSTRING]], [:out, [WSTRING]], [:out, [WSTRING]]]
12
+ function :get_values_by_type, [WSTRING], [:VirtualSystemDescriptionType, :VirtualSystemDescriptionValueType]
13
+ function :set_final_values, nil, [[T_BOOL], [WSTRING], [WSTRING]]
14
+ function :add_description, nil, [:VirtualSystemDescriptionType, WSTRING, WSTRING]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VirtualSystemDescriptionType < AbstractEnum
6
+ map [:null, :ignore, :os, :name, :product, :vendor, :version, :product_url, :vendor_url,
7
+ :description, :license, :misc, :cpu, :memory, :hard_disk_controller_ide,
8
+ :hard_disk_controller_sata, :hard_disk_controller_scsi, :hard_disk_controller_sas, :hard_disk_image,
9
+ :floppy, :cdrom, :network_adapter, :usb_controller, :sound_card]
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VirtualSystemDescriptionValueType < AbstractEnum
6
+ map [:null, :reference, :original, :auto, :extra_config]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,67 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VirtualBox < AbstractInterface
6
+ IID_STR = "3f36e024-7fed-4f20-a02c-9158a82b44e6"
7
+
8
+ property :version, WSTRING, :readonly => true
9
+ property :revision, T_ULONG, :readonly => true
10
+ property :package_type, WSTRING, :readonly => true
11
+ property :home_folder, WSTRING, :readonly => true
12
+ property :settings_file_path, WSTRING, :readonly => true
13
+ property :host, :Host, :readonly => true
14
+ property :system_properties, :SystemProperties, :readonly => true
15
+ property :machines, [:Machine], :readonly => true
16
+ property :hard_disks, [:Medium], :readonly => true
17
+ property :dvd_images, [:Medium], :readonly => true
18
+ property :floppy_images, [:Medium], :readonly => true
19
+ property :progress_operations, [:Progress], :readonly => true
20
+ property :guest_os_types, [:GuestOSType], :readonly => true
21
+ property :shared_folders, [:SharedFolder], :readonly => true
22
+ property :performance_collector, :PerformanceCollector, :readonly => true
23
+ property :dhcp_servers, [:DHCPServer], :readonly => true
24
+
25
+ function :create_machine, :Machine, [WSTRING, WSTRING, WSTRING, WSTRING, T_BOOL]
26
+ function :create_legacy_machine, :Machine, [WSTRING, WSTRING, WSTRING, WSTRING]
27
+ function :open_machine, :Machine, [WSTRING]
28
+ function :register_machine, :Machine, [:Machine]
29
+ function :get_machine, :Machine, [WSTRING]
30
+ function :find_machine, :Machine, [WSTRING]
31
+ function :unregister_machine, :Machine, [WSTRING]
32
+ function :create_appliance, :Appliance, []
33
+ function :create_hard_disk, :Medium, [WSTRING, WSTRING]
34
+ function :open_hard_disk, :Medium, [WSTRING, :AccessMode, T_BOOL, WSTRING, T_BOOL, WSTRING]
35
+ function :get_hard_disk, :Medium, [WSTRING]
36
+ function :find_hard_disk, :Medium, [WSTRING]
37
+ function :open_dvd_image, :Medium, [WSTRING, WSTRING]
38
+ function :get_dvd_image, :Medium, [WSTRING]
39
+ function :find_dvd_image, :Medium, [WSTRING]
40
+ function :open_floppy_image, :Medium, [WSTRING, WSTRING]
41
+ function :get_floppy_image, :Medium, [WSTRING]
42
+ function :find_floppy_image, :Medium, [WSTRING]
43
+ function :get_guest_os_type, :GuestOSType, [WSTRING]
44
+ function :create_shared_folder, nil, [WSTRING, WSTRING, T_BOOL]
45
+ function :remove_shared_folder, nil, [WSTRING]
46
+ function :get_extra_data_keys, [WSTRING], []
47
+ function :get_extra_data, WSTRING, [WSTRING]
48
+ function :set_extra_data, nil, [WSTRING, WSTRING]
49
+ function :open_session, nil, [:Session, WSTRING]
50
+ function :open_remote_session, :Progress, [:Session, WSTRING, WSTRING, WSTRING]
51
+ function :open_existing_session, nil, [:Session, WSTRING]
52
+
53
+ # TODO: The following two are wrong, they don't take a
54
+ # string as input
55
+ function :register_callback, nil, [WSTRING]
56
+ function :unregister_callback, nil, [WSTRING]
57
+
58
+ function :wait_for_property_change, nil, [WSTRING, T_UINT32, [:out, WSTRING], [:out, WSTRING]]
59
+ function :create_dhcp_server, :DHCPServer, [WSTRING]
60
+ function :find_dhcp_server_by_network_name, :DHCPServer, [WSTRING]
61
+ function :remove_dhcp_server, nil, [:DHCPServer]
62
+ function :check_firmware_present, T_BOOL, [:FirmwareType, WSTRING, [:out, WSTRING], [:out, WSTRING]]
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,11 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VRDPAuthType < AbstractEnum
6
+ map [:null, :external, :guest]
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ module Version_3_2_X
5
+ class VRDPServer < AbstractInterface
6
+ IID = "72e671bc-1712-4052-ad6b-e45e76d9d3e4"
7
+
8
+ property :enabled, T_BOOL
9
+ property :ports, WSTRING
10
+ property :net_address, WSTRING
11
+ property :auth_type, :VRDPAuthType
12
+ property :auth_timeout, T_UINT32
13
+ property :allow_multi_connection, T_BOOL
14
+ property :reuse_single_connection, T_BOOL
15
+ property :video_channel, T_BOOL
16
+ property :video_channel_quality, T_UINT32
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ module VirtualBox
2
+ module COM
3
+ class MSCOMInterface < BaseInterface
4
+ # The VirtualBox and Session interfaces, both of which are extremely
5
+ # important in interfacing with the VirtualBox API. Once these have been
6
+ # initialized, all other parts of the API can be accessed via these
7
+ # instances.
8
+ attr_reader :virtualbox
9
+ attr_reader :session
10
+
11
+ def initialize
12
+ super
13
+ initialize_mscom
14
+ end
15
+
16
+ def initialize_mscom
17
+ require 'win32ole'
18
+
19
+ interface_dir = File.expand_path(File.join(File.dirname(__FILE__), "interface"))
20
+ Dir[File.join(interface_dir, "*")].each do |f|
21
+ return if File.directory?(f) && initialize_for_version(File.basename(f))
22
+ end
23
+ end
24
+
25
+ def initialize_for_version(version)
26
+ COM::Util.set_interface_version(version)
27
+
28
+ @virtualbox = COM::Util.versioned_interface(:VirtualBox).new(Implementer::MSCOM, self, WIN32OLE.new("VirtualBox.VirtualBox"))
29
+ @session = COM::Util.versioned_interface(:Session).new(Implementer::MSCOM, self, WIN32OLE.new("VirtualBox.Session"))
30
+
31
+ vb_version = @virtualbox.version
32
+
33
+ # Check if they match or not.
34
+ return false if vb_version.length == version.length
35
+ (0...(version.length)).each do |i|
36
+ next if version[i,1] == "x"
37
+ return false if version[i,1] != vb_version[i,1]
38
+ end
39
+
40
+ true
41
+ end
42
+ end
43
+ end
44
+ end