STAGETO=interface
XSLTPROC=xsltproc
+XMLLINT:=xmllint
+docbookxls:=http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
#WSDL=JobProvenancePS.wsdl JobProvenanceIS.wsdl JobProvenanceTypes.wsdl
WSDL=JobProvenancePS.wsdl JobProvenanceTypes.wsdl
%.wsdl: %.xml
${XSLTPROC} ../src/puke-wsdl.xsl $< >$@
+
+JobProvenancePS.html: doc.xml JobProvenancePS.xml JobProvenanceTypes.xml puke-ug.xsl
+ ${XSLTPROC} --novalid ../src/puke-ug.xsl $< >doc-html.xml
+ ${XMLLINT} --valid --noout doc-html.xml
+ ${XSLTPROC} --stringparam chapter.autolabel 0 ${docbookxls} doc-html.xml >$@
elemPrefix="jpe"
xmlns:jpt="http://glite.org/wsdl/types/jp">
+ <version>CVS revision: <![CDATA[ $Header$ ]]></version>
+
<import namespace="http://glite.org/wsdl/services/jp" location="JobProvenanceTypes.wsdl"/>
+ <doc>
+ <para>
+ The Job Provenance (JP) Primary Storage Service is responsible
+ to keep the JP data
+ (definition of submitted jobs, execution conditions and environment,
+ and important points of the job life cycle) in a compact and
+ economic form.
+ </para>
+
+ <para>
+ The JP Primary storage, as described in section 8.4 of
+ the
+ <ulink url="https://edms.cern.ch/document/594698/">
+ Architecture deliverable DJRA1.1
+ </ulink>
+ provides public interfaces for data storing,
+ retrieval based on basic metadata, and registration of Index servers for
+ incremental feed.
+ </para>
+
+ <para>
+ Command interface to JP is completely covered by the WS interface covered here.
+ Bulk file transfers are done via specialised protocols, currently gsiftp only.
+ </para>
+ </doc>
+
<fault name="genericFault"/>
<operations>
<op name="RegisterJob">
- <input name="job" type="xsd:string"></input>
- <input name="owner" type="xsd:string"></input>
- <fault name="genericFault" type="genericFault"></fault>
+ Register job with the JP primary storage.
+ <input name="job" type="xsd:string">Jobid of the registered job.</input>
+ <input name="owner" type="xsd:string">Owner of the job (DN of X509 certificate).</input>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="StartUpload">
- <input name="job" type="xsd:string"></input>
- <input name="class" type="xsd:string"></input>
- <input name="name" type="xsd:string"></input>
- <input name="commitBefore" type="xsd:dateTime"></input>
- <input name="contentType" type="xsd:string"></input>
- <output name="destination" type="xsd:string"></output>
- <output name="commitBefore" type="xsd:dateTime"></output>
- <fault name="genericFault" type="genericFault"></fault>
+ Start uploading a file.
+ <input name="job" type="xsd:string">Jobid to which this file is related.</input>
+ <input name="class" type="xsd:string">
+ Type of the file (URI). The server must have a plugin handing this type.
+ </input>
+ <input name="name" type="xsd:string">Name of the file (used to distinguish among more files of the same type).</input>
+ <input name="commitBefore" type="xsd:dateTime">The client promisses to finish the upload before this time.</input>
+ <input name="contentType" type="xsd:string">MIME type of the file.</input>
+ <output name="destination" type="xsd:string">URL where the client should upload the file.</output>
+ <output name="commitBefore" type="xsd:dateTime">Server's view on when the upload must be finished.</output>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="CommitUpload">
- <input name="destination" type="xsd:string"></input>
- <fault name="genericFault" type="genericFault"></fault>
+ Confirm a successfully finished file apload.
+ <input name="destination" type="xsd:string">Destination URL returned by StartUpload before.</input>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="RecordTag">
- <input name="jobid" type="xsd:string"></input>
- <input name="tag" type="tagValue"></input>
- <fault name="genericFault" type="genericFault"></fault>
+ Record an additional user tag.
+ <input name="jobid" type="xsd:string">Job to which the tag is added.</input>
+ <input name="tag" type="tagValue">Name and value of the tag.</input>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="FeedIndex">
- <input name="destination" type="xsd:string"></input>
- <input name="attributes" type="xsd:string" list="yes"></input>
- <input name="conditions" type="primaryQuery" list="yes"></input>
- <input name="history" type="xsd:boolean"></input>
- <input name="continuous" type="xsd:boolean"></input>
- <output name="feedId" type="xsd:string"></output>
- <output name="feedExpires" type="xsd:dateTime"></output>
- <fault name="genericFault" type="genericFault"></fault>
+ Request for feeding a JP Index server (issued by this server).
+ <input name="destination" type="xsd:string">Endpoint of the listening index server.</input>
+ <input name="attributes" type="xsd:string" list="yes">Which attributes of jobs is the index server interested in.</input>
+ <input name="conditions" type="primaryQuery" list="yes">Which jobs is the server interested in.</input>
+ <input name="history" type="xsd:boolean">Data on jobs stored at PS in the past are required.</input>
+ <input name="continuous" type="xsd:boolean">Data on jobs that will arrive in future are required.</input>
+ <output name="feedId" type="xsd:string">Unique ID of the created feed session.</output>
+ <output name="feedExpires" type="xsd:dateTime">When the session expires.</output>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="FeedIndexRefresh">
- <input name="feedId" type="xsd:string"></input>
- <output name="feedExpires" type="xsd:dateTime"></output>
- <fault name="genericFault" type="genericFault"></fault>
+ Refresh an existing feed session.
+ <input name="feedId" type="xsd:string">Existing feed session ID to be refreshed.</input>
+ <output name="feedExpires" type="xsd:dateTime">New session expiration time.</output>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
<op name="GetJob">
- <input name="jobid" type="xsd:string"></input>
- <output name="files" type="jppsFile" list="yes" optional="yes"></output>
- <fault name="genericFault" type="genericFault"></fault>
+ Return URL's of files for a given single job.
+ <input name="jobid" type="xsd:string">The job.</input>
+ <output name="files" type="jppsFile" list="yes" optional="yes">List of the stored files.</output>
+ <fault name="genericFault" type="genericFault">Any error.</fault>
</op>
</operations>
ns="http://glite.org/wsdl/services/jp"
typePrefix="jpt">
+ <version>CVS revision: <![CDATA[ $Header$ ]]></version>
+
<types ns="http://glite.org/wsdl/types/jp">
<enum name="queryOp">
+ Operators used in queries. Most are self-explanatory.
<val name="EQUAL"></val>
<val name="UNEQUAL"></val>
<val name="LESS"></val>
<val name="GREATER"></val>
- <val name="WITHIN"></val>
+ <val name="WITHIN">The attribute is between two specified values.</val>
</enum>
<struct name="tagValue">
- <elem name="name" type="xsd:string"></elem>
- <elem name="sequence" type="xsd:int" optional="yes"></elem>
- <elem name="timestamp" type="xsd:dateTime" optional="yes"></elem>
- <elem name="stringValue" type="xsd:string" optional="yes"></elem>
- <elem name="blobValue" type="xsd:base64Binary" optional="yes"></elem>
+ A single value for a user tag.
+ <elem name="name" type="xsd:string">Name of the tag.</elem>
+ <elem name="sequence" type="xsd:int" optional="yes">Sequence of this value (if there are more occurences of this tag it may be used to order them.</elem>
+ <elem name="timestamp" type="xsd:dateTime" optional="yes">When the tag was created.</elem>
+ <elem name="stringValue" type="xsd:string" optional="yes">Value - printable string.</elem>
+ <elem name="blobValue" type="xsd:base64Binary" optional="yes">Value - binary.</elem>
</struct>
<struct name="genericFault" fault="yes">
<elem name="code" type="xsd:int"></elem>
<elem name="text" type="xsd:string"></elem>
<elem name="description" type="xsd:string" optional="yes"></elem>
- <elem name="reason" type="jpt:genericFault" optional="yes"></elem>
+ <elem name="reason" type="genericFault" optional="yes"></elem>
</struct>
<struct name="primaryQuery">
--- /dev/null
+<?xml version="1.0"?>
+<book/>
--- /dev/null
+<?xml version="1.0"?>
+
+<!-- $Header$ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output indent="yes" doctype-public="-//OASIS//DTD DocBook XML V4.4//EN"
+ doctype-system="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"/>
+
+<xsl:template match="book">
+ <chapter>
+ <title><xsl:value-of select="document('JobProvenancePS.xml')/service/@name"/></title>
+
+ <sect1>
+ <title>Overview</title>
+ <xsl:copy-of select="document('JobProvenancePS.xml')/service/doc/*"/>
+ </sect1>
+
+ <sect1>
+ <title>Operations</title>
+ <para> <emphasis><xsl:value-of select="document('JobProvenancePS.xml')/service/version"/></emphasis> </para>
+ <!-- xsl:apply-templates select="operations/op" -->
+ <xsl:apply-templates select="document('JobProvenancePS.xml')/service/operations/op">
+ <xsl:sort select="@name"/>
+ </xsl:apply-templates>
+ </sect1>
+
+ <sect1>
+ <title>Types</title>
+ <!--xsl:apply-templates select="types"/ -->
+ <para> <emphasis><xsl:value-of select="document('JobProvenanceTypes.xml')/service/version"/></emphasis> </para>
+ <xsl:apply-templates select="document('JobProvenanceTypes.xml')/service/types"/>
+ </sect1>
+ </chapter>
+</xsl:template>
+
+
+<xsl:template match="input|output|fault">
+ <varlistentry>
+ <term>
+ <!--type-->
+ <xsl:if test = "@list = 'yes'">list of </xsl:if>
+ <xsl:choose>
+ <xsl:when test="not(starts-with(@type,'xsd:'))">
+ <link linkend="type:{@type}">
+ <type><xsl:value-of select="@type "/> </type> </link>
+ </xsl:when>
+ <xsl:otherwise><type><xsl:value-of select="@type "/> </type> </xsl:otherwise>
+ </xsl:choose>
+ <!--/type-->
+ <parameter> <xsl:value-of select=" @name"/></parameter>
+ </term>
+ <listitem>
+ <simpara><xsl:value-of select="text()"/></simpara>
+ </listitem>
+ </varlistentry>
+</xsl:template>
+
+<xsl:template match="op" >
+ <sect2 id="op:{@name}">
+ <title><xsl:value-of select="@name"/></title>
+ <para><xsl:value-of select="text()"/></para>
+ <para>
+ Inputs:
+ <xsl:choose>
+ <xsl:when test="count(./input)>0">
+ <variablelist>
+ <xsl:apply-templates select="./input"/>
+ </variablelist>
+ </xsl:when>
+ <xsl:otherwise>N/A</xsl:otherwise>
+ </xsl:choose>
+ </para>
+ <para>
+ Outputs:
+ <xsl:choose>
+ <xsl:when test="count(./output)>0">
+ <variablelist>
+ <xsl:apply-templates select="./output"/>
+ </variablelist>
+ </xsl:when>
+ <xsl:otherwise>N/A</xsl:otherwise>
+ </xsl:choose>
+ </para>
+ </sect2>
+</xsl:template>
+
+<xsl:template match="types">
+ <xsl:for-each select="flags|enum|struct|choice">
+ <xsl:sort select="@name"/>
+ <sect2 id="type:{@name}">
+ <title> <xsl:value-of select="@name"/> </title>
+ <para> <xsl:value-of select="text()"/> </para>
+ <xsl:choose>
+ <xsl:when test="name(.)='struct'">
+ <para> <emphasis>Structure</emphasis> (sequence complex type in WSDL)</para>
+ <para> Fields: ( <type>type </type> <structfield>name</structfield> description )</para>
+ </xsl:when>
+ <xsl:when test="name(.)='choice'">
+ <para> <emphasis>Union</emphasis> (choice complex type in WSDL)</para>
+ <para> Fields: ( <type>type </type> <structfield>name</structfield> description )</para>
+ </xsl:when>
+ <xsl:when test="name(.)='enum'">
+ <para> <emphasis>Enumeration</emphasis> (restriction of xsd:string in WSDL),
+ exactly one of the values must be specified.
+ </para>
+ <para> Values: </para>
+ </xsl:when>
+ <xsl:when test="name(.)='flags'">
+ <para> <emphasis>Flags</emphasis> (sequence of restricted xsd:string in WSDL),
+ any number of values can be specified together.
+ </para>
+ <para> Values: </para>
+ </xsl:when>
+ </xsl:choose>
+ <variablelist>
+ <xsl:for-each select="elem|val">
+ <varlistentry>
+ <term>
+ <xsl:choose>
+ <xsl:when test="name(.)='elem'">
+ <xsl:if test="@list = 'yes'">list of </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@type!='string' and @type!='int' and not(starts-with(@type,'xsd:'))">
+ <link linkend="type:{@type}">
+ <type><xsl:value-of select="@type "/> </type>
+ </link>
+ </xsl:when>
+ <xsl:otherwise><type><xsl:value-of select="@type "/></type></xsl:otherwise>
+ </xsl:choose>
+ <!-- <type><xsl:value-of select="@type"/></type> -->
+ <xsl:value-of select="' '"/>
+ <structfield><xsl:value-of select="@name"/></structfield>
+ </xsl:when>
+ <xsl:otherwise>
+ <constant><xsl:value-of select="@name"/></constant>
+ </xsl:otherwise>
+ </xsl:choose>
+ </term>
+ <listitem>
+ <simpara>
+ <xsl:if test="@optional = 'yes'"> (optional) </xsl:if>
+ <!-- <xsl:if test="@list = 'yes'"> (multiple occurence) </xsl:if> -->
+ <xsl:value-of select=" text()"/>
+ </simpara>
+ </listitem>
+ </varlistentry>
+ </xsl:for-each>
+ </variablelist>
+ </sect2>
+ </xsl:for-each>
+</xsl:template>
+
+
+</xsl:stylesheet>