Logical Domains 1.2 Administration Guide

The ovf-core.xsd Schema


Example A–5 The ovf-core.xsd Schema


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
  targetNamespace="/var/opt/SUNWldom/envelope"
  xmlns:ovf="/var/opt/SUNWldom/envelope"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <xs:include schemaLocation="ovf-section.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://www.w3.org/2001/xml.xsd"/>
 
  <!-- A user defined annotation on an entity -->
  <xs:complexType name="AnnotationSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <!-- Several localized annotations can be included -->
          <xs:element name="Annotation" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0"
            maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- Product information about a virtual appliance -->
  <xs:complexType name="ProductSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Product" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Vendor" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Version" type="xs:string" minOccurs="0"/>
          <xs:element name="Full-version" type="xs:string" minOccurs="0"/>
          <xs:element name="ProductUrl" type="xs:string" minOccurs="0"/>
          <xs:element name="VendorUrl" type="xs:string" minOccurs="0"/>
          <xs:element name="AppUrl" type="xs:string" minOccurs="0"/>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- Configuration parameters that can be passed to the virtual machine for
    application-level configuration -->
  <xs:complexType name="PropertySection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Property" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Description" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
                <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0"
                  maxOccurs="unbounded"/>
                <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
              <xs:attribute name="key" type="xs:string"/>
              <xs:attribute name="type" type="xs:string"/>
              <xs:attribute name="configurableByUser" type="xs:boolean" use="optional"/>
              <xs:attribute name="configurableAtRuntime" type="xs:boolean" use="optional"/>
              <xs:attribute name="defaultValue" type="xs:string" use="optional"/>
              <xs:anyAttribute namespace="##any"/>
            </xs:complexType>
          </xs:element>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <!-- A comma-separated list of transports that are supported by the virtual machine to
          access the OVF environment. -->
        <xs:attribute name="transport" type="xs:string" use="optional"/>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- Provides descriptions for the logical networks used within the package. These descriptions are
    typically used as an aid when the package is deployed. -->
  <xs:complexType name="NetworkSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Network" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Description" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
                <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0"
                  maxOccurs="unbounded"/>
                <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
              <xs:attribute name="name" type="xs:string" use="required"/>
              <xs:anyAttribute namespace="##any"/>
            </xs:complexType>
          </xs:element>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- Provides meta-information description of the virtual disks in the package -->
  <xs:complexType name="DiskSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Disk" type="ovf:VirtualDiskDesc_Type" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- Disk -->
  <xs:complexType name="VirtualDiskDesc_Type">
    <!-- A logical ID for the virtual disk within this package -->
    <xs:attribute name="diskId" type="xs:string" use="required"/>
    <!-- A file reference to the virtual disk file. If this is not specified a blank virtual disk is
      created of the given size -->
    <xs:attribute name="fileRef" type="xs:string" use="optional"/>
    <!-- Capacity in bytes. The capacity can be specified as either a size or as a reference to a property
      using $(property_name) -->
    <xs:attribute name="capacity" type="xs:string" use="required"/>
    <!-- Format of the disk. The format is an URL that identifies the disk type,
      e.g., http://www.vmware.com/format/vmdk.html#sparse -->
    <xs:attribute name="format" type="xs:string" use="required"/>
    <!-- Populated size of disk. This is an estimation of how much storage the disk needs if backed by
      a non pre-allocated (aka. sparse) disk. This size does not take the meta-data into
      account used by a sparse disk. -->
    <xs:attribute name="populatedSize" type="xs:long" use="optional"/>
    <!-- Reference to a potential parent disk -->
    <xs:attribute name="parentRef" type="xs:string" use="optional"/>
  </xs:complexType>
 
  <!-- CPU Architecture requirements for the guest software. -->
  <xs:complexType name="CpuCompatibilitySection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Level" maxOccurs="unbounded">
            <xs:complexType>
              <xs:attribute name="level" type="xs:int" use="optional"/>
              <xs:attribute name="eax" type="xs:string" use="optional"/>
              <xs:attribute name="ebx" type="xs:string" use="optional"/>
              <xs:attribute name="ecx" type="xs:string" use="optional"/>
              <xs:attribute name="edx" type="xs:string" use="optional"/>
            </xs:complexType>
          </xs:element>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="Vendor" type="xs:string"/>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- Specification of the operating system installed in the guest -->
  <xs:complexType name="OperatingSystemSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="Description" type="ovf:Info_Type" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <!-- The IDs are the enumeration used in CIM_OperatingSystem_Type -->
        <xs:attribute name="id" type="xs:string"/>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- End-User License Agreement -->
  <xs:complexType name="EulaSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <!-- Contains the license agreement in plain text. Several different locales can be
            specified -->
          <xs:element name="License" type="ovf:Info_Type" minOccurs="1" maxOccurs="unbounded"/>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- For a VirtualSystemCollection, this section is used to specify the order in which the
    contained entities are to be powered on. -->
  <xs:complexType name="StartupSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
              <!-- Id of entity in collection -->
              <xs:attribute name="id" type="xs:string"/>
              <!-- Startup order. Entities are started up starting with lower-numbers first. Items with
                same order identifier may be started up concurrently or in any order.
                The order is reversed for shutdown. -->
              <xs:attribute name="order" type="xs:int"/>
              <!-- Delay in seconds to wait for the power on to complete -->
              <xs:attribute name="startDelay" type="xs:int"/>
              <!-- Whether to resume power-on sequence, once the guest reports ok. -->
              <xs:attribute name="waitingForGuest" type="xs:boolean"/>
              <!-- Delay in seconds to wait for the power on to complete -->
              <xs:attribute name="stopDelay" type="xs:int"/>
              <!-- Stop action to use. Valid values are: 'powerOn' (default), 'none'. -->
              <xs:attribute name="startAction" type="xs:string"/>
              <!-- Stop action to use. Valid values are: 'powerOff' (default), 'guestShutdown',
                'suspend'. -->
              <xs:attribute name="stopAction" type="xs:string"/>
              <xs:anyAttribute namespace="##any"/>
            </xs:complexType>
          </xs:element>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <!-- A comma-separated list of transports that the virtual machine supports to provide
          feedback. -->
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <!-- If this section is present, it indicates that the virtual machine needs to be initially
    booted to install and configure the software. -->
  <xs:complexType name="InstallSection_Type">
    <xs:complexContent>
      <xs:extension base="ovf:Section_Type">
        <xs:sequence>
          <xs:any namespace="##targetNamespace" processContents="lax" minOccurs="0"
            maxOccurs="unbounded"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <!-- A comma-separated list of transports that the virtual machine supports to provide
          feedback. -->
        <xs:attribute name="transport" type="xs:string"/>
        <xs:anyAttribute namespace="##any"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>