Source: DMTF DSP0243 2.1.1 clauses 5 to 7 and Annex D, and the DSP8023 2.0.1 schema (both read in full). The descriptor "shall validate against DSP8023".
Namespaces
| Prefix | Namespace |
|---|---|
ovf | http://schemas.dmtf.org/ovf/envelope/2 (the OVF 1.x namespace ends /1) |
ovfenv | http://schemas.dmtf.org/ovf/environment/1 |
rasd | http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData |
vssd | …/CIM_VirtualSystemSettingData |
epasd | …/CIM_EthernetPortAllocationSettingData |
sasd | …/CIM_StorageAllocationSettingData |
cim | http://schemas.dmtf.org/wbem/wscim/1/common |
The choice of prefix is arbitrary. The schema's other namespaces are the CIM boot settings
(CIM_BootConfigSetting, CIM_BootSourceSetting) and XML Signature and Encryption.
The Envelope element
The outermost level consists of, in order (XSD sequence): References (required), any number of
sections (package-level meta-data), one Content (a VirtualSystem or
VirtualSystemCollection, required), and any number of Strings message bundles. The attribute
xml:lang is optional and gives the default locale of the descriptor's messages (default
en-US). The version is given by the namespace.
References and File
The References element lists the files of the package so that a tool can check a package without
interpreting the descriptor. External string resource bundles shall be first. Each File:
| Attribute | Required | Meaning and rules |
|---|---|---|
ovf:id | yes | The reference key used elsewhere (ovf:fileRef); unique in the package. |
ovf:href | yes | A URL: a relative path (relative to the descriptor, RFC 3986 syntax, no .. segments) or file, http, https URL; other schemes should not be used. The referenced file shall exist. Two Files shall not refer to the same file. |
ovf:size | no | The size in bytes (xs:unsignedLong); should match the real size; for a compressed file, the compressed size. |
ovf:compression | no | gzip (RFC 1952), or identity or absent for none. (The XSD's documentation also names bzip2.) Over HTTP the server may state it with Content-Encoding instead. |
ovf:chunkSize | no | The size of each chunk but the last, when the file is split. The File then names a chunk file: the real names are href + "." + a 9-digit number from 000000000. |
When a file is compressed and chunked, the whole file is compressed first and the chunks are equal slices of the compressed data. Manifest entries use the chunk names. The manifest and certificate shall not be listed.
Content: VirtualSystem and VirtualSystemCollection
There shall be one or more Content elements. Each has an ovf:id (required; unique among the direct
children of a collection), an Info (required: a human-readable description), an optional
Name (localisable), and sections. A VirtualSystem describes one virtual system and shall have
a VirtualHardwareSection. A
VirtualSystemCollection holds zero or more VirtualSystem or VirtualSystemCollection elements, and the
sections that apply to the whole collection (it shall not have a VirtualHardwareSection).
Extensibility and conformance
- New sections may be defined (members of the Section substitution group); each shall contain an
Info. - The schemas are open: types may be extended at the end with elements of another namespace, and attributes of another namespace may be added. Custom extensions shall not use the namespaces of the specification.
ovf:requiredon an extension element says whether it is mandatory (default true). A deployment function that meets a mandatory element it does not understand shall fail; information in custom attributes shall not be required for correct behaviour.- Conformance level 1: only elements and attributes of the specification. Level 2: custom ones, all optional. Level 3: at least one required custom extension, whose definition shall be public as an open XML Schema; avoid it for portable packages. The level is not stated in the file.
Message bundles (Strings)
Elements that can be localised carry an optional ovf:msgid; a Strings element
(xml:lang, optional ovf:fileRef) holds Msg elements (ovf:msgid
required, optional ovf:fileRef to a UTF-8 plain-text file that holds the message). Internal bundles are
at the end of the Envelope; an external bundle file is listed first in References, holds exactly one Strings
element, and that element has no ovf:fileRef. Later values of a msgid in a locale overwrite earlier ones.