Hi all,
I am trying to implement an OVF support for some virtualization software, which is using raw images for disks. I use qemu-img to convert raw images to vmdk format. Then I use ovftool to convert ovf file into vmware instance.
When the file I have is a simple ovf descriptor + manifest + disk - all is fine, it works even if I'm using qemu-img without "compat6" option
When the disk is compressed or the OVF package is packed into OVA - there are errors being thrown. Moreover when I create OVA package with no disk, the conversion works.
Here is the fragment of results for the OVA file:
Writing VMX file: test_ova.vmx[2011-10-03 16:34:35.685 7F097D2C1720 verbose 'ovftool'] Using file size as progress measureDisk progress: 0%[2011-10-03 16:34:35.685 7F097D2C1720 verbose 'ovftool'] Ovf::GetFileSource as StreamVmdk failed. Exception: Cannot open disk source: Not a supported disk format (sparse VMDK version too old)Disk Transfer FailedError: Failed to open source disk: 3f66f54d-a9fa-4aa8-806d-d757d6f34a59.disk0.vmdk[2011-10-03 16:34:35.685 7F097D2C1720 verbose 'ovftool'] Backtrace:[00] rip 00007f09767453e4[01] rip 00007f09765e99d4[02] rip 00007f097658e038[03] rip 00000000004fef51[04] rip 000000000054aaa5[05] rip 000000000054ae78[06] rip 000000000049c41a[07] rip 00007f0974e62c4d[08] rip 000000000047ec7a[2011-10-03 16:34:35.685 7F097D2C1720 verbose 'ovftool'] Deleting file: ./test_ova-disk1.vmdk
Same fragment when I unpack OVA and then run ovftool on the .ovf file:
Writing VMX file: test_ovf.vmx
[2011-10-03 16:35:53.934 7F7E899C4720 verbose 'ovftool'] Using file size as progress measure
Disk progress: 0%[2011-10-03 16:35:53.935 7F7E899C4720 verbose 'ovftool'] Ovf::GetFileSource as StreamVmdk failed. Exception: Cannot open disk source: Not a supported disk format (sparse VMDK version too old)
Disk progress: 99%[2011-10-03 16:35:54.106 7F7E899C4720 verbose 'ovftool'] Ovf::GetFileSource: Opened 3f66f54d-a9fa-4aa8-806d-d757d6f34a59.disk0.vmdk as diskLib source
[2011-10-03 16:35:54.106 7F7E899C4720 verbose 'ovftool'] Opening disk target /xcinstall-1.corp.google.com/VirtualLsiLogicController0:0
Disk Transfer Completed
Completed successfully
Thank you.
I see the same issue, and I am using a standard linux tar function to create the OVA. I suspect it's the qemu-img tool and I have opened a dialogue with the developers: http://permalink.gmane.org/gmane.comp.emulators.qemu/122901
One question: how do you create a disk-less OVA/OVF? Presumably with just an ISO or raw image? Curious because the OVF standard says this should work but I can't upload that either... Thanks!
In Workstation/Fusion/VI Client you can connect the ISO and set it to "connect at power on" and use ovftool to export the VM.
If you like to do hand written ninja trix I have posted an OVF that define a small OVF with attached ISO for CDROM.
<?xml version="1.0" encoding="UTF-8"?> <Envelope vmw:buildId="build-00000" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <References> <File ovf:href="tinyOvfWithIso-file1.iso" ovf:id="file1" ovf:size="358400"/> </References> <DiskSection> <Info>Virtual disk information</Info> </DiskSection> <NetworkSection> <Info>The list of logical networks</Info> <Network ovf:name="nat"> <Description>The nat network</Description> </Network> </NetworkSection> <VirtualSystem ovf:id="test1"> <Info>A virtual machine</Info> <Name>test1</Name> <OperatingSystemSection ovf:id="74" vmw:osType="winLonghorn64Guest"> <Info>The kind of installed guest operating system</Info> </OperatingSystemSection> <VirtualHardwareSection> <Info>Virtual hardware requirements</Info> <System> <vssd:ElementName>Virtual Hardware Family</vssd:ElementName> <vssd:InstanceID>0</vssd:InstanceID> <vssd:VirtualSystemIdentifier>test1</vssd:VirtualSystemIdentifier> <vssd:VirtualSystemType>vmx-07</vssd:VirtualSystemType> </System> <Item> <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits> <rasd:Description>Number of Virtual CPUs</rasd:Description> <rasd:ElementName>1 virtual CPU(s)</rasd:ElementName> <rasd:InstanceID>1</rasd:InstanceID> <rasd:ResourceType>3</rasd:ResourceType> <rasd:VirtualQuantity>1</rasd:VirtualQuantity> </Item> <Item> <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits> <rasd:Description>Memory Size</rasd:Description> <rasd:ElementName>1024MB of memory</rasd:ElementName> <rasd:InstanceID>2</rasd:InstanceID> <rasd:ResourceType>4</rasd:ResourceType> <rasd:VirtualQuantity>1024</rasd:VirtualQuantity> </Item> <Item ovf:required="false"> <rasd:Address>0</rasd:Address> <rasd:Description>USB Controller</rasd:Description> <rasd:ElementName>usb</rasd:ElementName> <rasd:InstanceID>3</rasd:InstanceID> <rasd:ResourceType>23</rasd:ResourceType> </Item> <Item> <rasd:Address>0</rasd:Address> <rasd:Description>SCSI Controller</rasd:Description> <rasd:ElementName>scsiController0</rasd:ElementName> <rasd:InstanceID>4</rasd:InstanceID> <rasd:ResourceSubType>lsilogicsas</rasd:ResourceSubType> <rasd:ResourceType>6</rasd:ResourceType> </Item> <Item> <rasd:Address>1</rasd:Address> <rasd:Description>IDE Controller</rasd:Description> <rasd:ElementName>ideController1</rasd:ElementName> <rasd:InstanceID>5</rasd:InstanceID> <rasd:ResourceType>5</rasd:ResourceType> </Item> <Item> <rasd:AddressOnParent>0</rasd:AddressOnParent> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> <rasd:ElementName>cdrom1</rasd:ElementName> <rasd:HostResource>ovf:/file/file1</rasd:HostResource> <rasd:InstanceID>7</rasd:InstanceID> <rasd:Parent>5</rasd:Parent> <rasd:ResourceType>15</rasd:ResourceType> </Item> <Item> <rasd:AddressOnParent>2</rasd:AddressOnParent> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> <rasd:Connection>nat</rasd:Connection> <rasd:Description>E1000 ethernet adapter on "nat"</rasd:Description> <rasd:ElementName>ethernet0</rasd:ElementName> <rasd:InstanceID>9</rasd:InstanceID> <rasd:ResourceSubType>E1000</rasd:ResourceSubType> <rasd:ResourceType>10</rasd:ResourceType> </Item> <Item ovf:required="false"> <rasd:AddressOnParent>3</rasd:AddressOnParent> <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation> <rasd:Description>Sound Card</rasd:Description> <rasd:ElementName>sound</rasd:ElementName> <rasd:InstanceID>10</rasd:InstanceID> <rasd:ResourceSubType>vmware.soundcard.ensoniq1371</rasd:ResourceSubType> <rasd:ResourceType>1</rasd:ResourceType> </Item> </VirtualHardwareSection> </VirtualSystem> </Envelope>
What you want to look at is the item that defines the CDROM.
Eske
Thanks - that did indeed work.