<?xml version="1.0" encoding="utf-8"?>
<!--
DMTF - Distributed Management Task Force, Inc. - http://www.dmtf.org

Document number: DSP8009
Date: 2012-06-20
Version: 1.0.0e
Document status: Work in Progress

-------------------
IMPORTANT:  This specification is not a standard.  It does not necessarily 
reflect the views of the DMTF or all of its members.  Because this document 
is a Work in Progress, this specification may still change, perhaps profoundly.
This document is available for public review and comment until the stated 
expiration date.
This document expires on: 2012-12-20.
Provide any comments through the DMTF Feedback Portal: 
http://www.dmtf.org/standards/feedback
-------------------

Title: CIMI Schema

Document type: Specification (W3C XML Schema Document)
Document language: E

Abstract: XML Schema for CIMI

Contact group: cmwg, cmwg@dmtf.org

Copyright (C) 2012 Distributed Management Task Force, Inc. (DMTF).  All rights 
reserved.
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 for uses 
consistent with this purpose, 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.  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.  For information about patents 
held by third-parties which have notified the DMTF that, in their opinion, 
such patent may relate to or impact implementations of DMTF standards, visit
http://www.dmtf.org/about/policies/disclosures.php.

Note: while the schema defined in this file specifies certain elements
as optional (via a minOccurs="0"), this is done to allow for the flexibility
of those elements being excluded from the serialization even though they
would be required under "normal" circumstances.  For example, normally the
"id" element is a required one, however, if CIMISelect is used and
"id" is not part of the selected attributes, then "id" will not be present
in the serialization.  So, the schema is defined to not detect these
non-normal serializations invalid.
-->

<xs:schema
  xmlns:tns="http://schemas.dmtf.org/cimi/1"
  xmlns:cimi="http://schemas.dmtf.org/cimi/1"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://schemas.dmtf.org/cimi/1"
  elementFormDefault="qualified"
  blockDefault="#all"
  version="1.0.0e">

  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://www.w3.org/2001/xml.xsd"/>

  <xs:complexType name="propertyType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:anyAttribute processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Expandable Reference -->
  <!-- Element has an 'href' attribute and an 'xs:any' in the body -->
  <xs:complexType name="expRef">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax" minOccurs="0"
              maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="operationType">
    <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="rel" type="xs:anyURI" use="required"/>
    <xs:attribute name="href" type="xs:anyURI" use="required"/>
    <xs:anyAttribute processContents="lax"/>
  </xs:complexType>

  <!-- These appear in almost all resources -->
  <xs:group name="commonElements">
    <xs:sequence>
      <xs:element name="id" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="description" type="xs:string" minOccurs="0"/>
      <xs:element name="created" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="updated" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="property" type="tns:propertyType" minOccurs="0"
                  maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="Action">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="action" type="xs:anyURI"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="Collection">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <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="resourceURI" type="xs:anyURI" use="required"/>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="CloudEntryPoint">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="baseURI" type="xs:anyURI" minOccurs="0"/>
        <xs:element name="resourceMetadata" type="tns:ResourceMetadataCollRef"
                    minOccurs="0"/>
        <xs:element name="systems" type="tns:SystemCollRef" minOccurs="0"/>
        <xs:element name="systemTemplates" type="tns:SystemTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="machines" type="tns:MachineCollRef" minOccurs="0"/>
        <xs:element name="machineTemplates" type="tns:MachineTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="machineConfigs" type="tns:MachineConfigurationCollRef"
                    minOccurs="0"/>
        <xs:element name="machineImages" type="tns:MachineImageCollRef" 
                    minOccurs="0"/>
        <xs:element name="credentials" type="tns:CredentialCollRef" 
                    minOccurs="0"/>
        <xs:element name="credentialTemplates" 
                    type="tns:CredentialTemplateCollRef" minOccurs="0"/>
        <xs:element name="volumes" type="tns:VolumeCollRef" minOccurs="0"/>
        <xs:element name="volumeTemplates" type="tns:VolumeTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="volumeConfigs" type="tns:VolumeConfigurationCollRef" 
                    minOccurs="0"/>
        <xs:element name="volumeImages" type="tns:VolumeImageCollRef" 
                    minOccurs="0"/>
        <xs:element name="networks" type="tns:NetworkCollRef" minOccurs="0"/>
        <xs:element name="networkTemplates" type="tns:NetworkTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="networkConfigs" type="tns:NetworkConfigurationCollRef"
                    minOccurs="0"/>
        <xs:element name="networkPorts" type="tns:NetworkPortCollRef" 
                    minOccurs="0"/>
        <xs:element name="networkPortTemplates" 
                    type="tns:NetworkPortTemplateCollRef" minOccurs="0"/>
        <xs:element name="networkPortConfigs" 
                    type="tns:NetworkPortConfigurationCollRef" minOccurs="0"/>
        <xs:element name="addresses" type="tns:AddressCollRef" minOccurs="0"/>
        <xs:element name="addressTemplates" type="tns:AddressTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="forwardingGroups" type="tns:ForwardingGroupCollRef" 
                    minOccurs="0"/>
        <xs:element name="forwardingGroupTemplates" 
                    type="tns:ForwardingGroupTemplateCollRef" minOccurs="0"/>
        <xs:element name="jobs" type="tns:JobCollRef" minOccurs="0"/>
        <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
        <xs:element name="meterTemplates" type="tns:MeterTemplateCollRef" 
                    minOccurs="0"/>
        <xs:element name="meterConfigs" type="tns:MeterConfigurationCollRef" 
                    minOccurs="0"/>
        <xs:element name="eventLogs" type="tns:EventLogCollRef" minOccurs="0"/>
        <xs:element name="eventLogTemplates" type="tns:EventLogTemplateCollRef"
                    minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="ResourceMetadataElements">
    <xs:sequence>
      <xs:element name="id" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="typeURI" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="attribute" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="name" type="xs:string" use="required"/>
          <xs:attribute name="namespace" type="xs:anyURI"/>
          <xs:attribute name="type" type="xs:string" use="required"/>
          <xs:attribute name="required" type="xs:boolean"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="capability" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="name" type="xs:string"/>
          <xs:attribute name="uri" type="xs:anyURI" use="required"/>
          <xs:attribute name="description" type="xs:string"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="action" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="name" type="xs:string" use="required"/>
          <xs:attribute name="uri" type="xs:anyURI" use="required"/>
          <xs:attribute name="description" type="xs:string"/>
          <xs:attribute name="method" type="xs:string" use="required"/>
          <xs:attribute name="inputMessage" type="xs:string"/>
          <xs:attribute name="outputMessage" type="xs:string"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0"
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="ResourceMetadata">
    <xs:complexType>
      <xs:group ref="tns:ResourceMetadataElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ResourceMetadataRef">
    <xs:group ref="tns:ResourceMetadataElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="ResourceMetadataCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:ResourceMetadata" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="System">
    <xs:complexType>
      <xs:group ref="tns:SystemElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="SystemElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="systems" type="tns:SystemSystemCollRef" minOccurs="0"/>
      <xs:element name="machines" type="tns:SystemMachineCollRef" 
                  minOccurs="0"/>
      <xs:element name="credentials" type="tns:SystemCredentialCollRef" 
                  minOccurs="0"/>
      <xs:element name="volumes" type="tns:SystemVolumeCollRef" minOccurs="0"/>
      <xs:element name="networks" type="tns:SystemNetworkCollRef" 
                  minOccurs="0"/>
      <xs:element name="networkPorts" type="tns:SystemNetworkPortCollRef" 
                  minOccurs="0"/>
      <xs:element name="addresses" type="tns:SystemAddressCollRef" 
                  minOccurs="0"/>
      <xs:element name="forwardingGroups" 
                  type="tns:SystemForwardingGroupCollRef" minOccurs="0"/>
      <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
      <xs:element name="eventLog" type="tns:EventLogRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0"
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="SystemRef">
    <xs:group ref="tns:SystemElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="SystemCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:System" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="systemTemplate" type="tns:SystemTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="SystemSystem">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="system" type="tns:SystemRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemSystemCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemSystem" minOccurs="0" maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemMachine">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="machine" type="tns:MachineRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemMachineCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemMachine" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemCredential">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="machine" type="tns:CredentialRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemCredentialCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemCredential" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemVolume">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="volume" type="tns:VolumeRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemVolumeCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemVolume" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemNetwork">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemNetworkCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemNetwork" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemNetworkPort">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="networkPort" type="tns:NetworkPortRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemNetworkPortCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemNetworkPort" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemAddress">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="address" type="tns:AddressRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemAddressCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemAddress" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemForwardingGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="forwardingGroup" type="tns:ForwardingGroupRef"
                    minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="SystemForwardingGroupCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemForwardingGroup" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="SystemTemplate">
    <xs:complexType>
      <xs:group ref="tns:SystemTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:group name="SystemTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="componentDescriptor" minOccurs="0" 
                  maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string" minOccurs="0"/>
            <xs:element name="description" type="xs:string" minOccurs="0"/>
            <xs:element name="property" type="tns:propertyType" minOccurs="0" 
                        maxOccurs="unbounded"/>
            <xs:element name="type" type="xs:anyURI"/>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="meterTemplates" type="tns:MeterTemplateRef" 
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>
  
  <xs:complexType name="SystemTemplateRef">
    <xs:group ref="tns:SystemTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="SystemTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:SystemTemplate" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Machine">
    <xs:complexType>
      <xs:group ref="tns:MachineElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MachineElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="cpu" type="xs:integer" minOccurs="0"/>
      <xs:element name="memory" type="xs:integer" minOccurs="0"/>
      <xs:element name="disks" type="tns:DiskCollRef" minOccurs="0"/>
      <xs:element name="cpuArch" type="xs:string" minOccurs="0"/>
      <xs:element name="volumes" type="tns:MachineVolumeCollRef" minOccurs="0"/>
      <xs:element name="networkInterfaces" type="tns:NetworkInterfaceCollRef" 
                  minOccurs="0"/>
      <xs:element name="latestSnapshot" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="snapshots" type="tns:MachineImageCollRef" 
                  minOccurs="0"/>
      <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
      <xs:element name="eventLog" type="tns:EventLogRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="MachineRef">
    <xs:group ref="tns:MachineElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="MachineCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Machine" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MachineCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="machineTemplate" type="tns:MachineTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="Disk">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="capacity" type="xs:integer" minOccurs="0"/>
        <xs:element name="initialLocation" type="xs:string" minOccurs="0"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="DiskCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Disk" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MachineVolume">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="initialLocation" type="xs:string" minOccurs="0"/>
        <xs:element name="volume" type="tns:VolumeRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="MachineVolumeCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MachineVolume" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MachineNetworkInterface">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="addresses" type="tns:AddressCollRef" minOccurs="0"/>
        <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
        <xs:element name="networkPort" type="tns:NetworkPortRef" minOccurs="0"/>
        <xs:element name="state" type="xs:string" minOccurs="0"/>
        <xs:element name="maxAddress" type="xs:string" minOccurs="0"/>
        <xs:element name="mtu" type="xs:integer" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="MachineNetworkInterfaceAddress">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="address" type="tns:AddressRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="MachineSnapshot">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="shapshot" type="tns:MachineImageRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="MachineTemplate">
    <xs:complexType>
      <xs:group ref="tns:MachineTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MachineTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="initialState" type="xs:string" minOccurs="0"/>
      <xs:element name="machineConfig" type="tns:optMachineConfigurationRef"
                  minOccurs="0"/>
      <xs:element name="machineImage" type="tns:optMachineImageRef" 
                  minOccurs="0"/>
      <xs:element name="credential" type="tns:optCredentialTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="volume" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="initialLocation" type="xs:string" 
                        use="optional"/>
          <xs:attribute name="href" type="xs:anyURI"/>
          <xs:anyAttribute namespace="##other" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="volumeTemplate" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:group ref="tns:VolumeTemplateElements"/>
          <xs:attribute name="initialLocation" type="xs:string" 
                        use="optional"/>
          <xs:attribute name="href" type="xs:anyURI" use="optional"/>
          <xs:anyAttribute namespace="##other" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="networkInterface" type="tns:NetworkInterface"
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="meterTemplates" type="tns:MeterTemplateRef" 
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="userData" type="xs:string" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="MachineTemplateRef">
    <xs:group ref="tns:MachineTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MachineTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MachineTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkInterface">
    <xs:sequence>
      <xs:element name="address" type="tns:AddressRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="network" type="tns:NetworkRef"/>
      <xs:element name="networkPort" type="tns:NetworkPortRef" 
                  minOccurs="0"/>
      <xs:element name="state" type="xs:string"/>
      <xs:element name="mtu" type="xs:integer" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkInterface" type="tns:NetworkInterface"/>

  <xs:complexType name="NetworkInterfaceCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkInterface" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MachineConfiguration">
    <xs:complexType>
      <xs:group ref="tns:MachineConfigurationElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MachineConfigurationElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="cpu" type="xs:integer" minOccurs="0"/>
      <xs:element name="memory" type="xs:integer" minOccurs="0"/>
      <xs:element name="disk" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="capacity" type="xs:integer"/>
            <xs:element name="format" type="xs:string"/>
            <xs:element name="initialLocation" type="xs:string" minOccurs="0"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:anyAttribute namespace="##other" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="cpuArch" type="xs:string" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optMachineConfigurationRef">
    <xs:group ref="tns:MachineConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MachineConfigurationRef">
    <xs:group ref="tns:MachineConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MachineConfigurationCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MachineConfiguration" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MachineImage">
    <xs:complexType>
      <xs:group ref="tns:MachineImageElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MachineImageElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="type" type="xs:string" minOccurs="0"/>
      <xs:element name="imageLocation" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="relatedImage" type="tns:MachineImageRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optMachineImageRef">
    <xs:group ref="tns:MachineImageElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MachineImageRef">
    <xs:group ref="tns:MachineImageElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MachineImageCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MachineImage" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Credential">
    <xs:complexType>
      <xs:group ref="tns:CredentialElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="CredentialElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <!-- Spec defined extensions that may be used -->
      <xs:element name="userName" type="xs:string" minOccurs="0"/>
      <xs:element name="password" type="xs:string" minOccurs="0"/>
      <xs:element name="key" type="xs:hexBinary" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="CredentialRef">
    <xs:group ref="tns:CredentialElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="CredentialCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Credential" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="CredentialCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="credentialTemplate" type="tns:CredentialTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="CredentialTemplate">
    <xs:complexType>
      <xs:group ref="tns:CredentialTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:group name="CredentialTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0"
                  maxOccurs="unbounded"/>
      <!-- Spec defined extensions that may be used -->
      <xs:element name="userName" type="xs:string" minOccurs="0"/>
      <xs:element name="password" type="xs:string" minOccurs="0"/>
      <xs:element name="key" type="xs:hexBinary" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optCredentialTemplateRef">
    <xs:group ref="tns:CredentialTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="CredentialTemplateRef">
    <xs:group ref="tns:CredentialTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="CredentialTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:CredentialTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Volume">
    <xs:complexType>
      <xs:group ref="tns:VolumeElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="VolumeElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="type" type="xs:string" minOccurs="0"/>
      <xs:element name="capacity" type="xs:integer" minOccurs="0"/>
      <xs:element name="bootable" type="xs:boolean" minOccurs="0"/>
      <xs:element name="images" type="tns:VolumeImageCollRef" minOccurs="0"/>
      <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
      <xs:element name="eventLog" type="tns:EventLogRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="VolumeRef">
    <xs:group ref="tns:VolumeElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="VolumeCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Volume" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="VolumeCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="volumeTemplate" type="tns:VolumeTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="VolumeVolumeImage">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="volumeImage" type="tns:VolumeImageRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="VolumeTemplate">
    <xs:complexType>
      <xs:group ref="tns:VolumeTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="VolumeTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="volumeConfig" type="tns:optVolumeConfigurationRef" 
                  minOccurs="0"/>
      <xs:element name="volumeImage" type="tns:VolumeImageRef" minOccurs="0"/>
      <xs:element name="meterTemplates" type="tns:MeterTemplateRef" 
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="VolumeTemplateRef">
    <xs:group ref="tns:VolumeTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="VolumeTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:VolumeTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="VolumeConfiguration">
    <xs:complexType>
      <xs:group ref="tns:VolumeConfigurationElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="VolumeConfigurationElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="type" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="format" type="xs:string" minOccurs="0"/>
      <xs:element name="capacity" type="xs:integer" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optVolumeConfigurationRef">
    <xs:group ref="tns:VolumeConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="VolumeConfigurationRef">
    <xs:group ref="tns:VolumeConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="VolumeConfigurationCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:VolumeConfiguration" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="VolumeImage">
    <xs:complexType>
      <xs:group ref="tns:VolumeImageElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="VolumeImageElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="imageLocation" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="bootable" type="xs:boolean" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="VolumeImageRef">
    <xs:group ref="tns:VolumeImageElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="VolumeImageCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:VolumeImage" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Network">
    <xs:complexType>
      <xs:group ref="tns:NetworkElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="NetworkElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="networkType" type="xs:string" minOccurs="0"/>
      <xs:element name="mtu" type="xs:integer" minOccurs="0"/>
      <xs:element name="classOfService" type="xs:string" minOccurs="0"/>
      <xs:element name="networkPorts" type="tns:NetworkPortCollRef" 
                  minOccurs="0"/>
      <xs:element name="forwardingGroup" type="tns:ForwardingGroupRef" 
                  minOccurs="0"/>
      <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
      <xs:element name="eventLog" type="tns:EventLogRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="NetworkRef">
    <xs:group ref="tns:NetworkElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="NetworkCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Network" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="networkTemplate" type="tns:NetworkTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="NetworkTemplate">
    <xs:complexType>
      <xs:group ref="tns:NetworkTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:group name="NetworkTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="networkConfig" type="tns:optNetworkConfigurationRef" 
                  minOccurs="0"/>
      <xs:element name="forwardingGroup" type="tns:ForwardingGroupRef" 
                  minOccurs="0"/>
      <xs:element name="meterTemplates" type="tns:MeterTemplateRef" 
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>
  
  <xs:complexType name="NetworkTemplateRef">
    <xs:group ref="tns:NetworkTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkConfiguration">
    <xs:complexType>
      <xs:group ref="tns:NetworkConfigurationElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="NetworkConfigurationElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="networkType" type="xs:string" minOccurs="0"/>
      <xs:element name="mtu" type="xs:integer" minOccurs="0"/>
      <xs:element name="classOfService" type="xs:string" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optNetworkConfigurationRef">
    <xs:group ref="tns:NetworkConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkConfigurationRef">
    <xs:group ref="tns:NetworkConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkConfigurationCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkConfiguration" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkPort">
    <xs:complexType>
      <xs:group ref="tns:NetworkPortElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="NetworkPortElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
      <xs:element name="portType" type="xs:string" minOccurs="0"/>
      <xs:element name="classOfService" type="xs:string" minOccurs="0"/>
      <xs:element name="meters" type="tns:MeterCollRef" minOccurs="0"/>
      <xs:element name="eventLog" type="tns:EventLogRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="NetworkPortRef">
    <xs:group ref="tns:NetworkPortElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkPortCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkPort" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkPortCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="networkPortTemplate" 
                    type="tns:NetworkPortTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="NetworkPortTemplate">
    <xs:complexType>
      <xs:group ref="tns:NetworkPortTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:group name="NetworkPortTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
      <xs:element name="networkPortConfig" 
                  type="tns:optNetworkPortConfigurationRef" minOccurs="0"/>
      <xs:element name="meterTemplates" type="tns:MeterTemplateRef" 
                  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef" 
                  minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>
  
  <xs:complexType name="NetworkPortTemplateRef">
    <xs:group ref="tns:NetworkPortTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkPortTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkPortTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="NetworkPortConfiguration">
    <xs:complexType>
      <xs:group ref="tns:NetworkPortConfigurationElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="NetworkPortConfigurationElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="portType" type="xs:string" minOccurs="0"/>
      <xs:element name="classOfService" type="xs:string" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optNetworkPortConfigurationRef">
    <xs:group ref="tns:NetworkPortConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkPortConfigurationRef">
    <xs:group ref="tns:NetworkPortConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="NetworkPortConfigurationCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:NetworkPortConfiguration" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Address">
    <xs:complexType>
      <xs:group ref="tns:AddressElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="AddressElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="ip" type="xs:string" minOccurs="0"/>
      <xs:element name="hostname" type="xs:string" minOccurs="0"/>
      <xs:element name="allocation" type="xs:string" minOccurs="0"/>
      <xs:element name="defaultGateway" type="xs:string" minOccurs="0"/>
      <xs:element name="dns" type="xs:string" minOccurs="0"/>
      <xs:element name="protocol" type="xs:string" minOccurs="0"/>
      <xs:element name="mask" type="xs:string" minOccurs="0"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
      <xs:element name="resource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="AddressRef">
    <xs:group ref="tns:AddressElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="AddressCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Address" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="AddressCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="addressTemplate" type="tns:AddressTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="AddressTemplate">
    <xs:complexType>
      <xs:group ref="tns:AddressTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:group name="AddressTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="ip" type="xs:string" minOccurs="0"/>
      <xs:element name="hostname" type="xs:string" minOccurs="0"/>
      <xs:element name="allocation" type="xs:string" minOccurs="0"/>
      <xs:element name="defaultGateway" type="xs:string" minOccurs="0"/>
      <xs:element name="dns" type="xs:string" minOccurs="0"/>
      <xs:element name="protocol" type="xs:string" minOccurs="0"/>
      <xs:element name="mask" type="xs:string" minOccurs="0"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
      </xs:sequence>
  </xs:group>
  
    <xs:complexType name="AddressTemplateRef">
    <xs:group ref="tns:AddressTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="AddressTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:AddressTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="ForwardingGroup">
    <xs:complexType>
      <xs:group ref="tns:ForwardingGroupElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="ForwardingGroupElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="ForwardingGroupRef">
    <xs:group ref="tns:ForwardingGroupElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="ForwardingGroupCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:ForwardingGroup" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="ForwardingGroupCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="forwardingGroupTemplate" 
                    type="tns:ForwardingGroupTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="ForwardingGroupNetwork">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="network" type="tns:NetworkRef" minOccurs="0"/>
        <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="ForwardingGroupTemplate">
    <xs:complexType>
      <xs:group ref="tns:ForwardingGroupElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="ForwardingGroupTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="network" type="tns:NetworkRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="ForwardingGroupTemplateRef">
    <xs:group ref="tns:ForwardingGroupTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="ForwardingGroupTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:ForwardingGroupTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Job">
    <xs:complexType>
      <xs:group ref="tns:JobElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="JobElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="state" type="xs:string" minOccurs="0"/>
      <xs:element name="targetResource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="affectedResource" type="tns:expRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="action" type="xs:string" minOccurs="0"/>
      <xs:element name="status" type="xs:string" minOccurs="0"/>
      <xs:element name="returnCode" type="xs:integer" minOccurs="0"/>
      <xs:element name="progress" type="xs:integer" minOccurs="0"/>
      <xs:element name="statusMessage" type="xs:string" minOccurs="0"/>
      <xs:element name="timeOfStatusChange" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="isCancellable" type="xs:boolean" minOccurs="0"/>
      <xs:element name="parentJob" type="tns:JobRef" minOccurs="0"/>
      <xs:element name="nestedJob" type="tns:JobRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="JobRef">
    <xs:group ref="tns:JobElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="JobCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Job" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Meter">
    <xs:complexType>
      <xs:group ref="tns:MeterElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MeterElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="targetResource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="aspect" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="units" type="xs:string" minOccurs="0"/>
      <xs:element name="sampleInterval" type="xs:integer" minOccurs="0"/>
      <xs:element name="timeScope" type="xs:string" minOccurs="0"/>
      <xs:element name="intervalDuration" type="xs:duration" minOccurs="0"/>
      <xs:element name="isContinuous" type="xs:boolean" minOccurs="0"/>
      <xs:element name="samples" minOccurs="0" type="tns:SampleCollRef"/>
      <xs:element name="minValue" type="xs:string" minOccurs="0"/>
      <xs:element name="maxValue" type="xs:string" minOccurs="0"/>
      <xs:element name="stopTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="expiresTime" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="MeterRef">
    <xs:group ref="tns:MeterElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="MeterCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Meter" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MeterCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="meterTemplate" type="tns:MeterTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="MeterTemplate">
    <xs:complexType>
      <xs:group ref="tns:MeterTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MeterTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="targetResource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="meterConfig" type="tns:optMeterConfigurationRef" 
                  minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="MeterTemplateRef">
    <xs:group ref="tns:MeterTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MeterTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MeterTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Sample">
    <xs:complexType>
      <xs:group ref="tns:SampleElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="SampleElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="sample">
        <xs:complexType>
          <xs:sequence>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="timestamp" type="xs:dateTime"/>
          <xs:attribute name="value" type="xs:string"/>
          <xs:anyAttribute namespace="##any" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="SampleRef">
    <xs:group ref="tns:SampleElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="SampleCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Sample" minOccurs="0" maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="MeterConfiguration">
    <xs:complexType>
      <xs:group ref="tns:MeterConfigurationElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="MeterConfigurationElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="associatedTo" type="tns:expRef" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:element name="aspect" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="units" type="xs:string" minOccurs="0"/>
      <xs:element name="sampleInterval" type="xs:integer" minOccurs="0"/>
      <xs:element name="timeScope" type="xs:string" minOccurs="0"/>
      <xs:element name="intervalDuration" type="xs:duration" minOccurs="0"/>
      <xs:element name="isContinuous" type="xs:boolean" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optMeterConfigurationRef">
    <xs:group ref="tns:MeterConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI" use="optional"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MeterConfigurationRef">
    <xs:group ref="tns:MeterConfigurationElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MeterConfigurationCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:MeterConfiguration" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="EventLog">
    <xs:complexType>
      <xs:group ref="tns:EventLogElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="EventLogElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="targetResource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="events" type="tns:EventCollRef" minOccurs="0"/>
      <xs:element name="persistence" type="xs:string" minOccurs="0"/>
      <xs:element name="summary" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="low" type="xs:integer"/>
            <xs:element name="medium" type="xs:integer"/>
            <xs:element name="high" type="xs:integer"/>
            <xs:element name="critical" type="xs:integer"/>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:anyAttribute namespace="##any" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="EventLogRef">
    <xs:group ref="tns:EventLogElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  
  <xs:complexType name="EventLogCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:EventLog" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="EventLogCreate">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="tns:commonElements"/>
        <xs:element name="eventLogTemplate" type="tns:EventLogTemplateRef"/>
        <xs:any namespace="##any" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="EventLogTemplate">
    <xs:complexType>
      <xs:group ref="tns:EventLogTemplateElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="EventLogTemplateElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="targetResource" type="tns:expRef" minOccurs="0"/>
      <xs:element name="persistence" type="xs:string" minOccurs="0"/>
      <xs:element name="operation" type="tns:operationType" minOccurs="0" 
                  maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="EventLogTemplateRef">
    <xs:group ref="tns:EventLogTemplateElements"/>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="EventLogTemplateCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:EventLogTemplate" minOccurs="0"
                    maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Event">
    <xs:complexType>
      <xs:group ref="tns:EventElements"/>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="EventElements">
    <xs:sequence>
      <xs:group ref="tns:commonElements"/>
      <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="type" type="xs:string" minOccurs="0"/>
      <xs:element name="content" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:any namespace="##any" processContents="lax" minOccurs="0" 
                    maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:anyAttribute namespace="##any" processContents="lax"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="outcome" type="xs:string" minOccurs="0"/>
      <xs:element name="severity" type="xs:string" minOccurs="0"/>
      <xs:element name="contact" type="xs:string" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="EventCollRef">
    <xs:choice>
      <xs:sequence/>
      <xs:sequence>
        <xs:element name="id" type="xs:anyURI"/>
        <xs:element name="count" type="xs:integer"/>
        <xs:element ref="tns:Event" minOccurs="0" maxOccurs="unbounded"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0"
                maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="href" type="xs:anyURI"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

</xs:schema>
