<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://gridway.org" xmlns="http://gridway.org" elementFormDefault="qualified">
<xsd:element name="gridway">
<xsd:complexType>
<xsd:choice>
<!-- Here we insert the different command syntaxes -->
<xsd:element name="gwhost">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HOST" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HOSTNAME" type="xsd:string"/>
<xsd:element name="FIXED_PRIORITY" type="xsd:integer"/>
<xsd:group ref="gwhostfull_vars"/>
<xsd:group ref="generic_vars"/>
<xsd:element name="QUEUE" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="QUEUE_NAME" type="xsd:string"/>
<xsd:group ref="gwhostfull_queue_vars"/>
<xsd:group ref="gwhostmatch_queue_vars"/>
<xsd:group ref="generic_vars"/>
</xsd:sequence>
<xsd:attribute name="QUEUE_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="HOST_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="JOB_ID" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>

<xsd:element name="gwps">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="JOB" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NAME" type="xsd:string"/>
<xsd:element name="USER" type="xsd:string"/>
<xsd:element name="UID" type="xsd:integer"/>
<xsd:group ref="array_vars"/>
<xsd:element name="HOST" type="xsd:string"/>
<xsd:element name="FIXED_PRIORITY" type="xsd:integer"/>
<xsd:element name="DEADLINE" type="xsd:string"/>
<xsd:element name="TYPE" type="xsd:string"/>
<xsd:element name="NP" type="xsd:integer"/>
<xsd:element name="JOB_STATE" type="xsd:string"/>
<xsd:element name="EM_STATE" type="xsd:string"/>
<xsd:element name="RESTARTED" type="xsd:integer"/>
<xsd:element name="CLIENT_WAITING" type="xsd:integer"/>
<xsd:element name="RESCHEDULE" type="xsd:integer"/>
<xsd:element name="START_TIME" type="xsd:string"/>
<xsd:element name="EXIT_TIME" type="xsd:string"/>
<xsd:element name="EXEC_TIME" type="xsd:string"/>
<xsd:element name="XFR_TIME" type="xsd:string"/>
<xsd:element name="EXIT_CODE" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="JOB_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="USERNAME" type="xsd:string"/>
<xsd:attribute name="HOSTNAME" type="xsd:string"/>
</xsd:complexType>
</xsd:element>

<xsd:element name="gwhistory">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="JOB">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HISTORY">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HID" type="xsd:integer"/>
<xsd:element name="START_TIME" type="xsd:string"/>
<xsd:element name="EXIT_TIME" type="xsd:string"/>
<xsd:element name="PROLOG" type="xsd:string"/>
<xsd:element name="WRAPPER" type="xsd:string"/>
<xsd:element name="EPILOG" type="xsd:string"/>
<xsd:element name="MIGRATION" type="xsd:string"/>
<xsd:element name="REASON" type="xsd:string"/>
<xsd:element name="QUEUE" type="xsd:string"/>
<xsd:element name="HOST" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="HISTORY_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="JOB_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="gwuser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="USER">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="USERNAME" type="xsd:string"/>
<xsd:element name="ACTIVE_JOBS" type="xsd:integer"/>
<xsd:element name="RUNNING_JOBS" type="xsd:integer"/>
<xsd:element name="IDLE" type="xsd:integer"/>
<xsd:element name="IDENTITY" type="xsd:string"/>
<xsd:group ref="gwuser_mad_vars"/>
</xsd:sequence>
<xsd:attribute name="USER_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="gwacct">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HOST" minOccurs="0">
<xsd:complexType>
<xsd:group ref="gwacct_vars"/>
<xsd:attribute name="HOSTNAME" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="USER" minOccurs="0">
<xsd:complexType>
<xsd:group ref="gwacct_vars"/>
<xsd:attribute name="USERNAME" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="USERNAME" type="xsd:string"/>
<xsd:attribute name="HOSTNAME" type="xsd:string"/>
</xsd:complexType>
</xsd:element>

<!-- Command structure finished -->
</xsd:choice>
</xsd:complexType>
</xsd:element>

<xsd:group name="gwhostfull_vars">
<xsd:sequence>
<xsd:element name="OS_NAME" type="xsd:string" minOccurs="0"/>
<xsd:element name="OS_VERSION" type="xsd:string" minOccurs="0"/>
<xsd:element name="ARCH" type="xsd:string" minOccurs="0"/>
<xsd:element name="CPU_MHZ" type="xsd:integer" minOccurs="0"/>
<xsd:element name="CPU_FREE" type="xsd:integer" minOccurs="0"/>
<xsd:element name="FREE_MEM_MB" type="xsd:integer" minOccurs="0"/>
<xsd:element name="SIZE_MEM_MB" type="xsd:integer" minOccurs="0"/>
<xsd:element name="FREE_DISK_MB" type="xsd:integer" minOccurs="0"/>
<xsd:element name="SIZE_DISK_MB" type="xsd:integer" minOccurs="0"/>
<xsd:element name="RUNNING_JOBS" type="xsd:integer" minOccurs="0"/>
<xsd:element name="USED_SLOTS" type="xsd:integer" minOccurs="0"/>
<xsd:element name="FREENODECOUNT" type="xsd:integer" minOccurs="0"/>
<xsd:element name="NODECOUNT" type="xsd:integer" minOccurs="0"/>
<xsd:element name="LRMS_NAME" type="xsd:string" minOccurs="0"/>
<xsd:element name="LRMS_TYPE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:group>

<xsd:group name="gwhostfull_queue_vars">
<xsd:sequence>
<xsd:element name="QUEUE_FREENODECOUNT" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_NODECOUNT" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_MAXTIME" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_MAXCPUTIME" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_MAXCOUNT" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_MAXRUNNINGJOBS" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_MAXJOBSINQUEUE" type="xsd:integer" minOccurs="0"/>
<xsd:element name="QUEUE_STATUS" type="xsd:string" minOccurs="0"/>
<xsd:element name="QUEUE_DISPATCHTYPE" type="xsd:string" minOccurs="0"/>
<xsd:element name="QUEUE_PRIORITY" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:group>

<xsd:group name="gwhostmatch_queue_vars">
<xsd:sequence>
<xsd:element name="RANK" type="xsd:integer" minOccurs="0"/>
<xsd:element name="SLOTS" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:group>

<xsd:group name="array_vars">
<xsd:sequence>
<xsd:element name="ARRAY_ID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="TASK_ID" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:group>

<xsd:group name="generic_vars">
<xsd:sequence>
<xsd:element name="GENERIC_VAR_INT" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="NAME" type="xsd:string" use="required"/>
<xsd:attribute name="VALUE" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="GENERIC_VAR_STR" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="NAME" type="xsd:string" use="required"/>
<xsd:attribute name="VALUE" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>

<xsd:group name="gwuser_mad_vars">
<xsd:sequence>
<xsd:element name="EM_MAD" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NAME" type="xsd:string"/>
<xsd:element name="PID" type="xsd:integer"/>
</xsd:sequence>
<xsd:attribute name="MAD_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="TM_MAD" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NAME" type="xsd:string"/>
<xsd:element name="PID" type="xsd:integer"/>
</xsd:sequence>
<xsd:attribute name="MAD_ID" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>

<xsd:group name="gwacct_vars">
<xsd:sequence>
<xsd:element name="TRANSFER" type="xsd:string"/>
<xsd:element name="EXECUTION" type="xsd:string"/>
<xsd:element name="SUSPENSION" type="xsd:string"/>
<xsd:element name="TOTS" type="xsd:integer"/>
<xsd:element name="SUCC" type="xsd:integer"/>
<xsd:element name="ERR" type="xsd:integer"/>
<xsd:element name="KILL" type="xsd:integer"/>
<xsd:element name="USER" type="xsd:integer"/>
<xsd:element name="SUSP" type="xsd:integer"/>
<xsd:element name="DISC" type="xsd:integer"/>
<xsd:element name="SELF" type="xsd:integer"/>
<xsd:element name="PERF" type="xsd:integer"/>
<xsd:element name="S-R" type="xsd:integer"/>
</xsd:sequence>
</xsd:group>

</xsd:schema>

