- fixed configuring port
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Thu, 13 Oct 2005 15:38:16 +0000 (15:38 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Thu, 13 Oct 2005 15:38:16 +0000 (15:38 +0000)
 - used batch feed in configuration
 - fixed destination (must be with port)
 - insert job on UpdateJobs
 - fixed soap translation (UpdateJobs)

org.glite.jp.index/src/bones_server.c
org.glite.jp.index/src/conf.c
org.glite.jp.index/src/conf.h
org.glite.jp.index/src/context.c
org.glite.jp.index/src/context.h
org.glite.jp.index/src/db_ops.c
org.glite.jp.index/src/soap_ops.c
org.glite.jp.index/src/ws_ps_typeref.c

index c51f50b..d23118d 100644 (file)
@@ -63,7 +63,7 @@ static char           *server_cert, *server_key, *cadir;
 static gss_cred_id_t   mycred = GSS_C_NO_CREDENTIAL;
 static char            *mysubj;
 
-static char            *port = "8902";
+static char            *port = GLITE_JPIS_DEFAULT_PORT_STR;
 static int             debug = 1;
 
 static glite_jp_context_t      ctx;
index 5dd0b19..df64aae 100644 (file)
@@ -51,8 +51,8 @@ int glite_jp_get_conf(int argc, char **argv, char *config_file, glite_jp_is_conf
        conf->feeds[0]->query[0][0].op = GLITE_JP_QUERYOP_GREATER;
        conf->feeds[0]->query[0][0].value = strdup("0");
 
-       conf->feeds[0]->history = 0;
-       conf->feeds[0]->continuous = 1;
+       conf->feeds[0]->history = 1;
+       conf->feeds[0]->continuous = 0;
 
        conf->feeds[1] = NULL;
 
index 154a49c..f1ed0fa 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <glite/jp/types.h>
 
+#define GLITE_JPIS_DEFAULT_PORT_STR "8902"
 
 typedef struct _glite_jp_is_feed {
        char                    *PS_URL;        //URLs of Primary Storage servers
index 9eb43a3..68a856c 100644 (file)
@@ -15,7 +15,7 @@ int glite_jpis_init_context(glite_jpis_context_t *isctx, glite_jp_context_t jpct
                (*isctx)->jpctx = jpctx;
                (*isctx)->conf = conf;
                globus_libc_gethostname(hname, sizeof hname);
-               (*isctx)->hname = strdup(hname);
+               asprintf(&(*isctx)->hname, "https://%s:%s", hname, conf->port ? conf->port : GLITE_JPIS_DEFAULT_PORT_STR);
                return 0;
        } else return ENOMEM;
 }
index 890413a..0ca9551 100644 (file)
 typedef struct _glite_jpis_context {
        glite_jp_context_t jpctx;
        glite_jp_is_conf *conf;
-       glite_jp_db_stmt_t select_unlocked_feed_stmt, lock_feed_stmt, init_feed_stmt, unlock_feed_stmt, select_info_feed_stmt, update_state_feed_stmt, update_error_feed_stmt, select_info_attrs_indexed;
+       glite_jp_db_stmt_t select_unlocked_feed_stmt, lock_feed_stmt, init_feed_stmt, unlock_feed_stmt, select_info_feed_stmt, update_state_feed_stmt, update_error_feed_stmt, select_info_attrs_indexed, select_jobid_stmt, insert_job_stmt;
        long int param_uniqueid, param_state;
-       char param_feedid[33], param_ps[256], param_indexed[256];
-       unsigned long param_ps_len, param_feedid_len, param_indexed_len;
+       char param_feedid[33], param_ps[256], param_indexed[256], param_jobid[33], param_dg_jobid[256];
+       unsigned long param_ps_len, param_feedid_len, param_indexed_len, param_jobid_len, param_dg_jobid_len;
        void *param_expires;
 
        char *hname;
index 87ccd16..576377b 100644 (file)
@@ -453,6 +453,19 @@ int glite_jpis_init_db(glite_jpis_context_t isctx) {
                GLITE_JP_DB_TYPE_VARCHAR, NULL, &isctx->param_indexed,  sizeof(isctx->param_indexed), &isctx->param_indexed_len);
        if ((ret = glite_jp_db_prepare(jpctx, "SELECT name FROM attrs WHERE (indexed=1)", &isctx->select_info_attrs_indexed, NULL, myres)) != 0) goto fail;
 
+       // sql command: check for job with jobid
+       glite_jp_db_create_params(&myparam, 1,
+               GLITE_JP_DB_TYPE_CHAR, &isctx->param_jobid, &isctx->param_jobid_len);
+       if ((glite_jp_db_prepare(jpctx, "SELECT jobid FROM jobs WHERE jobid=?", &isctx->select_jobid_stmt, myparam, NULL)) != 0) goto fail;
+
+       // sql command: insert the job
+       glite_jp_db_create_params(&myparam, 3,
+               GLITE_JP_DB_TYPE_CHAR, &isctx->param_jobid, &isctx->param_jobid_len,
+               GLITE_JP_DB_TYPE_VARCHAR, &isctx->param_dg_jobid, &isctx->param_dg_jobid_len,
+               GLITE_JP_DB_TYPE_VARCHAR, &isctx->param_ps, &isctx->param_ps_len);
+       // XXX: as attribute?
+       if ((glite_jp_db_prepare(jpctx, "INSERT INTO jobs (jobid, dg_jobid, ownerid, ps) VALUES (?, ?, 'XXX: unknown', ?)", &isctx->insert_job_stmt, myparam, NULL)) != 0) goto fail;
+
        return 0;
 
 fail:  
@@ -470,6 +483,8 @@ void glite_jpis_free_db(glite_jpis_context_t ctx) {
        glite_jp_db_freestmt(&ctx->update_state_feed_stmt);
        glite_jp_db_freestmt(&ctx->update_error_feed_stmt);
        glite_jp_db_freestmt(&ctx->select_info_attrs_indexed);
+       glite_jp_db_freestmt(&ctx->select_jobid_stmt);
+       glite_jp_db_freestmt(&ctx->insert_job_stmt);
        glite_jp_db_close(ctx->jpctx);
 }
 
@@ -571,3 +586,22 @@ int glite_jpis_insertAttrVal(glite_jpis_context_t ctx, const char *jobid, glite_
 
        return 0;
 }
+
+
+int glite_jpis_lazyInsertJob(glite_jpis_context_t ctx, const char *jobid) {
+       int ret;
+
+       lprintf("%s\n", __FUNCTION__);
+
+       switch (ret = glite_jp_db_execute(ctx->select_jobid_stmt)) {
+       case -1: return ctx->jpctx->error->code;
+       case 0: 
+               lprintf("inserting jobid '%s'\n", jobid);
+               if (glite_jp_db_execute(ctx->insert_job_stmt) != 1) return ctx->jpctx->error->code;
+               break;
+       case 1: lprintf("jobid '%s' found\n", jobid); break;
+       default: assert(ret != 1); break;
+       }
+
+       return 0;
+}
index f3bff91..5f71570 100644 (file)
@@ -85,6 +85,8 @@ static int updateJob(glite_jpis_context_t ctx, struct jptype__jobRecord *jobAttr
 
        if (jobAttrs->remove) assert(*(jobAttrs->remove) == 0);
 
+       if ((ret = glite_jpis_lazyInsertJob(ctx, jobAttrs->jobid)) != 0) return ret;
+
        for (iattrs = 0; iattrs < jobAttrs->__sizeattributes; iattrs++) {
                attr = jobAttrs->attributes[iattrs];
                glite_jpis_SoapToAttrVal(&av, attr);
index 35beab4..3fea887 100644 (file)
@@ -129,6 +129,7 @@ void glite_jpis_SoapToAttrVal(glite_jp_attrval_t *av, const struct jptype__attrV
                av->size =attr->value->blob->__size ;
        } else {
                av->size = -1;
+               av->value = attr->value->string;
        }
        SoapToAttrOrig(&av->origin, attr->origin);
        av->origin_detail = attr->originDetail;