Changes between Initial Version and Version 1 of DRAFT_GAPI_AM_API_V1


Ignore:
Timestamp:
12/03/11 11:30:05 (12 years ago)
Author:
Aaron Helsinger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DRAFT_GAPI_AM_API_V1

    v1 v1  
     1[[PageOutline]]
     2
     3= GENI Aggregate Manager API Version 1 =
     4
     5The GENI Aggregate Manager API allows aggregates to advertise resources and to allocate resources to Slices in the form of Slivers. A Sliver is the set of resources allocated by one Aggregate to one Slice.
     6
     7This is the GENI AM API Version '''1'''.
     8
     9See Also:
     10 * [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf Slice-based Facility Architecture (SFA) specification]
     11 * [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa-impl.pdf PlanetLab Implementation of the Slice-Based Facility Architecture]
     12 * [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2 ProtoGENI Component Manager API revision 2]
     13 * [wiki:GeniApi GENI API] implementation status
     14 * [wiki:GAPI_AM_API Latest] revision of this API
     15 * [wiki:DRAFT_GAPI_AM_API_DRAFT Draft API Revisions] proposed for the next version of this API
     16
     17== Versions ==
     18
     19 * Previous: Version 1 - Documented on this page
     20 * Latest: Always available on [wiki:GAPI_AM_API the main AM API page]
     21  * As of this writing, that is [wiki:DRAFT_GAPI_AM_API_V2 version 2]
     22 * [wiki:DRAFT_GAPI_AM_API_DRAFT Draft Changes]
     23  * As of this writing, those will be for version 3 of the API
     24  * Documents proposed changes for future versions of the API
     25
     26-----
     27== !GetVersion ==
     28
     29Return the version of the GENI Aggregate API supported by this aggregate.
     30
     31{{{
     32struct GetVersion()
     33}}}
     34
     35The result is an [http://www.xmlrpc.com/spec XML-RPC] struct with at least the following members:
     36
     37{{{
     38{
     39  int geni_api;
     40}
     41}}}
     42
     43 `geni_api`::
     44    An integer indicating the revision of the Aggregate Manager API that an aggregate supports. This page documents version 1 of the API.
     45
     46Implementations can add additional members to the struct as desired. The prefix {{{geni_}}} is reserved for members that are part of this API specification. Implementation should choose an appropriate prefix to avoid conflicts.
     47
     48This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#GetVersion GetVersion] operation. The [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA] specification does not include this operation.
     49
     50-----
     51== !ListResources ==
     52
     53Return information about available resources or resources allocated to a slice.
     54
     55{{{
     56string ListResources(string credentials[], struct options)
     57}}}
     58
     59 `credentials[]`::
     60    An array of credentials. At least one credential must be valid for this operation (signed by a valid GENI certificate authority either directly or by chain, and not expired). Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.
     61
     62 `options`::
     63    An [http://www.xmlrpc.com/spec XML-RPC] struct containing members indicating the set of resources the caller is interested in or the format of the result. In addition to the members specified below, callers can pass additional members that specific aggregate manager implementations might honor. The prefix {{{geni_}}} is reserved for members that are part of this API specification. Implementations should choose an appropriate prefix to avoid conflicts.
     64
     65The following members are available for use in the options parameter. All aggregate managers are required to implement these options.
     66
     67{{{
     68{
     69  boolean geni_available;
     70  boolean geni_compressed;
     71  string geni_slice_urn;
     72}
     73}}}
     74
     75 `geni_available`::
     76    An [http://www.xmlrpc.com/spec XML-RPC] boolean value indicating whether the caller is interested in all resources or available resources. If this value is true, the result should contain only available resources. If this value is false both available and allocated resources should be returned. The Aggregate Manager is free to limit visibility of certain resources based on the credentials parameter.
     77
     78 `geni_compressed`::
     79    An [http://www.xmlrpc.com/spec XML-RPC] boolean value indicating whether the caller would like the result to be compressed. If the value is true, the returned resource list will be compressed according to [http://www.ietf.org/rfc/rfc1950.txt RFC 1950].
     80
     81 `geni_slice_urn`::
     82    An [http://www.xmlrpc.com/spec XML-RPC] string indicating that the caller is interested in the set of resources allocated to the slice named by this URN. If no resources are allocated to the indicated slice by this aggregate, an empty RSPEC should be returned.
     83
     84
     85The return value is an RSPEC in text format if geni_compressed is unspecified or set to false. The return value will be a base 64 encoded if geni_compressed is specified and set to true.
     86
     87This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#DiscoverResources DiscoverResources] operation and to the [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA]'s !GetResources operation (sec. 6.2.4).
     88
     89
     90-----
     91== !CreateSliver ==
     92
     93Allocate resources to a slice. This operation is expected to start the allocated resources asynchronously after the operation has successfully completed. Callers can check on the status of the resources using [wiki:GAPI_AM_API#SliverStatus SliverStatus].
     94
     95{{{
     96string CreateSliver(string slice_urn,
     97                    string credentials[],
     98                    string rspec,
     99                    struct users[])
     100}}}
     101
     102 `slice_urn`::
     103   The URN of the slice to which the resources specified in {{{rspec}}} will be allocated.
     104
     105 `credentials`::
     106   An array of credentials. At least one credential must be a valid slice credential for the slice specified in {{{slice_urn}}}. Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.  Aggregates should ensure that the expiration time of the slice does not exceed the expiration time of the slice credential used to perform this operation.
     107
     108 `rspec`::
     109   An RSPEC containing the resources that the caller is requesting for allocation to the slice specified in {{{slice_urn}}}. These are expected to be based on resources returned by a previous invocation of [#ListResources ListResources].
     110
     111  `users`::
     112  An array of user structs, which contain information about the users that might login to the sliver that the AM needs to know about. Each struct must include the key 'keys', which is an array of strings and can be empty. The struct must also include the key 'urn', which is the user’s URN string. The users array can be empty. For example:
     113{{{
     114[
     115  {
     116    urn: urn:publicid:IDN+geni.net:gcf+user+alice
     117    keys: [<ssh key>, <ssh key>]
     118  },
     119  {
     120    urn: urn:publicid:IDN+geni.net:gcf+user+bob
     121    keys: [<ssh key>]
     122  }
     123]
     124}}}
     125The return value is an RSPEC indicating the resources that were allocated to the slice. The result RSPEC may contain additional information about the allocated resources.
     126
     127This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#CreateSliver CreateSliver] operation and to the [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA]'s !CreateSlice operation (sec. 6.2.1).
     128
     129
     130-----
     131== !DeleteSliver ==
     132
     133Delete a sliver by stopping it if it is still running, and then deallocating the resources associated with it.  This call will stop and deallocate all resources associated with the given slice URN.
     134
     135{{{
     136boolean DeleteSliver(string slice_urn, string credentials[])
     137}}}
     138
     139 `slice_urn`::
     140   The URN of the slice whose sliver should be deleted.
     141
     142 `credentials`::
     143   An array of credentials. At least one credential must be a valid slice credential for the slice specified in {{{slice_urn}}}. Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.
     144
     145Returns true on success and false on failure.
     146
     147This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#DeleteSliver DeleteSliver] operation and to the [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA]'s !DeleteSlice operation (sec. 6.2.3).
     148
     149
     150-----
     151== !SliverStatus ==
     152
     153Get the status of a sliver.
     154
     155{{{
     156struct SliverStatus(string slice_urn, string credentials[])
     157}}}
     158
     159 `slice_urn`::
     160   The URN of the slice for which the sliver status is requested.
     161
     162 `credentials`::
     163   An array of credentials. At least one credential must be a valid slice credential for the slice specified in {{{slice_urn}}}. Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.
     164
     165Returns an XML-RPC struct upon successful completion. The struct is of the following form:
     166
     167{{{
     168{
     169  geni_urn: <sliver URN>
     170  geni_status: ready
     171  geni_resources: [ { geni_urn: <resource URN>
     172                      geni_status: ready
     173                      geni_error: ''},
     174                    { geni_urn: <resource URN>
     175                      geni_status: ready
     176                      geni_error: ''}
     177                  ]
     178}
     179}}}
     180
     181The top level members of the returned struct pertain to the sliver as a whole. These members are:
     182
     183 `geni_urn`::
     184    The URN of the sliver as a string. This is the ''sliver'' and not the ''slice'', and should be selected by the aggregate manager.
     185
     186 `geni_status`::
     187    A string indicating the status of the sliver. Possible values are: {{{configuring}}}, {{{ready}}}, {{{failed}}}, and {{{unknown}}}. Configuring indicates that at least one resource is being configured and none have failed. Ready indicates that all resources in the sliver are ready. Failed indicates that at least one resource in the sliver has failed. Unknown indicates that the state of the sliver is not one of the known states. More detailed information can be found in the value of the geni_resources member.
     188
     189 `geni_resources`::
     190    An array of structs. Each struct in the array gives the status of each resource in the sliver. The members of these structs are described below.
     191
     192The members of the resource struct(s) are as follows:
     193
     194 `geni_urn`::
     195    The URN of the resource as a string. This is specific to the ''sliver'', and should be selected by the aggregate manager to allow status reporting and control at the finest level supported at that aggregate. It may be a sliver URN if there is only 1 resource in the sliver.
     196
     197 `geni_status`::
     198    A string indicating the status of the resource. Possible values are: {{{configuring}}}, {{{ready}}}, {{{failed}}}, and {{{unknown}}}. Configuring indicates that the resources is being configured and is not yet ready for use. Ready indicates that the resource is ready. Failed indicates that the resource has failed. Unknown indicates that the state of the resource is not one of the known states.
     199
     200 `geni_error`::
     201    A free form string. The aggregate manager should set this to a string that could be presented to a researcher to give more detailed information about the state of the resource if its status is {{{failed}}}.
     202
     203
     204This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#SliverStatus,WaitForStatus SliverStatus] operation. The [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA] specification does not include this operation.
     205
     206
     207-----
     208== !RenewSliver ==
     209
     210Renews the resources in a sliver, extending the lifetime of the slice.
     211
     212{{{
     213boolean RenewSliver(string slice_urn,
     214                    string credentials[],
     215                    string expiration_time)
     216}}}
     217
     218 `slice_urn`::
     219   The URN of the slice that is to have its sliver renewed.
     220
     221 `credentials`::
     222   An array of credentials. At least one credential must be a valid slice credential for the slice specified in {{{slice_urn}}}. Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.
     223
     224 `expiration_time`::
     225    A string in [http://tools.ietf.org/html/rfc3339 RFC 3339] format indicating the expiration_time desired by the caller. Note these times, per the RFC, must be in or relative to UTC. This time must be less than or equal to the slice duration in the slice credential. In other words, at least one supplied (slice) credential must still be valid at the desired new expiration time for this call to succeed.
     226
     227
     228Returns true on successful completion, false otherwise. It is assumed that the caller will have already extended the lifetime of the slice credential with the appropriate slice authority prior to calling !RenewSliver.
     229
     230This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#RenewSlice RenewSlice] operation. The [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA] specification does not include this operation.
     231
     232
     233-----
     234== Shutdown ==
     235
     236Perform an emergency shut down of a sliver. This operation is intended for administrative use. The sliver is shut down but remains available for further forensics.
     237
     238{{{
     239boolean Shutdown(string slice_urn, string credentials[])
     240}}}
     241
     242 `slice_urn`::
     243   The URN of the slice is to have its sliver shut down.
     244
     245 `credentials`::
     246   An array of credentials. At least one credential must be a valid slice credential for the slice specified in {{{slice_urn}}} or a valid administrative credential with sufficient privileges. Note that the semantics of this argument is not clear. Alternative interpretations might, for example, accumulate privileges from each valid credential to determine overall caller permissions.
     247
     248Returns true on success, false otherwise.
     249
     250This operation is similar to ProtoGENI's [http://www.protogeni.net/trac/protogeni/wiki/ComponentManagerAPIV2#Shutdown Shutdown] operation. The [http://svn.planet-lab.org/attachment/wiki/WikiStart/sfa.pdf SFA] specification does not include this operation.