IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 23912


Ignore:
Timestamp:
Apr 17, 2009, 3:58:46 PM (17 years ago)
Author:
bills
Message:

Distribution progress

Location:
trunk
Files:
6 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/dbconfig/changes.txt

    r23893 r23912  
    10801080    FOREIGN KEY(file_id) REFERENCES receiveFile(file_id)
    10811081) ENGINE=innodb DEFAULT CHARSET=latin1;
     1082
     1083ALTER TABLE rcRun ADD COLUMN fault SMALLINT DEFAULT 0;
     1084ALTER TABLE rcRun ADD COLUMN status_fs VARCHAR(64) AFTER state;
  • trunk/dbconfig/rc.md

    r23843 r23912  
    3737    dest_id     S64         0       # Primary Key fkey(dest_id) ref rcDestination(dest_id)
    3838    state       STR         64
     39    status_fs_name   STR         64
    3940    registered  UTC         0001-01-01T00:00:00Z
     41    fault       S16        0
    4042END
    4143
  • trunk/ippScripts/Build.PL

    r23889 r23912  
    8686        scripts/receive_fileset.pl
    8787        scripts/receive_file.pl
     88        scripts/rcserver_checkstatus.pl
    8889    )],
    8990    dist_abstract => 'Scripts for running the Pan-STARRS IPP',
  • trunk/ippScripts/scripts/dist_make_fileset.pl

    r23861 r23912  
    153153}
    154154
    155 # XXX: disttool -addrcdsfileset
    156155{
    157156    my $command = "$disttool -addfileset -dist_id $dist_id -prod_id $prod_id -name $fileset_name";
     
    161160        run(command => $command, verbose => $verbose);
    162161    unless ($success) {
     162        # XXX: if we get here we the fileset has been created but the database update failed
     163        # We need to have revertfileset check whether the fileset exists and do dsreg -del if it does
    163164        $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);
    164165        &my_die("Unable to perform $command error_code: $error_code", $dist_id, $prod_id, $error_code);
  • trunk/ippTasks/rcserver.pro

    r23861 r23912  
    99### Initialise the books containing the tasks to do
    1010book init rcPendingFS
    11 book init rcPendingDS
     11book init rcPendingDest
    1212
    1313### Database lists
    1414$rcPendingFS_DB = 0
    15 $rcPendingDS_DB = 0
     15$rcPendingDest_DB = 0
    1616
    1717### Check status of tasks
    1818macro rcserver.status
    1919  book listbook rcPendingFS
    20   book listbook rcPendingDS
     20  book listbook rcPendingDest
    2121end
    2222
     
    2424macro rcserver.reset
    2525  book init rcPendingFS
    26   book init rcPendingDS
     26  book init rcPendingDest
    2727end
    2828
     
    3535    active true
    3636  end
    37   task rcserver.checkruns.load
    38     active true
    39   end
    40   task rcserver.checkruns.run
     37  task rcserver.checkstatus.load
     38    active true
     39  end
     40  task rcserver.checkstatus.run
    4141    active true
    4242  end
     
    4949    active false
    5050  end
    51   task rcserver.checkruns.load
    52     active false
    53   end
    54   task rcserver.checkruns.run
     51  task rcserver.checkstatus.load
     52    active false
     53  end
     54  task rcserver.checkstatus.run
    5555    active false
    5656  end
     
    169169
    170170
    171 task           rcserver.checkruns.load
     171task           rcserver.checkstatus.load
    172172  host         local
    173173
     
    177177  npending     1
    178178
    179   active false
    180 
    181179  stdout NULL
    182   stderr $LOGDIR/rcserver.checkruns.load.log
    183 
    184   task.exec
    185     $run = disttool -pendingdatastores
     180  stderr $LOGDIR/rcserver.checkstatus.load.log
     181
     182  task.exec
     183    $run = disttool -pendingdest
    186184    if ($DB:n == 0)
    187185      option DEFAULT
    188186    else
    189187      # save the DB name for the exit tasks
    190       option $DB:$rcPendingDS_DB
    191       $run = $run -dbname $DB:$rcPendingDS_DB
    192       $rcPendingDS_DB ++
    193       if ($rcPendingDS_DB >= $DB:n) set rcPendingDS_DB = 0
     188      option $DB:$rcPendingDest_DB
     189      $run = $run -dbname $DB:$rcPendingDest_DB
     190      $rcPendingDest_DB ++
     191      if ($rcPendingDest_DB >= $DB:n) set rcPendingDest_DB = 0
    194192    end
    195193    add_poll_args run
     
    200198  task.exit    0
    201199    # convert 'stdout' to book format
    202     ipptool2book stdout rcPendingDS -key fs_id -uniq -setword dbname $options:0 -setword pantaskState INIT
     200    ipptool2book stdout rcPendingDest -key dest_id -uniq -setword dbname $options:0 -setword pantaskState INIT
    203201    if ($VERBOSE > 2)
    204       book listbook rcPendingDS
     202      book listbook rcPendingDest
    205203    end
    206204
    207205    # delete existing entries in the appropriate pantaskStates
    208     process_cleanup rcPendingDS
     206    process_cleanup rcPendingDest
    209207  end
    210208
     
    220218end
    221219
    222 task           rcserver.checkruns.run
     220task           rcserver.checkstatus.run
    223221  periods      -poll $RUNPOLL
    224222  periods      -exec $RUNEXEC
    225223  periods      -timeout 60
    226224
    227   active false
    228 
    229   task.exec
    230     book npages rcPendingDS -var N
     225  periods      -exec 20
     226
     227  task.exec
     228    book npages rcPendingDest -var N
    231229    if ($N == 0) break
    232230    if ($NETWORK == 0) break
    233231   
    234232    # look for new components to process (pantaskState == INIT)
    235     book getpage rcPendingDS 0 -var pageName -key pantaskState INIT
     233    book getpage rcPendingDest 0 -var pageName -key pantaskState INIT
    236234    if ("$pageName" == "NULL") break
    237235
    238     book setword rcPendingDS $pageName pantaskState RUN
    239     book getword rcPendingDS $pageName dist_id -var DIST_ID
    240     book getword rcPendingDS $pageName stage   -var STAGE
    241     book getword rcPendingDS $pageName stage_id -var STAGE_ID
    242     book getword rcPendingDS $pageName outdir -var OUTDIR
     236    stdout NULL
     237    stderr $LOGDIR/rcserver.checkstatus.run.log
     238
     239    book setword rcPendingDest $pageName pantaskState RUN
     240    book getword rcPendingDest $pageName dest_id -var DEST_ID
     241    book getword rcPendingDest $pageName prod_id -var PROD_ID
     242    book getword rcPendingDest $pageName status_uri -var STATUS_URI
     243    book getword rcPendingDest $pageName last_fileset -var LAST_FILESET
     244    book getword rcPendingDest $pageName dbname -var DBNAME
    243245
    244246    host anyhost
    245247
    246     sprintf logfile "%s/dist.advance.%s.log" $OUTDIR $DIST_ID
    247     stdout $logfile
    248     stderr $logfile
    249 
    250     $run = dist_advancerun.pl --dist_id $DIST_ID --stage $STAGE --stage_id $STAGE_ID --outdir $OUTDIR --logfile $logfile
     248    $run = rcserver_checkstatus.pl --dest_id $DEST_ID --prod_id $PROD_ID --status_uri $STATUS_URI --last_fileset $LAST_FILESET
    251249    add_standard_args run
    252250
     
    263261  # default exit status
    264262  task.exit    default
    265     process_exit rcPendingDS $options:0 $JOB_STATUS
     263    process_exit rcPendingDest $options:0 $JOB_STATUS
    266264  end
    267265
     
    269267  task.exit    timeout
    270268    showcommand timeout
    271     book setword rcPendingDS $options:0 pantaskState TIMEOUT
    272   end
    273 end
    274 
     269    book setword rcPendingDest $options:0 pantaskState TIMEOUT
     270  end
     271end
     272
  • trunk/ippTools/share/Makefile.am

    r23898 r23912  
    106106     disttool_pendingcomponent.sql \
    107107     disttool_pendingfileset.sql \
     108     disttool_pendingdest.sql \
    108109     disttool_processedcomponent.sql \
     110     disttool_queuercrun.sql \
     111     disttool_revertrcrun.sql \
    109112     disttool_revertrun_update.sql \
    110113     disttool_revertrun_delete.sql \
    111114     disttool_revertfileset.sql \
    112115     disttool_toadvance.sql \
     116     disttool_updatercrun.sql \
    113117     faketool_change_exp_state.sql \
    114118     faketool_change_imfile_data_state.sql \
  • trunk/ippTools/share/difftool_pendingcleanupskyfile.sql

    r19092 r23912  
    1010WHERE
    1111    diffRun.state = 'goto_cleaned'
     12    AND diffSkyfile.data_state = 'full'
  • trunk/ippTools/share/pxadmin_create_tables.sql

    r23893 r23912  
    12971297    dest_id     BIGINT,
    12981298    state       VARCHAR(64),
     1299    status_fs_name   VARCHAR(64),
    12991300    registered  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     1301    fault       SMALLINT DEFAULT 0,
    13001302    PRIMARY KEY(rc_id),
    13011303    FOREIGN KEY(fs_id) REFERENCES rcDSFileset(fs_id),
  • trunk/ippTools/src/disttool.c

    r23864 r23912  
    4545static bool updatercrunMode(pxConfig *config);
    4646static bool revertrcrunMode(pxConfig *config);
    47 static bool pendingdatastoresMode(pxConfig *config);
     47static bool pendingdestMode(pxConfig *config);
    4848
    4949# define MODECASE(caseName, func) \
     
    8080        MODECASE(DISTTOOL_MODE_UPDATERCRUN, updatercrunMode);
    8181        MODECASE(DISTTOOL_MODE_REVERTRCRUN, revertrcrunMode);
    82         MODECASE(DISTTOOL_MODE_PENDINGDATASTORES, pendingdatastoresMode);
     82        MODECASE(DISTTOOL_MODE_PENDINGDEST, pendingdestMode);
    8383        default:
    8484            psAbort("invalid option (this should not happen)");
     
    952952}
    953953
    954 static bool pendingdatastoresMode(pxConfig *config)
     954static bool pendingdestMode(pxConfig *config)
    955955{
    956956    PS_ASSERT_PTR_NON_NULL(config, false);
    957 #ifdef notyet
    958957
    959958    psMetadata *where = psMetadataAlloc();
    960     PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
    961     PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     959    PXOPT_COPY_S64(config->args, where, "-dest_id", "dist_id", "==");
     960//     PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
    962961
    963962    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    965964
    966965    // look for "inputs" that need to processed
    967     psString query = pxDataGet("disttool_pendingfileset.sql");
     966    psString query = pxDataGet("disttool_pendingdest.sql");
    968967    if (!query) {
    969968        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    971970    }
    972971
     972    psString whereString = NULL;
    973973    if (psListLength(where->list)) {
    974974        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    975         psStringAppend(&query, " AND %s", whereClause);
     975        // where string gets added by hook, not at the end of the query
     976        psStringAppend(&whereString, "\n AND %s", whereClause);
    976977        psFree(whereClause);
    977978    }
     
    985986    }
    986987
    987     if (!p_psDBRunQuery(config->dbh, query)) {
    988         psError(PS_ERR_UNKNOWN, false, "database error");
     988    if (!p_psDBRunQueryF(config->dbh, query, whereString ? whereString : "")) {
     989        psError(PS_ERR_UNKNOWN, false, "database error");
     990        psFree(whereString);
    989991        psFree(query);
    990992        return false;
     
    10221024
    10231025    psFree(output);
    1024 # endif // notdef
     1026
    10251027    return true;
    10261028}
     
    10291031{
    10301032    PS_ASSERT_PTR_NON_NULL(config, false);
    1031     return true;
    1032 }
     1033    psMetadata *where = psMetadataAlloc();
     1034
     1035    PXOPT_COPY_S64(config->args, where, "-dist_id",  "dist_id", "==");
     1036    PXOPT_COPY_S64(config->args, where, "-dest_id",  "dest_id", "==");
     1037    PXOPT_COPY_S64(config->args, where, "-prod_id",  "prod_id", "==");
     1038    PXOPT_COPY_S64(config->args, where, "-target_id","target_id", "==");
     1039    PXOPT_COPY_S64(config->args, where, "-fs_id",    "fs_id", "==");
     1040    PXOPT_COPY_STR(config->args, where, "-stage",    "stage", "==");;
     1041    PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
     1042    PXOPT_COPY_STR(config->args, where, "-label",    "label", "==");
     1043
     1044    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1045
     1046    psString query = pxDataGet("disttool_queuercrun.sql");
     1047    if (!query) {
     1048        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1049        return false;
     1050    }
     1051
     1052    if (psListLength(where->list)) {
     1053        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1054        psStringAppend(&query, " AND %s", whereClause);
     1055        psFree(whereClause);
     1056    }
     1057    psFree(where);
     1058
     1059    // treat limit == 0 as "no limit"
     1060    if (limit) {
     1061        psString limitString = psDBGenerateLimitSQL(limit);
     1062        psStringAppend(&query, " %s", limitString);
     1063        psFree(limitString);
     1064    }
     1065
     1066    if (!p_psDBRunQuery(config->dbh, query)) {
     1067        psError(PS_ERR_UNKNOWN, false, "database error");
     1068        psFree(query);
     1069        return false;
     1070    }
     1071    psFree(query);
     1072
     1073    long numUpdated = psDBAffectedRows(config->dbh);
     1074
     1075    psLogMsg("disttool", PS_LOG_INFO, "Inserted %ld rcRuns", numUpdated);
     1076
     1077    return true;
     1078}
     1079
     1080
    10331081static bool updatercrunMode(pxConfig *config)
    10341082{
    10351083    PS_ASSERT_PTR_NON_NULL(config, false);
    1036     return true;
    1037 }
     1084
     1085    psMetadata *where = psMetadataAlloc();
     1086
     1087    PXOPT_LOOKUP_S64(rc_id, config->args, "-rc_id", false, false);
     1088    PXOPT_LOOKUP_STR(fs_name, config->args, "-fs_name", false, false);
     1089    PXOPT_LOOKUP_STR(status_fs_name, config->args, "-status_fs_name", false, false);
     1090    PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", false, false);
     1091
     1092    // We either need rc_id or (dest_id and fs_name) to identifiy the rcRun
     1093    if ((!rc_id) && !(dest_id && fs_name)) {
     1094        psError(PXTOOLS_ERR_DATA, true, "either -rc_id or (-fs_name and -dest_id) are required");
     1095        return false;
     1096    }
     1097
     1098    // now that we have done the argument checking
     1099    PXOPT_COPY_S64(config->args, where, "-rc_id", "rc_id", "==");
     1100    PXOPT_COPY_STR(config->args, where, "-fs_name", "rcDSFileset.name", "==");
     1101    PXOPT_COPY_S64(config->args, where, "-dest_id", "rcRun.dest_id", "==");
     1102
     1103    if (!psListLength(where->list)) {
     1104        // this can't happen because we checked above
     1105        psFree(where);
     1106        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     1107        return false;
     1108    }
     1109
     1110
     1111    PXOPT_LOOKUP_STR(last_fileset, config->args, "-last_fileset", false, false);
     1112    PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
     1113    PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
     1114
     1115    if (!state && (fault < 0)) {
     1116        psError(PXTOOLS_ERR_DATA, false, "parameters (-fault or -set_state) are required");
     1117        psFree(where);
     1118        return false;
     1119    }
     1120
     1121    psString query = pxDataGet("disttool_updatercrun.sql");
     1122    if (!query) {
     1123        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1124        return false;
     1125    }
     1126
     1127    psString setString = psStringCopy("\n");
     1128    psString separator = "";
     1129    if (state) {
     1130        psStringAppend(&setString, " rcRun.state = '%s'", state);
     1131        separator = ",";
     1132    }
     1133
     1134    // default for fault is -1, so set it if it's zero or higher. This allows clearing fault
     1135    // without forcing revert first
     1136    if (fault >= 0) {
     1137        psStringAppend(&setString, "%s rcRun.fault = %d", separator, fault);
     1138    }
     1139
     1140    if (status_fs_name) {
     1141        psStringAppend(&setString, ", rcRun.status_fs_name = '%s'", status_fs_name);
     1142    }
     1143
     1144    if (last_fileset) {
     1145        psStringAppend(&setString, ", rcDestination.last_fileset = '%s'", last_fileset);
     1146    }
     1147
     1148    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1149    psStringAppend(&query, " AND %s", whereClause);
     1150    psFree(whereClause);
     1151    psFree(where);
     1152
     1153    if (!p_psDBRunQueryF(config->dbh, query, setString)) {
     1154        psError(PS_ERR_UNKNOWN, false, "database error");
     1155        psFree(setString);
     1156        psFree(query);
     1157        return false;
     1158    }
     1159    psFree(setString);
     1160    psFree(query);
     1161
     1162    long numUpdated = psDBAffectedRows(config->dbh);
     1163
     1164    psLogMsg("disttool", PS_LOG_INFO, "Updated %ld rows", numUpdated);
     1165
     1166    return true;
     1167}
     1168
    10381169static bool revertrcrunMode(pxConfig *config)
    10391170{
    10401171    PS_ASSERT_PTR_NON_NULL(config, false);
    1041     return true;
    1042 }
     1172    psMetadata *where = psMetadataAlloc();
     1173    PXOPT_COPY_S64(config->args, where, "-rc_id", "rc_id", "==");
     1174    PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "==");
     1175    PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "==");
     1176    PXOPT_COPY_S64(config->args, where, "-fault", "fault", "==");
     1177
     1178    if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
     1179        psFree(where);
     1180        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     1181        return false;
     1182    }
     1183
     1184    psString query = pxDataGet("disttool_revertrcrun.sql");
     1185    if (!query) {
     1186        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1187        if (!psDBRollback(config->dbh)) {
     1188            psError(PS_ERR_UNKNOWN, false, "database error");
     1189        }
     1190        return false;
     1191    }
     1192
     1193    if (psListLength(where->list)) {
     1194        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1195        psStringAppend(&query, " AND %s", whereClause);
     1196        psFree(whereClause);
     1197    }
     1198
     1199    if (!p_psDBRunQuery(config->dbh, query)) {
     1200        psError(PS_ERR_UNKNOWN, false, "database error");
     1201        psFree(query);
     1202        if (!psDBRollback(config->dbh)) {
     1203            psError(PS_ERR_UNKNOWN, false, "database error");
     1204        }
     1205        return false;
     1206    }
     1207    psFree(query);
     1208
     1209    long numUpdated = psDBAffectedRows(config->dbh);
     1210
     1211    psLogMsg("disttool", PS_LOG_INFO, "Updated %ld rcRuns", numUpdated);
     1212
     1213    return true;
     1214}
  • trunk/ippTools/src/disttool.h

    r23864 r23912  
    3939    DISTTOOL_MODE_UPDATERCRUN,
    4040    DISTTOOL_MODE_REVERTRCRUN,
    41     DISTTOOL_MODE_PENDINGDATASTORES,
     41    DISTTOOL_MODE_PENDINGDEST,
    4242} disttoolMode;
    4343
  • trunk/ippTools/src/disttoolConfig.c

    r23864 r23912  
    120120    psMetadata *toadvanceArgs = psMetadataAlloc();
    121121    psMetadataAddS64(toadvanceArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
    122     psMetadataAddStr(toadvanceArgs, PS_LIST_TAIL, "-label",     0, "limit updates to label", NULL);
    123     psMetadataAddU64(toadvanceArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
     122    psMetadataAddStr(toadvanceArgs, PS_LIST_TAIL, "-label",   0, "limit updates to label", NULL);
     123    psMetadataAddU64(toadvanceArgs, PS_LIST_TAIL, "-limit",   0,  "limit result set to N items", 0);
    124124    psMetadataAddBool(toadvanceArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    125125
     
    127127    psMetadata *pendingfilesetArgs = psMetadataAlloc();
    128128    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);
     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);
    132132    psMetadataAddBool(pendingfilesetArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    133133
     
    136136    psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
    137137    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);
    140     //
    141     // -pendingfileset
    142     psMetadata *pendingdatastoresArgs = psMetadataAlloc();
    143     psMetadataAddS64(pendingdatastoresArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
    144     psMetadataAddStr(pendingdatastoresArgs, PS_LIST_TAIL, "-label",    0, "limit results to label", NULL);
    145     psMetadataAddStr(pendingdatastoresArgs, PS_LIST_TAIL, "-stage",    0, "limit results to runs for stage", NULL);
    146     psMetadataAddU64(pendingdatastoresArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
    147     psMetadataAddBool(pendingdatastoresArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     138    psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name",    0, "define file name", NULL);
     139    psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
     140
     141    // -pendingdest
     142    psMetadata *pendingdestArgs = psMetadataAlloc();
     143    psMetadataAddS64(pendingdestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0);
     144    psMetadataAddU64(pendingdestArgs, PS_LIST_TAIL, "-limit",   0,  "limit result set to N items", 0);
     145    psMetadataAddBool(pendingdestArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     146    psMetadataAddStr(pendingdestArgs, PS_LIST_TAIL, "-label",   0, "limit results to label", NULL);
    148147
    149148    // -revertfileset
    150149    psMetadata *revertfilesetArgs = psMetadataAlloc();
    151     psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0);
     150    psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-fs_id",   0, "define fs_id", 0);
    152151    psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
    153152    psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-prod_id", 0, "define dist_id", 0);
    154     psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-stage",    0, "define stage", NULL);
    155     psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0);
    156     psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-state",    0, "define state", NULL);
    157     psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-label",    0, "define label", NULL);
    158     psMetadataAddS16(revertfilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0);
     153    psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-stage",   0, "define stage", NULL);
     154    psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-stage_id",0, "define stage_id", 0);
     155    psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-state",   0, "define state", NULL);
     156    psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-label",   0, "define label", NULL);
     157    psMetadataAddS16(revertfilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
    159158    psMetadataAddBool(revertfilesetArgs, PS_LIST_TAIL, "-all",    0, "revert all faulted runs", NULL);
     159
     160    // -queuercrun
     161    psMetadata *queuercrunArgs = psMetadataAlloc();
     162    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dist_id",   0, "define dist_id", 0);
     163    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dest_id",   0, "define dest_id", 0);
     164    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-prod_id",   0, "define prod_id", 0);
     165    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0);
     166    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-fs_id",     0, "define fs_id", 0);
     167    psMetadataAddStr(queuercrunArgs, PS_LIST_TAIL, "-stage",     0, "define stage", NULL);
     168    psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-stage_id",  0, "define stage_id", 0);
     169    psMetadataAddStr(queuercrunArgs, PS_LIST_TAIL, "-state",     0, "define state", NULL);
     170    psMetadataAddStr(queuercrunArgs, PS_LIST_TAIL, "-label",     0, "define label", NULL);
     171    psMetadataAddU64(queuercrunArgs, PS_LIST_TAIL, "-limit",     0, "limit number of runs queued to N", 0);
     172
     173    // -updatercrun
     174    psMetadata *updatercrunArgs = psMetadataAlloc();
     175    psMetadataAddS64(updatercrunArgs, PS_LIST_TAIL, "-rc_id",    0, "define rc_id", 0);
     176    psMetadataAddS64(updatercrunArgs, PS_LIST_TAIL, "-dest_id",  0, "define dest_id", 0);
     177    psMetadataAddStr(updatercrunArgs, PS_LIST_TAIL, "-fs_name",  0, "define fileset name", NULL);
     178    psMetadataAddStr(updatercrunArgs, PS_LIST_TAIL, "-status_fs_name",  0, "define status fileset name", NULL);
     179    psMetadataAddStr(updatercrunArgs, PS_LIST_TAIL, "-set_state",0, "new value for state", NULL);
     180    psMetadataAddStr(updatercrunArgs, PS_LIST_TAIL, "-last_fileset",0, "new value for last_fileset", NULL);
     181    psMetadataAddS16(updatercrunArgs, PS_LIST_TAIL, "-fault",    0, "define fault code", -1);
     182
     183    // -revertrcrun
     184    psMetadata *revertrcrunArgs = psMetadataAlloc();
     185    psMetadataAddS64(revertrcrunArgs, PS_LIST_TAIL,  "-rc_id",   0, "define rc_id", 0);
     186    psMetadataAddS64(revertrcrunArgs, PS_LIST_TAIL,  "-fs_id",   0, "define fs_id", 0);
     187    psMetadataAddS64(revertrcrunArgs, PS_LIST_TAIL,  "-dest_id", 0, "define dest_id", 0);
     188    psMetadataAddS16(revertrcrunArgs, PS_LIST_TAIL,  "-fault",   0, "define fault code", 0);
     189    psMetadataAddBool(revertrcrunArgs, PS_LIST_TAIL, "-all",     0, "revert all faulted runs", NULL);
    160190
    161191    psMetadata *argSets = psMetadataAlloc();
     
    168198    PXOPT_ADD_MODE("-pendingcomponent",       "", DISTTOOL_MODE_PENDINGCOMPONENT,    pendingcomponentArgs);
    169199    PXOPT_ADD_MODE("-addprocessedcomponent",      "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs);
    170     PXOPT_ADD_MODE("-processedcomponent",      "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs);
    171     PXOPT_ADD_MODE("-toadvance",      "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs);
    172     PXOPT_ADD_MODE("-pendingfileset",      "", DISTTOOL_MODE_PENDINGFILESET, pendingfilesetArgs);
    173     PXOPT_ADD_MODE("-addfileset",      "", DISTTOOL_MODE_ADDFILESET, addfilesetArgs);
     200    PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs);
     201    PXOPT_ADD_MODE("-toadvance",          "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs);
     202    PXOPT_ADD_MODE("-pendingfileset",     "", DISTTOOL_MODE_PENDINGFILESET, pendingfilesetArgs);
     203    PXOPT_ADD_MODE("-addfileset",         "", DISTTOOL_MODE_ADDFILESET, addfilesetArgs);
    174204    PXOPT_ADD_MODE("-revertfileset",      "", DISTTOOL_MODE_REVERTFILESET, revertfilesetArgs);
    175     PXOPT_ADD_MODE("-pendingdatastores",      "", DISTTOOL_MODE_PENDINGDATASTORES, pendingdatastoresArgs);
     205    PXOPT_ADD_MODE("-queuercrun",         "", DISTTOOL_MODE_QUEUERCRUN, queuercrunArgs);
     206    PXOPT_ADD_MODE("-updatercrun",        "", DISTTOOL_MODE_UPDATERCRUN, updatercrunArgs);
     207    PXOPT_ADD_MODE("-revertrcrun",        "", DISTTOOL_MODE_REVERTRCRUN, revertrcrunArgs);
     208    PXOPT_ADD_MODE("-pendingdest",        "", DISTTOOL_MODE_PENDINGDEST, pendingdestArgs);
    176209
    177210    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.