179 | | |
| 198 | `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 `geni_allocated` and to those that are already `geni_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 (`geni_allocated`), and longer for provisioned slivers (~ 5-8 days initially). Since these expiration times are different, typically `Renew` is used only for slivers in the same allocation state. |
| 199 | |
| 200 | Error codes: |
| 201 | || '''''Error''''' || '''''Condition''''' || |
| 202 | || `BADARGS` || One of the required arguments is badly formed or missing || |
| 203 | || `SEARCHFAILED` || Slice or sliver does not exist at this AM || |
| 204 | || `FORBIDDEN` || Credential does not grant permission to the slice or sliver || |
| 205 | || `FORBIDDEN` || Slice has been shutdown by the Clearinghouse || |
| 206 | || `BUSY` || Slice or sliver is temporarily locked, try again later || |
| 207 | || `ERROR` || Internal error || |
| 208 | || `SERVERERROR` || Server error || |
| 209 | || `EXPIRED` || Resources already expired || |
| 210 | || `UNSUPPORTED` || This aggregate does not support partial renewals of this form || |
| 211 | |
| 212 | == Provision Details == |
| 213 | Redeem a reservation, requesting that the listed slivers move from `geni_allocated` to `geni_provisioned`. Only when slivers are provisioned are the resources 'instantiated' and made ready for operational use. Note that at some aggregates and for some resource types, this operation may be a no-op. At other aggregates, this operation starts a long running process (e.g. loading an image on a machine and booting it). Tools should monitor the sliver status (by calling `Status`), looking for an operational state other than `geni_pending_allocation`. Depending on the resource type, that next state may differ. See the advertisement RSpec for the resource type specific operational states and actions. |
| 214 | |
| 215 | As with the `Allocate` method, some aggregates may not support provisioning only some reserved resources. Also as with the `Allocate` method, experimenters may request a sliver expiration time; aggregates may succeed the operation while ignoring the requested expiration time or granting a different expiration time. |
| 216 | |
| 217 | Some resources types allow experimenter access. The `geni_users` option allows specifying login key material to be installed on the resources (e.g. SSH public keys). |
| 218 | |
| 219 | `geni_error`:: |
| 220 | 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 sliver if this operation fails for a given sliver. |
| 221 | |
| 222 | Error codes: |
| 223 | || '''''Error''''' || '''''Condition''''' || |
| 224 | || `BADARGS` || One of the required arguments is badly formed or missing || |
| 225 | || `SEARCHFAILED` || Slice or sliver does not exist at this AM || |
| 226 | || `FORBIDDEN` || Credential does not grant permission to the slice or sliver || |
| 227 | || `BUSY` || Slice or sliver is temporarily locked, try again later || |
| 228 | || `ERROR` || Internal error || |
| 229 | || `SERVERERROR` || Server error || |
| 230 | || `UNAVAILABLE` || Unavailable (eg server in lockdown) || |
| 231 | || `EXPIRED` || Slivers expired || |
| 232 | || `UNSUPPORTED` || The aggregate does not permit operations on individual slivers in the same slice of this form || |
| 233 | |
| 234 | == Status Details == |
| 235 | Get dynamic status about one or more slivers in a given slice. In contrast to `Describe`, `Status` is used to query dynamic state information about slivers. Aggregates may include detailed configuration information at their own discretion. |
| 236 | |
| 237 | Error codes: |
| 238 | || '''''Error''''' || '''''Condition''''' || |
| 239 | || `BADARGS` || One of the required arguments is badly formed or missing || |
| 240 | || `SEARCHFAILED` || Slice or sliver does not exist at this AM || |
| 241 | || `FORBIDDEN` || Credential does not grant permission to the slice or sliver || |
| 242 | || `BUSY` || Slice or sliver is temporarily locked, try again later || |
| 243 | || `ERROR` || Internal error || |
| 244 | || `SERVERERROR` || Server error || |
| 245 | || `UNAVAILABLE` || Unavailable (eg server in lockdown) || |
| 246 | || `EXPIRED` || Slivers expired || |
| 247 | || `UNSUPPORTED` || The aggregate does not permit operations on individual slivers in the same slice of this form || |
| 248 | |
| 249 | == !PerformOperationalAction Details == |
| 250 | |
| 251 | |
| 252 | As with the `Allocate` method, some aggregates may not support provisioning only some reserved resources. |
| 253 | |
| 254 | `geni_error`:: |
| 255 | 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 sliver if this operation fails for a given sliver. |
| 256 | |
| 257 | Error codes: |
| 258 | || '''''Error''''' || '''''Condition''''' || |
| 259 | || `BADARGS` || One of the required arguments is badly formed or missing (unknown operation or not applicable to sliver in this state) || |
| 260 | || `SEARCHFAILED` || Slice or sliver does not exist at this AM || |
| 261 | || `FORBIDDEN` || Credential does not grant permission to the slice or sliver || |
| 262 | || `BUSY` || Slice or sliver is temporarily locked, try again later || |
| 263 | || `ERROR` || Internal error || |
| 264 | || `SERVERERROR` || Server error || |
| 265 | || `UNAVAILABLE` || Unavailable (eg server in lockdown) || |
| 266 | || `EXPIRED` || Slivers expired || |
| 267 | || `UNSUPPORTED` || The aggregate does not permit operations on individual slivers in the same slice of this form || |
| 268 | || `INPROGRESS` || Requested operation is already in progress || |
| 269 | |
| 270 | == Delete Details == |
| 271 | `Delete` the given slivers, stopping any running resources and freeing the reservation. This method applies to slivers in any state. |
| 272 | |
| 273 | As with the `Allocate` method, some aggregates may not support deleting only some slivers. |
| 274 | |
| 275 | Attempting to delete a previously deleted sliver may result in an error - the aggregate may have forgotten about it entirely. Attempting to delete a slice with no current slivers at this aggregate may return an empty list of slivers, or may return a list of previous slivers that have since been deleted. Details are aggregate specific. |
| 276 | |
| 277 | This operation should generally succeed for a valid sliver, despite the `geni_best_effort` option. However, when `geni_best_effort` is supplied and is false, and an aggregate cannot delete all the named slivers, no slivers are deleted. |
| 278 | |
| 279 | Error codes: |
| 280 | || '''''Error''''' || '''''Condition''''' || |
| 281 | || `BADARGS` || One of the required arguments is badly formed or missing || |
| 282 | || `SEARCHFAILED` || Slice or sliver does not exist at this AM || |
| 283 | || `FORBIDDEN` || Credential does not grant permission to the slice or slivers || |
| 284 | || `BUSY` || Slice or sliver is temporarily locked, try again later || |
| 285 | || `ERROR` || Internal error || |
| 286 | || `SERVERERROR` || Server error || |
| 287 | || `EXPIRED` || Sliver(s) already expired and gone || |
| 288 | |
| 289 | == Shutdown Details == |
| 290 | This operation is for operator use, to stop a misbehaving resource. Once shut down, the slivers are not available for experimenter use. The underlying resources may be returned to the pool of available resources, depending on resource type and aggregate implementation. |
| 291 | |
| 292 | This method returns true, unless resource remain running in the slice after this operation. |
| 293 | |
| 294 | Error codes: |
184 | | || `FORBIDDEN` || Slice has been shutdown by the Clearinghouse || |
185 | | || `BUSY` || Slice is temporarily locked, try again later || |
186 | | || `ERROR` || Internal error || |
187 | | || `SERVERERROR` || Server error || |
188 | | || `EXPIRED` || Resources already expired || |
189 | | |
190 | | == Provision Details == |
191 | | |
192 | | == Status Details == |
193 | | || '''''Error''''' || '''''Condition''''' || |
194 | | || `BADARGS` || One of the required arguments is badly formed or missing || |
195 | | || `SEARCHFAILED` || Slice does not exist at this AM || |
196 | | || `FORBIDDEN` || Credential does not grant permission to the slice || |
197 | | || `BUSY` || Slice is temporarily locked, try again later || |
198 | | || `ERROR` || Internal error || |
199 | | || `SERVERERROR` || Server error || |
200 | | || `UNAVAILABLE` || Unavailable (eg server in lockdown) || |
201 | | || `EXPIRED` || Slivers expired || |
202 | | |
203 | | |
204 | | `geni_error`:: |
205 | | 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}}}. |
206 | | |
207 | | == !PerformOperationalAction Details == |
208 | | |
209 | | == Delete Details == |
210 | | || '''''Error''''' || '''''Condition''''' || |
211 | | || `BADARGS` || One of the required arguments is badly formed or missing || |
212 | | || `SEARCHFAILED` || Slice does not exist at this AM || |
213 | | || `FORBIDDEN` || Credential does not grant permission to the slice || |
214 | | || `BUSY` || Slice is temporarily locked, try again later || |
215 | | || `ERROR` || Internal error || |
216 | | || `SERVERERROR` || Server error || |
217 | | || `EXPIRED` || Sliver(s) already expired and gone || |
218 | | |
219 | | |
220 | | == Shutdown Details == |
221 | | || '''''Error''''' || '''''Condition''''' || |
222 | | || `BADARGS` || One of the required arguments is badly formed or missing || |
223 | | || `SEARCHFAILED` || Slice does not exist at this AM || |
224 | | || `FORBIDDEN` || Credential does not grant permission to the slice || |