Source: DSP0243 2.1.1 clause 9 and the DSP8023 2.0.1 schema (read in full). Every section contains an
Info element and may carry ovf:required. The
VirtualHardwareSection has its own page.
Sections and where they go
| Section | Parent | Count | What it is |
|---|---|---|---|
| DiskSection | Envelope | 0 or 1 | Meta-information about all virtual disks. |
| NetworkSection | Envelope | 0 or 1 | The logical networks. |
| ResourceAllocationSection | VirtualSystemCollection | 0 or 1 | Reservations, limits and shares for a collection. |
| AnnotationSection | VirtualSystem, VirtualSystemCollection | 0 or 1 | A free-form annotation (Annotation). |
| ProductSection | VirtualSystem, VirtualSystemCollection | 0 or more | Product information and configurable properties. |
| EulaSection | VirtualSystem, VirtualSystemCollection | 0 or more | A licence agreement (License). |
| StartupSection | VirtualSystemCollection | 0 or 1 | How a collection is powered on and off. |
| DeploymentOptionSection | Envelope | 0 or 1 | A discrete set of intended resource configurations. |
| OperatingSystemSection | VirtualSystem | 0 or 1 | The guest software. |
| InstallSection | VirtualSystem | 0 or 1 | The system must be booted once to install and configure its software. |
| EnvironmentFilesSection | VirtualSystem | 0 or 1 | Additional files for the OVF environment. |
| BootDeviceSection | VirtualSystem | 0 or more | The boot device order. |
| SharedDiskSection | Envelope | 0 or 1 | Disks shared by several virtual systems at runtime. |
| ScaleOutSection | VirtualSystemCollection | 0 or more | Replicates a prototype. |
| PlacementGroupSection | Envelope | 0 or more | A placement policy for a group. |
| PlacementSection | VirtualSystem, VirtualSystemCollection | 0 or 1 | Membership of a placement group. |
| EncryptionSection | Envelope | 0 or 1 | The encryption scheme for parts of the descriptor or its files (XML Encryption). |
DiskSection and SharedDiskSection
Only a direct child of the Envelope. Each Disk (a SharedDisk has the same attributes plus
ovf:readOnly, default false):
| Attribute | Required | Meaning and rules |
|---|---|---|
ovf:diskId | yes | The identifier; unique within the DiskSection (and, for shared disks, across both sections). |
ovf:capacity | yes | An xs:long size, or ${id} naming a Property that gives it (for empty disks). |
ovf:capacityAllocationUnits | no | The unit, from DSP0004's programmatic units with the base unit "byte"; bytes by default. |
ovf:fileRef | no | The ovf:id of a File. Absent means an empty disk, created and zeroed at deployment. Two Disks shall not share a fileRef, and Disks are in the order of the Files in References. |
ovf:format | for a non-empty disk | A URI that identifies an unencumbered specification of the disk format (for VMDK, VMware's URL with a fragment such as #streamOptimized is customary). |
ovf:populatedSize | no | The used size in bytes (an estimate); not larger than the capacity. |
ovf:parentRef | no | The diskId of a different disk that supplies blocks this one lacks. A parent shall come before its children, in DiskSection and in References. |
NetworkSection
Each Network has an ovf:name (required, unique in the Envelope), an optional
Description, and optional NetworkPortProfile (holding Item elements of the Ethernet
port settings) or NetworkPortProfileURI. Every network named by a Connection in the hardware
shall be defined here.
ProductSection and properties
ovf:class (reverse domain name, for example com.vmware.tools) and ovf:instance make a pair that is
unique among the ProductSections of a parent; both default to empty and shall not contain a colon. Children, all
optional: Product, Vendor, Version (short), FullVersion, ProductUrl,
VendorUrl, AppUrl, Icon (ovf:fileRef required; height, width,
mimeType), then Category and Property elements. The first ProductSection of the
top-level content summarises the whole package.
| Property attribute | Meaning and rules |
|---|---|
ovf:key | Required; unique in the section; shall not contain "." or ":". In the OVF environment the key is class.key.instance, with the class and instance parts only when not empty. |
ovf:type | Required: uint8, sint8, uint16, sint16, uint32, sint32, uint64, sint64, string, boolean, real32 or real64. |
ovf:qualifiers | Comma-separated CIM qualifiers: MinLen(n), MaxLen(n) for strings; ValueMap{…} for strings and integers. |
ovf:value | The default value; ${name} refers to a property of the parent collection. |
ovf:userConfigurable | Whether the value is configurable at installation (default false). |
ovf:password | The value may be sensitive and should be obscured when prompting (default false); it is still stored in clear text. |
ovf:configuration | The deployment configuration in which the property is user-configurable. |
A Property may hold Label, Description and Value elements (ovf:value required,
ovf:configuration: an alternative default for a configuration; one per configuration).
The other sections
| Section | Content and rules |
|---|---|
| OperatingSystemSection | ovf:id (unsignedShort, required): the CIM_OperatingSystem OsType value; ovf:version; a Description. |
| EulaSection | A License (localisable; may be in an external UTF-8 text file through ovf:fileRef on its Msg). |
| StartupSection | One Item for each child: ovf:id (the child's id), ovf:order (required; 0 unspecified; ascending order on start, descending on stop), ovf:startDelay (seconds, default 0), ovf:waitingForGuest (default false), ovf:startAction (powerOn default, none), ovf:stopDelay, ovf:stopAction (powerOff default, guestShutdown, none), and in the specification ovf:shutdownorder. Not allowed in a VirtualSystem. |
| DeploymentOptionSection | Only one, a direct child of the root. Configuration elements (ovf:id unique, ovf:default at most one true; else the first is default) with a Label and Description. Items, properties and instance counts name configurations by ovf:configuration (a space-separated list of ids that exist). |
| InstallSection | ovf:initialBootStopDelay (seconds; required in the schema; 0 means unspecified): how long to wait for the system to power off after its install boot. |
| EnvironmentFilesSection | File elements with ovf:fileRef and ovf:path (required both: where on the transport media the file is placed); optional ovf:transport. |
| BootDeviceSection | Boot configurations by CIM_BootConfigSetting; a device is named by the InstanceID of its Item, a device type by a StructuredBootString. |
| ScaleOutSection | ovf:id of the prototype to replicate; InstanceCount (ovf:minimum default 1, ovf:default required, ovf:maximum default unbounded, ovf:configuration). Replicas are named prototype-id-N from 1. |
| PlacementGroupSection / PlacementSection | Group: ovf:id (unique), ovf:policy (affinity or availability with scopes: -geographic, -site, -rack, -chassis, -host); membership: ovf:group, a comma-separated list of group ids. |
| ResourceAllocationSection | Item, EthernetPortItem, StorageItem for the collection's children that have no hardware section, with ovf:configuration and ovf:bound. |
| EncryptionSection | XML Encryption markup and a reference list to the encrypted parts (descriptor markup or the files of References); a descriptor with encrypted parts may not validate until decrypted. |