Changes between Version 35 and Version 36 of NewTestbedAPISpec


Ignore:
Timestamp:
Jul 25, 2015 6:58:18 PM (9 years ago)
Author:
faber
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NewTestbedAPISpec

    v35 v36  
    15461546== Resources ==
    15471547
    1548 Resources are things that make up experiments.  There are several specialized resources used in experimentation that have their own suite of operations, and there is a general set of operations for future expansion.
    1549 
    1550 === Computers ===
    1551 
    1552 Computers are the physical computing resources of the testbed.  A user may be interested in specific instances of a computer - {{{pc23}}} - or in information about types or classes of computers.  Both are possible to view with these calls.
    1553 
    1554 A user can view computers or classes by:
     1548Resources are things that make up experiments. They are fairly generic at this point, though we expect to specialize them.  Currently system resources - like computers and VMs - are primarily manipulated by the testbed.  Like circles, resources have names scoped by user or project.  A user can create local resources in their namespace and the testbed creates resources in the admin or system namespaces.
     1549
     1550Users primarily see system resources when an experiment is realized.
     1551
     1552A resource consists a type, an optional description, zero or more facets, zero or more tags and an ACL that allows circle members to manipulate it.  Types are identifiers that control how the testbed and user can manipulate them.  Common resource types include "VM" and "computer".
     1553
     1554A resource encapsulates the ability to
     1555
     1556 * Compute
     1557 * Store data
     1558 * Communicate
     1559 * Sense the world
     1560 * Manipulate the world
     1561
     1562Each of those capabilities is described by a facet data structure attached to the resource.  A facet describes the available powers of a resource.  When a resource is realized inside another, the inner resource provides its facets by consuming the outer resource's facets.
     1563
     1564Tags are name value pairs associated with a resource or facet thereof.  They are a simple extension mechanism, akin to attributes in [wiki:LayoutAspect#ViewExchangeFormattopdlv2 topdl].
     1565
     1566Operations on resources include:
     1567
    15551568
    15561569 * '''Service:''' Resources
    1557  * '''Operation:''' viewComputers
    1558  * '''Input Parameters:'''
    1559    * Userid - the user making the request (the owner on success)
    1560    * Owner - an optional string the computer owner
    1561    * NameRE - an optional string containing a regular expression matched against the name
    1562    * Type - an optional string containing the computer types to look for
    1563  * '''Return Values:'''
    1564    * Zero or more structures with the following fields:
    1565      * Name - a string, the name of this computer, if absent this is a class
    1566      * Owner - a string, the owner of the computer or class
    1567      * Type - a string containing the type of computer
    1568      * Description - a string describing this computer or class
    1569      * Allocated - an optional flag indicating whether this computer is allocated.  The field is absent all together if this structure describes a class
    1570      * AllocatedExperiment - an optional string containing the experiment name if the computer is allocated and the user has the right to read the experiment
    1571      * AllocatedProject - an optional string containing the project name in which the experiment is realized if the computer is allocated and the user has the right to read the project
    1572      * ProjectDelete - an optional list of project names that can delete this resource
    1573      * ProjectModify - an optional list of project names that can modify this resource
    1574      * ProjectUse - an optional list of project names that can use this resource
    1575      * ProjectRead - an optional list of projects names that can read this resource
    1576 
    1577 If any of the permission fields are not present, the class permissions apply.  If they are present for a specific computer, they specific computer's permissions override the class permissions.
    1578 
    1579 Administrators can add new computers or classes using
    1580 
    1581  * '''Service:''' Resources
    1582  * '''Operation:''' createComputer
    1583  * '''Input Parameters:'''
    1584    * Userid - the user making the request (the owner on success)
    1585    * Name - an optional string, the name of this computer, if absent this is a class
    1586    * Type - a string containing the type of computer
    1587    * Description - an optional string describing this computer or class (If omitted for a computer, the type description is used)
    1588    * ProjectDelete - an optional list of project names that can delete this resource
    1589    * ProjectModify - an optional list of project names that can modify this resource
    1590    * ProjectUse - an optional list of project names that can use this resource
    1591    * ProjectRead - an optional list of projects names that can read this resource
    1592  * '''Return Values:'''
    1593    None
    1594 
    1595 Note that missing fields in a computer creation are generally filled in from the type.  Creating a computer or class without any projects that can use it is of questionable value.
    1596 
    1597 Similarly, they can modify an existing computer using (assuming they are in a project that allows modification of the class or computer):
    1598 
    1599  * '''Service:''' Resources
    1600  * '''Operation:''' modifyComputer
    1601  * '''Input Parameters:'''
    1602    * Userid - the user making the request
    1603    * Name - an optional string, the name of this computer, if absent this is a class
    1604    * Type - an optional string containing the type of computer
    1605    * Description - an optional string describing this computer or class (If omitted for a computer, the type description is used)
    1606    * ProjectDelete - an optional list of project names that can delete this resource
    1607    * ProjectModify - an optional list of project names that can modify this resource
    1608    * ProjectUse - an optional list of project names that can use this resource
    1609    * ProjectRead - an optional list of projects names that can read this resource
    1610  * '''Return Values:'''
    1611    None
    1612 
    1613 Values passed in overwrite the current values if the user had modify rights.  One of Name or Type must be present.
    1614 
    1615 Finally an administrator can delete a computer:
    1616 
    1617  * '''Service:''' Resources
    1618  * '''Operation:''' removeComputer
    1619  * '''Input Parameters:'''
    1620    * Userid - the user making the request
    1621    * Name - an optional string, the name of this computer, if absent this is a class
    1622    * Type - an optional string, the type of computer.  May be omitted for specific computers
    1623  * '''Return Values:'''
    1624    None
    1625 
    1626 === Images ===
    1627 
    1628 Images are saved container state - including saved physical container state.  These are selected in the experiment definition, but users may need to manipulate them directly.
    1629 
    1630 To read image information:
    1631 
    1632  * '''Service:''' Resources
    1633  * '''Operation:''' viewImages
    1634  * '''Input Parameters:'''
    1635    * Userid - the user making the request (the owner on success)
    1636    * Owner - an optional string the computer owner
    1637    * NameRE - an optional string containing a regular expression matched against the name
    1638  * '''Return Values:'''
    1639    * Zero or more structures with the following fields:
    1640      * Name - a string, the name of this image
    1641      * Owner - a string, the owner of the image
    1642      * Description - a string describing this image
    1643      * ValidIn - a list of container types that can use this image
    1644      * ProjectDelete - a list of project names that can delete this resource
    1645      * ProjectModify - a list of project names that can modify this resource
    1646      * ProjectUse - a list of project names that can use this resource
    1647      * ProjectRead - a list of projects names that can read this resource
    1648 
    1649 Images are created by operations on a container, but users can modify or delete their metadata:
    1650 
    1651  * '''Service:''' Resources
    1652  * '''Operation:''' modifyImage
    1653  * '''Input Parameters:'''
    1654    * Userid - the user making the request
    1655    * Name - a string, the name of this image
    1656    * Description - an optional string describing this computer or class
    1657    * ValidIn - an optional list of container types that can use this image
    1658    * ProjectDelete - an optional list of project names that can delete this resource
    1659    * ProjectModify - an optional list of project names that can modify this resource
    1660    * ProjectUse - an optional list of project names that can use this resource
    1661    * ProjectRead - an optional list of projects names that can read this resource
    1662  * '''Return Values:'''
    1663    None
    1664 
    1665 
    1666 As with other resources, these values overwrite the existing parameters (except for name which is a selector).
    1667 
    1668 A user can delete an image:
    1669 
    1670  * '''Service:''' Resources
    1671  * '''Operation:''' removeImage
    1672  * '''Input Parameters:'''
    1673    * Userid - the user making the request (the owner on success)
    1674    * Name - a string, the image to remove
    1675  * '''Return Values:'''
    1676    None
    1677 
    1678 
    1679 === Pubkey ===
    1680 
    1681 Public/Private keypairs are used several places in the testbed for authentication and access.  For example, access to containers that present a computer interface is done using the ssh protocol.  These interfaces allow users to manipulate their keys.
    1682 
    1683 Viewing keys:
    1684 
    1685 * '''Service:''' Resources
    1686  * '''Operation:''' viewKeys
    1687  * '''Input Parameters:'''
    1688    * Userid - the user making the request
    1689    * Owner - an optional string the computer owner
    1690    * type - an optional string containing the kind of keys to report
    1691  * '''Return Values:'''
    1692    * Zero or more structures with the following fields:
    1693      * Name - a string, the name of this key
    1694      * Owner - a string, the owner of the key
    1695      * Description - a string describing this key
    1696      * KeyData - an opaque data value - the key data
    1697      * ProjectDelete - a list of project names that can delete this resource
    1698      * ProjectModify - a list of project names that can modify this resource
    1699      * ProjectUse - a list of project names that can use this resource
    1700      * ProjectRead - a list of projects names that can read this resource
    1701 
    1702 
    1703 Users can add and delete keys:
    1704 
    1705  * '''Service:''' Resources
    1706  * '''Operation:''' addKey
    1707  * '''Input Parameters:'''
    1708    * Userid - the user making the request (the owner on success)
    1709    * Owner - an optional string the computer owner
    1710    * Name - an optional string, the name of this key (system will assign if omitted)
    1711    * Description - an optional string describing this key
    1712    * KeyData - an opaque data value - the key data
    1713    * ProjectDelete - a list of project names that can delete this resource
    1714    * ProjectModify - a list of project names that can modify this resource
    1715    * ProjectUse - a list of project names that can use this resource
    1716    * ProjectRead - a list of projects names that can read this resource
    1717  * '''Return Values:'''
    1718    * None
    1719 
    1720  * '''Service:''' Resources
    1721  * '''Operation:''' removeKey
    1722  * '''Input Parameters:'''
    1723    * Userid - the user making the request
    1724    * Name - a string, the name of this key
     1570 * '''Operation:''' createResource
     1571String name, String type, Boolean persist, String description, ResourceFacet[] facets, ResourceTag[] tags, AccessMember[] accessLists
     1572
     1573 * '''Input Parameters:'''
     1574   * Name - a string, the scoped, unique identifier of the resource
     1575   * Type - a string, the resource type
     1576   * Persist - a boolean, true if the resource is independent of an experiment realization.  Non persistent resources resource disappear once bound to a realization and then released.
     1577   * Description - a string, an optional human readable description of the resource
     1578   * A list of zero or more facets that describe the capabilities and requirements of the resource.  Each facet includes
     1579    * A name, scoped by the resource
     1580    * A type (CPU, Storage, Communication, Sensing, Manipulation)
     1581    * A value, the real-valued amount of the type
     1582    * A units value that scales and defined the value
     1583    * Zero or more tags.
     1584  * An access control list
     1585 * '''Return Values:'''
     1586  * A boolean indicating success
     1587
    17251588
    17261589== Realizations ==