From 40910896abe68d2118c862109077bcd9d02a80f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20Filipovi=C4=8D?= Date: Fri, 4 Jan 2013 14:03:39 +0000 Subject: [PATCH] VM job type querying --- org.glite.lb.client/examples/query_ext.c | 9 +++++++ org.glite.lb.common/interface/query_rec.h | 1 + org.glite.lb.common/interface/xml_conversions.h | 2 ++ org.glite.lb.common/src/query_rec.c | 3 ++- org.glite.lb.common/src/status.c.T | 9 +++++++ org.glite.lb.common/src/xml_conversions.c | 33 +++++++++++++++++++++++++ org.glite.lb.common/src/xml_parse.c.T | 4 +++ 7 files changed, 60 insertions(+), 1 deletion(-) diff --git a/org.glite.lb.client/examples/query_ext.c b/org.glite.lb.client/examples/query_ext.c index b4eee4f..6dac90e 100644 --- a/org.glite.lb.client/examples/query_ext.c +++ b/org.glite.lb.client/examples/query_ext.c @@ -435,6 +435,7 @@ static char *get_job_condition(char *src, edg_wll_QueryRec *cond) else if ( !strcmp(tmps, "last_update_time") ) cond->attr = EDG_WLL_QUERY_ATTR_LASTUPDATETIME; else if ( !strcmp(tmps, "jdl_attr") ) cond->attr = EDG_WLL_QUERY_ATTR_JDL_ATTR; else if ( !strcmp(tmps, "job_type") ) cond->attr = EDG_WLL_QUERY_ATTR_JOB_TYPE; + else if ( !strcmp(tmps, "vm_status") ) cond->attr = EDG_WLL_QUERY_ATTR_VM_STATUS; /**< When entered current status */ @@ -549,12 +550,20 @@ static char *get_job_condition(char *src, edg_wll_QueryRec *cond) cond->value2.t.tv_sec = StrToTime(tmps); } break; + case EDG_WLL_QUERY_ATTR_JOB_TYPE: if ( 0 > (cond->value.i = edg_wll_JobtypeStrToCode(tmps))) { fprintf(stderr,"%s: invalid job type (%s)\n", myname, tmps); return 0; } break; + + case EDG_WLL_QUERY_ATTR_VM_STATUS: + if ( 0 > (cond->value.i = edg_wll_StringToVMStat(tmps))) { + fprintf(stderr,"%s: invalid VM status value (%s)\n", myname, tmps); + return 0; + } + break; default: break; diff --git a/org.glite.lb.common/interface/query_rec.h b/org.glite.lb.common/interface/query_rec.h index 1941916..bcb3aa6 100644 --- a/org.glite.lb.common/interface/query_rec.h +++ b/org.glite.lb.common/interface/query_rec.h @@ -75,6 +75,7 @@ typedef enum _edg_wll_QueryAttr{ EDG_WLL_QUERY_ATTR_LASTUPDATETIME, /**< Time of the last known event of the job */ EDG_WLL_QUERY_ATTR_NETWORK_SERVER, /**< Network server aka RB aka WMproxy endpoint */ EDG_WLL_QUERY_ATTR_JOB_TYPE, /**< Event type \see _edg_wll_QueryRec */ + EDG_WLL_QUERY_ATTR_VM_STATUS, /**< Current VM job status */ EDG_WLL_QUERY_ATTR__LAST /* if adding new attribute, add conversion string to common/xml_conversions.c too !! */ } edg_wll_QueryAttr; diff --git a/org.glite.lb.common/interface/xml_conversions.h b/org.glite.lb.common/interface/xml_conversions.h index 576bbc2..0378ea1 100644 --- a/org.glite.lb.common/interface/xml_conversions.h +++ b/org.glite.lb.common/interface/xml_conversions.h @@ -131,6 +131,7 @@ void edg_wll_add_timeval_to_XMLBody(char **body, struct timeval toAdd, const cha void edg_wll_add_jobid_to_XMLBody(char **body, glite_jobid_const_t toAdd, const char *tag, const void *null); void edg_wll_add_notifid_to_XMLBody(char **body, edg_wll_NotifId toAdd, const char *tag, const void *null); void edg_wll_add_edg_wll_JobStatCode_to_XMLBody(char **body, edg_wll_JobStatCode toAdd, const char *tag, const edg_wll_JobStatCode null); +void edg_wll_add_edg_wll_StatVm_state_to_XMLBody(char **body, enum edg_wll_StatVm_state toAdd, const char *tag, const enum edg_wll_StatVm_state null); void edg_wll_add_edg_wll_EventCode_to_XMLBody(char **body, edg_wll_EventCode toAdd, const char *tag, const edg_wll_EventCode null); void edg_wll_add_time_t_to_XMLBody(char **body, const time_t toAdd, const char *tag, const time_t null); void edg_wll_add_tagged_time_t_to_XMLBody(char **body, const time_t toAdd, const char *tag, const char *name, const char *tag2, const time_t null); @@ -146,6 +147,7 @@ char *edg_wll_from_string_to_string(edg_wll_XML_ctx *XMLCtx); glite_jobid_t edg_wll_from_string_to_jobid(edg_wll_XML_ctx *XMLCtx); edg_wll_NotifId edg_wll_from_string_to_notifid(edg_wll_XML_ctx *XMLCtx); edg_wll_JobStatCode edg_wll_from_string_to_edg_wll_JobStatCode(edg_wll_XML_ctx *XMLCtx); +enum edg_wll_StatVm_state edg_wll_from_string_to_edg_wll_StatVm_state(edg_wll_XML_ctx *XMLCtx); int edg_wll_from_string_to_int(edg_wll_XML_ctx *XMLCtx); float edg_wll_from_string_to_float(edg_wll_XML_ctx *XMLCtx); double edg_wll_from_string_to_double(edg_wll_XML_ctx *XMLCtx); diff --git a/org.glite.lb.common/src/query_rec.c b/org.glite.lb.common/src/query_rec.c index 6cfb1c5..c9474ad 100644 --- a/org.glite.lb.common/src/query_rec.c +++ b/org.glite.lb.common/src/query_rec.c @@ -35,7 +35,7 @@ char *edg_wll_QueryAttrNames[] = { "undef", "jobid","owner","status","loc "donecode","usertag","time","level","host","source", "instance","type","chkpt_tag", "resubmitted", "parent_job", "exitcode", "jdl", "stateentertime", "lastupdatetime", - "networkserver", "jobtype" }; + "networkserver", "jobtype", "vm_status" }; /** * Names for the predefined types of query operands @@ -79,6 +79,7 @@ void edg_wll_QueryRecFree(edg_wll_QueryRec *prec) case EDG_WLL_QUERY_ATTR_STATEENTERTIME: case EDG_WLL_QUERY_ATTR_LASTUPDATETIME: case EDG_WLL_QUERY_ATTR_JOB_TYPE: + case EDG_WLL_QUERY_ATTR_VM_STATUS: /* do nothing */ break; default: diff --git a/org.glite.lb.common/src/status.c.T b/org.glite.lb.common/src/status.c.T index 8717b14..8f4cd15 100644 --- a/org.glite.lb.common/src/status.c.T +++ b/org.glite.lb.common/src/status.c.T @@ -315,6 +315,15 @@ char *edg_wll_VMStatToString(enum edg_wll_StatVm_state statCode) return strdup(vm_statNames[statCode]); } +enum edg_wll_StatVm_state edg_wll_StringToVMStat(const char* name) +{ + unsigned int i; + + for (i=0; i%|Xs\r\n", + *body, tag, pom = edg_wll_VMStatToString(toAdd), tag); + + free(*body); + free(pom); + *body = newBody; + } +} + + void edg_wll_add_edg_wll_EventCode_to_XMLBody(char **body, edg_wll_EventCode toAdd, const char *tag, const edg_wll_EventCode null) { char *newBody, *pom; @@ -638,6 +653,23 @@ edg_wll_JobStatCode edg_wll_from_string_to_edg_wll_JobStatCode(edg_wll_XML_ctx * +enum edg_wll_StatVm_state edg_wll_from_string_to_edg_wll_StatVm_state(edg_wll_XML_ctx *XMLCtx) +{ + edg_wll_JobStatCode out = -1; + char *s; + + s = glite_lbu_UnescapeXML((const char *) XMLCtx->char_buf); + if (s) { + out = edg_wll_StringToVMStat(s); + free(s); + } + edg_wll_freeBuf(XMLCtx); + + return(out); +} + + + enum edg_wll_StatJobtype edg_wll_from_string_to_edg_wll_StatJobtype(edg_wll_XML_ctx *XMLCtx) { enum edg_wll_StatJobtype out = -1; @@ -993,6 +1025,7 @@ static const char * const query_attrConsts[] = { "EDG_WLL_QUERY_ATTR_STATEENTERTIME", "EDG_WLL_QUERY_ATTR_LASTUPDATETIME", "EDG_WLL_QUERY_ATTR_JOB_TYPE", + "EDG_WLL_QUERY_ATTR_VM_STATUS", "EDG_WLL_QUERY_ATTR__LAST", }; diff --git a/org.glite.lb.common/src/xml_parse.c.T b/org.glite.lb.common/src/xml_parse.c.T index 1fbffe5..a12fb04 100644 --- a/org.glite.lb.common/src/xml_parse.c.T +++ b/org.glite.lb.common/src/xml_parse.c.T @@ -2658,6 +2658,10 @@ int edg_wll_JobQueryRecToXML( case EDG_WLL_QUERY_ATTR_JOB_TYPE: edg_wll_add_string_to_XMLBody(&pomValue, edg_wll_StatusJobtypeNames[conditions[row][i].value.i], "jobtype", NULL); + break; + case EDG_WLL_QUERY_ATTR_VM_STATUS: + /*XXX currently no within or changed implemented */ + edg_wll_add_edg_wll_StatVm_state_to_XMLBody(&pomValue, conditions[row][i].value.i, "vm_status", -1); /* have no undef state*/ break; default: -- 1.8.2.3