[vbox-dev] Generic open and clone
Chris Wolfe
cwolfe at globetrotter.net
Sat Jan 27 07:11:31 PST 2007
Thanks, that will make things easier. Trying to respect the separation
between the XPCOM interfaces, the internal C interfaces, and the
internal C APIs gets downright annoying at times.
I am exclusively using Linux hosts, so believe all that I need is
provided by the existing RawImage driver. Unless I miss my guess,
following the changes you make to allow Driver=VmdkHDD rather than
=VBoxHDD will be the simple way to get it enabled.
Chris
Achim Hasenmueller wrote:
> Chris,
>
> thanks a lot for your input. As the complete cloning support will
> require a lot of work, we'd like to provide an interim solution in
> VBoxManage which directly calls the VDI* APIs. This is almost done,
> expect the sources to be committed real soon. Initially it will just
> provide VDI shrinking but you could easily add the import/export stuff
> by just modifying VBoxManage.
>
> We will also submit the API changes for additional disk formats (VMDK)
> soon. What you could have a look at would be that RawHardDisk (and maybe
> RawPartition) support. That is rather high on the users' wishlist and we
> don't have time to look into it right now.
>
> Thanks!
>
> Achim.
>
> Chris Wolfe wrote:
>> I started looking at ways to plug in the image conversion features I
>> need (for one, import and export of raw images). The simplest approach
>> seems to be leveraging the existing create/open/clone behavior as used
>> by "VBoxManage clonevdi" (adding optional -informat and -outformat
>> arguments).
>>
>> Doing so, however, requires the ability to open from and clone to
>> arbitrary HardDiskStorageTypes. Is there anything in the pipe that would
>> provide something like the attached interface change? If not, I think I
>> can get the underlying changes implemented without stepping on too many
>> toes.
>>
>> (My contributions to the attached file are hereby placed in the Public
>> Domain. Not that I think they were Copyrightable in the first place, but
>> let's keep the lawyers happy.)
>>
>> Chris
>>
>> ------------------------------------------------------------------------
>>
>> Index: src/VBox/Main/idl/VirtualBox.xidl
>> ===================================================================
>> --- src/VBox/Main/idl/VirtualBox.xidl (revision 258)
>> +++ src/VBox/Main/idl/VirtualBox.xidl (working copy)
>> @@ -858,6 +858,36 @@
>>
>> </method>
>>
>> + <method name="openHardDisk">
>> + <desc>
>> +
>> + Opens a hard disk from a file path or URI using the given
>> + storage type. The opened hard disk remains unregistered
>> + until <link to="#registerHardDisk()"/> is called.
>> +
>> + <note>The specified file path can be absolute (full path) or
>> + relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
>> + home directory</link>. If only a file name without any path is
>> + given, the <link to="ISystemProperties::defaultVDIFolder">
>> + default VDI folder</link> will be used as a path to the image
>> + file.</note>
>> +
>> + </desc>
>> +
>> + <param name="storageType" type="HardDiskStorageType" dir="in">
>> + <desc>Storage type of the hard disk to open.</desc>
>> + </param>
>> + <param name="filePathOrUri" type="wstring" dir="in">
>> + <desc>
>> + File path or URI that contains a valid disk image of the
>> + given storage type.
>> + </desc>
>> + </param>
>> + <param name="hardDisk" type="IHardDisk" dir="return">
>> + <desc>Opened hard disk object of the given storage type.</desc>
>> + </param>
>> + </method>
>> +
>> <method name="openVirtualDiskImage">
>> <desc>
>>
>> @@ -4073,6 +4103,12 @@
>> <link to="IISCSIHardDisk"/>)
>> </desc>
>> </const>
>> + <const name="RawHardDisk" value="1">
>> + <desc>
>> + A raw disk image, for compatibility with other systems and
>> + native devices.
>> + </desc>
>> + </const>
>> </enum>
>>
>> <enum
>> @@ -4663,6 +4699,42 @@
>>
>> </method>
>>
>> + <method name="cloneToDisk">
>> +
>> + <desc>
>> +
>> + Starts creating a clone of this hard disk. The cloned hard disk
>> + will use the given storage format and will contain exactly the
>> + same sector data as the hard disk being cloned. If applicable to
>> + the format, a new UUID for the clone will be randomly generated.
>> +
>> + The specified image file path can be absolute (full path) or
>> + relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
>> + home directory</link>. If only a file name without any path is
>> + given, the <link to="ISystemProperties::defaultVDIFolder">
>> + default VDI folder</link> will be used as a path to the image
>> + file.
>> +
>> + It is an error to use the object returned in the @a image
>> + parameter until the returned @a progress object reports success.
>> +
>> + </desc>
>> +
>> + <param name="storageType" type="HardDiskStorageType" dir="in">
>> + <desc>Storage type of the cloned hard disk.</desc>
>> + </param>
>> + <param name="filePath" type="wstring" dir="in">
>> + <desc>Path to a file in which to store the cloned hard disk.</desc>
>> + </param>
>> + <param name="hardDisk" type="IHardDisk" dir="out">
>> + <desc>Cloned hard disk object.</desc>
>> + </param>
>> + <param name="progress" type="IProgress" dir="return">
>> + <desc>Progress object to track the operation completion.</desc>
>> + </param>
>> +
>> + </method>
>> +
>> </interface>
>>
>> <!--
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> vbox-dev mailing list
>> vbox-dev at virtualbox.org
>> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>>
>
>
More information about the vbox-dev
mailing list