From: František Dvořák Date: Thu, 13 Oct 2005 15:38:16 +0000 (+0000) Subject: - fixed configuring port X-Git-Tag: glite-jp-client_R_1_0_0~61 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=627deb530e62b293144506c12782b77f6ad02d26;p=jra1mw.git - fixed configuring port - used batch feed in configuration - fixed destination (must be with port) - insert job on UpdateJobs - fixed soap translation (UpdateJobs) --- diff --git a/org.glite.jp.index/src/bones_server.c b/org.glite.jp.index/src/bones_server.c index c51f50b..d23118d 100644 --- a/org.glite.jp.index/src/bones_server.c +++ b/org.glite.jp.index/src/bones_server.c @@ -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; diff --git a/org.glite.jp.index/src/conf.c b/org.glite.jp.index/src/conf.c index 5dd0b19..df64aae 100644 --- a/org.glite.jp.index/src/conf.c +++ b/org.glite.jp.index/src/conf.c @@ -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; diff --git a/org.glite.jp.index/src/conf.h b/org.glite.jp.index/src/conf.h index 154a49c..f1ed0fa 100644 --- a/org.glite.jp.index/src/conf.h +++ b/org.glite.jp.index/src/conf.h @@ -6,6 +6,7 @@ #include +#define GLITE_JPIS_DEFAULT_PORT_STR "8902" typedef struct _glite_jp_is_feed { char *PS_URL; //URLs of Primary Storage servers diff --git a/org.glite.jp.index/src/context.c b/org.glite.jp.index/src/context.c index 9eb43a3..68a856c 100644 --- a/org.glite.jp.index/src/context.c +++ b/org.glite.jp.index/src/context.c @@ -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; } diff --git a/org.glite.jp.index/src/context.h b/org.glite.jp.index/src/context.h index 890413a..0ca9551 100644 --- a/org.glite.jp.index/src/context.h +++ b/org.glite.jp.index/src/context.h @@ -10,10 +10,10 @@ 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; diff --git a/org.glite.jp.index/src/db_ops.c b/org.glite.jp.index/src/db_ops.c index 87ccd16..576377b 100644 --- a/org.glite.jp.index/src/db_ops.c +++ b/org.glite.jp.index/src/db_ops.c @@ -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; +} diff --git a/org.glite.jp.index/src/soap_ops.c b/org.glite.jp.index/src/soap_ops.c index f3bff91..5f71570 100644 --- a/org.glite.jp.index/src/soap_ops.c +++ b/org.glite.jp.index/src/soap_ops.c @@ -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); diff --git a/org.glite.jp.index/src/ws_ps_typeref.c b/org.glite.jp.index/src/ws_ps_typeref.c index 35beab4..3fea887 100644 --- a/org.glite.jp.index/src/ws_ps_typeref.c +++ b/org.glite.jp.index/src/ws_ps_typeref.c @@ -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;