Abstract Request Manager
Service (ARMS)
Vocabulary:
// This
passes a request to service. The request contains
// a AbstractRequest object and extra
information. This call
// returns an int
ID to later refer to request.
int create (AbstractRequest request) throws RequestException
// Check to see if abstract request
can run, but doesn’t
// communicate with any other
service.
// Maybe should return more
complex type
// FeaturesNotSupportedList checkSupportedFeatures
boolean isRequestSupported(int requestID) throws RequestException
// Actually
runs or executes abstract request is true and if false
// it asks service to analyze the
time that abstract request
// will take and maybe other
information and returns
// a complex info object. Actually executes resource
// broker algorthm.
AbstractRequestInfo submit(int requestID, boolean simulate) throws RequestException
// Gets overall global run
information. An AbstractRequestInfo
object contains list of elemental request IDs.
AbstractRequestInfo[ ] getAbstractStatus(int abstractRequestID) throws RequestException
// Gets info on particular sub request,
so that overall run info doesn’t have
// to go through each sub request
and get info.
AbstractRequestInfo getElementalStatus(int elementalRequestID) throws RequestException
// Removes all reference of abstract
request on service
void destroy (int requestID) throws RequestException
// Need control methods???
stop
pause
restart / resume
cancel
requeue
suspend
kill
EXAMPLES OF TYPICAL CALL ORDERING
1) create, submit, destroy
2) create, isRequestSupported, destroy
3) create, isRequestSupported, submit, destroy
4) create, isRequestSupported, estimate, destroy
5) create, estimate, destroy
6) create, isRequestSupported, estimate, submit, destroy
All custom (non-Sun) package objects are in a package like net.ppdg.cjs