From 01354d41e0b4b510030175723da4fd3fe8a7ef59 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Tue, 4 Oct 2011 19:37:30 +0000 Subject: [PATCH] merge changes from head --- org.glite.lb.common/interface/context-int.h | 11 +++++------ org.glite.lb.common/interface/context.h | 2 ++ org.glite.lb.common/src/context.c | 30 +++++++++++++++++++++++++++-- org.glite.lb.types/events.T | 4 ++++ 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/org.glite.lb.common/interface/context-int.h b/org.glite.lb.common/interface/context-int.h index e348c14..86f9e6d 100644 --- a/org.glite.lb.common/interface/context-int.h +++ b/org.glite.lb.common/interface/context-int.h @@ -43,7 +43,7 @@ extern "C" { #endif #define EDG_WLL_SEQ_NULL "UI=000000:NS=0000000000:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000:LBS=000000" -#define EDG_WLL_SEQ_PBS_NULL "TIMESTAMP=00000000000000:POS=0000000000:EV.CODE=000:SRC=?" +#define EDG_WLL_SEQ_PBS_NULL "CLIENT=000000:SERVER=0000000000:SCHED=000000:SMOM=000000:MOM=000000" #define EDG_WLL_SEQ_CONDOR_NULL EDG_WLL_SEQ_PBS_NULL #define EDG_WLL_SEQ_SIZE (sizeof(EDG_WLL_SEQ_NULL)) #define EDG_WLL_SEQ_PBS_SIZE (sizeof(EDG_WLL_SEQ_PBS_NULL)) @@ -51,15 +51,14 @@ extern "C" { #define EDG_WLL_SEQ_FORMAT_PRINTF "UI=%06d:NS=%010d:WM=%06d:BH=%010d:JSS=%06d:LM=%06d:LRMS=%06d:APP=%06d:LBS=%06d" #define EDG_WLL_SEQ_FORMAT_SCANF "UI=%d:NS=%d:WM=%d:BH=%d:JSS=%d:LM=%d:LRMS=%d:APP=%d:LBS=%d" #define EDG_WLL_SEQ_FORMAT_NUMBER 9 +#define EDG_WLL_SEQ_PBS_FORMAT_PRINTF "CLIENT=%06d:SERVER=%010d:SCHED=%06d:SMOM=%06d:MOM=%06d" +#define EDG_WLL_SEQ_PBS_FORMAT_SCANF "CLIENT=%d:SERVER=%d:SCHED=%d:SMOM=%d:MOM=%d" +#define EDG_WLL_SEQ_PBS_FORMAT_NUMBER 5 typedef struct _edg_wll_SeqCode { unsigned int type; /* seq code type */ - unsigned int c[EDG_WLL_SOURCE__LAST]; /* glite seq. code */ + unsigned int c[EDG_WLL_SOURCE__LAST]; /* glite and PBS seq. code */ char pbs[EDG_WLL_SEQ_PBS_SIZE]; /* PBS seq. code */ - /* 0-24 TIMESTAMP=YYYYMMDDHHMMSS: */ - /* 25-39 POS=%010u: */ - /* 40-51 EV.CODE=%03d: */ - /* 53-56 SRC=%c */ char condor[EDG_WLL_SEQ_CONDOR_SIZE]; } edg_wll_SeqCode; diff --git a/org.glite.lb.common/interface/context.h b/org.glite.lb.common/interface/context.h index 8de9cd7..6c48824 100644 --- a/org.glite.lb.common/interface/context.h +++ b/org.glite.lb.common/interface/context.h @@ -99,7 +99,9 @@ typedef enum _edg_wll_Source { EDG_WLL_SOURCE_LB_SERVER, EDG_WLL_SOURCE_CREAM_INTERFACE, EDG_WLL_SOURCE_CREAM_EXECUTOR, + EDG_WLL_SOURCE_PBS_CLIENT, EDG_WLL_SOURCE_PBS_SERVER, + EDG_WLL_SOURCE_PBS_SMOM, EDG_WLL_SOURCE_PBS_MOM, EDG_WLL_SOURCE_PBS_SCHEDULER, EDG_WLL_SOURCE__LAST /* marker, for internal use only */ diff --git a/org.glite.lb.common/src/context.c b/org.glite.lb.common/src/context.c index 9bb0acf..9fe48e8 100644 --- a/org.glite.lb.common/src/context.c +++ b/org.glite.lb.common/src/context.c @@ -329,7 +329,9 @@ static const char* const srcNames[] = { "LBServer", "CREAMInterface", "CREAMExecutor", + "PBSClient", "PBSServer", + "PBSMomSuperior", "PBSMom", "PBSScheduler" }; @@ -398,7 +400,14 @@ char *edg_wll_GetSequenceCode(const edg_wll_Context ctx) c[EDG_WLL_SOURCE_LB_SERVER]); break; case EDG_WLL_SEQ_PBS: - ret = strdup(ctx->p_seqcode.pbs); + c = &ctx->p_seqcode.c[0]; + asprintf(&ret, EDG_WLL_SEQ_PBS_FORMAT_PRINTF, + c[EDG_WLL_SOURCE_PBS_CLIENT], + c[EDG_WLL_SOURCE_PBS_SERVER], + c[EDG_WLL_SOURCE_PBS_SCHEDULER], + c[EDG_WLL_SOURCE_PBS_SMOM], + c[EDG_WLL_SOURCE_PBS_MOM]); + /* ret = strdup(ctx->p_seqcode.pbs); */ break; case EDG_WLL_SEQ_CONDOR: ret = strdup(ctx->p_seqcode.condor); @@ -466,10 +475,27 @@ int edg_wll_SetSequenceCode(edg_wll_Context ctx, } break; case EDG_WLL_SEQ_PBS: + /* original version if (!seqcode_str) memset(&ctx->p_seqcode.pbs, 0, sizeof ctx->p_seqcode.pbs); else strncpy(ctx->p_seqcode.pbs, seqcode_str, sizeof(ctx->p_seqcode.pbs)); + */ + if (!seqcode_str) { + memset(&ctx->p_seqcode.c, 0, sizeof(ctx->p_seqcode.c)); + return 0; + } + c = ctx->p_seqcode.c; + res = sscanf(seqcode_str, EDG_WLL_SEQ_PBS_FORMAT_SCANF, + &c[EDG_WLL_SOURCE_PBS_CLIENT], + &c[EDG_WLL_SOURCE_PBS_SERVER], + &c[EDG_WLL_SOURCE_PBS_SCHEDULER], + &c[EDG_WLL_SOURCE_PBS_SMOM], + &c[EDG_WLL_SOURCE_PBS_MOM]); + if(res != EDG_WLL_SEQ_PBS_FORMAT_NUMBER) { + return edg_wll_SetError(ctx, EINVAL, + "edg_wll_SetSequenceCode(): syntax error in sequence code"); + } break; case EDG_WLL_SEQ_CONDOR: if (!seqcode_str) @@ -494,6 +520,7 @@ int edg_wll_IncSequenceCode(edg_wll_Context ctx) switch (ctx->p_seqcode.type) { case EDG_WLL_SEQ_DUPLICATE: /* fall through */ + case EDG_WLL_SEQ_PBS: case EDG_WLL_SEQ_NORMAL: if (ctx->p_source <= EDG_WLL_SOURCE_NONE || ctx->p_source >= EDG_WLL_SOURCE__LAST) @@ -504,7 +531,6 @@ int edg_wll_IncSequenceCode(edg_wll_Context ctx) ctx->p_seqcode.c[ctx->p_source]++; break; - case EDG_WLL_SEQ_PBS: case EDG_WLL_SEQ_CREAM: /* no action */ break; diff --git a/org.glite.lb.types/events.T b/org.glite.lb.types/events.T index aa475e8..b725b97 100644 --- a/org.glite.lb.types/events.T +++ b/org.glite.lb.types/events.T @@ -253,9 +253,13 @@ @type PBSInternalStateChange Change of internal PBS job state int oldstate + _null_ -1 int oldsubstate + _null_ -1 int newstate + _null_ -1 int newsubstate + _null_ -1 @type PBSTransfer Start, success, or failure of job transfer to another component. -- 1.8.2.3