static void usage(char *me)
{
- fprintf(stderr,"usage: %s [-m bkserver] [-x|-X non-default_sock_path] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S][-C]] [-P] [-l jdl_file] [-e seed] [-E]\n", me);
+ fprintf(stderr,"usage: %s [-m bkserver] [-x|-X non-default_sock_path] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S][-C]] [-P] [-W] [-l jdl_file] [-e seed] [-E]\n", me);
}
int main(int argc, char *argv[])
{
char *src = NULL,*job = NULL,*server = NULL,*seq,*jdl = NULL, *seed = NULL;
int lbproxy = 0;
- int done = 0,num_subjobs = 0,reg_subjobs = 0,i, collection = 0, pbs=0, cream=0, type, flags=0;
+ int done = 0,num_subjobs = 0,reg_subjobs = 0,i, collection = 0, pbs=0, cream=0, type, flags=0, workflow = 0;
edg_wll_Context ctx;
edg_wlc_JobId jobid,*subjobs;
opterr = 0;
do {
- switch (getopt(argc,argv,"xX:s:j:m:n:SCl:e:PcE")) {
+ switch (getopt(argc,argv,"xX:s:j:m:n:SCl:e:PcEW")) {
case 'x': lbproxy = 1; break;
case 'X': lbproxy = 1;
edg_wll_SetParam(ctx, EDG_WLL_PARAM_LBPROXY_STORE_SOCK, optarg);
case 'l': jdl = (char *) strdup(optarg); break;
case 'e': seed = strdup(optarg); break;
case 'E': flags = flags | EDG_WLL_LOGLFLAG_EXCL; break;
+ case 'W': workflow = 1; break;
case '?': usage(argv[0]); exit(EINVAL);
case -1: done = 1; break;
}
edg_wll_SetParam(ctx,EDG_WLL_PARAM_SOURCE,edg_wll_StringToSource(src));
- type = pbs ? EDG_WLL_REGJOB_PBS
+ type = workflow ? EDG_WLL_REGJOB_WORKFLOW :
+ (pbs ? EDG_WLL_REGJOB_PBS
: (cream ? EDG_WLL_REGJOB_CREAM
: (num_subjobs ?
(collection?EDG_WLL_REGJOB_COLLECTION:EDG_WLL_REGJOB_DAG)
:EDG_WLL_REGJOB_SIMPLE
)
- );
+ )
+ );
if (lbproxy) {
if (edg_wll_RegisterJobProxy(ctx,jobid,type,
--- /dev/null
+#!/bin/sh
+
+jobreg=./glite-lb-job_reg
+logevent=../bin/glite-lb-logevent
+
+eval `$jobreg -s userinterface -m alcarinque.ics.muni.cz:9000 -P`
+
+# TODO
+# eval `$logevent -s server
+
+
FAILURE_REASON
WMS_DN
PAYLOAD_OWNER
+ NODE_ID
+ NODE_INSTANCE
/;
CREAM_ID
PAYLOAD_OWNER
ACCESS_RIGHTS
+ NODE_JOBS
+ WF_NODE
+ WF_NODE_IDS
+ WN_NODE_INSTANCE
/;
{
switch (event) {
@@@{
- %seq = ( CREAM => 'CREAM', 'PBS' => 'PBS', 'gLite' => 'NORMAL', Condor=>'CONDOR', Transfer=>'NORMAL' );
+ %seq = ( CREAM => 'CREAM', 'PBS' => 'PBS', 'gLite' => 'NORMAL', Condor=>'CONDOR', Transfer=>'NORMAL', Workflow=>'PBS' );
for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
$event->getTypes)
{
${CLASSADS_LIBS} -lstdc++ ${EXPAT_LIBS}
PLUGIN_LOBJS:=seqcode_aux.lo process_event.lo process_event_pbs.lo process_event_condor.lo process_event_cream.lo lb_plugin.lo process_event_file_transfer.lo process_event_file_transfer_collection.lo
-MACHINE_OBJS:=seqcode_aux.o process_event.o process_event_pbs.o process_event_condor.o process_event_cream.o process_event_file_transfer.o process_event_file_transfer_collection.o intjobstat_supp.o
+MACHINE_OBJS:=seqcode_aux.o process_event.o process_event_pbs.o process_event_condor.o process_event_cream.o process_event_file_transfer.o process_event_file_transfer_collection.o process_event_workflow.o intjobstat_supp.o
PLUGIN_LIB=glite_lb_plugin.la
MACHINE_LIB=libglite_lb_statemachine.a
case EDG_WLL_REGJOB_FILE_TRANSFER_COLLECTION:
js->pub.jobtype = EDG_WLL_STAT_FILE_TRANSFER_COLLECTION;
break;
+ case EDG_WLL_REGJOB_WORKFLOW:
+ js->pub.jobtype = EDG_WLL_STAT_WORKFLOW;
+ break;
default:
trio_asprintf(errstring,"unknown job type %d in registration",e->regJob.jobtype);
return RET_FAIL;
return processEvent_FileTransfer(js,e,ev_seq,strict,errstring);
case EDG_WLL_STAT_FILE_TRANSFER_COLLECTION:
return processEvent_FileTransferCollection(js,e,ev_seq,strict,errstring);
+ case EDG_WLL_STAT_WORKFLOW:
+ return processEvent_Workflow(js,e,ev_seq,strict,errstring);
case -1: return RET_UNREG;
default:
trio_asprintf(errstring,"undefined job type %d",js->pub.jobtype);
_code_ CREAM CREAM job
_code_ FILE_TRANSFER_COLLECTION File transfer collection
_code_ FILE_TRANSFER File transfer
+ _code_ WORKFLOW general workflow
int nsubjobs Number of subjobs this job plans to spawn.
_optional_
string compute_job Jobid of (compute) job the sandbox belongs. Exclusive with transfer_job.
_optional_
+
+@flesh Workflow
+
+@type WorkflowMember this job implements a particular workflow node
+ jobid parent WF id (if not known with registration)
+ _optional_
+ string node_id Id of the WF node
+ int node_instance Instance (number) of the WF node execution
+ _optional_
_code_ CREAM CREAM job
_code_ FILE_TRANSFER_COLLECTION job containing all file transfers (i.e. sandbox)
_code_ FILE_TRANSFER subjob holding one file transfer
+ _code_ WORKFLOW general workflow
jobid parent_job parent job of subjob
string seed string used for generation of subjob IDs
_pad_ 20
+string wf_node Id of WF node this job implements
+int wn_node_instance Instance (number) of the WF node execution
+
+strlist wf_node_ids Static list of WF node Ids
+ _special_ XMLstructured
+strlist node_jobs Current JobIds of WF nodes
+ _special_ XMLstructured
+
+_pad_ 20
+
@type Submitted Entered by the user to the User Interface or registered by Job Partitioner.
@type Waiting Accepted by WMS, waiting for resource allocation.
@type Ready Matching resources found.