Hi Laurence, Sergio,

For me a cluster represents a set of resources that are managed, which
essentially is a batch system with a master server. The queue represents
two things; an end point and a policy.  The GRAM service is an interface
to the batch system and therefore an end point.

How you represent these things depends on the implementation.

1) If the job attributes are passed to the batch system, then based on
these it should decide which queue (policy) best matches the
requirements. In such a scenario,
you would then publish two services (end points), one for each batch
system, and the gateway should route the job to the relevant batch
system based on which service (end point) was used.

What you have desribed above might not work for us.  The GRAM does not have the restriction of only being able to submit (interface) to one batch system (PBS server for our case). Even if we have more than one cluster at our site, we can easily pick which queue and cluster we want to run our job on by having the queue element specified in the RSL..

<queue>small@pbsserver1</queue>

An instance of the WSGRAM service can only have one unique endpoint and if we implement the setup you've described above, we'll need to run one GT4 container for each batch system (cluster) we are managing here at our site.

2) If the the job requirements are not passed though, then you have to
consider each queue to be a different endpoint and hence have a service
(end point) per batch system and per queue (policy). The gateway would
then route the job also to the correct queue.

Same comment as above.

In either case the policy (queue) would be advertised as a share.
However, in the second case I am not sure how the end point is linked to
the policy.

Here's how we can probably fix the problem..
- remove the association between the ComputingService and Share
- directly link Share to the ComputingElement (the queuing system). The ComputingElement won't be a computing element if it doesn't provide at least one Share (a queue).
- multiplicity of the link between the ComputingElement and ComputingService should be "1..*" on the ComputingElement side

Attached is  a UML diagram of the changes I made to the original diagram.

Cheers,
Gerson