VMware Cloud Community
Ayertienna
Contributor
Contributor

OVA vs OVF in ovftool

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 measure
Disk 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 Failed                      
Error: 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

Can someone please explain to me, what is happening?
I am using python's tarfile to create OVA, if this may be of importance (although I doubt that, since it works with diskless OVA),
my qemu-img version used in this example was 0.12,
I used ovftool in version 2.0.0.

Thank you.

0 Kudos
3 Replies
rwellum
Contributor
Contributor

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!

0 Kudos
admin
Immortal
Immortal

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 &quot;nat&quot;</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

0 Kudos
rwellum
Contributor
Contributor

Thanks - that did indeed work.

0 Kudos