Changes between Version 47 and Version 48 of AaronHelsinger/GAPI_AM_API_DRAFT


Ignore:
Timestamp:
04/13/12 11:57:31 (12 years ago)
Author:
Aaron Helsinger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AaronHelsinger/GAPI_AM_API_DRAFT

    v47 v48  
    116116
    117117 1. Rename some existing methods to clarify that they act on 1+ slivers:
    118   - !CreateSliver -> !CreateSlivers
    119   - !RenewSliver -> !RenewSlivers
    120   - !DeleteSliver -> !DeleteSlivers
    121   - !SliverStatus -> !SliversStatus
     118  - !CreateSliver -> Allocate, Provision (see below)
     119  - !RenewSliver -> Renew
     120  - !DeleteSliver -> Delete
     121  - !SliverStatus -> Status
    122122
    123123 2. Some methods that take {{{slice_urn}}} now take a {{{urn}}} that may be a slice or sliver:
    124   - !RenewSlivers, !DeleteSlivers, !SliversStatus
     124  - E.G. Renew, Delete, Status
    125125  - AMs are responsible for distinguishing whether the request operates on a slice or a sliver (see [#ChangeSetK:Standardizecertificatesandcredentials Change Set K] which defines how slice and sliver URNs differ).
    126126  - AMs are free to refuse to Renew, Delete, or provide status on an individual sliver, if the local AM or that resource type does not support it.
    127    - AMs should return an error message. Clients may often use !UpdateSlivers instead to similar effect.
    128 
    129 Open Question: Should the methods take a list of urns, 1 of which may be a slice_urn?
    130 
     127   - AMs should return an error message if the operations is not supported.
     128
     129 3. Define new returns from !GetVersion, for specifying the semantics of operating on individual slivers.
     130These returns are only required if the aggregate supports non-standard behavior.
     131
     132  - `geni_single_allocation`: <XML-RPC boolean 1/0, default 0>: When performing one of (Describe, Allocate, Renew, Provision, Delete), the AM requires you to include either the slice urn or the urn of all the slivers in the same state. If you attempt to run one of those operations on just some slivers in a given state, the AM will return an error.
     133For example, you must Provision all `geni_allocated` slivers at once: At an aggregate with `geni_single_allocation` true, if you supply a list of sliver URNs to Provision that is only 'some' of the `geni_allocated` slivers for this slice at this AM, then the AM will return an error.
     134Similarly, such an aggregate would return an error from Describe if you request a set of sliver URNs that is only some of the `geni_provisioned` slivers.
     135
     136  - `geni_allocate` A string, one of fixed set of possible values. Default is `geni_single`. This option defines whether this AM allows adding slivers to a slices at an AM (i.e. calling Allocate() multiple times, without first deleting the allocated slivers). Possible values:
     137   - `geni_single`: Performing multiple Allocates without a delete is an error condition because the aggregate only supports a single sliver per slice or does not allow incrementally adding new slivers. This is the AM API v2 behavior.
     138   - `geni_disjoint`: Additional calls to Allocate must be disjoint from slivers allocated with previous calls (no references or dependencies on existing slivers). The topologies must be disjoint in that there can be no connection or other reference from one topology to the other.
     139   - `geni_many`: Multiple slivers can exist and be incrementally added, including those which connect or overlap in some way. New aggregates should strive for this capability.
     140
     141Note that these options interact with `geni_best_effort` defined in Change Set F3, defining whether operations on a set of slivers (or whole slice) should either all fail/succeed together, or if some slivers can succeed and others fail. Default behavior is false - all slivers succeed or all fail.
     142
     143It is expected that many aggregates will implement one of the following combinations of options:
     144 - `geni_best_effort` = true, `geni_allocate` = `geni_many`, `geni_single_allocation` = false (E.G. FOAM, !PlanetLab)
     145 - `geni_best_effort` = false, `geni_allocate` = `geni_disjoint`, `geni_single_allocation` = true (E.G. ProtoGENI)
    131146
    132147= Change Set F: Support AM and resource-type specific methods. =