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": []
  }