Changeset 25493
- Timestamp:
- Sep 23, 2009, 10:22:33 AM (17 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 14 edited
- 2 moved
-
dbconfig/changes.txt (modified) (1 diff)
-
dbconfig/pstamp.md (modified) (1 diff)
-
dbconfig/rc.md (modified) (3 diffs)
-
ippTools/share/Makefile.am (modified) (2 diffs)
-
ippTools/share/disttool_defineinterest.sql (added)
-
ippTools/share/disttool_listinterest.sql (added)
-
ippTools/share/disttool_pendingfileset.sql (modified) (1 diff)
-
ippTools/share/disttool_queuercrun.sql (modified) (1 diff)
-
ippTools/share/disttool_revertcomponent.sql (moved) (moved from trunk/ippTools/share/disttool_revertrun_delete.sql ) (1 prop)
-
ippTools/share/disttool_revertrun.sql (moved) (moved from trunk/ippTools/share/disttool_revertrun_update.sql ) (1 prop)
-
ippTools/share/disttool_updatercrun.sql (modified) (1 diff)
-
ippTools/share/pxadmin_create_tables.sql (modified) (3 diffs)
-
ippTools/share/rcserver_updatercrun.sql (modified) (1 diff)
-
ippTools/src/disttool.c (modified) (11 diffs)
-
ippTools/src/disttool.h (modified) (3 diffs)
-
ippTools/src/disttoolConfig.c (modified) (8 diffs)
-
ippTools/src/pstamptool.c (modified) (2 diffs)
-
ippTools/src/pstamptoolConfig.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dbconfig/changes.txt
r25421 r25493 1260 1260 -- Vesion 1.1.56 1261 1261 1262 1262 -- Merge the rcDSProduct and rcDestination tables 1263 1264 ALTER TABLE rcDestination ADD COLUMN dbname varchar(64) AFTER last_fileset; 1265 ALTER TABLE rcDestination ADD COLUMN dbhost varchar(64) AFTER dbname; 1266 1267 UPDATE rcDestination JOIN rcDSProduct USING(prod_id) 1268 SET rcDestination.name = rcDSProduct.name, 1269 rcDestination.dbname = rcDSProduct.dbname, 1270 rcDestination.dbhost = rcDSProduct.dbhost; 1271 1272 ALTER TABLE rcDestination DROP foreign key rcDestination_ibfk_1 ; 1273 ALTER TABLE rcDestination DROP key prod_id; 1274 ALTER TABLE rcDestination DROP COLUMN prod_id; 1275 1276 -- change references to rcDSProduct in rcDSFileset to reference rcDestination 1277 1278 ALTER TABLE rcDSFileset DROP foreign key rcDSFileset_ibfk_2; 1279 ALTER TABLE rcDSFileset DROP key prod_id; 1280 ALTER TABLE rcDSFileset CHANGE COLUMN prod_id dest_id BIGINT NOT NULL DEFAULT '0'; 1281 ALTER TABLE rcDSFileset ADD KEY (dest_id); 1282 ALTER TABLE rcDSFileset ADD FOREIGN KEY (dest_id) REFERENCES rcDestination(dest_id); 1283 1284 -- finally drop the obsolete table 1285 DROP TABLE rcDSProduct; 1286 1287 -- The following changes should have been made to the gpc1 database ages ago 1288 -- do not apply if these columns exist 1289 ALTER TABLE pstampRequest DROP COLUMN outFileset; 1290 ALTER TABLE pstampRequest ADD COLUMN name VARCHAR(64) UNIQUE AFTER state; 1291 ALTER TABLE pstampRequest ADD COLUMN reqType VARCHAR(16) AFTER name; 1292 ALTER TABLE pstampRequest ADD COLUMN outProduct VARCHAR(64) after reqType; 1293 ALTER TABLE pstampRequest ADD COLUMN fault SMALLINT AFTER uri; 1294 -- end of old changes 1295 1296 -- This change is new 1297 ALTER TABLE pstampRequest ADD COLUMN label VARCHAR(64) AFTER reqType; -
trunk/dbconfig/pstamp.md
r24967 r25493 24 24 name STR 64 # UNIQUE 25 25 reqType STR 16 26 label STR 64 26 27 outProduct STR 64 27 28 uri STR 255 -
trunk/dbconfig/rc.md
r23999 r25493 1 rcDSProduct METADATA 2 prod_id S64 0 # Primary Key 3 name STR 64 4 dbname STR 64 5 dbhost STR 64 1 rcDestination METADATA 2 dest_id S64 0 # Primary Key 3 name STR 64 4 status_uri STR 255 5 comment STR 255 6 last_fileset STR 255 7 dbname STR 64 8 dbhost STR 64 9 state STR 64 # Key 6 10 END 7 11 … … 9 13 fs_id S64 0 # Primary Key 10 14 dist_id S64 0 # fkey(dist_id) ref distRun(dist_id) 11 prod_id S64 0 # fkey(prod_id) ref rcDSProduct(prod_id)15 dest_id S64 0 # fkey(dest_id) ref rcDestination(dest_id) 12 16 name STR 255 13 17 state STR 64 … … 15 19 END 16 20 17 rcDestination METADATA18 dest_id S64 0 # Primary Key19 prod_id S64 0 # fkey(prod_id) ref rcDSProduct(prod_id)20 name STR 6421 status_uri STR 25522 comment STR 25523 last_fileset STR 25524 state STR 64 # Key25 END26 21 27 22 rcInterest METADATA -
trunk/ippTools/share/Makefile.am
r25429 r25493 110 110 disttool_definebyquery_stack.sql \ 111 111 disttool_definebyquery_warp.sql \ 112 disttool_defineinterest.sql \ 113 disttool_listinterest.sql \ 112 114 disttool_pending_camera.sql \ 113 115 disttool_pending_chip.sql \ … … 122 124 disttool_queuercrun.sql \ 123 125 disttool_revertrcrun.sql \ 124 disttool_revertrun _update.sql \125 disttool_revert run_delete.sql \126 disttool_revertrun.sql \ 127 disttool_revertcomponent.sql \ 126 128 disttool_revertfileset.sql \ 127 129 disttool_toadvance.sql \ -
trunk/ippTools/share/disttool_pendingfileset.sql
r24422 r25493 5 5 stage_id, 6 6 CONCAT_WS('.', distRun.outroot, CONVERT(distRun.dist_id, CHAR)) as dist_dir, 7 rcD SProduct.name AS product_name,8 rcD SProduct.prod_id,9 rcD SProduct.dbname AS ds_dbname,10 rcD SProduct.dbhost AS ds_dbhost7 rcDestination.name AS product_name, 8 rcDestination.prod_id, 9 rcDestination.dbname AS ds_dbname, 10 rcDestination.dbhost AS ds_dbhost 11 11 FROM rcDestination 12 12 JOIN rcInterest USING(dest_id) 13 13 JOIN distTarget USING(target_id) 14 JOIN rcDSProduct USING(prod_id)15 14 JOIN distRun USING(target_id) 16 LEFT JOIN rcDSFileset USING( prod_id, dist_id)15 LEFT JOIN rcDSFileset USING(dest_id, dist_id) 17 16 WHERE distRun.state = 'full' 18 17 AND rcDestination.state = 'enabled' -
trunk/ippTools/share/disttool_queuercrun.sql
r23912 r25493 13 13 JOIN rcInterest USING(dest_id) 14 14 JOIN distTarget USING(target_id) 15 JOIN rcDSProduct USING(prod_id)16 15 JOIN distRun USING(target_id, stage) 17 JOIN rcDSFileset USING( prod_id, dist_id)16 JOIN rcDSFileset USING(dest_id, dist_id) 18 17 LEFT JOIN rcRun using(fs_id, dest_id) 19 18 WHERE rcRun.rc_id IS NULL -
trunk/ippTools/share/disttool_revertcomponent.sql
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/czw_branch/cleanup/ippTools/share/disttool_revertrun_delete.sql merged eligible /branches/eam_branches/20090522/ippTools/share/disttool_revertrun_delete.sql merged eligible /branches/pap/ippTools/share/disttool_revertrun_delete.sql 25238-25382 /branches/pap_mops/ippTools/share/disttool_revertrun_delete.sql 25137-25255
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/ippTools/share/disttool_revertrun.sql
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/czw_branch/cleanup/ippTools/share/disttool_revertrun_update.sql merged eligible /branches/eam_branches/20090522/ippTools/share/disttool_revertrun_update.sql merged eligible /branches/pap/ippTools/share/disttool_revertrun_update.sql 25238-25382 /branches/pap_mops/ippTools/share/disttool_revertrun_update.sql 25137-25255
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/ippTools/share/disttool_updatercrun.sql
r23912 r25493 1 1 UPDATE rcRun 2 2 JOIN rcDestination USING(dest_id) 3 JOIN rcDSProduct USING(prod_id) 4 JOIN rcDSFileset using(prod_id, fs_id) 3 JOIN rcDSFileset using(dest_id, fs_id) 5 4 SET 6 5 -- set hook %s -
trunk/ippTools/share/pxadmin_create_tables.sql
r25479 r25493 1232 1232 name VARCHAR(64) UNIQUE, 1233 1233 reqType VARCHAR(16), 1234 label VARCHAR(64), 1234 1235 outProduct VARCHAR(64), 1235 1236 uri VARCHAR(255), … … 1297 1298 1298 1299 1299 CREATE TABLE rcDSProduct (1300 prod_id BIGINT AUTO_INCREMENT,1301 name VARCHAR(64),1302 dbname VARCHAR(64),1303 dbhost VARCHAR(64),1304 PRIMARY KEY(prod_id)1305 ) ENGINE=innodb DEFAULT CHARSET=latin1;1306 1307 1300 CREATE TABLE rcDestination ( 1308 1301 dest_id BIGINT AUTO_INCREMENT, 1309 prod_id BIGINT,1310 1302 name VARCHAR(64), 1311 1303 status_uri VARCHAR(255), 1312 1304 comment VARCHAR(255), 1313 1305 last_fileset VARCHAR(255), 1306 dbname VARCHAR(64), 1307 dbhost VARCHAR(64), 1314 1308 state VARCHAR(64), 1315 PRIMARY KEY(dest_id), 1316 FOREIGN KEY(prod_id) REFERENCES rcDSProduct(prod_id) 1309 PRIMARY KEY(dest_id) 1317 1310 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1318 1319 1311 1320 1312 CREATE TABLE rcInterest ( … … 1332 1324 fs_id BIGINT AUTO_INCREMENT, 1333 1325 dist_id BIGINT, 1334 prod_id BIGINT,1326 dest_id BIGINT, 1335 1327 name VARCHAR(255), 1336 1328 state VARCHAR(64), 1337 1329 registered TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 1338 1330 fault SMALLINT DEFAULT 0, 1339 PRIMARY KEY(dist_id, prod_id),1331 PRIMARY KEY(dist_id, dest_id), 1340 1332 KEY(fs_id), 1341 1333 FOREIGN KEY(dist_id) REFERENCES distRun(dist_id), 1342 FOREIGN KEY(prod_id) REFERENCES rcDSProduct(prod_id) 1343 -- KEY(dist_id, prod_id) 1334 FOREIGN KEY(dest_id) REFERENCES rcDestination(dest_id) 1344 1335 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1345 1336 -
trunk/ippTools/share/rcserver_updatercrun.sql
r23912 r25493 1 1 UPDATE rcRun 2 2 JOIN rcDestination USING(dest_id) 3 JOIN rcDSProduct USING(prod_id) 4 JOIN rcDSFileset using(prod_id, fs_id) 3 JOIN rcDSFileset using(dest_id, fs_id) 5 4 SET 6 rcRun.fault= 42, rcDestination.last_fileset = 'o4741g0236o.chip.14519.33.1'7 8 9 -
trunk/ippTools/src/disttool.c
r25460 r25493 37 37 static bool pendingcomponentMode(pxConfig *config); 38 38 static bool addprocessedcomponentMode(pxConfig *config); 39 static bool revertcomponentMode(pxConfig *config); 39 40 static bool processedcomponentMode(pxConfig *config); 40 41 static bool toadvanceMode(pxConfig *config); … … 51 52 static bool listtargetMode(pxConfig *config); 52 53 53 static bool definedsproductMode(pxConfig *config);54 static bool updatedsproductMode(pxConfig *config);55 56 54 static bool definedestinationMode(pxConfig *config); 57 55 static bool updatedestinationMode(pxConfig *config); … … 59 57 static bool defineinterestMode(pxConfig *config); 60 58 static bool updateinterestMode(pxConfig *config); 59 static bool listinterestMode(pxConfig *config); 61 60 62 61 # define MODECASE(caseName, func) \ … … 86 85 MODECASE(DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentMode); 87 86 MODECASE(DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentMode); 87 MODECASE(DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentMode); 88 88 MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode); 89 89 MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode); … … 97 97 MODECASE(DISTTOOL_MODE_UPDATETARGET, updatetargetMode); 98 98 MODECASE(DISTTOOL_MODE_LISTTARGET, listtargetMode); 99 MODECASE(DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductMode);100 MODECASE(DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductMode);101 99 MODECASE(DISTTOOL_MODE_DEFINEDESTINATION, definedestinationMode); 102 100 MODECASE(DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationMode); 103 101 MODECASE(DISTTOOL_MODE_DEFINEINTEREST, defineinterestMode); 104 102 MODECASE(DISTTOOL_MODE_UPDATEINTEREST, updateinterestMode); 103 MODECASE(DISTTOOL_MODE_LISTINTEREST, listinterestMode); 105 104 default: 106 105 psAbort("invalid option (this should not happen)"); … … 500 499 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 501 500 502 // we need to disambiguate fault so make a copy of the where list before adding fault503 psMetadata *whereComponent = psMetadataCopy(NULL, where);504 501 PXOPT_COPY_S16(config->args, where, "-fault", "distRun.fault", "=="); 505 PXOPT_COPY_S16(config->args, whereComponent, "-fault", "distComponent.fault", "==");506 502 507 503 // It might be useful to be able to query by the parameters of the underlying runs … … 513 509 } 514 510 515 if (!psDBTransaction(config->dbh)) { 516 psError(PS_ERR_UNKNOWN, false, "database error"); 511 psString query = pxDataGet("disttool_revertrun.sql"); 512 if (!query) { 513 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 514 if (!psDBRollback(config->dbh)) { 515 psError(PS_ERR_UNKNOWN, false, "database error"); 516 } 517 return false; 518 } 519 520 if (psListLength(where->list)) { 521 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 522 psStringAppend(&query, " AND %s", whereClause); 523 psFree(whereClause); 524 } 525 psFree(where); 526 527 if (!p_psDBRunQuery(config->dbh, query)) { 528 psError(PS_ERR_UNKNOWN, false, "database error"); 529 psFree(query); 530 return false; 531 } 532 533 int numUpdated = psDBAffectedRows(config->dbh); 534 535 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 536 537 return true; 538 } 539 540 static bool revertcomponentMode(pxConfig *config) 541 { 542 psMetadata *where = psMetadataAlloc(); 543 PXOPT_COPY_S64(config->args, where, "-dist_id", "distRun.dist_id", "=="); 544 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 545 PXOPT_COPY_STR(config->args, where, "-component", "component", "==");; 546 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 547 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 548 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 549 550 PXOPT_COPY_S16(config->args, where, "-fault", "distComponent.fault", "=="); 551 552 // It might be useful to be able to query by the parameters of the underlying runs 553 554 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 517 555 psFree(where); 518 return false; 519 } 520 521 // Update state to 'new' 522 int numUpdated; // Number updated 523 { 524 psString query = pxDataGet("disttool_revertrun_update.sql"); 525 if (!query) { 526 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 527 if (!psDBRollback(config->dbh)) { 528 psError(PS_ERR_UNKNOWN, false, "database error"); 529 } 530 return false; 531 } 532 533 if (psListLength(where->list)) { 534 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 535 psStringAppend(&query, " AND %s", whereClause); 536 psFree(whereClause); 537 } 538 539 if (!p_psDBRunQuery(config->dbh, query)) { 540 psError(PS_ERR_UNKNOWN, false, "database error"); 541 psFree(query); 542 if (!psDBRollback(config->dbh)) { 543 psError(PS_ERR_UNKNOWN, false, "database error"); 544 } 545 return false; 546 } 547 psFree(query); 548 549 numUpdated = psDBAffectedRows(config->dbh); 550 } 551 552 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 553 554 // Delete product 555 int numDeleted; // Number deleted 556 { 557 psString query = pxDataGet("disttool_revertrun_delete.sql"); 558 if (!query) { 559 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 560 if (!psDBRollback(config->dbh)) { 561 psError(PS_ERR_UNKNOWN, false, "database error"); 562 } 563 return false; 564 } 565 566 if (psListLength(whereComponent->list)) { 567 psString whereClause = psDBGenerateWhereConditionSQL(whereComponent, NULL); 568 psStringAppend(&query, " AND %s", whereClause); 569 psFree(whereClause); 570 } 571 572 if (!p_psDBRunQuery(config->dbh, query)) { 573 psError(PS_ERR_UNKNOWN, false, "database error"); 574 psFree(query); 575 if (!psDBRollback(config->dbh)) { 576 psError(PS_ERR_UNKNOWN, false, "database error"); 577 } 578 return false; 579 } 580 psFree(query); 581 582 numDeleted = psDBAffectedRows(config->dbh); 583 } 556 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 557 return false; 558 } 559 560 psString query = pxDataGet("disttool_revertcomponent.sql"); 561 if (!query) { 562 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 563 psFree(where); 564 return false; 565 } 566 567 if (psListLength(where->list)) { 568 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 569 psStringAppend(&query, " AND %s", whereClause); 570 psFree(whereClause); 571 } 572 psFree(where); 573 574 if (!p_psDBRunQuery(config->dbh, query)) { 575 psError(PS_ERR_UNKNOWN, false, "database error"); 576 psFree(query); 577 return false; 578 } 579 580 int numDeleted = psDBAffectedRows(config->dbh); 584 581 585 582 psLogMsg("disttool", PS_LOG_INFO, "Deleted %d distComponents", numDeleted); 586 587 psFree(where);588 psFree(whereComponent);589 590 if (!psDBCommit(config->dbh)) {591 psError(PS_ERR_UNKNOWN, false, "database error");592 return false;593 }594 583 595 584 return true; … … 1413 1402 } 1414 1403 1415 static bool defined sproductMode(pxConfig *config)1404 static bool definedestinationMode(pxConfig *config) 1416 1405 { 1417 1406 PS_ASSERT_PTR_NON_NULL(config, false); 1418 1407 1419 1408 // required 1420 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false);1421 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false);1422 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false);1423 1424 // XXX: should we insure that these names do not contatin any whitespace?1425 1426 rcDSProductRow *row = rcDSProductRowAlloc(1427 0, // prod_id1428 name,1429 dbname,1430 dbhost1431 );1432 1433 if (!row) {1434 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcDSProduct object");1435 return false;1436 }1437 if (!rcDSProductInsertObject(config->dbh, row)) {1438 psError(PS_ERR_UNKNOWN, false, "database error");1439 psFree(row);1440 return false;1441 }1442 1443 // get the assigned target_id1444 row->prod_id = psDBLastInsertID(config->dbh);1445 1446 if (!rcDSProductPrintObject(stdout, row, true)) {1447 psError(PS_ERR_UNKNOWN, false, "failed to print object");1448 psFree(row);1449 return false;1450 }1451 1452 psFree(row);1453 1454 return true;1455 }1456 static bool updatedsproductMode(pxConfig *config)1457 {1458 PS_ASSERT_PTR_NON_NULL(config, false);1459 1460 psMetadata *where = psMetadataAlloc();1461 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1462 1463 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", false, false);1464 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", false, false);1465 1466 if (!(dbname || dbhost)) {1467 psError(PS_ERR_UNKNOWN, true, "one or more of dbname or dbhost is required");1468 psFree(where);1469 return false;1470 }1471 psString query = psStringCopy("UPDATE rcDSProduct SET");1472 psString sep = "";1473 if (dbname) {1474 psStringAppend(&query, " dbname = '%s'", dbname);1475 sep = ",";1476 }1477 if (dbhost) {1478 psStringAppend(&query, " %s dbhost = '%s'", sep, dbhost);1479 }1480 1481 if (psListLength(where->list)) {1482 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);1483 psStringAppend(&query, " WHERE %s", whereClause);1484 psFree(whereClause);1485 } else {1486 psError(PS_ERR_UNKNOWN, true, "search parameters are required");1487 psFree(where);1488 psFree(query);1489 return false;1490 }1491 psFree(where);1492 1493 if (!p_psDBRunQuery(config->dbh, query)) {1494 psError(PS_ERR_UNKNOWN, false, "database error");1495 psFree(query);1496 return false;1497 }1498 psFree(query);1499 1500 return true;1501 }1502 1503 static bool definedestinationMode(pxConfig *config)1504 {1505 PS_ASSERT_PTR_NON_NULL(config, false);1506 1507 // required1508 PXOPT_LOOKUP_S64(prod_id, config->args, "-prod_id", true, false);1509 1409 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false); 1410 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false); 1411 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false); 1510 1412 1511 1413 // optional … … 1519 1421 rcDestinationRow *row = rcDestinationRowAlloc( 1520 1422 0, // dest_id 1521 prod_id,1522 1423 name, 1523 1424 status_uri, 1524 1425 comment, 1525 1426 last_fileset, 1427 dbname, 1428 dbhost, 1526 1429 state ? state : "enabled" 1527 1430 ); … … 1611 1514 PS_ASSERT_PTR_NON_NULL(config, false); 1612 1515 1613 // required 1614 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", true, false); 1615 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", true, false); 1516 // one of these is required 1517 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", false, false); 1518 PXOPT_LOOKUP_STR(dest_name, config->args, "-dest_name", false, false); 1519 if (!dest_id && !dest_name) { 1520 psError(PS_ERR_UNKNOWN, true, "either dest_id or dest_name is required"); 1521 return false; 1522 } 1523 1524 // either target_id or stage and label are required 1525 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", false, false); 1526 PXOPT_LOOKUP_STR(stage, config->args, "-stage", false, false); 1527 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1528 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 1529 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1530 1531 if (!target_id) { 1532 bool error = false; 1533 if (!stage) { 1534 psError(PS_ERR_UNKNOWN, true, "stage is required if target_id is not supplied"); 1535 error = true; 1536 } 1537 if (!label) { 1538 psError(PS_ERR_UNKNOWN, !error, "label is required if target_id is not supplied"); 1539 error = true; 1540 } 1541 if (error) { 1542 return false; 1543 } 1544 } 1616 1545 1617 1546 // optional 1547 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 1618 1548 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1619 1620 // XXX: should we insure that these names do not contatin any whitespace? 1621 1622 rcInterestRow *row = rcInterestRowAlloc( 1623 0, // int_id 1624 dest_id, 1625 target_id, 1626 state ? state : "enabled" 1627 ); 1628 1629 if (!row) { 1630 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcInterest object"); 1631 return false; 1632 } 1633 if (!rcInterestInsertObject(config->dbh, row)) { 1634 psError(PS_ERR_UNKNOWN, false, "database error"); 1635 psFree(row); 1636 return false; 1637 } 1638 1639 // get the assigned target_id 1640 row->int_id = psDBLastInsertID(config->dbh); 1641 1642 if (!rcInterestPrintObject(stdout, row, true)) { 1643 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 1644 psFree(row); 1645 return false; 1646 } 1647 1648 psFree(row); 1549 if (state) { 1550 if (strcmp(state, "enabled") && strcmp(state, "disabled")) { 1551 psError(PS_ERR_PROGRAMMING, true, "state must be enabled or disabled"); 1552 return false; 1553 } 1554 } else { 1555 // default state 1556 state = "enabled"; 1557 } 1558 1559 // now that we've done all of our argument checking, copy the values to where 1560 psMetadata *where = psMetadataAlloc(); 1561 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1562 PXOPT_COPY_STR(config->args, where, "-dest_name", "rcDestination.name", "=="); 1563 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1564 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1565 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1566 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1567 1568 psString query = pxDataGet("disttool_defineinterest.sql"); 1569 1570 if (!psListLength(where->list)) { 1571 // can't get here 1572 psError(PS_ERR_PROGRAMMING, true, "search parameters are required"); 1573 psFree(where); 1574 psFree(query); 1575 return false; 1576 } 1577 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1578 psStringAppend(&query, " AND %s", whereClause); 1579 psFree(whereClause); 1580 psFree(where); 1581 if (clean) { 1582 psStringAppend(&query, " AND (distTarget.clean)"); 1583 } else { 1584 psStringAppend(&query, " AND (!distTarget.clean)"); 1585 } 1586 if (limit) { 1587 psString limitString = psDBGenerateLimitSQL(limit); 1588 psStringAppend(&query, " %s", limitString); 1589 psFree(limitString); 1590 } 1591 { 1592 // psStringSubstitute fails unless the input is a psString which it determines by 1593 // comparing the memory blocks free function to an expected value. 1594 // pxDataGet uses psSlurp which leaves a different free function on the memory block. 1595 // To work around this make a copy of the query before doing the substitution. 1596 psString queryCopy = psStringCopy(query); 1597 psFree(query); 1598 query = queryCopy; 1599 } 1600 // change the @STATE@ in the sql file to our state 1601 if (!psStringSubstitute(&query, state, "@STATE@")) { 1602 psError(PS_ERR_UNKNOWN, false, "failed to substitute state string"); 1603 return false; 1604 } 1605 1606 if (!p_psDBRunQuery(config->dbh, query)) { 1607 psError(PS_ERR_UNKNOWN, false, "database error"); 1608 psFree(query); 1609 return false; 1610 } 1611 psFree(query); 1612 int numInserted = psDBAffectedRows(config->dbh); 1613 printf("inserted %d rows into rcInterest\n", numInserted); 1649 1614 1650 1615 return true; … … 1690 1655 return true; 1691 1656 } 1692 1657 static bool listinterestMode(pxConfig *config) 1658 { 1659 PS_ASSERT_PTR_NON_NULL(config, false); 1660 1661 psMetadata *where = psMetadataAlloc(); 1662 PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "=="); 1663 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1664 PXOPT_COPY_STR(config->args, where, "-dest_name", "name", "=="); 1665 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1666 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1667 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1668 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1669 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 1670 1671 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1672 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1673 1674 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1675 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1676 1677 if (clean && full) { 1678 psError(PS_ERR_UNKNOWN, false, "can't select both -clean and -full"); 1679 return false; 1680 } 1681 1682 psString query = pxDataGet("disttool_listinterest.sql"); 1683 1684 if (psListLength(where->list)) { 1685 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1686 psStringAppend(&query, " WHERE %s", whereClause); 1687 psFree(whereClause); 1688 if (clean) { 1689 psStringAppend(&query, " AND (clean)"); 1690 } else if (full) { 1691 psStringAppend(&query, " AND (!clean)"); 1692 } 1693 } else if (clean) { 1694 psStringAppend(&query, " WHERE clean"); 1695 } else if (full) { 1696 psStringAppend(&query, " WHERE !clean"); 1697 } 1698 psFree(where); 1699 1700 // treat limit == 0 as "no limit" 1701 if (limit) { 1702 psString limitString = psDBGenerateLimitSQL(limit); 1703 psStringAppend(&query, " %s", limitString); 1704 psFree(limitString); 1705 } 1706 1707 if (!p_psDBRunQuery(config->dbh, query)) { 1708 psError(PS_ERR_UNKNOWN, false, "database error"); 1709 psFree(query); 1710 if (!psDBRollback(config->dbh)) { 1711 psError(PS_ERR_UNKNOWN, false, "database error"); 1712 } 1713 return false; 1714 } 1715 psFree(query); 1716 1717 psArray *output = p_psDBFetchResult(config->dbh); 1718 if (!output) { 1719 psError(PS_ERR_UNKNOWN, false, "database error"); 1720 return false; 1721 } 1722 if (!psArrayLength(output)) { 1723 psTrace("disttool", PS_LOG_INFO, "no rows found"); 1724 psFree(output); 1725 return true; 1726 } 1727 1728 if (!ippdbPrintMetadatas(stdout, output, "rcInterest", !simple)) { 1729 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1730 psFree(output); 1731 return false; 1732 } 1733 1734 psFree(output); 1735 1736 return true; 1737 } -
trunk/ippTools/src/disttool.h
r24001 r25493 31 31 DISTTOOL_MODE_PENDINGCOMPONENT, 32 32 DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, 33 DISTTOOL_MODE_REVERTCOMPONENT, 33 34 DISTTOOL_MODE_PROCESSEDCOMPONENT, 34 35 DISTTOOL_MODE_TOADVANCE, … … 42 43 DISTTOOL_MODE_DEFINEDESTINATION, 43 44 DISTTOOL_MODE_UPDATEDESTINATION, 44 DISTTOOL_MODE_DEFINEDSPRODUCT,45 DISTTOOL_MODE_UPDATEDSPRODUCT,46 45 DISTTOOL_MODE_DEFINETARGET, 47 46 DISTTOOL_MODE_UPDATETARGET, … … 49 48 DISTTOOL_MODE_DEFINEINTEREST, 50 49 DISTTOOL_MODE_UPDATEINTEREST, 50 DISTTOOL_MODE_LISTINTEREST, 51 51 } disttoolMode; 52 52 -
trunk/ippTools/src/disttoolConfig.c
r25429 r25493 111 111 psMetadataAddS32(addprocessedcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 112 112 113 // -revertcomponent 114 psMetadata *revertcomponentArgs = psMetadataAlloc(); 115 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 116 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component", NULL); 117 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 118 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 119 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-state", 0, "define state", NULL); 120 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 121 psMetadataAddS16(revertcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 122 psMetadataAddBool(revertcomponentArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 123 113 124 // -processedcomponent 114 125 psMetadata *processedcomponentArgs = psMetadataAlloc(); … … 189 200 psMetadataAddBool(revertrcrunArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 190 201 191 // -definedsproduct192 psMetadata *definedsproductArgs = psMetadataAlloc();193 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-name", 0, "define product name", NULL);194 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);195 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);196 197 // -updatedsproduct198 // does this mode make sense?199 psMetadata *updatedsproductArgs = psMetadataAlloc();200 psMetadataAddS64(updatedsproductArgs, PS_LIST_TAIL, "-prod_id", 0, "select by prod_id", 0);201 // can't select by name because it isn't necssarily unique202 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);203 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);204 205 202 // -definedestination 206 203 psMetadata *definedestinationArgs = psMetadataAlloc(); 207 psMetadataAddS64(definedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id (required)", 0);208 204 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name (required)", NULL); 205 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name (required)", NULL); 206 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host (required)", NULL); 209 207 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 210 208 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); … … 215 213 psMetadata *updatedestinationArgs = psMetadataAlloc(); 216 214 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 217 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);218 215 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name", NULL); 219 216 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 220 217 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); 221 // last_fileset gets updated by -updatercrun222 // psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_last_fileset",0, "define last_fileset", NULL);223 218 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 224 219 … … 254 249 // -defineinterest 255 250 psMetadata *defineinterestArgs = psMetadataAlloc(); 256 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id (required)", 0); 257 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id (required)", 0); 251 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 252 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-dest_name", 0, "define destination name (LIKE comparison)", NULL); 253 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 254 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 255 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 256 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-filter", 0, "define filter (LIKE comparison)", NULL); 257 psMetadataAddBool(defineinterestArgs, PS_LIST_TAIL,"-clean", 0, "list clean targets", false); 258 258 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 259 psMetadataAddU64(defineinterestArgs, PS_LIST_TAIL, "-limit", 0, "limit number of targets listed to N", 0); 259 260 260 261 // -updateinterest … … 265 266 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state (required)", NULL); 266 267 268 // -listinterest 269 psMetadata *listinterestArgs = psMetadataAlloc(); 270 psMetadataAddS64(listinterestArgs, PS_LIST_TAIL, "-target_id", 0, "list interests with target_id", 0); 271 psMetadataAddS64(listinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "list interests with dest_id", 0); 272 psMetadataAddS64(listinterestArgs, PS_LIST_TAIL, "-int_id", 0, "list interests with int_id", 0); 273 psMetadataAddStr(listinterestArgs, PS_LIST_TAIL, "-dest_name", 0, "list interests for destinationn name)", NULL); 274 psMetadataAddStr(listinterestArgs, PS_LIST_TAIL, "-label", 0, "list interests for label (LIKE comparison)", NULL); 275 psMetadataAddStr(listinterestArgs, PS_LIST_TAIL, "-filter", 0, "list interests by filter (LIKE comparison)", NULL); 276 psMetadataAddStr(listinterestArgs, PS_LIST_TAIL, "-stage", 0, "list interests for stage", NULL); 277 psMetadataAddBool(listinterestArgs, PS_LIST_TAIL,"-clean", 0, "list clean interests", false); 278 psMetadataAddBool(listinterestArgs, PS_LIST_TAIL,"-full", 0, "list full interests", false); 279 psMetadataAddStr(listinterestArgs, PS_LIST_TAIL, "-state", 0, "list interests in state", NULL); 280 psMetadataAddU64(listinterestArgs, PS_LIST_TAIL, "-limit", 0, "limit number of interests listed to N", 0); 281 psMetadataAddBool(listinterestArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 282 267 283 psMetadata *argSets = psMetadataAlloc(); 268 284 psMetadata *modes = psMetadataAlloc(); … … 272 288 PXOPT_ADD_MODE("-updaterun", "", DISTTOOL_MODE_UPDATERUN, updaterunArgs); 273 289 PXOPT_ADD_MODE("-revertrun", "", DISTTOOL_MODE_REVERTRUN, revertrunArgs); 274 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 275 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 290 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 291 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 292 PXOPT_ADD_MODE("-revertcomponent", "", DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentArgs); 276 293 PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs); 277 294 PXOPT_ADD_MODE("-toadvance", "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs); … … 284 301 PXOPT_ADD_MODE("-pendingdest", "", DISTTOOL_MODE_PENDINGDEST, pendingdestArgs); 285 302 286 PXOPT_ADD_MODE("-definedsproduct", "", DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductArgs);287 PXOPT_ADD_MODE("-updatedsproduct", "", DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductArgs);288 // PXOPT_ADD_MODE("-listdsproduct", "", DISTTOOL_MODE_LISTDSPRODUCT, updatedsproductArgs);289 290 303 PXOPT_ADD_MODE("-definedestination", "", DISTTOOL_MODE_DEFINEDESTINATION, definedestinationArgs); 291 304 PXOPT_ADD_MODE("-updatedestination", "", DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationArgs); … … 298 311 PXOPT_ADD_MODE("-defineinterest", "", DISTTOOL_MODE_DEFINEINTEREST, defineinterestArgs); 299 312 PXOPT_ADD_MODE("-updateinterest", "", DISTTOOL_MODE_UPDATEINTEREST, updateinterestArgs); 300 //PXOPT_ADD_MODE("-listinterest", "", DISTTOOL_MODE_LISTINTEREST, listinterestArgs);313 PXOPT_ADD_MODE("-listinterest", "", DISTTOOL_MODE_LISTINTEREST, listinterestArgs); 301 314 302 315 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/pstamptool.c
r25461 r25493 228 228 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 229 229 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 230 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 230 231 PXOPT_LOOKUP_S64(ds_id, config->args, "-ds_id", false, false); 231 232 … … 236 237 name, 237 238 NULL, // reqType 239 label, 238 240 NULL, // outProduct 239 241 uri, -
trunk/ippTools/src/pstamptoolConfig.c
r25461 r25493 63 63 // -addreq 64 64 psMetadata *addreqArgs = psMetadataAlloc(); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL);66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0);65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 67 67 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-name", 0, "define request name", NULL); 68 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-label", 0, "define request label", NULL); 68 69 69 70 // -pendingreq
Note:
See TracChangeset
for help on using the changeset viewer.
