updated pbs/torque state machine
authorMichal Voců <michal@ruk.cuni.cz>
Thu, 8 Dec 2011 16:26:54 +0000 (16:26 +0000)
committerMichal Voců <michal@ruk.cuni.cz>
Thu, 8 Dec 2011 16:26:54 +0000 (16:26 +0000)
org.glite.lb.state-machine/interface/intjobstat.h
org.glite.lb.state-machine/src/intjobstat_supp.c
org.glite.lb.state-machine/src/process_event_pbs.c
org.glite.lb.state-machine/src/seqcode_aux.c

index dcb1031..9596491 100644 (file)
@@ -31,7 +31,7 @@ limitations under the License.
 /* where Z.XX is version from indent + 1 (version after commit), Y = Z+1 */
 /* and DESCRIPTION is short hit why version changed            */
 
-#define INTSTAT_VERSION "revision 2.10 - payload owner"
+#define INTSTAT_VERSION "revision 2.11 - payload owner"
 //                      ".... MAX LENGTH 32 BYTES !! ...."
 
 // Internal error codes 
index c4bb463..bf84aa0 100644 (file)
@@ -37,6 +37,9 @@ limitations under the License.
 
 
 /* TBD: share in whole logging or workload */
+
+/* XXX - how come this is not generated from .T when the JobStat structure is? */
+
 #ifdef __GNUC__
 #define UNUSED_VAR __attribute__((unused))
 #else
@@ -535,7 +538,8 @@ char *enc_JobStat(char *old, edg_wll_JobStat* stat)
        if (ret) ret = enc_string(ret, stat->pbs_scheduler);
        if (ret) ret = enc_string(ret, stat->pbs_dest_host);
        if (ret) ret = enc_int(ret, stat->pbs_pid);
-       if (ret) ret = enc_string(ret, stat->pbs_resource_usage);
+       if (ret) ret = enc_taglist(ret, stat->pbs_resource_requested);
+       if (ret) ret = enc_taglist(ret, stat->pbs_resource_usage);
        if (ret) ret = enc_int(ret, stat->pbs_exit_status);
        if (ret) ret = enc_string(ret, stat->pbs_error_desc);
        if (ret) ret = enc_string(ret, stat->condor_status);
@@ -641,7 +645,8 @@ edg_wll_JobStat* dec_JobStat(char *in, char **rest)
         if (tmp_in != NULL) stat->pbs_scheduler = dec_string(tmp_in, &tmp_in);
         if (tmp_in != NULL) stat->pbs_dest_host = dec_string(tmp_in, &tmp_in);
         if (tmp_in != NULL) stat->pbs_pid = dec_int(tmp_in, &tmp_in);
-        if (tmp_in != NULL) stat->pbs_resource_usage = dec_string(tmp_in, &tmp_in);
+        if (tmp_in != NULL) stat->pbs_resource_requested = dec_taglist(tmp_in, &tmp_in);
+        if (tmp_in != NULL) stat->pbs_resource_usage = dec_taglist(tmp_in, &tmp_in);
         if (tmp_in != NULL) stat->pbs_exit_status = dec_int(tmp_in, &tmp_in);
         if (tmp_in != NULL) stat->pbs_error_desc = dec_string(tmp_in, &tmp_in);
         if (tmp_in != NULL) stat->condor_status = dec_string(tmp_in, &tmp_in);
index 8522617..441db3f 100644 (file)
@@ -357,8 +357,6 @@ int processEvent_PBS(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, c
                        js->pub.state = EDG_WLL_JOB_DONE;
                }
                if (USABLE_DATA(res)) {
-                       char *new_resource_usage;
-                       
                        /*trio_asprintf(&new_resource_usage,"%s%s\t%s = %f [%s]",
                                      (js->pub.pbs_resource_usage) ? js->pub.pbs_resource_usage : "",
                                      (js->pub.pbs_resource_usage) ? "\n": "",
@@ -366,8 +364,15 @@ int processEvent_PBS(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, c
                                      e->PBSResourceUsage.quantity,
                                      e->PBSResourceUsage.unit);
                        */
-                       if (js->pub.pbs_resource_usage) free(js->pub.pbs_resource_usage);
-                       js->pub.pbs_resource_usage = new_resource_usage;
+                       if(e->PBSResourceUsage.usage == EDG_WLL_PBSRESOURCEUSAGE_REQUESTED) {
+                               if (js->pub.pbs_resource_requested) free(js->pub.pbs_resource_requested);
+                               js->pub.pbs_resource_requested = edg_wll_CopyTagList(e->PBSResourceUsage.resources);
+                       } else if(e->PBSResourceUsage.usage == EDG_WLL_PBSRESOURCEUSAGE_USED) {
+                               if (js->pub.pbs_resource_usage) free(js->pub.pbs_resource_usage);
+                               js->pub.pbs_resource_usage = edg_wll_CopyTagList(e->PBSResourceUsage.resources);
+                       } else {
+                               /* fprintf(stderr, "resource usage %d not recognized\n", e->PBSResourceUsage.usage); */
+                       }
                }
                break;
 
index 041202c..4d9b67b 100644 (file)
@@ -145,14 +145,14 @@ int edg_wll_compare_pbs_seq(const char *a,const char *b)
        res = sscanf(a, EDG_WLL_SEQ_PBS_FORMAT_SCANF,
                     &c[0], &c[1], &c[2], &c[3], &c[4]);
        if(res != EDG_WLL_SEQ_PBS_FORMAT_NUMBER) {
-               fprintf(stderr, "unparsable sequence code %s\n", a);
+               fprintf(stderr, "unparsable sequence code %s: %d\n", a, res);
                return -1;
        }
                     
        res = sscanf(b, EDG_WLL_SEQ_PBS_FORMAT_SCANF,
                     &d[0], &d[1], &d[2], &d[3], &d[4]);
        if(res != EDG_WLL_SEQ_PBS_FORMAT_NUMBER) {
-               fprintf(stderr, "unparsable sequence code %s\n", b);
+               fprintf(stderr, "unparsable sequence code %s: %d\n", b, res);
                return -1;
        }
 
@@ -246,7 +246,7 @@ int edg_wll_compare_seq(const char *a, const char *b)
        char            sca[EDG_WLL_SEQ_SIZE], scb[EDG_WLL_SEQ_SIZE];
 
 
-       if ( (strstr(a,"SMOM=") == a) && (strstr(b,"SMOM=") == b) ) 
+       if ( (strstr(a,"SMOM=") != NULL) && (strstr(b,"SMOM=") != NULL) ) 
                return edg_wll_compare_pbs_seq(a,b);
 
        if (!strstr(a, "LBS")) snprintf(sca,EDG_WLL_SEQ_SIZE,"%s:LBS=000000",a);