IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26088


Ignore:
Timestamp:
Nov 10, 2009, 12:18:24 PM (16 years ago)
Author:
bills
Message:

add modes for managing distribution cleanup

Location:
trunk/ippTools/src
Files:
3 edited

Legend:

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

    r26015 r26088  
    4242static bool addfilesetMode(pxConfig *config);
    4343static bool revertfilesetMode(pxConfig *config);
     44static bool updatefilesetMode(pxConfig *config);
    4445static bool queuercrunMode(pxConfig *config);
    4546static bool updatercrunMode(pxConfig *config);
    4647static bool revertrcrunMode(pxConfig *config);
    4748static bool pendingdestMode(pxConfig *config);
     49static bool pendingcleanupMode(pxConfig *config);
     50static bool listfilesetsMode(pxConfig *config);
    4851
    4952static bool definetargetMode(pxConfig *config);
     
    8689        MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode);
    8790        MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode);
     91        MODECASE(DISTTOOL_MODE_PENDINGCLEANUP, pendingcleanupMode);
    8892        MODECASE(DISTTOOL_MODE_ADDFILESET, addfilesetMode);
    8993        MODECASE(DISTTOOL_MODE_REVERTFILESET, revertfilesetMode);
     94        MODECASE(DISTTOOL_MODE_LISTFILESETS, listfilesetsMode);
     95        MODECASE(DISTTOOL_MODE_UPDATEFILESET, updatefilesetMode);
    9096        MODECASE(DISTTOOL_MODE_QUEUERCRUN, queuercrunMode);
    9197        MODECASE(DISTTOOL_MODE_UPDATERCRUN, updatercrunMode);
     
    910916    return true;
    911917}
     918
    912919static bool revertfilesetMode(pxConfig *config)
    913920{
     
    17161723    return true;
    17171724}
     1725static bool pendingcleanupMode(pxConfig *config)
     1726{
     1727    PS_ASSERT_PTR_NON_NULL(config, false);
     1728
     1729    psMetadata *where = psMetadataAlloc();
     1730    PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
     1731    PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");
     1732    pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "==");
     1733
     1734    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1735    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1736
     1737    if (!psListLength(where->list)) {
     1738        psFree(where);
     1739        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     1740        return false;
     1741    }
     1742
     1743    psString query = pxDataGet("disttool_pendingcleanup.sql");
     1744
     1745    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1746    psStringAppend(&query, " AND %s", whereClause);
     1747    psFree(whereClause);
     1748    psFree(where);
     1749
     1750    // treat limit == 0 as "no limit"
     1751    if (limit) {
     1752        psString limitString = psDBGenerateLimitSQL(limit);
     1753        psStringAppend(&query, " %s", limitString);
     1754        psFree(limitString);
     1755    }
     1756
     1757    if (!p_psDBRunQuery(config->dbh, query)) {
     1758        psError(PS_ERR_UNKNOWN, false, "database error");
     1759        psFree(query);
     1760        if (!psDBRollback(config->dbh)) {
     1761            psError(PS_ERR_UNKNOWN, false, "database error");
     1762        }
     1763        return false;
     1764    }
     1765    psFree(query);
     1766
     1767    psArray *output = p_psDBFetchResult(config->dbh);
     1768    if (!output) {
     1769        psError(PS_ERR_UNKNOWN, false, "database error");
     1770        return false;
     1771    }
     1772    if (!psArrayLength(output)) {
     1773        psTrace("disttool", PS_LOG_INFO, "no rows found");
     1774        psFree(output);
     1775        return true;
     1776    }
     1777
     1778    if (!ippdbPrintMetadatas(stdout, output, "distToCleanup", !simple)) {
     1779        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1780        psFree(output);
     1781        return false;
     1782    }
     1783
     1784    psFree(output);
     1785
     1786    return true;
     1787}
     1788static bool listfilesetsMode(pxConfig *config)
     1789{
     1790    PS_ASSERT_PTR_NON_NULL(config, false);
     1791
     1792    psMetadata *where = psMetadataAlloc();
     1793    PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
     1794    PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "==");
     1795    PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "==");
     1796    PXOPT_COPY_STR(config->args, where, "-dest_name", "name", "==");
     1797    PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "==");
     1798    PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");
     1799    PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE");
     1800    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE");
     1801    PXOPT_COPY_STR(config->args, where, "-state", "state", "==");
     1802
     1803    PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false);
     1804    PXOPT_LOOKUP_BOOL(full, config->args, "-full", false);
     1805
     1806    pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "==");
     1807
     1808    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1809    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1810
     1811    if (!psListLength(where->list)) {
     1812        psFree(where);
     1813        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     1814        return false;
     1815    }
     1816
     1817    psString query = pxDataGet("disttool_listfilesets.sql");
     1818
     1819    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1820    psStringAppend(&query, " WHERE %s", whereClause);
     1821    psFree(whereClause);
     1822    psFree(where);
     1823
     1824    // treat limit == 0 as "no limit"
     1825    if (limit) {
     1826        psString limitString = psDBGenerateLimitSQL(limit);
     1827        psStringAppend(&query, " %s", limitString);
     1828        psFree(limitString);
     1829    }
     1830
     1831    if (!p_psDBRunQuery(config->dbh, query)) {
     1832        psError(PS_ERR_UNKNOWN, false, "database error");
     1833        psFree(query);
     1834        if (!psDBRollback(config->dbh)) {
     1835            psError(PS_ERR_UNKNOWN, false, "database error");
     1836        }
     1837        return false;
     1838    }
     1839    psFree(query);
     1840
     1841    psArray *output = p_psDBFetchResult(config->dbh);
     1842    if (!output) {
     1843        psError(PS_ERR_UNKNOWN, false, "database error");
     1844        return false;
     1845    }
     1846    if (!psArrayLength(output)) {
     1847        psTrace("disttool", PS_LOG_INFO, "no rows found");
     1848        psFree(output);
     1849        return true;
     1850    }
     1851
     1852    if (!ippdbPrintMetadatas(stdout, output, "distFilesets", !simple)) {
     1853        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1854        psFree(output);
     1855        return false;
     1856    }
     1857
     1858    psFree(output);
     1859
     1860    return true;
     1861}
     1862static bool updatefilesetMode(pxConfig *config)
     1863{
     1864    psMetadata *where = psMetadataAlloc();
     1865    PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "==");
     1866
     1867    if (!psListLength(where->list)) {
     1868        psFree(where);
     1869        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     1870        return false;
     1871    }
     1872
     1873    PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
     1874
     1875    // We don't use PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); here
     1876    // because we want -fault 0 to work
     1877    bool gotFault = false;
     1878    psS16 fault = psMetadataLookupS16(&gotFault, config->args, "-fault");
     1879
     1880    if ((!state) && (!gotFault)) {
     1881        psError(PXTOOLS_ERR_DATA, false, "parameters (-fault or -set_state) is required");
     1882        psFree(where);
     1883        return false;
     1884    }
     1885
     1886    psString query = psStringCopy("UPDATE rcDSFileset SET ");
     1887
     1888    if (state) {
     1889        psStringAppend(&query, " state = '%s'", state);
     1890    }
     1891
     1892    if (gotFault) {
     1893        psStringAppend(&query, "%s fault = %d", state ? ", " : "", fault);
     1894    }
     1895
     1896    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1897    psStringAppend(&query, " WHERE %s", whereClause);
     1898    psFree(whereClause);
     1899    psFree(where);
     1900
     1901    if (!p_psDBRunQuery(config->dbh, query)) {
     1902        psError(PS_ERR_UNKNOWN, false, "database error");
     1903        psFree(query);
     1904        return false;
     1905    }
     1906
     1907    return true;
     1908}
  • trunk/ippTools/src/disttool.h

    r25835 r26088  
    3333    DISTTOOL_MODE_PROCESSEDCOMPONENT,
    3434    DISTTOOL_MODE_TOADVANCE,
     35    DISTTOOL_MODE_PENDINGCLEANUP,
    3536    DISTTOOL_MODE_PENDINGFILESET,
    3637    DISTTOOL_MODE_ADDFILESET,
    3738    DISTTOOL_MODE_REVERTFILESET,
     39    DISTTOOL_MODE_LISTFILESETS,
     40    DISTTOOL_MODE_UPDATEFILESET,
    3841    DISTTOOL_MODE_QUEUERCRUN,
    3942    DISTTOOL_MODE_UPDATERCRUN,
  • trunk/ippTools/src/disttoolConfig.c

    r26015 r26088  
    9494    psMetadataAddBool(pendingcomponentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    9595
     96    // -pendingcleanup
     97    psMetadata *pendingcleanupArgs = psMetadataAlloc();
     98    psMetadataAddS64(pendingcleanupArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     99    psMetadataAddStr(pendingcleanupArgs, PS_LIST_TAIL, "-stage",    0, "limit results to runs for stage", NULL);
     100    psMetadataAddStr(pendingcleanupArgs, PS_LIST_TAIL, "-label",    PS_META_DUPLICATE_OK, "limit results to label", NULL);
     101    psMetadataAddU64(pendingcleanupArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
     102    psMetadataAddBool(pendingcleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     103
    96104
    97105    // -addprocessedcomponent
     
    143151    psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0);
    144152    psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name",    0, "define file name", NULL);
    145     psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
     153
     154    // -updatefileset
     155    psMetadata *updatefilesetArgs = psMetadataAlloc();
     156    psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0);
     157//    psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     158    psMetadataAddStr(updatefilesetArgs, PS_LIST_TAIL, "-set_state",0, "new value for state", NULL);
     159    psMetadataAddS32(updatefilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
    146160
    147161    // -pendingdest
     
    163177    psMetadataAddS16(revertfilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
    164178    psMetadataAddBool(revertfilesetArgs, PS_LIST_TAIL, "-all",    0, "revert all faulted runs", NULL);
     179
     180    // -listfileset
     181    psMetadata *listfilesetsArgs = psMetadataAlloc();
     182    psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-dist_id", 0, "list filesets with dist_id", 0);
     183    psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-target_id", 0, "list filesets with target_id", 0);
     184    psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-dest_id", 0, "list filesets with dest_id", 0);
     185    psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-int_id", 0, "list filesets with int_id", 0);
     186    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-dest_name",  0, "list filesets for destinationn name)", NULL);
     187    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-dist_group",  0, "list filesets for dist_group (LIKE comparison)", NULL);
     188    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-filter",    0, "list filesets by filter (LIKE comparison)", NULL);
     189    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-stage",     0, "list filesets for stage", NULL);
     190    psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL,"-clean",     0, "list clean filesets", false);
     191    psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL,"-full",      0, "list full filesets", false);
     192    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-state",     0, "list filesets in state", NULL);
     193    psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-label",   PS_META_DUPLICATE_OK, "limit results to label", NULL);
     194    psMetadataAddU64(listfilesetsArgs, PS_LIST_TAIL, "-limit",     0, "limit number of filesets listed to N", 0);
     195    psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL, "-simple",  0, "use the simple output format", false);
    165196
    166197    // -queuercrun
     
    287318    PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs);
    288319    PXOPT_ADD_MODE("-toadvance",          "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs);
     320    PXOPT_ADD_MODE("-pendingcleanup",     "", DISTTOOL_MODE_PENDINGCLEANUP, pendingcleanupArgs);
    289321    PXOPT_ADD_MODE("-pendingfileset",     "", DISTTOOL_MODE_PENDINGFILESET, pendingfilesetArgs);
    290322    PXOPT_ADD_MODE("-addfileset",         "", DISTTOOL_MODE_ADDFILESET, addfilesetArgs);
     323    PXOPT_ADD_MODE("-updatefileset",         "", DISTTOOL_MODE_UPDATEFILESET, updatefilesetArgs);
     324    PXOPT_ADD_MODE("-listfilesets",        "", DISTTOOL_MODE_LISTFILESETS, listfilesetsArgs);
    291325    PXOPT_ADD_MODE("-revertfileset",      "", DISTTOOL_MODE_REVERTFILESET, revertfilesetArgs);
    292326    PXOPT_ADD_MODE("-queuercrun",         "", DISTTOOL_MODE_QUEUERCRUN, queuercrunArgs);
Note: See TracChangeset for help on using the changeset viewer.