Request that the named slivers be renewed, with their expiration extended. If possible, the aggregate should extend the slivers to the requested expiration time, or to a sooner time if policy limits apply. This method applies to slivers that are :allocated or to slivers that are :provisioned, though different policies may apply to slivers in the different states, resulting in much shorter max expiration times for :allocated slivers.
Renew(string urns[],
struct credentials[],
dateTime.rfc3339 :end_time,
struct options)
Note
|
This operation used to be called RenewSliver. Use Renew(<slice_urn>) to get the equivalent functionality. |
When Renew is called with :best_effort false, the entire method will fail (return non-zero :code) if any requested sliver cannot be renewed to the requested time, and all slivers will keep their original expiration time. When Renew is called with :best_effort true, some slivers may fail to be renewed. In this case, the allocation state and expiration times do not change. :error may optionally be returned by the aggregate to explain this failure.
As described in the Operations On Individual Slivers section, the :single_allocation return from [GetVersion] advertises whether or not a client may invoke this method on only some of the slivers in a given :allocation_state in a given slice (default is false - the client may operate on only some of the slivers in a given state).
Renew requests a changed expiration for one or more slivers in a slice. At some aggregates, this expiration may be shorter. This method applies both to slivers that are :allocated and to those that are already :provisioned. Depending on local aggregate configuration, the aggregate may only support Renew on all current slivers in the slice, or may permit renewing only some slivers. Local policy will dictate maximum expiration times. These times are typically quite short (\~ 10 minutes initially, \~ 120 minutes maximum) for reservations (:allocated), and longer for provisioned (:provisioned) slivers (~ 5-8 days initially). Since these expiration times are different, typically Renew is used only for slivers in the same allocation state.
See the urns argument for details.
The standard authorization argument. See the Credentials section.
See :end_time option for details. Note that here, it is a mandatory argument.
A struct containing optional arguments, indexed by name. See General Options Argument Section.
See :best_effort option for details.
Specifying whether the client prefers all included slivers to be renewed or none, or wants a partial success if possible.
XML-RPC type |
struct |
See the sliver info list return for details.
On success, the value field of the return struct will contain a list of structs:
XML-RPC type |
[
{
":sliver_urn": <string>,
":allocation_status": <string>,
":operational_status": <string>,
":expires": <string: dateTime.rfc3339 when the sliver expires from its current state>,
(optional) ":error": <string: explaining any renewal failure for this sliver. The field may be omitted entirely but may not be null/None>
},
...
]
Calling Renew on an unknown, deleted or expired sliver (by explicit URN) shall result in an error (e.g. SEARCHFAILED, EXPIRED or ERROR :code) (unless :best_effort is true, in which case the method may succeed, but return a :error for each sliver that failed). Attempting to Renew a slice (no slivers identified) with no current slivers at this aggregate may return an empty list of slivers, may return a list of previous slivers that have since been deleted, or may even return an error (SEARCHFAILED or EXPIRED). Note therefore that an empty list is a valid return from this method.
It is legal to attempt to renew a sliver to a sooner expiration time than the sliver was previously due to expire. Not all aggregates will support this however.
The Renew call can return the usual error codes: BADARGS, ERROR, SERVERERROR and UNAVAILABLE. See Error Codes for general errors.
Additionally, the Renew call can return the following error codes:
FORBIDDEN |
Credential does not grant permission to a slice or sliver specified in the urns argument. Or the slice has been shut down. |
UNSUPPORTED |
The aggregate does not permit partial renewals of this form. |
EXPIRED |
The slice and/or sliver has already expired. |
SEARCHFAILED |
The slice or sliver does not exist at this AM. |
BUSY |
Slice or sliver is temporarily locked, try again later |