#include "glite/security/glite_gsplugin.h"
#include "glite/security/glite_gscompat.h"
+#include "glite/lbu/log.h"
+#include "glite/lb/context-int.h"
+#include "glite/lb/xml_conversions.h"
+
#include "bk_ws_Stub.h"
#include "ws_fault.h"
#include "ws_typeref.h"
+#include "jobstat.h"
+
+extern int debug;
SOAP_FMAC5 int SOAP_FMAC6 __lb4agu__GetActivityStatus(
struct soap* soap,
struct _lb4ague__GetActivityStatusRequest *in,
struct _lb4ague__GetActivityStatusResponse *out)
{
- /* TODO */
+ edg_wll_Context ctx = (edg_wll_Context) glite_gsplugin_get_udata(soap);
+ edg_wlc_JobId j;
+ edg_wll_JobStat s;
+ int i,flags;
+
+ glite_common_log(LOG_CATEGORY_LB_SERVER_ACCESS, LOG_PRIORITY_DEBUG,
+ "[%d] WS call %s", getpid(), __FUNCTION__);
+
+ if (!in) return SOAP_FAULT;
+ if (!in->id) return SOAP_FAULT;
+ out = soap_malloc(soap, sizeof(*out));
+
+ /* process each request individually: */
+ for (i=0; in->id[i]; i++) {
+ /* first parse jobId */
+ if ( edg_wlc_JobIdParse(in->id[i], &j) ) {
+ edg_wll_SetError(ctx, EINVAL, in->id[i]);
+ edg_wll_ErrToFault(ctx, soap);
+ return SOAP_FAULT;
+ }
+
+ /* FIXME: what are the flags? */
+ flags = 0;
+ if (debug) {
+ char *cjobid = NULL, *cflags = NULL;
+
+ cjobid = edg_wlc_JobIdUnparse(j);
+ cflags = edg_wll_stat_flags_to_string(flags);
+ glite_common_log(LOG_CATEGORY_LB_SERVER_ACCESS,
+ LOG_PRIORITY_DEBUG,
+ "[%d] \n\t<flags>%s</flags>\n\t<jobId>%s</jobId>\n",
+ getpid(), cflags, cjobid);
+ free(cjobid);
+ free(cflags);
+ }
+
+ /* get job status */
+ if ( edg_wll_JobStatusServer(ctx, j, flags, &s) ) {
+ edg_wll_ErrToFault(ctx, soap);
+ return SOAP_FAULT;
+ }
+
+ /* fill in the response fields */
+ out->status[i] = edg_wll_StatToString(s.state);
+ }
+
return SOAP_OK;
}
struct _lb4ague__GetActivityInfoRequest *in,
struct _lb4ague__GetActivityInfoResponse *out)
{
- /* TODO */
+ edg_wll_Context ctx = (edg_wll_Context) glite_gsplugin_get_udata(soap);
+ edg_wlc_JobId j;
+ edg_wll_JobStat s;
+ int i,flags;
+
+ glite_common_log(LOG_CATEGORY_LB_SERVER_ACCESS, LOG_PRIORITY_DEBUG,
+ "[%d] WS call %s", getpid(), __FUNCTION__);
+
+ if (!in) return SOAP_FAULT;
+ if (!in->id) return SOAP_FAULT;
+ out = soap_malloc(soap, sizeof(*out));
+
+ /* process each request individually: */
+ for (i=0; in->id[i]; i++) {
+ /* first parse jobId */
+ if ( edg_wlc_JobIdParse(in->id[i], &j) ) {
+ edg_wll_SetError(ctx, EINVAL, in->id[i]);
+ edg_wll_ErrToFault(ctx, soap);
+ return SOAP_FAULT;
+ }
+
+ /* FIXME: what are the flags? */
+ flags = 0;
+ if (debug) {
+ char *cjobid = NULL, *cflags = NULL;
+
+ cjobid = edg_wlc_JobIdUnparse(j);
+ cflags = edg_wll_stat_flags_to_string(flags);
+ glite_common_log(LOG_CATEGORY_LB_SERVER_ACCESS,
+ LOG_PRIORITY_DEBUG,
+ "[%d] \n\t<flags>%s</flags>\n\t<jobId>%s</jobId>\n",
+ getpid(), cflags, cjobid);
+ free(cjobid);
+ free(cflags);
+ }
+
+ /* get job status */
+ if ( edg_wll_JobStatusServer(ctx, j, flags, &s) ) {
+ edg_wll_ErrToFault(ctx, soap);
+ return SOAP_FAULT;
+ }
+
+ /* fill in the response fields */
+ out->status->ID = in->id[i];
+ out->status->State = edg_wll_StatToString(s.state);
+ }
+
return SOAP_OK;
}
+