merge changes from head
authorMichal Voců <michal@ruk.cuni.cz>
Tue, 4 Oct 2011 19:37:30 +0000 (19:37 +0000)
committerMichal Voců <michal@ruk.cuni.cz>
Tue, 4 Oct 2011 19:37:30 +0000 (19:37 +0000)
org.glite.lb.common/interface/context-int.h
org.glite.lb.common/interface/context.h
org.glite.lb.common/src/context.c
org.glite.lb.types/events.T

index e348c14..86f9e6d 100644 (file)
@@ -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;
 
index 8de9cd7..6c48824 100644 (file)
@@ -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 */
index 9bb0acf..9fe48e8 100644 (file)
@@ -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;
index aa475e8..b725b97 100644 (file)
 
 @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.