Changes between Version 30 and Version 31 of NewTestbedAPISpec


Ignore:
Timestamp:
Jul 8, 2014 4:13:55 PM (10 years ago)
Author:
faber
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NewTestbedAPISpec

    v30 v31  
    10131013   A boolean, true if the aspect can be modified.
    10141014
     1015Experiments also include an access control list (ACL) that lists the permissions that circles are granted to this experiment.
     1016
    10151017[http://www.isi.edu/~faber/tmp/DeterAPI/doc/net/deterlab/testbed/api/Experiments.html experiments javadoc]
    10161018
    10171019=== Viewing Experiments ===
    10181020
    1019 One or more experiments can be viewed by an authorized user assuming that user has the proper permissions.  The creator of a project owns it and that userid scopes its name.  That is an experiment's name is a pair: (owner, name).  This allows experiments to be instantiated in different projects.
    1020 
     1021One or more experiments can be viewed by an authorized user assuming that user has the proper permissions.  The search can be scoped by library and a regular expression matched against the experiment name.  In addition, the aspects returned and their contents can also be controlled.  To view experiments, call:
    10211022
    10221023 * '''Service:''' Experiments
    10231024 * '''Operation:''' viewExperiments
    10241025 * '''Input Parameters:'''
    1025    * Userid - a string, if given return all experiments this user can see (equivalent to giving userid:userid as the circle parameter)
    1026    * ExperimentRE - a string containing a regular expression matched against project names (may be omitted)
    1027    * Owner - a string holding the owner of experiments to find (may be omitted)
    1028    * Circle - a string holding a circle name, if given restrict the results to those that can be read by this circle
    1029    * Components - a list of strings containing the fields to include.  Each is one of
    1030      * EXPERIMENT_TOPOLOGY - include the topology
    1031      * EXPERIMENT_ACTIONS - include the actions
    1032      * EXPERIMENT_CONSTRAINTS - include constraints
    1033      * EXPERIMENT_DATACOLLECTION - include data collection
    1034      * EXPERIMENT_RESOURCES - include resources needed or allocated
    1035      * EXPERIMENT_CONTAINERS - include components if realized
    1036      * EXPERIMENT_LOG - include realization log and fault
    1037      * EXPERIMENT_PERMISSIONS - include project permissions
    1038    * TopologyFormat - a optional string naming the topology format.  It is one of
    1039      * TOPOLOGY_TOPDL - return a topdl file
    1040      * TOPOLOGY_NS2 - return an ns2 file
    1041    * TopologyFilter - an optional filter for limiting scope of the topology file format TBD
    1042    * ActionFormat - an optional 32-bit int naming the action file format (values TBD)
    1043    * ActionFilter - an optional filter for limiting scope of the constraint file format TBD
    1044    * ConstraintFormat - an optional 32-bit int naming the constraint format (values TBD)
    1045    * ConstraintFilter - an optional filter for limiting scope of the constraint file format TBD
    1046    * DataCollectionFormat - an optional 32-bit int naming the data collection format (values TBD)
    1047    * DataCollectionFilter - an optional filter for limiting scope of the data collection file format TBD
    1048    * ResourceFilter - an optional filter for limiting scope of the resouces returned format TBD
    1049    * ContainerFilter - an optional filter for limiting scope of the constainers returned format TBD
    1050 
     1026   * Userid - a string, if given return all experiments this user can see
     1027   * Lib - a string, the name of a library.  Only experiments in that library will be returned
     1028   * Regex - a string containing a regular expression matched against experiment names
     1029   * QueryAspects - an array of aspects used to scope the aspect search  Each aspect has the fields described above.  The readOnly, data, and dataReference fields are all ignored.   If the name is present, it much match. If the type is given it must also match. If a type is given the subtype field further scopes the search. A missing type field selects aspects without any subtype. A specific subtype selects only aspects that match both type and subtype, and the distinguished value "*" matches any subtype. A subtype with a null type is invalid.
     1030   * listOnly - a boolean, true if the aspects returned should not contain data.  This avoids unnecessary large data transfers
    10511031 * '''Return Values:'''
    10521032   * One or more structures with the following fields
    10531033     * Name - a string containing the experiment name
    10541034     * Owner - a string containing the owner's userid
    1055      * Project - an optional string. If present the experiment is realized under this project
    1056      * Topology - an optional file describing the experiment topology subject to filters and format constraints
    1057      * Actions - an optional file describing the experiment actions subject to filters and format constraints
    1058      * Constraints - an optional file describing the experiment constraints subject to filters and format constraints
    1059      * DataCollection - an optional file describing the experiment data collection subject to filters and format constraints
    1060      * Containers - an optional list with the following fields describing the containers in the experimnet, if it is realized. Subject to filtering.
    1061        * Name - the container name
    1062        * State - a string indicating state (Up, Down, Configured, Pinned, None)
    1063        * Type - a string indicating the container type
    1064      * Resources - an optional list of structures giving resources needed by or allocated to the experiment, subject to filtering.
    1065        * Name - resource name
    1066        * Type - resource type
    1067      * State - a string, one of
    1068        * "Unrealized", "Realized", "Changing", "Pinned" (Pinned means that some modification other than realization is underway)
    1069      * StateDetail - a string giving additional state information.  values TBD
    1070      * Log - an optional file containing messages from the last realization attempt for debugging
    1071      * FaultInfo - an optional structure containing the high level error message (if any) from the last realization.  It contains the error fields from a DeterFault:
    1072         * ErrorCode - a 32-bit integer encoding the type of error.  Constants are available in the [http://www.isi.edu/~faber/tmp/doc/net/deterlab/testbed/api/DeterFault.html javadoc for DeterFault].  Values are:
    1073           * access - access denied
    1074           * request - bad request
    1075           * internal - internal server error
    1076         * ErrorString - a string describing the broad error
    1077         * DetailString - a string describing the details that caused the error
    1078      * A list of strings giving the permissions of this user with respect to this experiment.  It can include
    1079        * EXPERIMENT_READ - the permission to read the experiment data structure
    1080        * EXPERIMENT_WRITE - the permission to modify the experiment data structure
    1081        * EXPERIMENT_REALIZE - the permission to realize the experiment
    1082      * list of circles and their corresponding permissions.  A user's permissions is the union of the circles it is in.  Each entry in the list contains
    1083         * Circle name
    1084         * A list of strings giving the permissions of this circle with respect to this experiment.  It can include
    1085           * EXPERIMENT_READ - the permission to read the experiment data structure
    1086           * EXPERIMENT_WRITE - the permission to modify the experiment data structure
    1087           * EXPERIMENT_REALIZE - the permission to realize the experiment
     1035     * Aspects - a list of aspect structures as defined above
     1036     * ACL - a list of structures of the form
     1037       * Name - a string the circle name
     1038       * 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]
     1039
    10881040
    10891041=== Creating and Deleting Experiments ===
     
    10941046 * '''Operation:''' createExperiment
    10951047 * '''Input Parameters:'''
     1048   * Name - a string containing a new experiment's name
    10961049   * Userid - the user making the request (the owner on success)
    1097    * Name - a string containing a new experiment's name
    1098    * Topology - an optional file describing the experiment topology
    1099    * Actions - an optional file describing the experiment actions
    1100    * Constraints - an optional file describing the experiment constraints s
    1101    * DataCollection - an optional file describing the experiment data collection
    1102    * list of circles and their corresponding permissions.  A user's permissions is the union of the circles it is in.  Each entry in the list contains
    1103      * Circle name
    1104      * A list of strings giving the permissions of this circle with respect to this experiment.  It can include
    1105        * EXPERIMENT_READ - the permission to read the experiment data structure
    1106        * EXPERIMENT_WRITE - the permission to modify the experiment data structure
    1107        * EXPERIMENT_REALIZE - the permission to realize the experiment
     1050   * Aspects - a list of aspects as defined above
     1051   * AccessLists - a list of access list entries - a list of structures of the form
     1052       * Name - a string the circle name
     1053       * 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]
     1054   * Profile - a list of profile attribute value pairs
    11081055 * '''Return Values:'''
    11091056   * a boolean, true if the creation succeeded
    11101057
    1111 An experiment is modified using:
    1112 
    1113  * '''Service:''' Experiments
    1114  * '''Operation:''' modifyExperiment
    1115  * '''Input Parameters:'''
    1116    * Userid - the user making the request (the owner on success)
    1117    * Owner - the experiment owner
    1118    * Name - a string containing the experiment's name
    1119    * Topology - an optional file describing the experiment topology
    1120    * Actions - an optional file describing the experiment actions
    1121    * Constraints - an optional file describing the experiment constraints s
    1122    * DataCollection - an optional file describing the experiment data collection
    1123    * list of circles and their corresponding permissions.  A user's permissions is the union of the circles it is in.  Each entry in the list contains
    1124      * Circle name
    1125      * A list of strings giving the permissions of this circle with respect to this experiment.  It can include
    1126        * EXPERIMENT_READ - the permission to read the experiment data structure
    1127        * EXPERIMENT_WRITE - the permission to modify the experiment data structure
    1128        * EXPERIMENT_REALIZE - the permission to realize the experiment
    1129  * '''Return Values:'''
    1130    * a boolean, true if the creation succeeded
    1131 
    1132 
    1133 Omitted arguments are not overwritten.  To delete a field supply an empty description.
    1134 
    1135 There will also be filter-based modification interfaces, but these are TBD.
     1058Creating an experiment with one aspect may result in additional sub-aspects appearing, as well as modifications to other aspects.
    11361059
    11371060An experiment is deleted using:
     
    11401063 * '''Operation:''' removeExperiment
    11411064 * '''Input Parameters:'''
    1142    * Userid - the user making the request (the owner on success)
    1143    * Owner - the experiment owner
    11441065   * Name - a string containing the experiment to delete
    11451066 * '''Return Values:'''
    1146    * None
     1067   * a boolean, true on success
    11471068
    11481069After {{{removeExperiment}}} succeeds, experiment state is removed from the testbed completely.
     1070
     1071=== Modifying Experiments ===
     1072
     1073Because aspects are somewhat free-form and can be interrelated, the interface for manipulating them is simple.  Aspects can be added and removed.
     1074
     1075* '''Service:''' Experiments
     1076 * '''Operation:''' addExperimentAspects
     1077 * '''Input Parameters:'''
     1078   * Name - a string containing the experiment's name
     1079   * Aspects - a list of aspects as defined above
     1080 * '''Return Values:'''
     1081   * a boolean, true if the addition succeeded
     1082
     1083As with creation, adding an aspect may result in additional sub-aspects appearing, as well as modifications to other aspects.
     1084
     1085* '''Service:''' Experiments
     1086 * '''Operation:''' removeExperimentAspects
     1087 * '''Input Parameters:'''
     1088   * Name - a string containing the experiment's name
     1089   * Aspects - a list of aspects as defined above
     1090 * '''Return Values:'''
     1091   * a boolean, true if the removal succeeded
     1092
     1093As with creation, adding an aspect may result in additional sub-aspects appearing, as well as modifications to other aspects.
     1094
     1095* '''Service:''' Experiments
     1096 * '''Operation:''' addExperimentACL
     1097 * '''Input Parameters:'''
     1098   * Name - a string containing the experiment's name
     1099   * AccessLists - a list of access list entries - a list of structures of the form
     1100       * Name - a string the circle name
     1101       * 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]
     1102 * '''Return Values:'''
     1103   * a boolean, true if the removal succeeded
     1104
     1105* '''Service:''' Experiments
     1106 * '''Operation:''' removeExperimentACL
     1107 * '''Input Parameters:'''
     1108   * Name - a string containing the experiment's name
     1109   * AccessLists - a list circles to remove from the ACL
     1110 * '''Return Values:'''
     1111   * a boolean, true if the removal succeeded
     1112
     1113The owner can give ownership to another user.
     1114
     1115* '''Service:''' Experiments
     1116 * '''Operation:''' setOwner
     1117 * '''Input Parameters:'''
     1118   * Name - a string containing the experiment's name
     1119   * newOwner - a string, the new owner's UID
     1120 * '''Return Values:'''
     1121   * a boolean, true if the removal succeeded
     1122
     1123
     1124We expect to add filter-based interfaces in the future as well.
    11491125
    11501126=== Realizing and Releasing Experiments ===