<?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: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="key" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="loginPubKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="loginKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="geniKey" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="geniKeyPass" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="keyid" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="loginPriKey" type="loginKey0" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="geniKeyAlias" type="xs:string" minOccurs="0">
              </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="action" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </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:sequence>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="file" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="register">
       <xs:sequence>
              <xs:element name="pwd" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="result">
       <xs:sequence>
              <xs:element name="info" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="file" type="attribute" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="status" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

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

<xs:complexType name="cloudCredentials">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="cloudProviderName" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="accessKeyId" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="secretKey" type="xs:string" minOccurs="0">
              </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="deployParameter">
       <xs:sequence>
              <xs:element name="user" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="role" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="IP" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="deployRequest">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="provisionID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="managerType" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="configurationID" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="deployResponse">
   <xs:complexContent>
    <xs:extension base="deployRequest">
      <xs:sequence>
              <xs:element name="ansibleOutputList" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="key">
       <xs:sequence>
              <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:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
              </xs:element>
              <xs:element name="type" type="keyType" minOccurs="0">
              </xs:element>
              <xs:element name="name" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="key" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:simpleType name="keyType">
  <xs:restriction base="xs:string">
     
    <xs:enumeration value="PRIVATE"/>
 
    <xs:enumeration value="PUBLIC"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="keyPair">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="privateKey" type="key" minOccurs="0">
              </xs:element>
              <xs:element name="keyPairId" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="publicKey" type="key" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="keyValueHolder">
   <xs:complexContent>
    <xs:extension base="ownedObject">
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="ownedObject">
       <xs:sequence>
              <xs:element name="owner" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="timestamp" type="xs:long" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="planRequest">
       <xs:sequence>
              <xs:element name="domain" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="toscaID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="osType" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="vmUserName" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="cloudProvider" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="managerType" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="planResponse">
   <xs:complexContent>
    <xs:extension base="keyValueHolder">
      <xs:sequence>
              <xs:element name="level" type="xs:int" minOccurs="0">
              </xs:element>
              <xs:element name="toscaID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="name" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="playbookRepresentation">
   <xs:complexContent>
    <xs:extension base="keyValueHolder">
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="provisionRequest">
   <xs:complexContent>
    <xs:extension base="keyValueHolder">
      <xs:sequence>
              <xs:element name="deployerKeyPairIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="planID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="cloudCredentialsIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="userKeyPairIDs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="provisionResponse">
   <xs:complexContent>
    <xs:extension base="provisionRequest">
      <xs:sequence>
              <xs:element name="deployParameters" type="deployParameter" minOccurs="0" maxOccurs="unbounded">
              </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="script">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="contents" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="name" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="toscaRepresentation">
   <xs:complexContent>
    <xs:extension base="keyValueHolder">
      <xs:sequence>
              <xs:element name="name" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="user">
       <xs:sequence>
              <xs:element name="roles" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="password" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="username" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="accountNonExpired" type="xs:boolean" minOccurs="1">
              </xs:element>
              <xs:element name="accountNonLocked" type="xs:boolean" minOccurs="1">
              </xs:element>
              <xs:element name="enabled" type="xs:boolean" minOccurs="1">
              </xs:element>
              <xs:element name="credentialsNonExpired" type="xs:boolean" minOccurs="1">
              </xs:element>
              <xs:element name="id" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="ansibleOutput">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="vmType" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="cloudProvider" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="provisionID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="host" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="cloudDeploymentDomain" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="benchmarkResult">
   <xs:complexContent>
    <xs:extension base="ownedObject">
      <xs:sequence>
              <xs:element name="host" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="delta" type="xs:dateTime" minOccurs="0">
              </xs:element>
              <xs:element name="cloudDeploymentDomain" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="vmType" type="xs:string" 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:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="sysbenchCPUBenchmark">
   <xs:complexContent>
    <xs:extension base="benchmarkResult">
      <xs:sequence>
              <xs:element name="sysbenchVersion" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="stddevExecTimePerThread" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="stddevEventsPerThread" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="maxExecutionTimePerRequest" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="numberOfThreads" type="xs:int" minOccurs="1">
              </xs:element>
              <xs:element name="avgExecTimePerThread" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="executionTime" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="minExecutionTimePerRequest" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="ansibleOutputID" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="totalNumberOfEvents" type="xs:int" minOccurs="1">
              </xs:element>
              <xs:element name="avgExecutionTimePerRequest" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="avgEventsPerThread" type="xs:double" minOccurs="1">
              </xs:element>
              <xs:element name="approx95Percentile" type="xs:double" minOccurs="1">
              </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

</xs:schema>