Bugzilla – Bug 4545
WS GRAM JSDL Support in GT 4.2
Last modified: 2008-05-06 16:33:12
You need to
before you can comment on or make changes to this bug.
Title: WS-GRAM JSDL Support in GT 4.2
- UK NGS
- (any others?)
Globus Resource Allocation Manager (GRAM)
JSDL is an accepted GGF standard specification for describing grid jobs. Since
JSDL became a standard, many groups have started to use it. To accommodate
this emerging standard, we propose to extend our factory web service interface
with an operation that takes a JSDL document, while leaving the original
createManagedJob operation the same. This will allow users to better plan when
they take on the transition from the current WS GRAM job description schema to
Then general plan is to add new operations and resource properties required to
support JSDL to the current WS GRAM service. Resulting in a single WS GRAM
service that is capable of processing a job specified using the current JDD
schema as well as a job specified using the JSDL schema. Clients written
before these JSDL enhancements will be able to interoperate with the new WS
GRAM service that supports both the current job description schema and JSDL.
The gram clients: globusrun-ws and gramJob java API will be updated to identify
the job as either JDD or JSDL and use the matching WS GRAM service operations.
The globusrun-ws job wrapper scripts (globus-job-*-ws) will not be altered and
will continue to specify job's in JDD format.
1) Auto-generated classes for the JSDL and JSDL Posix extension schemas.
2) A document describing exactly how we propose to map JSDL to
JobDescriptionType and MultiJobDescriptionType.
3) A new createManagedJobFromJSDL operation in the ManagedJobFactoryPortType
WSDL that takes a JSDL document instead of a JobDescriptionType or
MultiJobDescriptionType document, converts the JSDL data structure to the
associated data structures for the latter two types, and calls the original
4) Updated ManagedJobPortType WSDL that includes a "JSDL" resource property
which contains the JSDL document.
5) A Java class named JsdlGramJob that extends GramJob but also takes JSDL
6) An updated globusrun-ws client that accepts JSDL in addition to our
proprietary job description format.
7) Additional unit tests for the new operation.
8) Additional scheduler tests that use JSDL instead of our prioprietary job
9) Documentation describing the new operation, the new resource property, the
mappings from #2, and client examples.
1) Create a document that describes all mappings and extensions needed to
convert a JSDL document into a JobDescriptionType or MultiJobDescriptionType
2) Import the JSDL and JSDL Posix extension schemas into the 4.2 schema CVS
3) Add a "createManagedJobFromJSDL" operation in the 4.2 factory schema.
4) Add a "JSDL" resource property to the 4.2 job schema.
5) Update Ant bulid files to generate Java classes for the new factory, job,
and JSDL schemas.
6) Update the WS-GRAM C bindings package to generate C code for the new
factory, job, and JSDL schemas.
7) Create a new JdslGramJob class that inherits from GramJob with additional
methods and functionality to handle JSDL documents.
8) Update globusrun-ws to detect which job description format is being used,
modify the document as needed, and call the appropriate job creation operation.
9) Add unit tests that stress the createManagedJobFromJSDL operation.
10) Add a unit test for the new "JSDL" resource property.
11) Add duplicate scheduler tests that use equivalent JSDL documents.
12) Add factory public interface documentation describing the
13) Add job public interface documentation describing the "JSDL" resource
14) Add public interface documentation describing the mappings form JSDL to our
prioprietary job description format, including any extensions to JDSL that were
Tasks 2, 3, and 5 are essentially done. I'm still debugging stub generation
errors, though. I've added JSDL extension schemas for GRAM and RFT, but have
yet to create the document required for task 1.
Actually, #3 is not done. I added the method skeleton but have not implemented
Created an attachment (id=994) [details]
GRAM JDD to JSDL mappings
I'm changing task/deliverable #4 so that that resource property is simply a
reference to jsdl:JobDefinition instead of gram-job:JSDL (of type
jsdl:JobDefinition_Type). JSDL afterall is technically the schema rather than a
document that conforms to the schema. It also makes it more clear what you're
Along these lines, I'm also changing the name of the new operation (deliverable
#3) to CreateManagedJobFromJSDLJobDefinition.
Created an attachment (id=997) [details]
GRAM JDD to JSDL mappings
Update element mapping document that makes things a little clearer and includes
changes based on development experience.
After much C WS Core debugging help from Joe, task #6 has been completed. I'm
almost done with the JsdlGramJob class (task #7/deliverable #5) so that I can
at least test the service to some extent.
Task #7 (deliverable #5) is done. I've been able to submit the following simple
JSDL job using the JsdlGramJob class:
<?xml version="1.0" encoding="UTF-8"?>
Created an attachment (id=1017) [details]
GRAM JDD to JSDL mappings
I updated globusrun-ws, but I'm having problems debugging seg faults. The JSDL
extension schemas might change again, so I may update for those changes first
before either getting help from Joe or handing it off to him altogether.
A status update is long overdue...
I was on vacation from the end of July through the first two weeks of August.
I did some work on rearranging the JSDL extensions and some other
implementation details after some feedback for most of the rest of August. I
also had a Chicago trip that prevented me from doing anything for almost a
I was again off for the first week in September. I was at
GlobusWorld/OGF/GridWorld for the second week in September. The third week of
September I was occupied with preparations for another meeting in the fourth
week of September. This means that I got nothing done wrt this campaign in
I've been playing catch up and doing some GRAM planning for the last few days.
There are some serious issues that are blocking MPICH-G development that I need
to attend to. Once I'm done with that I will hopefully be able to once again do
some work on this campaign.
Created an attachment (id=1128) [details]
XSLT jsdl to xrsl transformation, only core jsdl elements without any
We are preparing a plugin for gt4 for our stuff at PSNC in Poland. We have web
application which generates JSDL job descriptions so we need such thing. I
managed to write some xslt transformation from JSDL v1.0 to GT4 job description
xml. I used your mappings. I decided to translate only core elements without
adding any gt4 extension for jsdl but I think it could be helpful for you
Now that SC is out of the way I can finish this stuff up. I had to help out
with getting some patches to VDT too. Not to mention some bug work.
Anyway, I abused the gram_jsdl_branch to work on the BES demo since that's
where all the JSDL work was and I had little time to mess with branching. That
means I need to clean some stuff up before merging to HEAD. I should be able to
finish that on Monday.
To avoid dealing with backwards compatibility issues, I changed the service to
accept the JSDL document in the extensions section instead of a replacement
create operation which is really a hack to get around the inability to have an
operation with the same local name but different namespace. All JDD elements
are optional, so the clients can simply wrap the JSDL document in an extensions
element inside of a jobDescription element and reuse the same submission code.
Things are working pretty good wrapped in the <extensions> element. I'm almost
done adding equivalent scheduler tests for JSDL. I'm considering disabling
automatic delegation in globusrun-ws for JSDL documents for lack of time. It
does work with manual delegation, though.
I finally fixed things for the local ouput, non-multi scheduler tests that I
added . The things left to address are automatic delegation with globusrun-ws,
multijob functionality, and documentation.
Created an attachment (id=1145) [details]
JSDL Delegation Pseudoschema
I'm attaching a pseudoschema that illustrates with incomplete examples the
differences between how the GRAM JDL and JSDL (via extensions) supports
delegated credential references.
We've decided to go ahead and create an extra service deployment with a WSDL
that overrides the current createManagedJob operation. I have the service work
I've been working on a new client API to abstract out all the different
versions of the service that we're supporting (currently 4.0, 4.2/JSDL, and
BES) since GramJob is an utter nightmare now. I've finished coding on the
client API but still need to make it compile and test everything.
I'm told Joe Bester will update globusrun-ws once I'm done with the Java work.
That means that multijob support and documentation will be outstanding.
Documentation is more important at this point, but if I have time in January
after writing the documentation I will try to get that working.
I'm closing this campaign. It can reopen or rewrite a new campaign when we are
ready to take on jsdl.