1. Add Provider
Register a new resource provider (e.g. OpenStack) into reservation system.
Request parameters
| Name | Type | Description |
|---|---|---|
| provider-type | Enumeration | Name of the resource provider |
| endpoint | URI | Target URL endpoint for the resource provider |
| username | String | User name |
| password | String | Password |
| region | String | Specified region for the provider |
| tenant.id | String | Id of the tenant |
| tenant.name | String | Name of the tenant |
Response parameters
| Name | Type | Description |
|---|---|---|
| provider-id | String | Id of the new resource provider |
| result | Enumeration | Result info |
Example request
{
"provider-type": "openstack",
"endpoint": "http://10.0.2.15:5000/v2.0/tokens",
"username": "promise_user",
"password": "******",
"tenant": {
"name": "promise"
}
}
Example response
{
"provider-id": "f25ed9cb-de57-43d5-9b4a-a389a1397302",
"result": "ok"
}
2. Create Reservation
Make a request to the reservation system to reserve resources.
Request parameters
| Name | Type | Description |
|---|---|---|
| zone | String | Id to an availability zone |
| start | DateTime | Timestamp when the consumption of reserved resources can begin |
| end | DateTime | Timestamp when the consumption of reserved resources should end |
| capacity.cores | int16 | Amount of cores to be reserved |
| capacity.ram | int32 | Amount of RAM to be reserved |
| capacity.instances | int16 | Amount of instances to be reserved |
| capacity.addresses | int32 | Amount of public IP addresses to be reserved |
| elements | ResourceElement | List of pre-existing resource elements to be reserved |
Response parameters
| Name | Type | Description |
|---|---|---|
| reservation-id | String | Id of the reservation |
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"capacity": {
"cores": "5",
"ram": "25600",
"addresses": "3",
"instances": "3"
},
"start": "2016-02-02T00:00:00Z",
"end": "2016-02-03T00:00:00Z"
}
Example response
{
"reservation-id": "269b2944-9efc-41e0-b067-6898221e8619",
"result": "ok",
"message": "reservation request accepted"
}
3. Update Reservation
Update reservation details for an existing reservation.
Request parameters
| Name | Type | Description |
|---|---|---|
| reservation-id | String | Id of the reservation to be updated |
| zone | String | Id to an availability zone |
| start | DateTime | Updated timestamp when the consumption of reserved resources can begin |
| end | DateTime | Updated timestamp when the consumption of reserved resources should end |
| capacity.cores | int16 | Updated amount of cores to be reserved |
| capacity.ram | int32 | Updated amount of RAM to be reserved |
| capacity.instances | int16 | Updated amount of instances to be reserved |
| capacity.addresses | int32 | Updated amount of public IP addresses to be reserved |
| elements | ResourceElement | Updated list of pre-existing resource elements to be reserved |
Response parameters
| Name | Type | Description |
|---|---|---|
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"reservation-id": "269b2944-9efv-41e0-b067-6898221e8619",
"capacity": {
"cores": "1",
"ram": "5120",
"addresses": "1",
"instances": "1"
}
}
Example response
{
"result": "ok",
"message": "reservation update successful"
}
4. Cancel Reservation
Cancel the reservation.
Request parameters
| Name | Type | Description |
|---|---|---|
| reservation-id | String | Id of the reservation to be canceled |
Response parameters
| Name | Type | Description |
|---|---|---|
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"reservation-id": "269b2944-9efv-41e0-b067-6898221e8619" }
Example response
{
"result": "ok",
"message": "reservation canceled"
}
5. Query Reservation
Query the reservation system to return matching reservation(s).
Request parameters
| Name | Type | Description |
|---|---|---|
| zone | String | Id to an availability zone |
| show-utilization | Boolean | Show capacity utilization |
| without | ResourceCollection | Excludes specified collection identifiers from the result |
| elements.some | ResourceElement | Query for ResourceCollection(s) that contain some or more of these element(s) |
| elements.every | ResourceElement | Query for ResourceCollection(s) that contain all of these element(s) |
| window.start | DateTime | Matches entries that are within the specified start/end window |
| window.end | DateTime | |
| window.scope | Enumeration | Matches entries that start {and/or} end within the time window |
Response parameters
| Name | Type | Description |
|---|---|---|
| reservations | ResourceReservation | List of matching reservations |
| utilization | CapacityUtilization | Capacity utilization over time |
Example request
{
"show-utilization": false,
"window": {
"start": "2016-02-01T00:00:00Z",
"end": "2016-02-04T00:00:00Z"
}
}
Example response
{
"reservations": [
"269b2944-9efv-41e0-b067-6898221e8619"
],
"utilization": []
}
6. Create Instance
Create an instance of specified resource(s) utilizing capacity from the pool.
Request parameters
| Name | Type | Description |
|---|---|---|
| provider-id | String | Id of the resource provider |
| reservation-id | String | Id of the resource reservation |
| name | String | Name of the instance |
| image | String | Id of the image |
| networks | Uuid | List of network uuids |
Response parameters
| Name | Type | Description |
|---|---|---|
| instance-id | String | Id of the instance |
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"provider-id": "f25ed9cb-de57-43d5-9b4a-a389a1397302", "name": "vm1", "image": "ddffc6f5-5c86-4126-b0fb-2c71678633f8", "flavor": "91bfdf57-863b-4b73-9d93-fc311894b902" }
Example response
{
"instance-id": "82572779-896b-493f-92f6-a63008868250",
"result": "ok",
"message": "created-instance request accepted"
}
7. Destroy Instance
Destroy an instance of resource utilization and release it back to the pool.
Request parameters
| Name | Type | Description |
|---|---|---|
| instance-id | String | Id of the instance to be destroyed |
Response parameters
| Name | Type | Description |
|---|---|---|
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"instance-id": "82572779-896b-493f-92f6-a63008868250" }
Example response
{
"result": "ok",
"message": "instance destroyed and resource released back to pool"
}
8. Decrease Capacity
Decrease total capacity for the reservation system for a given time window.
Request parameters
| Name | Type | Description |
|---|---|---|
| source | String | Id of the resource container |
| start | DateTime | start/end defines the time window when total capacity is decreased |
| end | DateTime | |
| capacity.cores | int16 | Decreased amount of cores |
| capacity.ram | int32 | Decreased amount of RAM |
| capacity.instances | int16 | Decreased amount of instances |
| capacity.addresses | int32 | Decreased amount of public IP addresses |
Response parameters
| Name | Type | Description |
|---|---|---|
| pool-id | String | Id of the resource pool |
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"source": "ResourcePool:4085f0da-8030-4252-a0ff-c6f93870eb5f",
"capacity": {
"cores": "3",
"ram": "5120",
"addresses": "1"
}
}
Example response
{
"pool-id": "c63b2a41-bcc6-42f6-8254-89d633e1bd0b",
"result": "ok",
"message": "capacity decrease successful"
}
9. Increase Capacity
Increase total capacity for the reservation system for a given time window.
Request parameters
| Name | Type | Description |
|---|---|---|
| source | String | Id of the resource container |
| start | DateTime | start/end defines the time window when total capacity is increased |
| end | DateTime | |
| capacity.cores | int16 | Increased amount of cores |
| capacity.ram | int32 | Increased amount of RAM |
| capacity.instances | int16 | Increased amount of instances |
| capacity.addresses | int32 | Increased amount of public IP addresses |
Response parameters
| Name | Type | Description |
|---|---|---|
| pool-id | String | Id of the resource pool |
| result | Enumeration | Result info |
| message | String | Output message |
Example request
{
"source": "ResourceProvider:f6f13fe3-0126-4c6d-a84f-15f1ab685c4f",
"capacity": {
"cores": "20",
"ram": "51200",
"instances": "10",
"addresses": "10"
}
}
Example response
{
"pool-id": "279217a4-7461-4176-bf9d-66770574ca6a",
"result": "ok",
"message": "capacity increase successful"
}
10. Query Capacity
Query for capacity information about a specified resource collection.
Request parameters
| Name | Type | Description |
|---|---|---|
| capacity | Enumeration | Return total or reserved or available or usage capacity information |
| zone | String | Id to an availability zone |
| show-utilization | Boolean | Show capacity utilization |
| without | ResourceCollection | Excludes specified collection identifiers from the result |
| elements.some | ResourceElement | Query for ResourceCollection(s) that contain some or more of these element(s) |
| elements.every | ResourceElement | Query for ResourceCollection(s) that contain all of these element(s) |
| window.start | DateTime | Matches entries that are within the specified start/end window |
| window.end | DateTime | |
| window.scope | Enumeration | Matches entries that start {and/or} end within the time window" |
Response parameters
| Name | Type | Description |
|---|---|---|
| collections | ResourceCollection | List of matching collections |
| utilization | CapacityUtilization | Capacity utilization over time |
Example request
{
"show-utilization": false }
Example response
{
"collections": [
"ResourcePool:279217a4-7461-4176-bf9d-66770574ca6a"
],
"utilization": []
}