blob: 16344a7f876c514d3d70e1b56a2bf274da52b3ee [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema attributeFormDefault="qualified" jaxb:version="2.1"
elementFormDefault="qualified" targetNamespace="http://schema.ogf.org/urf/2003/09/urf"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:urf="http://schema.ogf.org/urf/2003/09/urf"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<xsd:annotation>
<!-- Copyright (c) 2003-2008 Open Grid Forum -->
<xsd:documentation xml:lang="en">Usage Record Working Group XML Schema definition</xsd:documentation>
<xsd:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="org.ogf.usage.v1_0" />
</jaxb:schemaBindings>
</xsd:appinfo>
</xsd:annotation>
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmlds.xsd" /> <!-- http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd -->
<xsd:complexType name="UsageRecordType">
<xsd:sequence>
<xsd:element ref="urf:RecordIdentity" />
<xsd:element minOccurs="0" ref="urf:JobIdentity" />
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:UserIdentity" />
<xsd:element minOccurs="0" ref="urf:JobName" />
<xsd:element minOccurs="0" ref="urf:Charge" />
<xsd:element ref="urf:Status" />
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
The elements grouped together in this choice may be represented
within a usage record multiple times. Each of these appearances
must be differentiated by the metric and/or type associated with
the element.
</xsd:documentation>
</xsd:annotation>
<xsd:element ref="urf:Disk" />
<xsd:element ref="urf:Memory" />
<xsd:element ref="urf:Swap" />
<xsd:element ref="urf:Network" />
<xsd:element ref="urf:TimeDuration" />
<xsd:element ref="urf:TimeInstant" />
<xsd:element ref="urf:ServiceLevel" />
</xsd:choice>
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:element minOccurs="0" ref="urf:WallDuration" />
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="2" minOccurs="0" ref="urf:CpuDuration" />
</xsd:sequence>
<xsd:element minOccurs="0" ref="urf:NodeCount" />
<xsd:element minOccurs="0" ref="urf:Processors" />
<xsd:element minOccurs="0" ref="urf:EndTime" />
<xsd:element minOccurs="0" ref="urf:StartTime" />
<xsd:element minOccurs="0" ref="urf:MachineName" />
<xsd:element minOccurs="0" ref="urf:SubmitHost" />
<xsd:element minOccurs="0" ref="urf:Queue" />
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:ProjectName" />
</xsd:sequence>
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:Host" />
</xsd:sequence>
<xsd:sequence minOccurs="0">
<xsd:choice maxOccurs="unbounded" minOccurs="0">
<xsd:element ref="urf:PhaseResource" />
<xsd:element ref="urf:VolumeResource" />
<xsd:element ref="urf:Resource" />
<xsd:element ref="urf:ConsumableResource" />
</xsd:choice>
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element abstract="true" name="Usage" type="urf:UsageRecordType" />
<xsd:element name="UsageRecord" substitutionGroup="urf:Usage"
type="urf:UsageRecordType" />
<xsd:element name="JobUsageRecord" substitutionGroup="urf:Usage">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:UsageRecordType" />
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="UsageRecords">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="urf:Usage" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Common properties that may be measured with several different metrics
within the same usage record -->
<xsd:element name="Network">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Disk">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Memory">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Swap">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attributeGroup ref="urf:intervallicVolume" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeCount">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute default="total" ref="urf:metric" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Processors">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute ref="urf:metric" use="optional" />
<xsd:attribute name="consumptionRate" type="xsd:float"
use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="TimeDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="TimeInstant">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceLevel">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute ref="urf:type" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!-- This element should appear at most twice within a usage record, with
differing values for usageType for each appearance -->
<xsd:element name="CpuDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute name="usageType">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="user" />
<xsd:enumeration value="system" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!-- These common properties should appear at most once within a usage record,
rather that at most once per metric per usage record -->
<xsd:element name="WallDuration">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:duration">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="EndTime">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="StartTime">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="MachineName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="SubmitHost">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Host">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="urf:domainNameType">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute default="false" name="primary" type="xsd:boolean" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Queue">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="JobName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProjectName">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Status">
<xsd:annotation>
<xsd:documentation>
Minimum required set = {Aborted, Completed, Failed,
Held, Queued, Started, Suspended}
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Charge">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:float">
<xsd:attribute ref="urf:description" use="optional" />
<xsd:attribute ref="urf:unit" use="optional" />
<xsd:attribute name="formula" type="xsd:string" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<!-- identity elements -->
<xsd:element name="JobIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="GlobalJobId" type="xsd:string" />
<xsd:element minOccurs="0" name="LocalJobId" type="xsd:string" />
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="ProcessId" type="xsd:string" />
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UserIdentity">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="LocalUserId" type="xsd:string" />
<xsd:element minOccurs="0" name="GlobalUserName" type="xsd:string" />
<xsd:element minOccurs="0" ref="ds:KeyInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RecordIdentity">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element ref="ds:KeyInfo" />
</xsd:sequence>
<xsd:attribute name="recordId" type="xsd:token" use="required" />
<xsd:attribute name="createTime" type="xsd:dateTime" use="optional" />
</xsd:complexType>
</xsd:element>
<!-- Extensibility Framework -->
<xsd:element name="Resource" type="urf:ResourceType" />
<xsd:element name="ConsumableResource" type="urf:ConsumableResourceType" />
<xsd:element name="PhaseResource">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:ConsumableResourceType">
<xsd:attribute ref="urf:phaseUnit" use="optional" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="VolumeResource">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="urf:ConsumableResourceType">
<xsd:attribute ref="urf:storageUnit" use="optional" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<!-- Create a generic consumable resource. Carries the units attribute -->
<xsd:complexType name="ConsumableResourceType">
<xsd:simpleContent>
<xsd:extension base="xsd:float">
<xsd:attribute name="units" type="xsd:string" use="optional" />
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Create a generic resource type -->
<xsd:complexType name="ResourceType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="urf:description" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Global Attribute Definitions -->
<xsd:attribute name="description" type="xsd:string" />
<!-- Units of measure attribute definitions -->
<xsd:attribute name="unit" type="xsd:token" />
<xsd:attribute name="storageUnit">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="b" />
<xsd:enumeration value="B" />
<xsd:enumeration value="KB" />
<xsd:enumeration value="MB" />
<xsd:enumeration value="GB" />
<xsd:enumeration value="PB" />
<xsd:enumeration value="EB" />
<xsd:enumeration value="Kb" />
<xsd:enumeration value="Mb" />
<xsd:enumeration value="Gb" />
<xsd:enumeration value="Pb" />
<xsd:enumeration value="Eb" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="phaseUnit" type="xsd:duration" />
<xsd:attributeGroup name="intervallicVolume">
<xsd:attribute ref="urf:storageUnit" use="optional" />
<xsd:attribute ref="urf:phaseUnit" use="optional" />
</xsd:attributeGroup>
<!-- End units attributes -->
<xsd:attribute name="metric" type="xsd:token" />
<xsd:attribute name="type" type="xsd:token" />
<!-- Simple type definitions used to constrain values of attributes -->
<xsd:simpleType name="domainNameType">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="([a-zA-Z0-9][a-zA-Z0-9'\-']*[a-zA-Z0-9]\.)*([a-zA-Z0-9][a-zA-Z0-9'\-']*[a-zA-Z0-9])?" />
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>