| 1277 | |
| 1278 | |
| 1279 | == Libraries == |
| 1280 | |
| 1281 | The library interface controls managing library contents. The experiment definition is in some flux, which is reflected in this section. |
| 1282 | |
| 1283 | An library is a collection of experiments, each of which can be manipulated by users with the proper permissions. By grouping experiments it is easier to collaborate on the experiments as well as providing pools of experiments to use as starting points for new users. |
| 1284 | |
| 1285 | Each library includes an access control list (ACL) that lists the permissions that mebmers of a given circle are granted to the library. |
| 1286 | |
| 1287 | |
| 1288 | === Viewing Libraries === |
| 1289 | |
| 1290 | One or more libraried can be viewed by an authorized user assuming that user has the proper permissions. The search can be a regular expression matched against the library name. To view libraries, call: |
| 1291 | |
| 1292 | * '''Service:''' Libraries |
| 1293 | * '''Operation:''' viewLibraries |
| 1294 | * '''Input Parameters:''' |
| 1295 | * Userid - a string, if given return all experiments this user can see |
| 1296 | * Regex - a string containing a regular expression matched against experiment names |
| 1297 | * '''Return Values:''' |
| 1298 | * One or more structures with the following fields |
| 1299 | * Name - a string containing the experiment name |
| 1300 | * Owner - a string containing the owner's userid |
| 1301 | * Experiments - a list of experiment names |
| 1302 | * ACL - a list of structures of the form |
| 1303 | * Name - a string the circle name |
| 1304 | * Permissions - a list of strings containing this circle's permissions. Permissions are from [http://www.isi.edu/~faber/tmp/DeterAPI/doc/constant-values.html#net.deterlab.testbed.api.Permissions this table] |
| 1305 | |
| 1306 | |
| 1307 | === Creating and Deleting Libraries === |
| 1308 | |
| 1309 | A library is created using: |
| 1310 | |
| 1311 | * '''Service:''' Libraries |
| 1312 | * '''Operation:''' createLibrary |
| 1313 | * '''Input Parameters:''' |
| 1314 | * Name - a string containing a new experiment's name |
| 1315 | * Userid - the user making the request (the owner on success) |
| 1316 | * Experiments - a list of experiments in the library |
| 1317 | * AccessLists - a list of access list entries - a list of structures of the form |
| 1318 | * Name - a string the circle name |
| 1319 | * Permissions - a list of strings containing this circle's permissions.Permissions are from [http://www.isi.edu/~faber/tmp/DeterAPI/doc/constant-values.html#net.deterlab.testbed.api.Permissions this table] |
| 1320 | * Profile - a list of profile attribute value pairs |
| 1321 | * '''Return Values:''' |
| 1322 | * a boolean, true if the creation succeeded |
| 1323 | |
| 1324 | A library is deleted using: |
| 1325 | |
| 1326 | * '''Service:''' Library |
| 1327 | * '''Operation:''' removeLibrary |
| 1328 | * '''Input Parameters:''' |
| 1329 | * Name - a string containing the library to delete |
| 1330 | * '''Return Values:''' |
| 1331 | * a boolean, true on success |
| 1332 | |
| 1333 | After {{{removeLibrary}}} succeeds, library is removed from the testbed completely. |
| 1334 | |
| 1335 | === Modifying Libraries === |
| 1336 | |
| 1337 | Experiments can be added and removed from libraries |
| 1338 | |
| 1339 | * '''Service:''' Libraries |
| 1340 | * '''Operation:''' addLibraryExperiment |
| 1341 | * '''Input Parameters:''' |
| 1342 | * Name - a string containing the library's name |
| 1343 | * Experiments - a list of experiment names |
| 1344 | * '''Return Values:''' |
| 1345 | * a boolean, true if the addition succeeded |
| 1346 | |
| 1347 | As with creation, adding an aspect may result in additional sub-aspects appearing, as well as modifications to other aspects. |
| 1348 | |
| 1349 | * '''Service:''' Libraries |
| 1350 | * '''Operation:''' removeLibraryExperiments |
| 1351 | * '''Input Parameters:''' |
| 1352 | * Name - a string containing the experiment's name |
| 1353 | * Experiments - a list of experiments to remove |
| 1354 | * '''Return Values:''' |
| 1355 | * a boolean, true if the removal succeeded |
| 1356 | |
| 1357 | |
| 1358 | * '''Service:''' Libraires |
| 1359 | * '''Operation:''' addLibraryACL |
| 1360 | * '''Input Parameters:''' |
| 1361 | * Name - a string containing the library's name |
| 1362 | * AccessLists - a list of access list entries - a list of structures of the form |
| 1363 | * Name - a string the circle name |
| 1364 | * Permissions - a list of strings containing this circle's permissions.Permissions are from [http://www.isi.edu/~faber/tmp/DeterAPI/doc/constant-values.html#net.deterlab.testbed.api.Permissions this table] |
| 1365 | * '''Return Values:''' |
| 1366 | * a boolean, true if the removal succeeded |
| 1367 | |
| 1368 | * '''Service:''' Libraries |
| 1369 | * '''Operation:''' removeLibraryACL |
| 1370 | * '''Input Parameters:''' |
| 1371 | * Name - a string containing the library's name |
| 1372 | * AccessLists - a list circles to remove from the ACL |
| 1373 | * '''Return Values:''' |
| 1374 | * a boolean, true if the removal succeeded |
| 1375 | |
| 1376 | The owner can give ownership to another user. |
| 1377 | |
| 1378 | * '''Service:''' Library |
| 1379 | * '''Operation:''' setOwner |
| 1380 | * '''Input Parameters:''' |
| 1381 | * Name - a string containing the experiment's name |
| 1382 | * newOwner - a string, the new owner's UID |
| 1383 | * '''Return Values:''' |
| 1384 | * a boolean, true if the removal succeeded |
| 1385 | |
| 1386 | === Library Profiles === |
| 1387 | |
| 1388 | Libraries have profiles attached to them, as users, circles, and projects do. Information in a profile is metadata about the library, intended for human consumption. |
| 1389 | |
| 1390 | The calls for manipulating a library profile are very similar to other profiles: |
| 1391 | |
| 1392 | To get a profile schema, for example to create an empty web page, |
| 1393 | |
| 1394 | * '''Service:''' Libraries |
| 1395 | * '''Operation:''' getProfileDescription |
| 1396 | * '''Input Parameters:''' |
| 1397 | * '''Return Values:''' |
| 1398 | * LibraryId - always empty |
| 1399 | * A list of profile elements each containing |
| 1400 | * Name - a string, the element's name |
| 1401 | * DataType - a string giving the element's |
| 1402 | * string |
| 1403 | * integer |
| 1404 | * double |
| 1405 | * binary/opaque |
| 1406 | * Value - a string containing the element's value |
| 1407 | * Access - a string describing the access values (values [http://www.isi.edu/~faber/tmp/DeterAPI/doc/constant-values.html here]) |
| 1408 | * Optional - a flag true if the field is optional (must be present but may be empty) |
| 1409 | * Removable - a flag true if the field can be removed |
| 1410 | * Description - a string explaining the field |
| 1411 | * Format - a regular expression that can be used to validate the field entry (may be null, and generally is for optional fields) |
| 1412 | * FormatDescription - A brief, natural language description of the field input constraints, e.g. "A valid e-mail address" or "only numbers and spaces". |
| 1413 | * OrderingHint - an integer suggesting where to present the attribute. Lower numbers come first |
| 1414 | * LengthHint - an integer suggesting how long an input firld should be presented |
| 1415 | |
| 1416 | To read a library's profile. |
| 1417 | |
| 1418 | * '''Service:''' Libraries |
| 1419 | * '''Operation:''' getLibraryProfile |
| 1420 | * '''Input Parameters:''' |
| 1421 | * libid - a string naming the library to be retrieved |
| 1422 | * '''Return Values:''' |
| 1423 | * LibraryId - the experiment whose profile is returned |
| 1424 | * A list of profile elements each containing |
| 1425 | * Name - a string, the element's name |
| 1426 | * DataType - a string giving the element's |
| 1427 | * string |
| 1428 | * integer |
| 1429 | * double |
| 1430 | * binary/opaque |
| 1431 | * Value - a string containing the element's value |
| 1432 | * Access - a string describing the access values (Defined [http://www.isi.edu/~faber/tmp/DeterAPI/doc/constant-values.html here]) |
| 1433 | * Optional - a flag true if the field is optional (must be present but may be empty) |
| 1434 | * Removable - a flag true if the field can be removed |
| 1435 | * Description - a string explaining the field |
| 1436 | * Format - a regular expression that can be used to validate the field entry (may be null, and generally is for optional fields) |
| 1437 | * FormatDescription - A brief, natural language description of the field input constraints, e.g. "A valid e-mail address" or "only numbers and spaces". |
| 1438 | * OrderingHint - an integer suggesting where to present the attribute. Lower numbers come first |
| 1439 | * LengthHint - an integer suggesting how long an input field should be presented |
| 1440 | |
| 1441 | Finally a user can modify a library profile: |
| 1442 | |
| 1443 | * '''Service:''' Libraries |
| 1444 | * '''Operation:''' changeLibraryProfile |
| 1445 | * '''Input Parameters:''' |
| 1446 | * Libid - the library's profile to modify |
| 1447 | * A list of change requests. Each request contains |
| 1448 | * Name - the name of the field to change |
| 1449 | * Value - the new value of the field |
| 1450 | * Delete - a flag, if true delete the field rather than modify it |
| 1451 | * '''Return Values:''' |
| 1452 | * A list of responses each containing |
| 1453 | * Name - astring with the name of the field |
| 1454 | * Success - a flag indicating if the request succeeded |
| 1455 | * Reason - a string indicating the reason if Success is false |
| 1456 | |
| 1457 | |
| 1458 | === Manipulating Profile Attributes === |
| 1459 | |
| 1460 | Administrators may add attributes to library profiles or remove them. That is to say, add a schema (including format constraints and descriptions), not set a value for a library. |
| 1461 | |
| 1462 | Creating an attribute: |
| 1463 | |
| 1464 | * '''Service:''' Libraries |
| 1465 | * '''Operation:''' createLibraryAttribute |
| 1466 | * '''Input Parameters:''' |
| 1467 | * Name - the attribute name |
| 1468 | * Type - the type (STRING, INT, FLOAT, OPAQUE) |
| 1469 | * Optional - a boolean, true if this attribute is optional |
| 1470 | * Access - a string: the user's ability to modify (READ_WRITE, READ_ONLY, WRITE_ONLY, NO_ACCESS) |
| 1471 | * Description - natural language description of the field (optional) |
| 1472 | * Format - a regular expression describing the format (optional) |
| 1473 | * Formatdescription - a natural language explanation of the format (optional) |
| 1474 | * OrderingHint - an integer suggesting where to present the attribute. Lower numbers come first |
| 1475 | * LengthHint - an integer suggesting how long an input |
| 1476 | * Def - default value of the attribute (will be set for all users) |
| 1477 | * '''Return Values:''' |
| 1478 | * a boolean, true if the attribute was created |
| 1479 | |
| 1480 | And removing an attribute: |
| 1481 | |
| 1482 | * '''Service:''' Libraries |
| 1483 | * '''Operation:''' removeLibraryAttribute |
| 1484 | * '''Input Parameters:''' |
| 1485 | * Name - the attribute name |
| 1486 | * '''Return Values:''' |
| 1487 | * a boolean, true if the attribute was removed |
| 1488 | |
| 1489 | Finally administrators can modify profile attributes: |
| 1490 | |
| 1491 | * '''Service:''' Libraries |
| 1492 | * '''Operation:''' modifyLibraryAttribute |
| 1493 | * '''Input Parameters:''' |
| 1494 | * Name - the attribute name |
| 1495 | * Type - the type (STRING, INT, FLOAT, OPAQUE) |
| 1496 | * Optional - a boolean, true if this attribute is optional |
| 1497 | * Access - a string: the user's ability to modify (READ_WRITE, READ_ONLY, WRITE_ONLY, NO_ACCESS) |
| 1498 | * Description - natural language description of the field (optional) |
| 1499 | * Format - a regular expression describing the format (optional) |
| 1500 | * Formatdescription - a natural language explanation of the format (optional) |
| 1501 | * OrderingHint - an integer suggesting where to present the attribute. Lower numbers come first |
| 1502 | * LengthHint - an integer suggesting how long an input |
| 1503 | * '''Return Values:''' |
| 1504 | * a boolean, true if the attribute was modified |