IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27171


Ignore:
Timestamp:
Mar 3, 2010, 4:37:05 PM (16 years ago)
Author:
bills
Message:

Add timestamp and poll interval to pstampDataStore. Don't poll for new
requests at each data store unless the time since the last poll is greater
than the requested interval
Add label to pstampDataStore. Use it to set label for requests.
Support -label in the query modes of pstamptool.

Location:
trunk/ippTools/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pstamptool.c

    r26981 r27171  
    116116    PS_ASSERT_PTR_NON_NULL(config, false);
    117117
    118     PXOPT_LOOKUP_STR(uri,         config->args, "-uri",           true, false);
    119     PXOPT_LOOKUP_STR(outProduct,  config->args, "-out_product",   true, false);
    120     PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false);
    121     PXOPT_LOOKUP_STR(state,       config->args, "-state",         false, false);
     118    PXOPT_LOOKUP_STR(uri,         config->args, "-set_uri",           true, false);
     119    PXOPT_LOOKUP_STR(outProduct,  config->args, "-set_out_product",   true, false);
     120    PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset", false, false);
     121    PXOPT_LOOKUP_STR(state,       config->args, "-set_state",         false, false);
     122    PXOPT_LOOKUP_STR(label,       config->args, "-set_label",         false, false);
     123    PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval",false, false);
    122124
    123125    if (!pstampDataStoreInsert(config->dbh,
     
    125127            state,
    126128            lastFileset,
     129            NULL,       // timestamp
     130            label,      // label
    127131            outProduct,
    128             uri
     132            uri,
     133            pollInterval
    129134        )) {
    130135        psError(PS_ERR_UNKNOWN, false, "database error");
     
    189194
    190195    PXOPT_LOOKUP_S64(ds_id,       config->args, "-ds_id",         true, false);
    191     PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset",  false, false);
    192     PXOPT_LOOKUP_STR(state,       config->args, "-state",         false, false);
    193 
    194     if (!state && !lastFileset) {
     196    PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset",  false, false);
     197    PXOPT_LOOKUP_STR(state,       config->args, "-set_state",         false, false);
     198    PXOPT_LOOKUP_STR(label,       config->args, "-set_label",         false, false);
     199    PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval",         false, false);
     200    PXOPT_LOOKUP_BOOL(update_timestamp, config->args, "-update_timestamp", false);
     201
     202    if (!state && !lastFileset && !pollInterval && !update_timestamp && !label) {
    195203        psError(PS_ERR_UNKNOWN, true, "at least one of -last_fileset or -state is required");
    196204        return false;
    197205    }
    198206
    199     char *query = psStringCopy ("UPDATE pstampDataStore SET");
    200     bool needComma = false;
     207    char *query = psStringCopy ("UPDATE pstampDataStore SET timestamp = CURRENT_TIMESTAMP() ");
    201208
    202209    if (lastFileset) {
    203         psStringAppend(&query, " lastFileset = '%s'", lastFileset);
    204         needComma = true;
     210        psStringAppend(&query, " , lastFileset = '%s'", lastFileset);
    205211    }
    206212
    207213    if (state) {
    208         psStringAppend(&query, "%s state = '%s'", needComma ? "," : " ", state);
    209         needComma = true; // be ready in case we add another field
     214        psStringAppend(&query, ", state = '%s'", state);
     215    }
     216
     217    if (label) {
     218        psStringAppend(&query, ", label = '%s'", label);
     219    }
     220
     221    if (pollInterval) {
     222        psStringAppend(&query, ", pollInterval = %d", pollInterval);
    210223    }
    211224
     
    265278    psMetadata *where = psMetadataAlloc();
    266279    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     280    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
    267281
    268282    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    387401    PS_ASSERT_PTR_NON_NULL(config, false);
    388402
     403    psMetadata *where = psMetadataAlloc();
     404    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
     405
    389406    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    390407    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    391408
    392409    psString query = pxDataGet("pstamptool_completedreq.sql");
     410
     411    if (psListLength(where->list)) {
     412        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     413        psStringAppend(&query, " AND %s", whereClause);
     414        psFree(whereClause);
     415    }
     416    psFree(where);
    393417
    394418    // treat limit == 0 as "no limit"
     
    674698    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
    675699    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     700    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
     701
    676702    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    677703    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    685711    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
    686712    if (psListLength(where->list)) {
    687         psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob");
     713        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    688714        psStringAppend(&query, " AND %s", whereClause);
    689715        psFree(whereClause);
  • trunk/ippTools/src/pstamptoolConfig.c

    r27082 r27171  
    4747    psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri",          0, "define storage uri (required)", NULL);
    4848    psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-out_product",  0, "define output product name (required)", NULL);
    49     psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, "define last fileset seen", NULL);
    50     psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-state",        0, "define datastore state", "enabled");
     49    psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_last_fileset", 0, "define last fileset seen", NULL);
     50    psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_state",        0, "define datastore state", "enabled");
     51    psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_label",        0, "define datastore label", NULL);
     52    psMetadataAddS32(adddatastoreArgs, PS_LIST_TAIL, "-set_poll_interval", 0, "define datastore poll interval (seconds)", 60);
    5153
    5254    // -datastore
     
    5860    psMetadata *moddatastoreArgs = psMetadataAlloc();
    5961    psMetadataAddS64(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0,            "define ds_id", 0);
    60     psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0,     "set last_fileset seen", NULL);
    61     psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0,            "set state", NULL);
     62    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_last_fileset", 0,     "set last_fileset seen", NULL);
     63    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_state", 0,            "set state", NULL);
     64    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_label", 0,            "set label", NULL);
     65    psMetadataAddS32(moddatastoreArgs, PS_LIST_TAIL, "-set_poll_interval", 0, "define datastore poll interval (seconds)", 0);
     66    psMetadataAddBool(moddatastoreArgs, PS_LIST_TAIL, "-update_timestamp", 0, "update the timestamp", false);
     67    psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0,            "search by state", NULL);
    6268
    6369    // -addreq
     
    7177    psMetadata *pendingreqArgs = psMetadataAlloc();
    7278    psMetadataAddS64(pendingreqArgs, PS_LIST_TAIL, "-req_id", 0,            "define req_id", 0);
     79    psMetadataAddStr(pendingreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL);
    7380    psMetadataAddU64(pendingreqArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
    7481    psMetadataAddBool(pendingreqArgs, PS_LIST_TAIL, "-simple", 0,            "use the simple output format", false);
     
    8491    // -completedreq
    8592    psMetadata *completedreqArgs = psMetadataAlloc();
     93    psMetadataAddStr(completedreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL);
    8694    psMetadataAddU64(completedreqArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
    8795    psMetadataAddBool(completedreqArgs, PS_LIST_TAIL, "-simple", 0,            "use the simple output format", false);
     
    127135    psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0,            "define job", 0);
    128136    psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-req_id", 0,            "define request", 0);
     137    psMetadataAddStr(pendingjobArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL);
    129138    psMetadataAddU64(pendingjobArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
    130139    psMetadataAddBool(pendingjobArgs, PS_LIST_TAIL, "-simple", 0,            "use the simple output format", false);
Note: See TracChangeset for help on using the changeset viewer.