<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0"
  
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="confScript" type="confScript"/>
  <xs:element name="confUserKey" type="confUserKey"/>
  <xs:element name="configure" type="configure"/>
  <xs:element name="deploy" type="deploy"/>
  <xs:element name="execute" type="execute"/>
  <xs:element name="plan" type="plan"/>
  <xs:element name="register" type="register"/>
  <xs:element name="result" type="result"/>
  <xs:element name="upload" type="upload"/>
<xs:complexType name="attribute">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="name" type="xs:string">
      </xs:attribute>
      <xs:attribute name="level" type="xs:string">
      </xs:attribute>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

<xs:complexType name="confScript">
   <xs:complexContent>
    <xs:extension base="execute">
      <xs:sequence>
              <xs:element name="script" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The script contents with new lines replace by '\n']]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="confUserKey">
   <xs:complexContent>
    <xs:extension base="execute">
      <xs:sequence>
              <xs:element name="userKey" type="attribute" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="configure">
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's there for backwards compatibility.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's there for backwards compatibility.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="keyid" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The key id for the cloud provider.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="key" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The key for the cloud provider.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="loginKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="geniKey" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The binary keystore (user.jks) for the cloud provider encoded in base64]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="geniKeyAlias" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Key alias in key store]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="loginPubKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="geniKeyPass" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="loginPriKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="deploy">
   <xs:complexContent>
    <xs:extension base="execute">
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="execute">
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's there for backwards compatibility.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's there for backwards compatibility.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="action" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[A referance id used from the servcie to do the provisioning]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="loginKey0">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="domain_name" type="xs:string">
      </xs:attribute>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

<xs:complexType name="plan">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a plan to be provided to the planner.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's only there for backwords compatibility]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. It's only there for backwords compatibility]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="file" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The contents of the TOSCA description]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="register">
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The user name]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The user password]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="result">
       <xs:sequence>
              <xs:element name="status" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The status of the response]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="info" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Not used. Not used. It's there for backwards compatibility.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="file" type="attribute" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="upload">
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="file" type="attribute" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="cloudCredentials">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents the cloud credentials. They are used by the provisoner
to request for resources.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="secretKey" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[It is the secret key / password for accessing a cloud provider.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="cloudProviderName" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The name of the cloud provider]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="accessKeyId" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The access key ID / user name for a cloud provider.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="attributes" minOccurs="0">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="key" minOccurs="1" type="xs:string"/>
            <xs:element name="value" minOccurs="1" type="xs:anyType"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="DRIPLogRecord">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This is the base class for users to own resources. Many classes extend this
class]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="level" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="loggerName" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="message" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="millis" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="sequenceNumber" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="sourceClassName" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="sourceMethodName" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="deployParameter">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class is used by the deployer to deploy software
(swarm,kubernetes,ansible). It is generated by the provisioner to contain VM
information.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="IP" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The public IP of the provisioned VM]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="user" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The user name of the account created on the provisioned VM]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="role" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The role of the provisioned VM]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="deployRequest">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class holds the necessary POJO IDs to request the deployment of a
software]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="provisionID" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The ID of the provision resources description <code>ProvisionResponse</code>]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="managerType" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The type of deployment manager to be used (swarm, ansile, kubernetes)]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="configurationID" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The ID of the configuration POJO that contains information used the
chosen deployment manager (for now only ansible)
<code>PlaybookRepresentation</code>]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="deployResponse">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents the response of a deploy request. It may hold a key
pair used for logging in and managing a docker cluster. Currently they key
pair is only used by kubernetes]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="deployRequest">
      <xs:sequence>
              <xs:element name="ansibleOutputList" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="scale" type="scaleRequest" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The scale information if any for this deployment]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="managerInfo" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[Returns manager info e.g. service status etc.]]>
                </xs:documentation>
              </xs:annotation>
  <xs:complexType>
    <xs:sequence>
      <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="key" minOccurs="1" type="xs:string"/>
            <xs:element name="value" minOccurs="1" type="xs:anyType"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="key">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a key. This key can be used to either login to a VM
created by the provisiner or by the VM to allow the user to login to the VMs
from the machine the keys correspond to.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="name" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The name of the key.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="type" type="keyType" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The type of key]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="attributes" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[A general use key,value. In the case of the cloud credentials it's used
to specify the domain name for ec2]]>
                </xs:documentation>
              </xs:annotation>
  <xs:complexType>
    <xs:sequence>
      <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="key" minOccurs="1" type="xs:string"/>
            <xs:element name="value" minOccurs="1" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
              </xs:element>
              <xs:element name="key" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The contents of the key.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:simpleType name="keyType">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This enu specifies if a key is private or public]]>
    </xs:documentation>
  </xs:annotation>
  <xs:restriction base="xs:string">
     
    <xs:enumeration value="PRIVATE"/>
 
    <xs:enumeration value="PUBLIC"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="keyPair">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class hold the pair of public private keys. The keys may be used for
logging in VMs.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="privateKey" type="key" minOccurs="0">
              </xs:element>
              <xs:element name="publicKey" type="key" minOccurs="0">
              </xs:element>
              <xs:element name="keyPairId" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="keyValueHolder">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This is a generic class that hold key-value pairs. It's main usage is to hold
abstract types such as TOSCA.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="monitorringMessage">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This is the base class for users to own resources. Many classes extend this
class]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="metricMame" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="subid" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="value" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="messageType" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="date" type="xs:dateTime" minOccurs="0">
              </xs:element>
              <xs:element name="time" type="xs:dateTime" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="ownedObject">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This is the base class for users to own resources. Many classes extend this
class]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="owner" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The owner (username) for the particular object. This value is set when
the DAO saves the object based on the principal who made the call.
It is created automatically. No need to set during a POST]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="provisionRequest">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class is a holder for the the object IDs that are required by the
provisioner to request for cloud resources.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="keyValueHolder">
      <xs:sequence>
              <xs:element name="cloudCredentialsIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The cloud credentials ids required to provision the cloud resources.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="planID" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The ID of the plan <code>PlanResponse</code> to provision for.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="userKeyPairIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The key pair id for the keys to use to log in the provisioned VMs.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="deployerKeyPairIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="provisionResponse">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a description of provisioned resources]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="provisionRequest">
      <xs:sequence>
              <xs:element name="deployParameters" type="deployParameter" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The deploy parameters.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="cloudKeyPairIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="scaleRequest">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a scale request for a deployment. At the moment we only
support swarm.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="scaleTargetID" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The ID of the deployment or provisioned resources to scale. For
deployment scale only swarm deployments are supported.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="scaleTargetName" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The name of the service or topology to scale.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="numOfInstances" type="xs:int" minOccurs="1">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The number of instances to start. This number is absolute not cumulative.
If we have 2 instances running and we request for 3 we'll have 3 if we
request 1 we'll have 1]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="script">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a simple script that can run on a provisioned VM.]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="name" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The name of the script]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="contents" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The contents of the script]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="user">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents a user.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="id" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The unique id of this object. This value is auto-generated when the DAO
saves this object]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="password" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="username" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The username]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="accountNonExpired" type="xs:boolean" minOccurs="1">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[If the account is not expired]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="accountNonLocked" type="xs:boolean" minOccurs="1">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[If the account is not locked]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="credentialsNonExpired" type="xs:boolean" minOccurs="1">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[If the credentials are not expired]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="enabled" type="xs:boolean" minOccurs="1">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[If the account is enabled]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="roles" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The roles assigned to this user.]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="ansibleOutput">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This class represents the the ansible out put for a specific VM. This can be
used as a archive / log of ansible executions]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="host" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The host (IP) of the VM that executed the playbook]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="cloudDeploymentDomain" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The cloud domain where the VM that run the playbook]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="vmType" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The type of VM that run the playbook]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="provisionID" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The provision used to spawn the VM for this playbook execution]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
              <xs:element name="cloudProvider" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
                  <![CDATA[The cloud provider]]>
                </xs:documentation>
              </xs:annotation>
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="benchmarkResult">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[This is the base class for users to own resources. Many classes extend this
class]]>
    </xs:documentation>
  </xs:annotation>
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="host" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="vmType" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="delta" type="xs:dateTime" minOccurs="0">
              </xs:element>
              <xs:element name="start" type="xs:dateTime" minOccurs="0">
              </xs:element>
              <xs:element name="end" type="xs:dateTime" minOccurs="0">
              </xs:element>
              <xs:element name="cloudDeploymentDomain" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

</xs:schema>