...

Open Virtualization Format Specification

by user

on
Category: Documents
72

views

Report

Comments

Transcript

Open Virtualization Format Specification
1
2
3
Document Number: DSP0243
4
Date: 2009-02-22
5
Version: 1.0.0
6
Open Virtualization Format Specification
7
Document Type: Specification
8
Document Status: DMTF Standard
9
Document Language: E
Open Virtualization Format Specification
DSP0243
10
Copyright notice
11
Copyright © 2009 Distributed Management Task Force, Inc. (DMTF). All rights reserved.
12
13
14
15
DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems
management and interoperability. Members and non-members may reproduce DMTF specifications and
documents, provided that correct attribution is given. As DMTF specifications may be revised from time to
time, the particular version and release date should always be noted.
16
17
18
19
20
21
22
23
24
25
26
27
28
Implementation of certain elements of this standard or proposed standard may be subject to third party
patent rights, including provisional patent rights (herein "patent rights"). DMTF makes no representations
to users of the standard as to the existence of such rights, and is not responsible to recognize, disclose,
or identify any or all such third party patent right, owners or claimants, nor for any incomplete or
inaccurate identification or disclosure of such rights, owners or claimants. DMTF shall have no liability to
any party, in any manner or circumstance, under any legal theory whatsoever, for failure to recognize,
disclose, or identify any such third party patent rights, or for such party’s reliance on the standard or
incorporation thereof in its product, protocols or testing procedures. DMTF shall have no liability to any
party implementing such standard, whether such implementation is foreseeable or not, nor to any patent
owner or claimant, and shall have no liability or responsibility for costs or losses incurred if a standard is
withdrawn or modified after publication, and shall be indemnified and held harmless by any party
implementing the standard from any and all claims of infringement by a patent owner for such
implementations.
2
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
29
CONTENTS
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Foreword ....................................................................................................................................................... 5
Introduction ................................................................................................................................................... 6
1
Scope .................................................................................................................................................... 7
2
Normative References........................................................................................................................... 7
2.1 Approved References ................................................................................................................. 7
2.2 Other References........................................................................................................................ 8
3
Terms and Definitions ........................................................................................................................... 8
4
Symbols and Abbreviated Terms ........................................................................................................ 10
5
OVF Packages .................................................................................................................................... 10
5.1 OVF Package Structure ............................................................................................................ 10
5.2 Virtual Disk Formats.................................................................................................................. 12
5.3 Distribution as a Single File ...................................................................................................... 12
5.4 Distribution as a Set of Files ..................................................................................................... 13
6
OVF Descriptor.................................................................................................................................... 13
7
Envelope Element ............................................................................................................................... 14
7.1 File References......................................................................................................................... 15
7.2 Content Element ....................................................................................................................... 16
7.3 Extensibility ............................................................................................................................... 17
7.4 Conformance ............................................................................................................................ 18
8
Virtual Hardware Description............................................................................................................... 18
8.1 VirtualHardwareSection ............................................................................................................ 18
8.2 Extensibility ............................................................................................................................... 20
8.3 Virtual Hardware Elements ....................................................................................................... 20
8.4 Ranges on Elements................................................................................................................. 22
9
Core Metadata Sections...................................................................................................................... 24
9.1 DiskSection ............................................................................................................................... 25
9.2 NetworkSection......................................................................................................................... 26
9.3 ResourceAllocationSection....................................................................................................... 26
9.4 AnnotationSection..................................................................................................................... 27
9.5 ProductSection.......................................................................................................................... 27
9.6 EulaSection............................................................................................................................... 30
9.7 StartupSection .......................................................................................................................... 31
9.8 DeploymentOptionSection ........................................................................................................ 32
9.9 OperatingSystemSection .......................................................................................................... 34
9.10 InstallSection............................................................................................................................. 34
10 Internationalization .............................................................................................................................. 34
11 OVF Environment................................................................................................................................ 36
11.1 Environment Document ............................................................................................................ 36
11.2 Transport................................................................................................................................... 37
ANNEX A (informative) Symbols and Conventions ................................................................................... 39
ANNEX B (informative) Change Log.......................................................................................................... 40
ANNEX C (normative) OVF XSD ............................................................................................................... 41
Version 1.0.0
DMTF Standard
3
Open Virtualization Format Specification
DSP0243
73
Tables
74
75
76
77
78
79
80
81
82
Table 1 – XML Namespace Prefixes .......................................................................................................... 14
Table 2 – Actions for Child Elements with ovf:required Attribute......................................................... 20
Table 3 – HostResource Element ............................................................................................................... 21
Table 4 – Elements for Virtual Devices and Controllers ............................................................................. 22
Table 5 – Core Metadata Sections ............................................................................................................. 24
Table 6 – Property Types............................................................................................................................ 29
Table 7 – Property Qualifiers ...................................................................................................................... 30
Table 8 – Core Sections.............................................................................................................................. 37
4
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
Foreword
83
84
85
The Open Virtualization Format Specification (DSP0243) was prepared by the DMTF System
Virtualization, Partitioning, and Clustering Working Group.
86
87
This specification has been developed as a result of joint work with many individuals and teams,
including:
88
Simon Crosby, XenSource
89
Ron Doyle, IBM
90
Mike Gering, IBM
91
Michael Gionfriddo, Sun Microsystems
92
Steffen Grarup, VMware (Co-Editor)
93
Steve Hand, Symantec
94
Mark Hapner, Sun Microsystems
95
Daniel Hiltgen, VMware
96
Michael Johanssen, IBM
97
Lawrence J. Lamers, VMware (Chair)
98
John Leung, Intel Corporation
99
Fumio Machida, NEC Corporation
100
Andreas Maier, IBM
101
Ewan Mellor, XenSource
102
John Parchem, Microsoft
103
Shishir Pardikar, XenSource
104
Stephen J. Schmidt, IBM
105
René W. Schmidt, VMware (Co-Editor)
106
Andrew Warfield, XenSource
107
Mark D. Weitzel, IBM
108
John Wilson, Dell
Version 1.0.0
DMTF Standard
5
Open Virtualization Format Specification
Introduction
109
110
111
112
The Open Virtualization Format (OVF) Specification describes an open, secure, portable, efficient and
extensible format for the packaging and distribution of software to be run in virtual machines. The key
properties of the format are as follows:
•
113
Optimized for distribution
OVF supports content verification and integrity checking based on industry-standard public key
infrastructure, and it provides a basic scheme for management of software licensing.
114
115
•
116
Optimized for a simple, automated user experience
OVF supports validation of the entire package and each virtual machine or metadata
component of the OVF during the installation phases of the virtual machine (VM) lifecycle
management process. It also packages with the package relevant user-readable descriptive
information that a virtualization platform can use to streamline the installation experience.
117
118
119
120
•
121
Supports both single VM and multiple-VM configurations
OVF supports both standard single VM packages and packages containing complex, multi-tier
services consisting of multiple interdependent VMs.
122
123
•
124
Portable VM packaging
OVF is virtualization platform neutral, while also enabling platform-specific enhancements to be
captured. It supports the full range of virtual hard disk formats used for hypervisors today, and it
is extensible, which allow it to accommodate formats that may arise in the future. Virtual
machine properties are captured concisely and accurately.
125
126
127
128
•
129
Vendor and platform independent
OVF does not rely on the use of a specific host platform, virtualization platform, or guest
operating system.
130
131
•
132
Extensible
OVF is immediately useful — and extensible. It is designed to be extended as the industry
moves forward with virtual appliance technology. It also supports and permits the encoding of
vendor-specific metadata to support specific vertical markets.
133
134
135
•
136
Localizable
OVF supports user-visible descriptions in multiple locales, and it supports localization of the
interactive processes during installation of an appliance. This capability allows a single
packaged appliance to serve multiple market opportunities.
137
138
139
•
140
Open standard
OVF has arisen from the collaboration of key vendors in the industry, and it is developed in an
accepted industry forum as a future standard for portable virtual machines.
141
142
143
144
DSP0243
It is not an explicit goal for OVF to be an efficient execution format. A hypervisor is allowed but not
required to run software in virtual machines directly out of the Open Virtualization Format.
145
6
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
Open Virtualization Format Specification
146
147
1 Scope
148
149
The Open Virtualization Format (OVF) Specification describes an open, secure, portable, efficient and
extensible format for the packaging and distribution of software to be run in virtual machines.
150
2 Normative References
151
152
153
The following referenced documents are indispensable for the application of this document. For dated
references, only the edition cited applies. For undated references, the latest edition of the referenced
document (including any amendments) applies.
154
2.1
155
156
157
ANSI/IEEE Standard 1003.1-2001, IEEE Standard for Information Technology- Portable Operating
System Interface (POSIX), Institute of Electrical and Electronics Engineers, August 2001,
http://ieeexplore.ieee.org/xpl/tocresult.jsp?isNumber=1316
158
159
DMTF DSP0004, Common Information Model (CIM) Infrastructure Specification,
http://www.dmtf.org/standards/published_documents/DSP0004V2.3_final.pdf
160
161
DMTF DSP1043, Allocation Capabilities Profile (ACP),
http://www.dmtf.org/standards/published_documents/DSP1043.pdf
162
163
DMTF CIM Schema Version 2.19 (MOF files),
http://www.dmtf.org/standards/cim/cim_schema_v219
164
165
DMTF DSP1041, Resource Allocation Profile (RAP),
http://www.dmtf.org/standards/published_documents/DSP1041.pdf
166
167
DMTF DSP1042, System Virtualization Profile (SVP),
http://www.dmtf.org/standards/published_documents/DSP1042.pdf
168
169
DMTF DSP1057, Virtual System Profile (VSP),
http://www.dmtf.org/standards/published_documents/DSP1057.pdf
170
171
DMTF DSP0230, WS-CIM Mapping Specification,
http://www.dmtf.org/standards/published_documents/DSP0230.pdf
172
173
IETF RFC 1738, T. Berners-Lee, Uniform Resource Locators (URL), December 1994,
http://www.ietf.org/rfc/rfc1738.txt
174
175
IETF RFC1952, P. Deutsch, GZIP file format specification version 4.3, May 1996,
http://www.ietf.org/rfc/rfc1952.txt
176
177
IETF RFC 2234, Augmented BNF (ABNF),
http://www.ietf.org/rfc/rfc2234.txt
178
179
IETF RFC 2616, R. Fielding et al, Hypertext Transfer Protocol – HTTP/1.1, June 1999,
http://www.ietf.org/rfc/rfc2616.txt
180
181
IETF RFC 2818, E. Rescorla, HTTP over TLS, May 2000,
http://www.ietf.org/rfc/rfc2818.txt
Approved References
Version 1.0.0
DMTF Standard
7
Open Virtualization Format Specification
DSP0243
182
183
IETF RFC 3986, Uniform Resource Identifiers (URI): Generic Syntax,
http://www.ietf.org/rfc/rfc3986.txt
184
185
ISO 9660, 1988 Information processing-Volume and file structure of CD-ROM for information interchange,
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=17505
186
2.2
187
188
ISO, ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards,
http://isotc.iso.org/livelink/livelink.exe?func=ll&objId=4230456&objAction=browse&sort=subtype
189
190
W3C, Y. Savourel et al, Best Practices for XML Internationalization, Working Draft, October 2007,
http://www.w3.org/TR/2007/WD-xml-i18n-bp-20071031
191
3 Terms and Definitions
192
For the purposes of this document, the following terms and definitions apply.
193
194
195
3.1
can
used for statements of possibility and capability, whether material, physical, or causal
196
197
198
3.2
cannot
used for statements of possibility and capability, whether material, physical, or causal
199
200
201
202
3.3
conditional
indicates requirements to be followed strictly to conform to the document when the specified conditions
are met
203
204
205
206
3.4
mandatory
indicates requirements to be followed strictly to conform to the document and from which no deviation is
permitted
207
208
209
3.5
may
indicates a course of action permissible within the limits of the document
210
211
212
3.6
need not
indicates a course of action permissible within the limits of the document
213
214
215
3.7
optional
indicates a course of action permissible within the limits of the document
216
217
218
219
3.8
shall
indicates requirements to be followed strictly to conform to the document and from which no deviation is
permitted
8
Other References
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
220
221
222
223
3.9
shall not
indicates requirements to be followed strictly to conform to the document and from which no deviation is
permitted
224
225
226
227
3.10
should
indicates that among several possibilities, one is recommended as particularly suitable, without
mentioning or excluding others, or that a certain course of action is preferred but not necessarily required
228
229
230
3.11
should not
indicates that a certain possibility or course of action is deprecated but not prohibited
231
232
233
3.12
appliance
see virtual appliance
234
235
236
3.13
deployment platform
the product that installs an OVF package
237
238
239
240
3.14
guest software
the software, stored on the virtual disks, that runs when a virtual machine is powered on
The guest is typically an operating system and some user-level applications and services.
241
242
243
3.15
OVF package
OVF XML descriptor file accompanied by zero or more files
244
245
246
3.16
OVF descriptor
OVF XML descriptor file
247
248
249
3.17
platform
see deployment platform
250
251
252
253
3.18
virtual appliance
a service delivered as a complete software stack installed on one or more virtual machines
A virtual appliance is typically expected to be delivered in an OVF package.
254
255
256
257
3.19
virtual hardware
the hardware (including the CPU, controllers, Ethernet devices, and disks) that is seen by the guest
software
258
259
260
261
3.20
virtual machine
the complete environment that supports the execution of guest software
A virtual machine is a full encapsulation of the virtual hardware, virtual disks, and the metadata
Version 1.0.0
DMTF Standard
9
Open Virtualization Format Specification
DSP0243
262
263
associated with it. Virtual machines allow multiplexing of the underlying physical machine through a
software layer called a hypervisor.
264
265
266
267
268
269
3.21
virtual machine collection
a service comprised of a set of virtual machines
The service can be a simple set of one or more virtual machines, or it can be a complex service built out
of a combination of virtual machines and other virtual machine collections. Because virtual machine
collections can be composed, it enables complex nested components.
270
4 Symbols and Abbreviated Terms
271
The following symbols and abbreviations are used in this document.
272
273
274
4.1
CIM
Common Information Model
275
276
277
4.2
IP
Internet Protocol
278
279
280
4.3
OVF
Open Virtualization Format
281
282
283
4.4
VM
Virtual Machine
284
5 OVF Packages
285
5.1
286
An OVF package shall consist of the following files:
OVF Package Structure
287
•
one OVF descriptor with extension .ovf
288
•
zero or one OVF manifest with extension .mf
289
•
zero or one OVF certificate with extension .cert
290
•
zero or more disk image files
291
•
zero or more additional resource files, such as ISO images
292
The file extensions .ovf, .mf and .cert shall be used.
293
294
295
296
EXAMPLE 1: The following list of files is an example of an OVF package.
package.ovf
package.mf
de-DE-resources.xml
10
DMTF Standard
Version 1.0.0
DSP0243
297
298
299
Open Virtualization Format Specification
vmdisk1.vmdk
vmdisk2.vmdk
resource.iso
300
NOTE: The previous example uses VMDK disk files, but multiple disk formats are supported.
301
302
An OVF package can be stored as either a single unit or a set of files, see clause 5.3 and 5.4. Both
modes shall be supported.
303
304
305
306
Optionally, an OVF package may have a manifest file with extension .mf containing the SHA-1 digests of
individual files in the package. The manifest file shall have the same base name as the .ovf file. If the
manifest file is present, a consumer of the OVF package shall verify the digests by computing the actual
SHA-1 digests and comparing them with the digests listed in the manifest file.
307
The syntax definitions below use ABNF with the exceptions listed in ANNEX A.
308
The format of the .mf file is as follows:
309
310
311
312
313
314
315
316
manifest_file
file_digest
algorithm
digest
hex-digit
"b" | "c" | "d"
sp
nl
317
EXAMPLE 2:
318
319
320
321
322
323
=
=
=
=
=
|
=
=
*( file_digest )
algorithm "(" file_name ")" "=" sp digest nl
"SHA1"
40( hex-digit ) ; 160-bit digest in 40-digit hexadecimal
"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a" |
"e" | "f"
%x20
%x0A
The following example show the partial contents of a manifest file.
SHA1(package.ovf)= 237de026fb285b85528901da058475e56034da95
SHA1(vmdisk1.vmdk)= 393a66df214e192ffbfedb78528b5be75cc9e1c3
An OVF package may be signed by signing the manifest file. The digest of the manifest file is stored in a
.cert file along with the base64-encoded X.509 certificate. The .cert file shall have the same base name
as the OVF descriptor. A consumer of the OVF package shall verify the signature and should validate the
certificate. The format of the .cert file shall be:
324
325
326
327
328
329
330
331
332
333
334
335
336
337
manifest_digest certificate_part
algorithm "(" file_name ")" "=" sp signed_digest nl
"SHA1"
*( hex-digit)
certificate_header certificate_body certificate_footer
"-----BEGIN CERTIFICATE-----" nl
"-----END CERTIFICATE-----" nl
base64-encoded-certificate nl
; base64-encoded-certificate is a base64-encoded X.509
; certificate, which may be split across multiple lines
hex-digit
= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a"
| "b" | "c" | "d" | "e" | "f"
sp
= %x20
nl
= %x0A
338
EXAMPLE 3:
certificate_file
manifest_digest
algorithm
signed_digest
certificate_part
certificate_header
certificate_footer
certificate_body
Version 1.0.0
=
=
=
=
=
=
=
=
The following list of files is an example of a signed OVF package.
DMTF Standard
11
Open Virtualization Format Specification
339
340
341
342
343
344
345
DSP0243
package.ovf
package.mf
package.cert
de-DE-resources.xml
vmdisk1.vmdk
vmdisk2.vmdk
resource.iso
346
EXAMPLE 4:
347
348
349
350
351
352
353
354
355
356
357
358
359
SHA1(package.mf)= 7f4b8efb8fe20c06df1db68281a63f1b088e19dbf00e5af9db5e8e3e319de
7019db88a3bc699bab6ccd9e09171e21e88ee20b5255cec3fc28350613b2c529089
-----BEGIN CERTIFICATE----MIIBgjCCASwCAQQwDQYJKoZIhvcNAQEEBQAwODELMAkGA1UEBhMCQVUxDDAKBgNV
BAgTA1FMRDEbMBkGA1UEAxMSU1NMZWF5L3JzYSB0ZXN0IENBMB4XDTk1MTAwOTIz
MzIwNVoXDTk4MDcwNTIzMzIwNVowYDELMAkGA1UEBhMCQVUxDDAKBgNVBAgTA1FM
RDEZMBcGA1UEChMQTWluY29tIFB0eS4gTHRkLjELMAkGA1UECxMCQ1MxGzAZBgNV
BAMTElNTTGVheSBkZW1vIHNlcnZlcjBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQC3
LCXcScWua0PFLkHBLm2VejqpA1F4RQ8q0VjRiPafjx/Z/aWH3ipdMVvuJGa/wFXb
/nDFLDlfWp+oCPwhBtVPAgMBAAEwDQYJKoZIhvcNAQEEBQADQQArNFsihWIjBzb0
DCsU0BvL2bvSwJrPEqFlkDq3F4M6EGutL9axEcANWgbbEdAvNJD1dmEmoWny27Pn
IMs6ZOZB
-----END CERTIFICATE-----
360
5.2
361
362
363
364
365
366
367
OVF does not require any specific disk format to be used, but to comply with this specification the disk
format shall be given by a URI which identifies an unencumbered specification on how to interpret the
disk format. The specification need not be machine readable, but it shall be static and unique so that the
URI may be used as a key by software reading an OVF package to uniquely determine the format of the
disk. The specification shall provide sufficient information so that a skilled person can properly interpret
the disk format for both reading and writing of disk data. It is recommended that these URIs are
resolvable.
368
5.3
369
370
An OVF package may be stored as a single file using the TAR format. The extension of that file shall be
.ova (open virtual appliance or application).
371
EXAMPLE: The following example shows a sample filename for an OVF package of this type:
372
The following example shows the contents of a sample OVF certification file:
Virtual Disk Formats
Distribution as a Single File
D:\virtualappliances\myapp.ova
373
374
375
For OVF packages stored as single file, all file references in the OVF descriptor shall be relative-path
references and shall point to files included in the TAR archive. Relative directories inside the archive are
allowed, but relative-path references shall not contain ".." dot-segments.
376
377
378
379
Ordinarily, a TAR extraction tool would have to scan the whole archive, even if the file requested is found
at the beginning, because replacement files can be appended without modifying the rest of the archive.
For OVF TAR files, duplication is not allowed within the archive. In addition, the files shall be in the
following order inside the archive:
380
1)
.ovf descriptor
381
2)
.mf manifest (optional)
382
3)
.cert certificate (optional)
12
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
383
384
385
4)
The remaining files shall be in the same order as listed in the References section (see 7.1).
Note that any external string resource bundle files for internationalization shall be first in the
References section (see clause 10).
386
5)
.mf manifest (optional)
387
6)
.cert certificate (optional)
388
389
390
Note that the certificate file is optional. If no certificate file is present, the manifest file is also optional. If
the manifest or certificate files are present, they shall either both be placed after the OVF descriptor, or
both be placed at the end of the archive.
391
392
393
394
For deployment, the ordering restriction ensures that it is possible to extract the OVF descriptor from an
OVF TAR file without scanning the entire archive. For generation, the ordering restriction ensures that an
OVF TAR file can easily be generated on-the-fly. The restrictions do not prevent OVF TAR files from
being created using standard TAR packaging tools.
395
396
The TAR format used shall comply with the USTAR (Uniform Standard Tape Archive) format as defined
by the POSIX IEEE 1003.1 standards group.
397
5.4
398
An OVF package can be made available as a set of files, for example on a standard Web server.
399
EXAMPLE: An example of an OVF package as a set of files on Web server follows:
400
401
402
403
404
http://mywebsite/virtualappliances/package.ovf
http://mywebsite/virtualappliances/vmdisk1.vmdk
http://mywebsite/virtualappliances/vmdisk2.vmdk
http://mywebsite/virtualappliances/resource.iso
http://mywebsite/virtualappliances/de-DE-resources.xml
Distribution as a Set of Files
405
6 OVF Descriptor
406
407
408
All metadata about the package and its contents is stored in the OVF descriptor. This is an extensible
XML document for encoding information, such as product details, virtual hardware requirements, and
licensing.
409
410
The ovf-envelope.xsd XML schema definition file for the OVF descriptor contains the elements and
attributes.
411
412
413
Clauses 7, 8, and 9, describe the semantics, structure, and extensibility framework of the OVF descriptor.
These clauses are not a replacement for reading the schema definitions, but they complement the
schema definitions.
414
415
The XML document of an OVF descriptor shall contain one Envelope element, which is the only element
allowed at the top level.
416
417
The XML namespaces used in this specification are listed in Table 1. The choice of any namespace prefix
is arbitrary and not semantically significant.
Version 1.0.0
DMTF Standard
13
Open Virtualization Format Specification
418
DSP0243
Table 1 – XML Namespace Prefixes
Prefix
XML Namespace
ovf
http://schemas.dmtf.org/ovf/envelope/1
ovfenv
http://schemas.dmtf.org/ovf/environment/1
rasd
http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_ResourceAllocationSettingData
vssd
http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_VirtualSystemSettingData
419
7 Envelope Element
420
421
The Envelope element describes all metadata for the virtual machines (including virtual hardware), as
well as the structure of the OVF package itself.
422
The outermost level of the envelope consists of the following parts:
423
•
A version indication, defined by the XML namespace URIs.
424
425
426
•
A list of file references to all external files that are part of the OVF package, defined by the
References element and its File child elements. These are typically virtual disk files, ISO
images, and internationalization resources.
427
•
A metadata part, defined by section elements, as defined in clause 9.
428
429
•
A description of the content, either a single virtual machine (VirtualSystem element) or a
collection of multiple virtual machines (VirtualSystemCollection element).
430
431
•
A specification of message resource bundles for zero or more locales, defined by a Strings
element for each locale.
432
EXAMPLE: An example of the structure of an OVF descriptor with the top level Envelope element follows:
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_VirtualSystemSettingData"
xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cimschema/2/CIM_ResourceAllocationSettingData"
xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
xmlns="http://schemas.dmtf.org/ovf/envelope/1"
xml:lang="en-US">
<References>
<File ovf:id="de-DE-resources.xml" ovf:size="15240"
ovf:href="http://mywebsite/virtualappliances/de-DE-resources.xml"/>
<File ovf:id="file1" ovf:href="vmdisk1.vmdk" ovf:size="180114671"/>
<File ovf:id="file2" ovf:href="vmdisk2.vmdk" ovf:size="4882023564"
ovf:chunkSize="2147483648"/>
<File ovf:id="file3" ovf:href="resource.iso" ovf:size="212148764"
ovf:compression="gzip"/>
<File ovf:id="icon" ovf:href="icon.png" ovf:size="1360"/>
</References>
<!-- Describes meta-information about all virtual disks in the package -->
<DiskSection>
<Info>Describes the set of virtual disks</Info>
<!-- Additional section content -->
14
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
</DiskSection>
<!-- Describes all networks used in the package -->
<NetworkSection>
<Info>List of logical networks used in the package</Info>
<!-- Additional section content -->
</NetworkSection>
<SomeSection ovf:required="false">
<Info>A plain-text description of the content</Info>
<!-- Additional section content -->
</SomeSection>
<!-- Additional sections can follow -->
<VirtualSystemCollection ovf:id="Some Product">
<!-- Additional sections including VirtualSystem or VirtualSystemCollection-->
</VirtualSystemCollection >
<Strings xml:lang="de-DE">
<!-- Specification of message resource bundles for de-DE locale -->
</Strings>
</Envelope>
474
475
476
The optional xml:lang attribute on the Envelope element shall specify the default locale for messages
in the descriptor. The optional Strings elements shall contain message resource bundles for different
locales. See clause 10 for more details on internationalization support.
477
7.1
478
479
480
The file reference part defined by the References element allows a tool to easily determine the integrity
of an OVF package without having to parse or interpret the entire structure of the descriptor. Tools can
safely manipulate (for example, copy or archive) OVF packages with no risk of losing files.
481
482
External string resource bundle files for internationalization shall be placed first in the References
element, see clause 10 for details.
483
484
485
486
487
488
489
490
Each File element in the reference part shall be given an identifier using the ovf:id attribute. The
identifier shall be unique inside an OVF package. Each File element shall be specified using the
ovf:href attribute, which shall contain a URL. Relative-path references and the URL schemes "file",
"http", and "https" shall be supported. Other URL schemes should not be used. If no URL scheme is
specified, the value of the ovf:href attribute shall be interpreted as a path name of the referenced file
that is relative to the location of the OVF descriptor itself. The relative path name shall use the syntax of
relative-path references in IEFT RFC3986. The referenced file shall exist. Two different File elements
shall not reference the same file with their ovf:href attributes.
491
492
The size of the referenced file may be specified using the ovf:size attribute. The unit of this attribute is
always bytes.
493
494
495
496
497
498
499
Each file referenced by a File element may be compressed using gzip (see RFC1952). When a File
element is compressed using gzip, the ovf:compression attribute shall be set to “gzip”. Otherwise,
the ovf:compression attribute shall be set to “identity” or the entire attribute omitted. Alternatively,
if the href is an HTTP or HTTPS URL, then the compression may be specified by the HTTP server by
using the HTTP header Content-Encoding: gzip (see RFC2616). Using HTTP content encoding in
combination with the ovf:compression attribute is allowed, but in general does not improve the
compression ratio.
500
501
502
Files referenced from the reference part may be split into chunks to accommodate file size restrictions on
certain file systems. Chunking shall be indicated by the presence of the ovf:chunkSize attribute; the
value of ovf:chunkSize shall be the size of each chunk, except the last chunk, which may be smaller.
File References
Version 1.0.0
DMTF Standard
15
Open Virtualization Format Specification
DSP0243
503
504
505
506
507
508
509
When ovf:chunkSize is specified, the File element shall reference a chunk file representing a chunk
of the entire file. In this case, the value of the ovf:href attribute specifies only a part of the URL and the
syntax for the URL resolving to the chunk file is given below. The syntax use ABNF with the exceptions
listed in ANNEX A.
510
511
where href-value is the value of the ovf:href attribute, and chunk-number is the 0-based position of the
chunk starting with the value 0 and increases with increments of 1 for each chunk.
512
513
514
Chunking can be combined with compression, the entire file is then compressed before chunking and
each chunk shall be an equal slice of the compressed file, except for the last chunk which may be
smaller.
515
7.2
516
517
518
Virtual machine configurations in an OVF package are represented by a VirtualSystem or
VirtualSystemCollection element. These elements shall be given an identifier using the ovf:id
attribute. Direct child elements of a VirtualSystemCollection shall have unique identifiers.
519
520
521
In the OVF schema, the VirtualSystem and VirtualSystemCollection elements are part of a
substitution group with the Content element as head of the substitution group. The Content element is
abstract and cannot be used directly. The OVF descriptor shall have one or more Content elements.
522
523
524
The VirtualSystem element describes a single virtual machine and is simply a container of section
elements. These section elements describe virtual hardware, resources, and product information and are
described in detail in clauses 8 and 9.
525
The structure of a VirtualSystem element is as follows:
chunk-url
= href-value "." chunk-number
chunk-number = 9(decimal-digit)
decimal-digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
526
527
528
529
530
531
532
533
Content Element
<VirtualSystem ovf:id="simple-app">
<Info>A virtual machine</Info>
<Name>Simple Appliance</Name>
<SomeSection>
<!-- Additional section content -->
</SomeSection>
<!-- Additional sections can follow -->
</VirtualSystem>
534
535
536
537
The VirtualSystemCollection element is a container of multiple VirtualSystem or
VirtualSystemCollection elements. Thus, arbitrary complex configurations can be described. The
section elements at the VirtualSystemCollection level describe appliance information, properties,
resource requirements, and so on, and are described in detail in clause 9.
538
The structure of a VirtualSystemCollection element is as follows:
539
540
541
542
543
544
545
546
<VirtualSystemCollection ovf:id="multi-tier-app">
<Info>A collection of virtual machines</Info>
<Name>Multi-tiered Appliance</Name>
<SomeSection>
<!-- Additional section content -->
</SomeSection>
<!-- Additional sections can follow -->
<VirtualSystem ovf:id="...">
16
DMTF Standard
Version 1.0.0
DSP0243
547
548
549
550
Open Virtualization Format Specification
<!-- Additional sections -->
</VirtualSystem>
<!-- Additional VirtualSystem or VirtualSystemCollection elements can follow-->
</VirtualSystemCollection>
551
552
553
554
All elements in the Content substitution group shall contain an Info element and may contain a Name
element. The Info element contains a human readable description of the meaning of this entity. The
Name element is an optional localizable display name of the content. See clause 10 for details on how to
localize the Info and Name element.
555
7.3
556
This specification allows custom meta-data to be added to OVF descriptors in several ways:
Extensibility
557
558
559
560
561
562
•
New section elements may be defined as part of the Section substitution group, and used
where the OVF schemas allow sections to be present. All subtypes of Section contain an Info
element that contains a human readable description of the meaning of this entity. The values of
Info elements can be used, for example, to give meaningful warnings to users when a section is
being skipped, even if the parser does not know anything about the section. See clause 10 for
details on how to localize the Info element.
563
564
565
•
The OVF schemas use an open content model, where all existing types may be extended at the
end with additional elements. Extension points are declared in the OVF schemas with xs:any
declarations with namespace="##other".
566
•
The OVF schemas allow additional attributes on existing types.
567
568
Custom extensions shall not use XML namespaces defined in this specification. This applies to both
custom elements and custom attributes.
569
570
571
572
On custom elements, a Boolean ovf:required attribute specifies whether the information in the
element is required for correct behavior or optional. If not specified, the ovf:required attribute defaults
to TRUE. A consumer of an OVF package that detects an extension that is required and that it does not
understand shall fail.
573
574
575
576
For known Section elements, if additional child elements that are not understood are found and the
value of their ovf:required attribute is TRUE, the consumer of the OVF package shall interpret the
entire section as one it does not understand. The check is not recursive; it applies only to the direct
children of the Section element.
577
578
This behavior ensures that older parsers reject newer OVF specifications, unless explicitly instructed not
to do so.
579
On custom attributes, the information in the attribute shall not be required for correct behavior.
580
581
582
583
584
585
586
587
EXAMPLE 1:
<!—- Optional custom section example -->
<otherns:IncidentTrackingSection ovf:required="false">
<Info>Specifies information useful for incident tracking purposes</Info>
<BuildSystem>Acme Corporation Official Build System</BuildSystem>
<BuildNumber>102876</BuildNumber>
<BuildDate>10-10-2008</BuildDate>
</otherns:IncidentTrackingSection>
Version 1.0.0
DMTF Standard
17
Open Virtualization Format Specification
DSP0243
588
589
590
591
592
593
594
595
596
EXAMPLE 2:
<!—- Open content example (extension of existing type) -->
<AnnotationSection>
<Info>Specifies an annotation for this virtual machine</Info>
<Annotation>This is an example of how a future element (Author) can still be
parsed by older clients</Annotation>
<!-- AnnotationSection extended with Author element -->
<otherns:Author ovf:required="false">John Smith</otherns:Author>
</AnnotationSection>
597
598
599
600
601
EXAMPLE 3:
<!—- Optional custom attribute example -->
<Network ovf:name="VM network" otherns:desiredCapacity="1 Gbit/s">
<Description>The main network for VMs</Description>
</Network>
602
7.4
603
604
This specification defines three conformance levels for OVF descriptors, with 1 being the highest level of
conformance:
Conformance
605
606
607
•
OVF descriptor uses only sections and elements and attributes that are defined in this
specification.
Conformance Level: 1.
608
609
610
•
OVF descriptor uses custom sections or elements or attributes that are not defined in this
specification, and all such extensions are optional as defined in clause 7.3.
Conformance Level: 2.
611
612
613
614
615
•
OVF descriptor uses custom sections or elements that are not defined in this specification and at
least one such extension is required as defined in clause 7.3. The definition of all required
extensions shall be publicly available in an open and unencumbered XML Schema. The complete
specification may be inclusive in the XML schema or available as a separate document.
Conformance Level: 3.
616
The use of conformance level 3 limits portability and should be avoided if at all possible.
617
618
The conformance level is not specified directly in the OVF descriptor but shall be determined by the
above rules.
619
8 Virtual Hardware Description
620
8.1
621
622
623
624
625
626
Each VirtualSystem element may contain one or more VirtualHardwareSection elements, each of which
describes the virtual hardware required by the virtual system.The virtual hardware required by a virtual
machine is specified in VirtualHardwareSection elements. This specification supports abstract or
incomplete hardware descriptions in which only the major devices are described. The hypervisor is
allowed to create additional virtual hardware controllers and devices, as long as the required devices
listed in the descriptor are realized.
627
628
629
This virtual hardware description is based on the CIM classes CIM_VirtualSystemSettingData and
CIM_ResourceAllocationSettingData. The XML representation of the CIM model is based on the
WS-CIM mapping (DSP0230).
18
VirtualHardwareSection
DMTF Standard
Version 1.0.0
DSP0243
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
Open Virtualization Format Specification
EXAMPLE: Example of VirtualHardwareSection:
<VirtualHardwareSection ovf:transport="iso">
<Info>500Mb, 1 CPU, 1 disk, 1 nic virtual machine</Info>
<System>
<vssd:VirtualSystemType>vmx-4</vssd:VirtualSystemType>
</System>
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>512 MB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>512</rasd:VirtualQuantity>
</Item>
<!-- Additional Item elements can follow -->
</VirtualHardwareSection>
646
647
648
A VirtualSystem element shall have a VirtualHardwareSection direct child element.
VirtualHardwareSection is disallowed as a direct child element of a VirtualSystemCollection
element and of an Envelope element.
649
650
651
Multiple VirtualHardwareSection element occurrences are allowed within a single VirtualSystem
element. The consumer of the OVF package should select the most appropriate virtual hardware
description for the particular virtualization platform.
652
653
654
655
656
The ovf:transport attribute specifies the types of transport mechanisms by which properties are
passed to the virtual machine in an OVF environment document. This attribute supports a pluggable and
extensible architecture for providing guest/platform communication mechanisms. Several transport types
may be specified separated by single space character. See subclause 9.5 for a description of properties
and clause 11 for a description of transport types and OVF environments.
657
658
659
660
661
662
663
664
665
The vssd:VirtualSystemType element specifies a virtual system type identifier, which is an
implementation defined string that uniquely identifies the type of the virtual system. For example, a virtual
system type identifier could be vmx-4 for VMware’s fourth-generation virtual hardware or xen-3 for Xen’s
third-generation virtual hardware. Zero or more virtual system type identifiers may be specified separated
by single space character. In order for the OVF virtual system to be deployable on a target platform, the
virtual machine on the target platform is should support at least one of the virtual system types identified
in the vssd:VirtualSystemType elements. The virtual system type identifiers specified in
vssd:VirtualSystemType elements are expected to be matched against the values of property
VirtualSystemTypesSupported of CIM class CIM_VirtualSystemManagementCapabilities (see DSP1042).
666
667
668
The virtual hardware characteristics are described as a sequence of Item elements. The Item element
is an XML representation of an instance of the CIM class CIM_ResourceAllocationSettingData.
The element can describe all memory and CPU requirements as well as virtual hardware devices.
669
Multiple device subtypes may be specified in an Item element, separated by single space character.
670
671
EXAMPLE:
<rasd:ResourceSubType>buslogic lsilogic</rasd:ResourceSubType>
Version 1.0.0
DMTF Standard
19
Open Virtualization Format Specification
DSP0243
672
8.2
Extensibility
673
674
675
The optional ovf:required attribute on the Item element specifies whether the realization of the
element (for example, a CD-rom or USB controller) is required for correct behavior of the guest software.
If not specified, ovf:required defaults to TRUE.
676
677
678
On child elements of the Item element, the optional Boolean attribute ovf:required shall be
interpreted, even though these elements are in a different RASD WS-CIM namespace. A tool parsing an
Item element should act according to Table 2.
679
Table 2 – Actions for Child Elements with ovf:required Attribute
Child Element
ovf:required Attribute Value
Action
Known
TRUE or not specified
Shall interpret Item
Known
FALSE
Shall interpret Item
Unknown
TRUE or not specified
Shall fail Item
Unknown
FALSE
Shall ignore Item
680
8.3
681
The general form of any Item element in a VirtualHardwareSection element is as follows:
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
Virtual Hardware Elements
<Item ovf:required="…" ovf:configuration="…" ovf:bound="…">
<rasd:Address> ... </rasd:Address>
<rasd:AddressOnParent> ... </rasd:AddressOnParent>
<rasd:AllocationUnits> ... </rasd:AllocationUnits>
<rasd:AutomaticAllocation> ... </rasd:AutomaticAllocation>
<rasd:AutomaticDeallocation> ... </rasd:AutomaticDeallocation>
<rasd:Caption> ... </rasd:Caption>
<rasd:Connection> ... </rasd:Connection>
<!-- multiple connection elements can be specified -->
<rasd:ConsumerVisibility> ... </rasd:ConsumerVisibility>
<rasd:Description> ... </rasd:Description>
<rasd:ElementName> ... </rasd:ElementName>
<rasd:HostResource> ... </rasd:HostResource>
<rasd:InstanceID> ... </rasd:InstanceID>
<rasd:Limit> ... </rasd:Limit>
<rasd:MappingBehavior> ... </rasd:MappingBehavior>
<rasd:OtherResourceType> ... </rasd:OtherResourceType>
<rasd:Parent> ... </rasd:Parent>
<rasd:PoolID> ... </rasd:PoolID>
<rasd:Reservation> ... </rasd:Reservation>
<rasd:ResourceSubType> ... </rasd:ResourceSubType>
<rasd:ResourceType> ... </rasd:ResourceType>
<rasd:VirtualQuantity> ... </rasd:VirtualQuantity>
<rasd:Weight> ... </rasd:Weight>
</Item>
20
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
707
708
709
The elements represent the properties exposed by the CIM_ResourceAllocationSettingData
class. They have the semantics of defined settings as defined in DSP1041, any profiles derived from
DSP1041 for specific resource types, and this document.
710
EXAMPLE: The following example shows a description of memory size:
711
712
713
714
715
716
717
718
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>256 MB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>256</rasd:VirtualQuantity>
</Item>
719
720
721
The Description element is used to provide additional metadata about the element itself. This element
enables a consumer of the OVF package to provide descriptive information about all items, including
items that were unknown at the time the application was written.
722
723
724
The Caption, Description and ElementName elements are localizable using the ovf:msgid
attribute from the OVF envelope namespace. See clause 10 for more details on internationalization
support.
725
726
727
The optional ovf:configuration attribute contains a list of configuration names. See clause 9.8 on
deployment options for semantics of this attribute. The optional ovf:bound attribute is used to specify
ranges, see subclause 8.4.
728
729
Devices such as disks, CD-ROMs, and networks need a backing from the deployment platform. The
requirements on a backing are either specified using the HostResource or the Connection element.
730
731
732
For an Ethernet adapter, a logical network name is specified in the Connection element. Ethernet
adapters that refer to the same logical network name within an OVF package shall be deployed on the
same network.
733
734
735
The HostResource element is used to refer to resources included in the OVF descriptor as well as
logical devices on the deployment platform. Values for HostResource elements referring to resources
included in the OVF descriptor are formatted as URIs as specified in Table 3.
736
Table 3 – HostResource Element
Content
Description
ovf:/file/<id>
A reference to a file in the OVF, as specified in the References section. <id> shall be the
value of the ovf:id attribute of the File element being referenced.
ovf:/disk/<id>
A reference to a virtual disk, as specified in the DiskSection. <id> shall be the value of
the ovf:diskId attribute of the Disk element being referenced.
737
738
739
If no backing is specified for a device that requires a backing, the deployment platform shall make an
appropriate choice, for example, by prompting the user. Specifying more than one backing for a device is
not allowed.
740
Table 4 gives a brief overview on how elements are used to describe virtual devices and controllers.
Version 1.0.0
DMTF Standard
21
Open Virtualization Format Specification
741
DSP0243
Table 4 – Elements for Virtual Devices and Controllers
Element
Usage
rasd:Description
A human-readable description of the meaning of the information. For example,
“Specifies the memory size of the virtual machine”.
rasd:ElementName
A human-readable description of the content. For example, “256MB memory”.
rasd:InstanceID
A unique instance ID of the element within the section.
rasd:HostResource
Abstractly specifies how a device shall connect to a resource on the
deployment platform. Not all devices need a backing. See Table 3.
rasd:ResourceType
Specifies the kind of device that is being described.
rasd:OtherResourceType
rasd:ResourceSubtype
rasd:AutomaticAllocation
For devices that are connectable, such as floppies, CD-ROMs, and Ethernet
adaptors, this element specifies whether the device should be connected at
power on.
rasd:Parent
The InstanceID of the parent controller (if any).
rasd:Connection
For an Ethernet adapter, this specifies the abstract network connection name
for the virtual machine. All Ethernet adapters that specify the same abstract
network connection name within an OVF package shall be deployed on the
same network. The abstract network connection name shall be listed in the
NetworkSection at the outermost envelope level.
rasd:Address
Device specific. For an Ethernet adapter, this specifies the MAC address.
rasd:AddressOnParent
For a device, this specifies its location on the controller.
rasd:AllocationUnits
Specifies the units of allocation used. For example, “byte * 2^20”.
rasd:VirtualQuantity
Specifies the quantity of resources presented. For example, “256”.
rasd:Reservation
Specifies the minimum quantity of resources guaranteed to be available.
rasd:Limit
Specifies the maximum quantity of resources that are granted.
rasd:Weight
Specifies a relative priority for this allocation in relation to other allocations.
742
743
Only fields directly related to describing devices are mentioned. Refer to the CIM MOF for a complete
description of all fields.
744
8.4
745
746
747
The optional ovf:bound attribute may be used to specify ranges for the Item elements. A range has a
minimum, normal, and maximum value, denoted by min, normal, and max, where min <= normal <=
max. The default values for min and max are those specified for normal.
748
749
A platform deploying an OVF package is recommended to start with the normal value and adjust the
value within the range for ongoing performance tuning and validation.
750
751
For the Item elements in VirtualHardwareSection and ResourceAllocationSection elements,
the following additional semantics is defined:
Ranges on Elements
•
752
753
754
755
22
Each Item element has an optional ovf:bound attribute. This value may be specified as min,
max, or normal. The value defaults to normal. If the attribute is not specified or is specified as
normal, then the item is interpreted as being part of the regular virtual hardware or resource
allocation description.
DMTF Standard
Version 1.0.0
DSP0243
756
757
758
759
•
Open Virtualization Format Specification
If the ovf:bound value is specified as either min or max, the item is used to specify the upper
or lower bound for one or more values for a given InstanceID. Such an item is called a range
marker.
The semantics of range markers are:
760
761
•
InstanceID and ResourceType shall be specified, and the ResourceType shall match
other Item elements with the same InstanceID.
762
763
•
Specifying more than one min range marker or more than one max range marker for a given
RASD (identified with InstanceID) is invalid.
764
765
766
•
An Item element with a range marker shall have a corresponding Item element without a
range marker, that is, an Item element with no ovf:bound attribute or ovf:bound attribute
with value normal. This corresponding item specifies the default value.
767
768
•
For an Item element where only a min range marker is specified, the max value is unbounded
upwards within the set of valid values for the property.
769
770
•
For an Item where only a max range marker is specified, the min value is unbounded
downwards within the set of valid values for the property.
771
•
The default value shall be inside the range.
772
•
The use of non-integer elements in range marker RASDs is invalid.
773
EXAMPLE:
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
The following example shows the use of range markers:
<VirtualHardwareSection>
<Info>...</Info>
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>512 MB memory size</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>512</rasd:VirtualQuantity>
</Item>
<Item ovf:bound="min">
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>384 MB minimum memory size</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>384</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
</Item>
<Item ovf:bound="max">
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>1024 MB maximum memory size</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>1024</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
</Item>
</VirtualHardwareSection>
Version 1.0.0
DMTF Standard
23
Open Virtualization Format Specification
DSP0243
798
9 Core Metadata Sections
799
Table 5 shows the core metadata sections that are defined.
800
Table 5 – Core Metadata Sections
Section
Locations
Multiplicity
DiskSection
Envelope
Zero or One
Envelope
Zero or One
VirtualSystemCollection
Zero or One
AnnotationSection
VirtualSystem
Zero or One
Specifies a free-form annotation on an entity
VirtualSystemCollection
ProductSection
VirtualSystem
Specifies product-information for a package, such as
product name and version, along with a set of
properties that can be configured
VirtualSystemCollection
EulaSection
VirtualSystem
Specifies a license agreement for the software in the
package
VirtualSystemCollection
StartupSection
VirtualSystemCollection
Zero or One
Envelope
Zero or One
VirtualSystem
Zero or One
VirtualSystem
Zero or One
Describes meta-information about all virtual disks in the
package
NetworkSection
Describes logical networks used in the package
ResourceAllocationSection
Specifies reservations, limits, and shares on a given
resource, such as memory or CPU for a virtual machine
collection
Zero or more
Zero or more
Specifies how a virtual machine collection is powered
on
DeploymentOptionSection
Specifies a discrete set of intended resource
requirements
OperatingSystemSection
Specifies the installed guest operating system of a
virtual machine
InstallSection
Specifies that the virtual machine needs to be initially
booted to install and configure the software
801
802
803
804
The following subclauses describe the semantics of the core sections and provide some
examples. The sections are used in several places of an OVF envelope, the description of each
section defines where it may be used. See the OVF schema for a detailed specification of all
attributes and elements.
805
806
In the OVF schema, all sections are part of a substitution group with the Section element as head of the
substitution group. The Section element is abstract and cannot be used directly.
807
24
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
808
9.1
DiskSection
809
810
811
A DiskSection describes meta-information about virtual disks in the OVF package. Virtual disks
and their metadata are described outside the virtual hardware to facilitate sharing between virtual
machines within an OVF package.
812
EXAMPLE: The following example shows a description of virtual disks:
813
814
815
816
817
818
819
820
821
822
823
824
825
<DiskSection>
<Info>Describes the set of virtual disks</Info>
<Disk ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:capacity="8589934592"
ovf:populatedSize="3549324972"
ovf:format=
"http://www.vmware.com/interfaces/specifications/vmdk.html#sparse">
</Disk>
<Disk ovf:diskId="vmdisk2" ovf:capacity="536870912"
</Disk>
<Disk ovf:diskId="vmdisk3" ovf:capacity="${disk.size}"
ovf:capacityAllocationUnits="byte * 2^30"
</Disk>
</DiskSection>
826
DiskSection is a valid section at the outermost envelope level only.
827
828
Each virtual disk is represented by a Disk element that shall be given a identifier using the ovf:diskId
attribute, the identifier shall be unique within the DiskSection.
829
830
831
832
The capacity of a virtual disk shall be specified by the ovf:capacity attribute with an xs:long integer
value. The default unit of allocation shall be bytes. The optional string attribute
ovf:capacityAllocationUnits may be used to specify a particular unit of allocation. Values for
ovf:capacityAllocationUnits shall match the format for programmatic units defined in DSP0004.
833
834
835
836
837
The ovf:fileRef attribute denotes the virtual disk content by identifying an existing File element in
the References element, the File element is identified by matching its ovf:id attribute value with the
ovf:fileRef attribute value. Omitting the ovf:fileRef attribute shall indicate an empty disk. In this
case, the disk shall be created and the entire disk content zeroed at installation time. The guest software
will typically format empty disks in some file system format.
838
839
The format URI (see clause 5.2) of a non-empty virtual disk shall be specified by the ovf:format
attribute.
840
841
842
Different Disk elements shall not contain ovf:fileRef attributes with identical values. Disk elements
shall be ordered such that they identify any File elements in the same order as these are defined in the
References element.
843
844
845
846
847
For empty disks, rather than specifying a fixed virtual disk capacity, the capacity for an empty disk may be
given using an OVF property, for example ovf:capacity="${disk.size}". The OVF property shall
resolve to an xs:long integer value. See 9.5 for a description of OVF properties. The
ovf:capacityAllocationUnits attribute is useful when using OVF properties because a user may
be prompted and can then enter disk sizing information in e.g. gigabytes.
848
849
850
For non-empty disks, the actual used size of the disk may optionally be specified using the
ovf:populatedSize attribute. The unit of this attribute is always bytes. ovf:populatedSize is
allowed to be an estimate of used disk size but shall not be larger than ovf:capacity.
Version 1.0.0
DMTF Standard
25
Open Virtualization Format Specification
DSP0243
851
852
853
854
855
In VirtualHardwareSection, virtual disk devices may have a rasd:HostResource element
referring to a Disk element in DiskSection, see clause 8.3. The virtual disk capacity shall be defined
by the ovf:capacity attribute on the Disk element. If a rasd:VirtualQuantity element is
speficied along with the rasd:HostResource element, the virtual quantity value shall not be considered
and may have any value.
856
857
858
859
860
861
OVF allows a disk image to be represented as a set of modified blocks in comparison to a parent image.
The use of parent disks can often significantly reduce the size of an OVF package, if it contains multiple
disks with similar content. For a Disk element, a parent disk may optionally be specified using the
ovf:parentRef attribute, which shall contain a valid ovf:diskId reference to a different Disk
element. If a disk block does not exist locally, lookup for that disk block then occurs in the parent disk. In
DiskSection, parent Disk elements shall occur before child Disk elements that refer to them.
862
9.2
863
The NetworkSection element shall list all logical networks used in the OVF package.
864
865
866
867
868
869
<NetworkSection>
<Info>List of logical networks used in the package</Info>
<Network ovf:name="red">
<Description>The network the Red service is available on</Description>
</Network>
</NetworkSection>
870
NetworkSection is a valid element at the outermost envelope level.
871
872
All networks referred to from Connection elements in all VirtualHardwareSection elements shall
be defined in the NetworkSection.
873
9.3
874
875
876
The ResourceAllocationSection element describes all resource allocation requirements of a
VirtualSystemCollection entity. These resource allocations shall be performed when deploying the
OVF package.
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
<ResourceAllocationSection>
<Info>Defines reservations for CPU and memory for the collection of VMs</Info>
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>300 MB reservation</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>300</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
</Item>
<Item ovf:configuration="..." ovf:bound="...">
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
<rasd:ElementName>500 MHz reservation</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>500</rasd:Reservation>
<rasd:ResourceType>3</rasd:ResourceType>
</Item>
</ResourceAllocationSection>
894
ResourceAllocationSection is a valid element for a VirtualSystemCollection entity.
26
NetworkSection
ResourceAllocationSection
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
895
896
The optional ovf:configuration attribute contains a list of configuration names. See 9.8 on
deployment options for semantics of this attribute.
897
898
The optional ovf:bound attribute contains a value of min, max, or normal. See 8.4 for semantics of this
attribute.
899
9.4
900
901
The AnnotationSection element is a user-defined annotation on an entity. Such annotations may be
displayed when deploying the OVF package.
902
903
904
905
<AnnotationSection>
<Info>An annotation on this service. It can be ignored</Info>
<Annotation>Contact customer support if you have any problems</Annotation>
</AnnotationSection >
906
907
AnnotationSection is a valid element for a VirtualSystem and a VirtualSystemCollection
entity.
908
See clause 10 for details on how to localize the Annotation element.
909
9.5
910
911
The ProductSection element specifies product-information for an appliance, such as product name,
version, and vendor.
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
<ProductSection ovf:class="com.mycrm.myservice" ovf:instance="1">
<Info>Describes product information for the service</Info>
<Product>MyCRM Enterprise</Product>
<Vendor>MyCRM Corporation</Vendor>
<Version>4.5</Version>
<FullVersion>4.5-b4523</FullVersion>
<ProductUrl>http://www.mycrm.com/enterprise</ProductUrl>
<VendorUrl>http://www.mycrm.com</VendorUrl>
<Icon ovf:height="32" ovf:width="32" ovf:mimeType="image/png" ovf:fileRef="icon">
<Category>Email properties</Category>
<Property ovf:key="admin.email" ovf:type="string" ovf:userConfigurable="true">
<Label>Admin email</Label>
<Description>Email address of administrator</Description>
</Property>
<Category>Admin properties</Category>
<Property ovf:key="app.log" ovf:type="string" ovf:value="low"
ovf:userConfigurable="true">
<Description>Loglevel for the service</Description>
</Property>
<Property ovf:key="app.isSecondary" ovf:value="false" ovf:type="boolean">
<Description>Cluster setup for application server</Description>
</Property>
<Property ovf:key="app.ip" ovf:type="string" ovf:value="${appserver-vm}">
<Description>IP address of the application server VM</Description>
</Property>
</ProductSection>
AnnotationSection
ProductSection
Version 1.0.0
DMTF Standard
27
Open Virtualization Format Specification
DSP0243
938
939
940
941
942
943
The optional Product element specifies the name of the product, while the optional Vendor element
specifies the name of the product vendor. The optional Version element specifies the product version in
short form, while the optional FullVersion element describes the product version in long form. The
optional ProductUrl element specifies a URL which shall resolve to a human readable description of
the product, while the optional VendorUrl specifies a URL which shall resolve to a human readable
description of the vendor.
944
945
946
The optional AppUrl element specifies a URL resolving to the deployed product instance; this element is
experimental. The optional Icon element specifies display icons for the product; this element is
experimental.
947
948
949
Property elements specify application-level customization parameters and are particularly relevant to
appliances that need to be customized during deployment with specific settings such as network identity,
the IP addresses of DNS servers, gateways, and others.
950
ProductSection is a valid section for a VirtualSystem and a VirtualSystemCollection entity.
951
952
953
954
955
956
957
Property elements may be grouped by using Category elements. The set of Property elements
grouped by a Category element is the sequence of Property elements following the Category
element, until but not including an element that is not a Property element. For OVF packages
containing a large number of Property elements, this may provide a simpler installation experience.
Similarly, each Property element may have a short label defined by its Label child element in addition
to a description defined by its Description child element. See clause 10 for details on how to localize
the Category element and the Description and Label child elements of the Property element.
958
959
Each Property element in a ProductSection shall be given an identifier that is unique within the
ProductSection using the ovf:key attribute.
960
961
962
Each Property element in a ProductSection shall be given a type using the ovf:type attribute and
optionally type qualifiers using the ovf:qualifiers attribute. Valid types are listed in Table 6 and valid
qualifiers are listed in Table 7.
963
964
965
The optional attribute ovf:value is used to provide a default value for a property. One or more optional
Value elements may be used to define alternative default values for specific configurations, as defined in
clause 9.8.
966
967
968
969
970
The optional attribute ovf:userConfigurable determines whether the property value is configurable
during the installation phase. If ovf:userConfigurable is FALSE or omitted, the ovf:value attribute
specifies the value to be used for that customization parameter during installation. If
ovf:userConfigurable is TRUE, the ovf:value attribute specifies a default value for that
customization parameter, which may be changed during installation.
971
972
973
974
975
A simple OVF implementation such as a command-line installer typically uses default values for
properties and does not prompt even though ovf:userConfigurable is set to TRUE. To force
prompting at startup time, omitting the ovf:value attribute is sufficient for integer and IP types, because
the empty string is not a valid integer or IP value. For string types, prompting may be forced by using a
type for a non-empty string.
976
977
978
979
980
981
982
Zero or more ProductSections may be specified within a VirtualSystem or
VirtualSystemCollection. Typically, a ProductSection corresponds to a particular software
product that is installed. Each product section at the same entity level shall have a unique ovf:class
and ovf:instance attribute pair. For the common case where only a single ProductSection is used,
the ovf:class and ovf:instance attributes are optional and default to the empty string. It is
recommended that the ovf:class property be used to uniquely identify the software product using the
reverse domain name convention. Examples of values are com.vmware.tools and
28
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
983
984
org.apache.tomcat. If multiple instances of the same product are installed, the ovf:instance
attribute is used to identify the different instances.
985
986
987
988
Property elements are exposed to the guest software through the OVF environment, as described in
clause 11. The value of the ovfenv:key attribute of a Property element exposed in the OVF
environment shall be constructed from the value of the ovf:key attribute of the corresponding
Property element defined in a ProductSection entity of an OVF descriptor as follows:
989
key-value-env = [class-value "."] key-value-prod ["." instance-value]
990
where:
991
992
993
•
class-value is the value of the ovf:class attribute of the Property element defined in the
ProductSection entity. The production [class-value "."] shall be present if and only if
class-value is not the empty string.
994
995
•
key-value-prod is the value of the ovf:key attribute of the Property element defined in the
ProductSection entity.
996
997
998
•
instance-value is the value of the ovf:instance attribute of the Property element defined in
the ProductSection entity. The production ["." instance-value] shall be present if and only
if instance-value is not the empty string.
999
1000
1001
1002
1003
EXAMPLE: The following OVF environment example shows how properties can be propagated to the guest
software:
<Property ovf:key="com.vmware.tools.logLevel"
ovf:value="none"/>
<Property ovf:key="org.apache.tomcat.logLevel.1" ovf:value="debug"/>
<Property ovf:key="org.apache.tomcat.logLevel.2" ovf:value="normal"/>
1004
1005
1006
1007
The consumer of an OVF package should prompt for properties where ovf:userConfigurable is
TRUE. These properties may be defined in multiple ProductSections as well as in sub-entities in the
OVF package.
1008
1009
1010
The first ProductSection entity defined in the top-level Content element of a package shall define
summary information that describes the entire package. After installation, a consumer of the OVF
package could choose to make this information available as an instance of the CIM_Product class.
1011
1012
1013
Property elements specified on a VirtualSystemCollection are also seen by its immediate
children (see clause 11). Children may refer to the properties of a parent VirtualSystemCollection
using macros on the form ${name} as value for ovf:value attributes.
1014
1015
1016
Table 6 lists the valid types for properties. These are a subset of CIM intrinsic types defined in DSP0004,
which also define the value space and format for each intrinsic type. Each Property element in a shall
specify a type using the ovf:type attribute.
1017
Table 6 – Property Types
Type
Description
uint8
Unsigned 8-bit integer
sint8
Signed 8-bit integer
uint16
Unsigned 16-bit integer
sint16
Signed 16-bit integer
uint32
Unsigned 32-bit integer
sint32
Signed 32-bit integer
Version 1.0.0
DMTF Standard
29
Open Virtualization Format Specification
1018
1019
1020
1021
DSP0243
Type
Description
uint64
Unsigned 64-bit integer
sint64
Signed 64-bit integer
string
String
boolean
Boolean
real32
IEEE 4-byte floating point
real64
IEEE 8-byte floating point
Table 7 lists the supported CIM type qualifiers as defined in DSP0004. Each Property element may
optionally specify type qualifiers using the ovf:qualifiers attribute with multiple qualifiers separated
by commas, see production qualifierList in ANNEX A “MOF Syntax Grammar Description” in
DSP0004.
1022
Table 7 – Property Qualifiers
Type
Description
string
MinLen(min)
MaxLen(max)
ValueMap{...}
uint8
ValueMap{...}
sint8
uint16
sint16
uint32
sint32
uint64
sint64
1023
9.6
1024
1025
1026
A EulaSection contains the legal terms for using its parent Content element. This license shall be
shown and accepted during deployment of an OVF package. Multiple EulaSections may be present in
an OVF. If unattended installations are allowed, all embedded license sections are implicitly accepted.
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
<EulaSection>
<Info>Licensing agreement</Info>
<License>
Lorem ipsum dolor sit amet, ligula suspendisse nulla pretium, rhoncus tempor placerat
fermentum, enim integer ad vestibulum volutpat. Nisl rhoncus turpis est, vel elit,
congue wisi enim nunc ultricies sit, magna tincidunt. Maecenas aliquam maecenas ligula
nostra, accumsan taciti. Sociis mauris in integer, a dolor netus non dui aliquet,
sagittis felis sodales, dolor sociis mauris, vel eu libero cras. Interdum at. Eget
habitasse elementum est, ipsum purus pede porttitor class, ut adipiscing, aliquet sed
auctor, imperdiet arcu per diam dapibus libero duis. Enim eros in vel, volutpat nec
pellentesque leo, scelerisque.
</License>
</EulaSection>
1040
EulaSection is a valid section for a VirtualSystem and a VirtualSystemCollection entity.
30
EulaSection
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
1041
See clause 10 for details on how to localize the License element.
1042
9.7
1043
The StartupSection specifies how a virtual machine collection is powered on and off.
1044
1045
1046
1047
1048
1049
1050
1051
<StartupSection>
<Item ovf:id="vm1" ovf:order="0" ovf:startDelay="30" ovf:stopDelay="0"
ovf:startAction="powerOn" ovf:waitingForGuest="true"
ovf:stopAction="powerOff"/>
<Item ovf:id="teamA" ovf:order="0"/>
<Item ovf:id="vm2" ovf:order="1" ovf:startDelay="0" ovf:stopDelay="20"
ovf:startAction="powerOn" ovf:stopAction="guestShutdown"/>
</StartupSection>
1052
1053
1054
1055
1056
1057
1058
1059
1060
Each Content element that is a direct child of a VirtualSystemCollection may have a
corresponding Item element in the StartupSection entity of the VirtualSystemCollection entity.
Note that Item elements may correspond to both VirtualSystem and VirtualSystemCollection
entities. When a start or stop action is performed on a VirtualSystemCollection entity, the
respective actions on the Item elements of its StartupSection entity are invoked in the specified
order. Whenever an Item element corresponds to a (nested) VirtualSystemCollection entity, the
actions on the Item elements of its StartupSection entity shall be invoked before the action on the
Item element corresponding to that VirtualSystemCollection entity is invoked (i.e., depth-first
traversal).
1061
1062
The following required attributes on Item are supported for a VirtualSystem and
VirtualSystemCollection:
StartupSection
1063
1064
1065
•
ovf:id shall match the value of the ovf:id attribute of a Content element which is a direct
child of this VirtualSystemCollection. That Content element describes the virtual
machine or virtual machine collection to which the actions defined in the Item element apply.
1066
1067
1068
1069
•
ovf:order specifies the startup order using non-negative integer values. The order of
execution of the start action is the numerical ascending order of the values. Items with same
order identifier may be started up concurrently. The order of execution of the stop action is the
numerical descending order of the values.
1070
The following optional attributes on Item are supported for a VirtualSystem.
1071
1072
•
ovf:startDelay specifies a delay in seconds to wait until proceeding to the next order in the
start sequence. The default value is 0.
1073
1074
1075
•
ovf:waitingForGuest enables the platform to resume the startup sequence after the guest
software has reported it is ready. The interpretation of this is deployment platform specific. The
default value is FALSE.
1076
1077
•
ovf:startAction specifies the start action to use. Valid values are powerOn and none. The
default value is powerOn.
1078
1079
•
ovf:stopDelay specifies a delay in seconds to wait until proceeding to the previous order in
the stop sequence. The default value is 0.
1080
1081
1082
•
ovf:stopAction specifies the stop action to use. Valid values are powerOff,
guestShutdown, and none. The interpretation of guestShutdown is deployment platform
specific. The default value is powerOff.
1083
1084
If not specified, an implicit default Item is created for each entity in the collection with ovf:order="0".
Thus, for a trivial startup sequence no StartupSection needs to be specified.
Version 1.0.0
DMTF Standard
31
Open Virtualization Format Specification
DSP0243
1085
9.8
1086
1087
1088
1089
1090
The DeploymentOptionSection specifies a discrete set of intended resource configurations. The
author of an OVF package can include sizing metadata for different configurations. A consumer of
the OVF shall select a configuration, for example, by prompting the user. The selected
configuration is visible in the OVF environment, enabling guest software to adapt to the selected
configuration. See clause 11.
1091
The DeploymentOptionSection specifies an ID, label, and description for each configuration.
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
DeploymentOptionSection
<DeploymentOptionSection>
<Configuration ovf:id="Minimal">
<Label>Minimal</Label>
<Description>Some description</Description>
</Configuration>
<Configuration ovf:id="Typical" ovf:default="true">
<Label>Typical</Label>
<Description>Some description</Description>
</Configuration>
<!-- Additional configurations -->
</DeploymentOptionSection>
The DeploymentOptionSection has the following semantics:
1104
1105
•
If present, the DeploymentOptionSection is valid only at the envelope level, and only one
section shall be specified in an OVF descriptor.
1106
1107
•
The discrete set of configurations is described with Configuration elements, which
shall have identifiers specified by the ovf:id attribute that are unique in the package.
1108
1109
1110
•
A default Configuration element may be specified with the optional ovf:default
attribute. If no default is specified, the first element in the list is the default. Specifying
more than one element as the default is invalid.
1111
1112
•
The Label and Description elements are localizable using the ovf:msgid attribute. See
clause 10 for more details on internationalization support.
1113
1114
1115
1116
1117
Configurations may be used to control resources for virtual hardware and for virtual machine
collections. Item elements in VirtualHardwareSection elements describe resources for
VirtualSystem entities, while Item elements in ResourceAllocationSection elements describe
resources for virtual machine collections. For these two Item types, the following additional
semantics are defined:
1118
1119
1120
1121
1122
Each Item has an optional ovf:configuration attribute, containing a list of configurations
separated by a single space character. If not specified, the item shall be selected for any
configuration. If specified, the item shall be selected only if the chosen configuration ID is in the
list. A configuration attribute shall not contain an ID that is not specified in the
DeploymentOptionSection.
•
1123
1124
1125
1126
1127
1128
1129
32
Within a single VirtualHardwareSection or ResourceAllocationSection, multiple
Item elements are allowed to refer to the same InstanceID. A single combined Item for
the given InstanceID shall be constructed by picking up the child elements of each Item
element, with child elements of a former Item element in the OVF descriptor not being
picked up if there is a like-named child element in a latter Item element. Any attributes
specified on child elements of Item elements that are not picked up that way, are not
part of the combined Item element.
DMTF Standard
Version 1.0.0
DSP0243
1130
1131
•
Open Virtualization Format Specification
All Item elements shall specify ResourceType, and Item elements with the same
InstanceID shall agree on ResourceType.
1132
EXAMPLE: The following example shows a VirtualHardwareSection:
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
<VirtualHardwareSection>
<Info>...</Info>
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>512 MB memory size and 256 MB
reservation</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>256</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>512</rasd:VirtualQuantity>
</Item>
...
<Item ovf:configuration="big">
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:ElementName>1024 MB memory size and 512 MB
reservation</rasd:ElementName>
<rasd:InstanceID>0</rasd:InstanceID>
<rasd:Reservation>512</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>1024</rasd:VirtualQuantity>
</Item>
</VirtualHardwareSection>
1155
1156
Note that the attributes ovf:configuration and ovf:bound on Item may be used in combination to
provide very flexible configuration options.
1157
1158
Configurations can further be used to control default values for properties. For Property
elements inside a ProductSection, the following additional semantic is defined:
1159
1160
1161
1162
1163
1164
1165
•
It is possible to use alternative default property values for different configurations in a
DeploymentOptionSection. In addition to a Label and Description element, each
Property element may optionally contain Value elements. The Value element shall
have an ovf:value attribute specifying the alternative default and an
ovf:configuration attribute specifying the configuration in which this new default
value should be used. Multiple Value elements shall not refer to the same
configuration.
1166
EXAMPLE: The following shows an example ProductSection:
1167
1168
1169
1170
1171
1172
1173
1174
<ProductSection>
<Property ovf:key="app.log" ovf:type="string" ovf:value="low"
ovf:userConfigurable="true">
<Label>Loglevel</Label>
<Description>Loglevel for the service</Description>
<Value ovf:value="none" ovf:configuration="minimal">
</Property>
</ProductSection>
Version 1.0.0
DMTF Standard
33
Open Virtualization Format Specification
DSP0243
1175
9.9
OperatingSystemSection
1176
An OperatingSystemSection specifies the operating system installed on a virtual machine.
1177
1178
1179
1180
<OperatingSystemSection ovf:id="76">
<Info>Specifies the operating system installed</Info>
<Description>Microsoft Windows Server 2008</Description>
</OperatingSystemSection>
1181
1182
The valid values for ovf:id are defined by the ValueMap qualifier in the
CIM_OperatingSystem.OsType property.
1183
OperatingSystemSection is a valid section for a VirtualSystem entity only.
1184
9.10 InstallSection
1185
1186
1187
1188
The InstallSection, if specified, indicates that the virtual machine needs to be booted once in order
to install and/or configure the guest software. The guest software is expected to access the OVF
environment during that boot, and to shut down after having completed the installation and/or
configuration of the software, powering off the guest.
1189
1190
If the InstallSection is not specified, this indicates that the virtual machine does not need to be
powered on to complete installation of guest software.
1191
1192
1193
1194
1195
<InstallSection ovf:initialBootStopDelay="300">
<Info>Specifies that the virtual machine needs to be booted once after having
created the guest software in order to install and/or configure the software
</Info>
</InstallSection>
1196
InstallSection is a valid section for a VirtualSystem entity only.
1197
1198
1199
1200
The optional ovf:initialBootStopDelay attribute specifies a delay in seconds to wait for the virtual
machine to power off. If not set, the implementation shall wait for the virtual machine to power off by itself.
If the delay expires and the virtual machine has not powered off, the consumer of the OVF package shall
indicate a failure.
1201
Note that the guest software in the virtual machine can do multiple reboots before powering off.
1202
1203
Several VMs in a virtual machine collection may have an InstallSection defined, in which case the
above step is done for each VM, potentially concurrently.
1204
10 Internationalization
1205
The following elements support localizable messages using the optional ovf:msgid attribute:
1206
•
Info element on Content
1207
•
Name element on Content
1208
•
Info element on Section
1209
•
Annotation element on AnnotationSection
1210
•
License element on EulaSection
1211
•
Description element on NetworkSection
1212
•
Description element on OperatingSystemSection
34
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
1213
•
Description, Product, Vendor, Label, and Category elements on ProductSection
1214
•
Description and Label elements on DeploymentOptionSection
1215
1216
•
ElementName, Caption and Description subelements on the System element in
VirtualHardwareSection
1217
1218
•
ElementName, Caption and Description subelements on Item elements in
VirtualHardwareSection
1219
1220
•
ElementName, Caption and Description subelements on Item elements in
ResourceAllocationSection
1221
1222
The ovf:msgid attribute contains an identifier that refers to a message that may have different values in
different locales.
1223
EXAMPLE 1:
1224
1225
1226
<Info ovf:msgid="info.text">Default info.text value if no locale is set or no locale
match</Info>
<License ovf:msgid="license.tomcat-6_0"/> <!-- No default message -->
1227
1228
The optional xml:lang attribute on the Envelope element shall specify the default locale for messages
in the descriptor.
1229
1230
Message resource bundles can be internal or external to the OVF descriptor. Internal resource bundles
are represented as Strings elements at the end of the Envelope element.
1231
EXAMPLE 2:
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
<ovf:Envelope xml:lang="en-US">
...
... sections and content here ...
...
<Info msgid="info.os">Operating System</Info>
...
<Strings xml:lang="da-DA">
<Msg ovf:msgid="info.os">Operativsystem</Msg>
...
</Strings>
<Strings xml:lang="de-DE">
<Msg ovf:msgid="info.os">Betriebssystem</Msg>
...
</Strings>
</ovf:Envelope>
1247
1248
1249
1250
External resource bundles shall be listed first in the References section and referred to from Strings
elements. An external message bundle follows the same schema as the embedded one. Exactly one
Strings element shall be present in an external message bundle, and that Strings element may not
have an ovf:fileRef attribute specified.
1251
EXAMPLE 3:
1252
1253
1254
1255
1256
1257
1258
<ovf:Envelope xml:lang="en-US">
<References>
...
<File ovf:id="it-it-resources" ovf:href="resources/it-it-bundle.msg"/>
</References>
... sections and content here ...
...
Version 1.0.0
DMTF Standard
35
Open Virtualization Format Specification
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
DSP0243
<Strings xml:lang="it-IT" ovf:fileRef="it-it-resources"/>
...
</ovf:Envelope>
EXAMPLE 4: Example content of external resources/it-it-bundle.msg file, which is referenced in previous example:
<Strings
xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
xmlns="http://schemas.dmtf.org/ovf/envelope/1"
xml:lang="it-IT">
<Msg ovf:msgid="info.os">Sistema operativo</Msg>
...
</Strings>
1270
1271
1272
The embedded and external Strings elements may be interleaved, but they shall be placed at the end
of the Envelope element. If multiple occurrences of a msg:id attribute with a given locale occurs, a latter
value overwrites a former.
1273
11 OVF Environment
1274
1275
1276
The OVF environment defines how the guest software and the deployment platform interact. This
environment allows the guest software to access information about the deployment platform, such as the
user-specified values for the properties defined in the OVF descriptor.
1277
1278
1279
1280
The environment specification is split into a protocol part and a transport part. The protocol part defines
the format and semantics of an XML document that can be made accessible to the guest software. The
transport part defines how the information is communicated between the deployment platform and the
guest software.
1281
1282
The ovf-environment.xsd XML schema definition file for the OVF environment contains the elements
and attributes.
1283
11.1 Environment Document
1284
1285
1286
The environment document is an extensible XML document that is provided to the guest software about
the environment in which it is being executed. The way that the document is obtained depends on the
transport type.
1287
EXAMPLE: An example of the structure of the OVF environment document follows:
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
<?xml version="1.0" encoding="UTF-8"?>
<Environment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ovfenv="http://schemas.dmtf.org/ovf/environment/1"
xmlns="http://schemas.dmtf.org/ovf/environment/1"
ovfenv:id="identification of VM from OVF descriptor">
<!-- Information about virtualization platform -->
<PlatformSection>
<Kind>Type of virtualization platform</Kind>
<Version>Version of virtualization platform</Version>
<Vendor>Vendor of virtualization platform</Vendor>
<Locale>Language and country code</Locale>
<TimeZone>Current timezone offset in minutes from UTC</TimeZone>
</PlatformSection>
<!--- Properties defined for this virtual machine -->
<PropertySection>
<Property ovfenv:key="key" ovfenv:value="value">
<!-- More properties -->
36
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
1305
1306
1307
1308
1309
1310
1311
</PropertySection>
<Entity ovfenv:id="id of sibling virtual system or virtual system collection">
<PropertySection>
<!-- Properties from sibling -->
</PropertySection>
</Entity>
</Environment>
1312
1313
1314
1315
The PlatformSection element contains optional information provided by the deployment platform.
Elements Kind, Version, and Vendor describe deployment platform vendor details, these elements are
experimental. Elements Locale and TimeZone describe the current locale and time zone, these
elements are experimental.
1316
1317
1318
1319
1320
The PropertySection element contains Property elements that correspond to those defined in the
OVF descriptor for the current virtual machine. The environment presents properties as a simple list to
make it easy for applications to parse. Furthermore, the single list format supports the override semantics
where a property on a VirtualSystem may override one defined on a parent
VirtualSystemCollection. The overridden property shall not be in the list.
1321
1322
1323
1324
1325
The value of the ovfenv:id attribute of the Environment element shall match the value of the ovf:id
attribute of the VirtualSystem entity describing this virtual machine. The PropertySection contains
the key/value pairs defined for all the properties specified in the OVF descriptor for the current virtual
machine, as well as properties specified for the immediate parent VirtualSystemCollection, if one
exists.
1326
1327
1328
1329
1330
1331
1332
An Entity element shall exist for each sibling VirtualSystem and VirtualSystemCollection, if
any are present. The value of the ovfenv:id attribute of the Entity element shall match the value of
the ovf:id attribute of the sibling entity. The Entity elements contain the property key/value pairs in
the sibling’s OVF environment documents, so the content of an Entity element for a particular sibling
shall contain the exact PropertySection seen by that sibling. This information can be used, for
example, to make configuration information such as IP addresses available to VirtualSystems being
part of a multi-tiered application.
1333
Table 8 shows the core sections that are defined.
1334
Table 8 – Core Sections
Section
Location
Multiplicity
PlatformSection
Environment
Zero or One
PropertySection
Environment
Zero or One
Contains key/value pairs corresponding to properties
defined in the OVF descriptor
Entity
Provides information from the deployment platform
1335
1336
The environment document is extensible by providing new section types. A consumer of the document
should ignore unknown section types and elements.
1337
11.2 Transport
1338
1339
1340
1341
The environment document information can be communicated in a number of ways to the guest software.
These ways are called transport types. The transport types are specified in the OVF descriptor by the
ovf:transport attribute of VirtualHardwareSection. Several transport types may be specified,
separated by a single space character, in which case an implementation is free to use any of them. The
Version 1.0.0
DMTF Standard
37
Open Virtualization Format Specification
DSP0243
1342
1343
transport types define methods by which the environment document is communicated from the
deployment platform to the guest software.
1344
1345
1346
1347
1348
1349
To enable interoperability, this specification defines an "iso" transport type which all implementations
that support CD-ROM devices are required to support. The iso transport communicates the environment
document by making a dynamically generated ISO image available to the guest software. To support the
iso transport type, prior to booting a virtual machine, an implementation shall make an ISO 9660 readonly disk image available as backing for a disconnected CD-ROM. If the iso transport is selected for a
VirtualHardwareSection, at least one disconnected CD-ROM device shall be present in this section.
1350
1351
Support for the "iso" transport type is not a requirement for virtual hardware architectures or guest
operating systems which do not have CD-ROM device support.
1352
1353
1354
The ISO image shall contain the OVF environment for this particular virtual machine, and the environment
shall be present in an XML file named ovf-env.xml that is contained in the root directory of the ISO
image. The guest software can now access the information using standard guest operating system tools.
1355
1356
1357
If the virtual machine prior to booting had more than one disconnected CD-ROM, the guest software may
have to scan connected CD-ROM devices in order to locate the ISO image containing the ovf-env.xml
file.
1358
1359
1360
1361
1362
1363
To be compliant with this specification, any transport format other than iso shall be given by a URI which
identifies an unencumbered specification on how to use the transport. The specification need not be
machine readable, but it shall be static and unique so that it may be used as a key by software reading an
OVF descriptor to uniquely determine the format. The specification shall be sufficient for a skilled person
to properly interpret the transport mechanism for implementing the protocols. It is recommended that
these URIs are resolvable.
38
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
ANNEX A
(informative)
1364
1365
1366
Symbols and Conventions
1367
1368
1369
1370
1371
1372
1373
XML examples use the XML namespace prefixes defined in Table 1. The XML examples use a style to
not specify namespace prefixes on child elements. Note that XML rules define that child elements
specified without namespace prefix are from the namespace of the parent element, and not from the
default namespace of the XML document. Throughout the document, whitespace within XML element
values is used for readability. In practice, a service can accept and strip leading and trailing whitespace
within element values as if whitespace had not been used.
1374
1375
Syntax definitions in Augmented BNF (ABNF) use ABNF as defined in IETF RFC2234 with the following
exceptions:
1376
1377
•
Rules separated by a bar (|) represent choices, instead of using a forward slash (/) as defined in
ABNF.
1378
1379
•
Any characters must be processed case sensitively, instead of case-insensitively as defined in
ABNF.
1380
1381
•
Whitespace (i.e., the space character U+0020 and the tab character U+0009) is allowed between
syntactical elements, instead of assembling elements without white space as defined in ABNF.
1382
Version 1.0.0
DMTF Standard
39
Open Virtualization Format Specification
DSP0243
ANNEX B
(informative)
1383
1384
1385
Change Log
1386
Version
Date
Description
1.0.0a
2008-06-04
Work in progress release
1.0.0b
2008-07-23
Preliminary release
Revised XML schemas to use substitution groups
1.0.0c
2008-08-13
Preliminary release
Errata
1.0.0d
2008-08-18
Preliminary release
1.0.0e
2009-01-15
Preliminary release
Updated extensibility model
Errata
1387
40
DMTF Standard
Version 1.0.0
DSP0243
Open Virtualization Format Specification
ANNEX C
(normative)
1388
1389
1390
OVF XSD
1391
1392
1393
1394
1395
1396
http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.0.0.xsd
http://schemas.dmtf.org/ovf/environment/1/dsp8027_1.0.0.xsd
1397
1398
Any xs:documentation content in XML schemas for this specification is informative and provided only
for convenience.
1399
1400
1401
1402
1403
1404
1405
Normative copies of the XML schemas for the WS-CIM mapping (DSP0230) of
CIM_ResourceAllocationSystemSettingsData and CIM_VirtualSystemSettingData may be
retrieved by resolving the URLs below.
http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2+/CIM_VirtualSystemSettingData.xsd
http://schemas.dmtf.org/wbem/wscim/1/cimschema/2+/CIM_ResourceAllocationSettingData.xsd
1406
This specification is based on the following CIM MOFs:
1407
1408
1409
Normative copies of the XML schemas for this specification may be retrieved by resolving the URLs
below.
CIM_VirtualSystemSettingData.mof
CIM_ResourceAllocationSettingData.mof
CIM_OperatingSystem.mof
Version 1.0.0
DMTF Standard
41
Fly UP