Source: DSP0243 2.1.1 clause 8 and Annex D, and the DSP8023 and CIM_ResourceAllocationSettingData schemas (read). The hardware description is based on the CIM classes CIM_VirtualSystemSettingData, CIM_ResourceAllocationSettingData, CIM_EthernetPortAllocationSettingData and CIM_StorageAllocationSettingData in the WS-CIM XML mapping (DSP0230).
VirtualHardwareSection
- A VirtualSystem shall have one as a direct child; more than one may occur, then each has an
ovf:idunique within the system. It shall not be a child of a VirtualSystemCollection or the Envelope. Incomplete descriptions are allowed; the platform may add devices; the devices listed shall be realised. ovf:transport: the space-separated transport media types for the properties (the schema's default is empty; onlyisois defined).- Children: zero or one
System(properties of CIM_VirtualSystemSettingData;vssd:VirtualSystemTypelists space-separated type identifiers, of which the platform should support at least one), thenItem(CIM_ResourceAllocationSettingData),EthernetPortItemandStorageItemelements. The CIM class elements are ordered by Unicode code point of the CIM property name. ovf:requiredon an item says whether realising it is needed (default true); on its child elements it is interpreted too. A child that is unknown and required makes the item fail; unknown and not required is ignored.
Elements of an item
| Element | Meaning |
|---|---|
Description, ElementName, Caption | Human-readable text about the item; localisable with ovf:msgid. |
InstanceID | The item's unique instance ID within the section. |
ResourceType, OtherResourceType, ResourceSubType | The kind of device. ResourceType is an unsigned short: values 1 to 33 are defined by CIM, 0 and 34 to 32767 are DMTF reserved, 32768 to 65535 vendor reserved (schema). The specification's examples use 3 for a virtual CPU, 4 for memory, 10 for an Ethernet port and 31 for a virtual disk; the names of the other values are in DSP1041 and the CIM schema, which were not read. A subtype is a space-separated list (for example buslogic lsilogic for a SCSI controller). |
HostResource | The backing: ovf:/file/<id> (a File of References) or ovf:/disk/<id> (a Disk of DiskSection or SharedDiskSection), or a logical device of the deployment platform. Only one backing per device. A disk's capacity then comes from its Disk element and any VirtualQuantity is ignored. |
AutomaticAllocation | For connectable devices (floppies, CD-ROMs, adapters): connected at power-on. |
Parent, AddressOnParent, Address | The InstanceID of the parent controller, the device's position on it, and a device-specific address (a MAC address, for example). |
Connection | For Ethernet adapters: the logical network name; adapters on the same network use the same name, and it shall be a Network of the NetworkSection. |
AllocationUnits, VirtualQuantity | The unit of allocation (the examples write byte * 2^20 and hertz * 10^6) and the quantity presented. |
Reservation, Limit, Weight | The guaranteed minimum, the maximum, and the relative priority. |
Each element corresponds to the property of the same name in the CIM class; the schema defines more (the viewer shows those it finds as written).
Ranges and configurations
ovf:boundismin,maxornormal(default). Aminormaxitem is a range marker: it shall giveInstanceIDandResourceType, the ResourceType shall match the other items with that InstanceID, there is at most one of each per InstanceID, it needs a corresponding unmarked item that sets the default, and the default shall be inside the range. Non-integer elements shall not appear in a range marker.ovf:configurationlists the configurations (from the DeploymentOptionSection) the item applies to; absent means all. Several items may share an InstanceID, and the combined item takes each child from the last item that has it. All shall give the same ResourceType.
Example (the specification's D.7)
<VirtualHardwareSection>
<Info>Memory = 4 GB, CPU = 1 GHz, Disk = 100 GB, 1 Ethernet nic</Info>
<Item>
<rasd:AllocationUnits>Hertz*10^9</rasd:AllocationUnits>
<rasd:ElementName>1 GHz virtual CPU</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
</Item>
…
</VirtualHardwareSection>