IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 23842


Ignore:
Timestamp:
Apr 13, 2009, 4:32:41 PM (17 years ago)
Author:
bills
Message:

modes to disttool for creating rcDSFileset objects
tweaks to the rcDSFileset and rcDSProduct tables

Location:
trunk/ippTools
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r23774 r23842  
    100100     disttool_definebyquery_warp.sql \
    101101     disttool_pendingcomponent.sql \
     102     disttool_pendingfileset.sql \
    102103     disttool_processedcomponent.sql \
    103104     disttool_revertrun_update.sql \
  • trunk/ippTools/share/disttool_processedcomponent.sql

    r23246 r23842  
    1 SELECT *
    2 FROM    distComponent
     1SELECT
     2    dist_id,
     3    target_id,
     4    stage,
     5    stage_id,
     6    component,
     7    CONCAT_WS('.', outroot, CONVERT(dist_id, CHAR)) as outdir,
     8    bytes,
     9    md5sum,
     10    name,
     11    distComponent.state,
     12    distComponent.fault
     13FROM    distRun
     14JOIN distComponent USING(dist_id)
  • trunk/ippTools/share/pxadmin_create_tables.sql

    r23776 r23842  
    12501250    dbname      VARCHAR(64),
    12511251    dbhost      VARCHAR(64),
    1252     prod_root   VARCHAR(255),
    12531252    PRIMARY KEY(prod_id)
    12541253)  ENGINE=innodb DEFAULT CHARSET=latin1;
     
    12811280    dist_id     BIGINT,
    12821281    prod_id     BIGINT,
    1283     name        VARCHAR(64),
     1282    name        VARCHAR(255),
    12841283    state       VARCHAR(64),
    12851284    registered  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    1286     PRIMARY KEY(fs_id),
     1285    fault       SMALLINT DEFAULT 0,
     1286    PRIMARY KEY(dist_id, prod_id),
     1287    KEY(fs_id),
    12871288    FOREIGN KEY(dist_id) REFERENCES distRun(dist_id),
    12881289    FOREIGN KEY(prod_id) REFERENCES rcDSProduct(prod_id)
     1290--    KEY(dist_id, prod_id)
    12891291)  ENGINE=innodb DEFAULT CHARSET=latin1;
    12901292
  • trunk/ippTools/src/disttool.c

    r23783 r23842  
    3939static bool processedcomponentMode(pxConfig *config);
    4040static bool toadvanceMode(pxConfig *config);
     41static bool pendingfilesetMode(pxConfig *config);
     42static bool addfilesetMode(pxConfig *config);
    4143
    4244# define MODECASE(caseName, func) \
     
    6769        MODECASE(DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentMode);
    6870        MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode);
     71        MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode);
     72        MODECASE(DISTTOOL_MODE_ADDFILESET, addfilesetMode);
    6973        default:
    7074            psAbort("invalid option (this should not happen)");
     
    790794    return true;
    791795}
     796
     797static bool pendingfilesetMode(pxConfig *config)
     798{
     799    PS_ASSERT_PTR_NON_NULL(config, false);
     800
     801    psMetadata *where = psMetadataAlloc();
     802    PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
     803    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     804
     805    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     806    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     807
     808    // look for "inputs" that need to processed
     809    psString query = pxDataGet("disttool_pendingfileset.sql");
     810    if (!query) {
     811        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     812        return false;
     813    }
     814
     815    if (psListLength(where->list)) {
     816        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     817        psStringAppend(&query, " AND %s", whereClause);
     818        psFree(whereClause);
     819    }
     820    psFree(where);
     821
     822    // treat limit == 0 as "no limit"
     823    if (limit) {
     824        psString limitString = psDBGenerateLimitSQL(limit);
     825        psStringAppend(&query, " %s", limitString);
     826        psFree(limitString);
     827    }
     828
     829    if (!p_psDBRunQuery(config->dbh, query)) {
     830        psError(PS_ERR_UNKNOWN, false, "database error");
     831        psFree(query);
     832        return false;
     833    }
     834    psFree(query);
     835
     836    psArray *output = p_psDBFetchResult(config->dbh);
     837    if (!output) {
     838        psErrorCode err = psErrorCodeLast();
     839        switch (err) {
     840            case PS_ERR_DB_CLIENT:
     841                psError(PXTOOLS_ERR_SYS, false, "database error");
     842            case PS_ERR_DB_SERVER:
     843                psError(PXTOOLS_ERR_PROG, false, "database error");
     844            default:
     845                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     846        }
     847
     848        return false;
     849    }
     850    if (!psArrayLength(output)) {
     851        psTrace("disttool", PS_LOG_INFO, "no rows found");
     852        psFree(output);
     853        return true;
     854    }
     855
     856    if (psArrayLength(output)) {
     857        // negative simple so the default is true
     858        if (!ippdbPrintMetadatas(stdout, output, "pendingfileset", !simple)) {
     859            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     860            psFree(output);
     861            return false;
     862        }
     863    }
     864
     865    psFree(output);
     866
     867    return true;
     868}
     869static bool addfilesetMode(pxConfig *config)
     870{
     871
     872    // required values
     873    PXOPT_LOOKUP_S64(dist_id, config->args, "-dist_id", true, false);
     874    PXOPT_LOOKUP_S64(prod_id, config->args, "-prod_id", true, false);
     875
     876    PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
     877
     878    // unless fault code is set require name
     879    PXOPT_LOOKUP_STR(name, config->args, "-name", fault == 0, false);
     880
     881    if (!rcDSFilesetInsert(config->dbh,
     882            0,          // fs_id
     883            dist_id,
     884            prod_id,
     885            name,
     886            "full",
     887            fault)) {
     888        psError(PS_ERR_UNKNOWN, false, "database error");
     889        return false;
     890    }
     891
     892    return true;
     893}
     894
  • trunk/ippTools/src/disttool.h

    r23247 r23842  
    3333    DISTTOOL_MODE_PROCESSEDCOMPONENT,
    3434    DISTTOOL_MODE_TOADVANCE,
     35    DISTTOOL_MODE_PENDINGFILESET,
     36    DISTTOOL_MODE_ADDFILESET,
    3537} disttoolMode;
    3638
  • trunk/ippTools/src/disttoolConfig.c

    r23765 r23842  
    124124    psMetadataAddBool(toadvanceArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    125125
     126    // -pendingfileset
     127    psMetadata *pendingfilesetArgs = psMetadataAlloc();
     128    psMetadataAddS64(pendingfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     129    psMetadataAddStr(pendingfilesetArgs, PS_LIST_TAIL, "-label",    0, "limit results to label", NULL);
     130    psMetadataAddStr(pendingfilesetArgs, PS_LIST_TAIL, "-stage",    0, "limit results to runs for stage", NULL);
     131    psMetadataAddU64(pendingfilesetArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
     132    psMetadataAddBool(pendingfilesetArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     133
     134    // -addfileset
     135    psMetadata *addfilesetArgs = psMetadataAlloc();
     136    psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     137    psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);
     138    psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL);
     139    psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0);
    126140    psMetadata *argSets = psMetadataAlloc();
    127141    psMetadata *modes = psMetadataAlloc();
     
    135149    PXOPT_ADD_MODE("-processedcomponent",      "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs);
    136150    PXOPT_ADD_MODE("-toadvance",      "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs);
     151    PXOPT_ADD_MODE("-pendingfileset",      "", DISTTOOL_MODE_PENDINGFILESET, pendingfilesetArgs);
     152    PXOPT_ADD_MODE("-addfileset",      "", DISTTOOL_MODE_ADDFILESET, addfilesetArgs);
    137153
    138154    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.