(Cont'd) Implementation of querry attributes for the sake of the Dashboard service...
authorZdeněk Šustr <sustr4@cesnet.cz>
Fri, 21 Dec 2007 13:40:46 +0000 (13:40 +0000)
committerZdeněk Šustr <sustr4@cesnet.cz>
Fri, 21 Dec 2007 13:40:46 +0000 (13:40 +0000)
org.glite.lb.client/examples/query_ext.c
org.glite.lb.common/src/xml_parse.c.T
org.glite.lb.server/src/lb_xml_parse.c.T
org.glite.lb.server/src/query.c

index 42ee3af..96de829 100644 (file)
@@ -469,8 +469,6 @@ static char *get_job_condition(char *src, edg_wll_QueryRec *cond)
                        cond->value2.i = atoi(tmps);
                }
                break;
-       case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
-       case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
        case EDG_WLL_QUERY_ATTR_TIME:
                cond->value.t.tv_sec = StrToTime(tmps);
                if ( cond->op == EDG_WLL_QUERY_OP_WITHIN )
@@ -503,7 +501,22 @@ static char *get_job_condition(char *src, edg_wll_QueryRec *cond)
                        fprintf(stderr,"%s: invalid status value (%s)\n", myname, tmps);
                        return 0;
                }
-        break;
+               break;
+
+       case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
+       case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+               cond->value.t.tv_sec = StrToTime(tmps);
+               if ( cond->op == EDG_WLL_QUERY_OP_WITHIN )
+               {
+                       if ( !(s = get_attr_value(s, tmps, 500)) ) return NULL;
+                       if ( tmps[0] == '\0' )
+                       {
+                               fprintf(stderr,"%s: second interval boundary not set\n", myname);
+                               return NULL;
+                       }
+                       cond->value2.t.tv_sec = StrToTime(tmps);
+               }
+               break;
 
        default:
                break;
index 612fc3f..c3783a0 100644 (file)
@@ -2511,11 +2511,11 @@ int edg_wll_JobQueryRecToXML(
                                                break;
                                        case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
                                                if (conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
-                                                       edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);
-                                                       edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value2.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);     
+                                                       edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+                                                       edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value2.t.tv_sec, "stateentertime", -1);     
                                                }
                                                else 
-                                                       edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", edg_wll_StatToString(conditions[row][i].attr_id.state), "state", -1);
+                                                       edg_wll_add_time_t_to_XMLBody(&pomValue, conditions[row][i].value.t.tv_sec, "stateentertime", -1);
                                                break;
                                        case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
                                                if (conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
@@ -2630,6 +2630,14 @@ int edg_wll_QueryEventsRequestToXML(
                                        else 
                                                edg_wll_add_tagged_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "time", edg_wll_StatToString(event_conditions[row][i].attr_id.state), "state", -1);
                                        break;
+                               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+                                       if (event_conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN) {
+                                               edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+                                               edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value2.t.tv_sec, "stateentertime", -1);       
+                                       }
+                                       else 
+                                               edg_wll_add_time_t_to_XMLBody(&pomValue, event_conditions[row][i].value.t.tv_sec, "stateentertime", -1);
+                                       break;
                                case EDG_WLL_QUERY_ATTR_LEVEL:
                                        edg_wll_add_int_to_XMLBody(&pomValue, event_conditions[row][i].value.i, "level", -1);
                                        if (event_conditions[row][i].op == EDG_WLL_QUERY_OP_WITHIN)
index 7fc5f44..e0efdcb 100644 (file)
@@ -116,8 +116,7 @@ static void startJobQueryRec(void *data, const char *el, const char **attr)
                                        if (strcmp(attr[0],"name")) { unexp() break;}
                                        XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.tag = strdup(attr[1]);
                                } 
-                               else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
-                                                ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+                               else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
                                        if (!attr[0] || !attr[1]) { unexp() break;}
                                         if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
                                        XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
@@ -242,8 +241,7 @@ static void startQueryEventsRequest(void *data, const char *el, const char **att
                                        if (attr[0] && strcmp(attr[0],"name")) { unexp() break;}
                                        XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.tag = strdup(attr[1]);
                                } 
-                               else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
-                                               ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+                               else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
                                        if (!attr[0] || !attr[1]) { unexp() break;}
                                         if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
                                        XMLCtx->job_conditions[XMLCtx->row][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
@@ -258,8 +256,7 @@ static void startQueryEventsRequest(void *data, const char *el, const char **att
                                        if (attr[0] && strcmp(attr[0],"name")) { unexp() break;}
                                        XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position].attr_id.tag = strdup(attr[1]);
                                } 
-                               else if ( ((i+1) == EDG_WLL_QUERY_ATTR_TIME) ||
-                                               ((i+1) == EDG_WLL_QUERY_ATTR_STATEENTERTIME)) {
+                               else if ( (i+1) == EDG_WLL_QUERY_ATTR_TIME ) {
                                        if (!attr[0] || !attr[1]) { unexp() break;}
                                         if (attr[0] && strcmp(attr[0],"state")) { unexp() break;}
                                        XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position].attr_id.state = edg_wll_StringToStat(attr[1]);
@@ -688,7 +685,6 @@ static void endQueryEventsRequest(void *data, const char *el UNUSED_VAR)
                        XMLCtx->event_conditions[XMLCtx->row2] != NULL) {
                        switch (XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position2].attr) {
                                case EDG_WLL_QUERY_ATTR_TIME:
-                               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
                                        if ( !XMLCtx->bound )
                                        {
                                                XMLCtx->event_conditions[XMLCtx->row2][XMLCtx->position2].value.t.tv_sec = 
@@ -1935,8 +1931,7 @@ int edg_wll_IndexedAttrsToXML(
                                        edg_wll_query_attrToString(ctx->job_index[i][j].attr), 
                                        "attribute", NULL);
 
-                               if ((ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_TIME) ||
-                                               (ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_STATEENTERTIME))
+                               if ( ctx->job_index[i][j].attr == EDG_WLL_QUERY_ATTR_TIME )
                                        edg_wll_add_string_to_XMLBody(&pomA,
                                                edg_wll_StatToString(ctx->job_index[i][j].attr_id.state),
                                                "state", NULL);
index 0fde3a1..156654b 100644 (file)
@@ -642,6 +642,8 @@ static char *ec_to_head_where(edg_wll_Context ctx,const edg_wll_QueryRec **ec)
                         *      Any op allowed - but be careful
                         */
                case EDG_WLL_QUERY_ATTR_TIME:
+               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+               case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
                        /* any operator allowed */
                        ct++;
                        break;
@@ -676,6 +678,8 @@ static char *ec_to_head_where(edg_wll_Context ctx,const edg_wll_QueryRec **ec)
                for ( n = 0; ec[m][n].attr; n++ ) switch ( ec[m][n].attr )
                {
                case EDG_WLL_QUERY_ATTR_TIME:
+               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
+               case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
                        glite_lbu_TimeToDB(ec[m][n].value.t.tv_sec, &dbt);
                        if ( conds )
                        {
@@ -905,7 +909,6 @@ static char *jc_to_head_where(
                        break;
 
                case EDG_WLL_QUERY_ATTR_TIME:
-               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
                        if ( jc[m][n].attr_id.state == EDG_WLL_JOB_UNDEF )
                        {
                                edg_wll_SetError(ctx, EINVAL, "Time attribut have to be associated with status specification");
@@ -916,6 +919,7 @@ static char *jc_to_head_where(
                case EDG_WLL_QUERY_ATTR_DONECODE:
                case EDG_WLL_QUERY_ATTR_EXITCODE:
                case EDG_WLL_QUERY_ATTR_STATUS:
+               case EDG_WLL_QUERY_ATTR_STATEENTERTIME:
                case EDG_WLL_QUERY_ATTR_LASTUPDATETIME:
                        ct++;
                        break;
@@ -1533,6 +1537,7 @@ int match_status(edg_wll_Context ctx, const edg_wll_JobStat *stat, const edg_wll
                return 0;
 
 or_satisfied:
+
                 // just for escaping from nested cycles
                ;       /* prevent compiler to complain */
        }