summaryrefslogtreecommitdiffstats
path: root/docs/requirements
diff options
context:
space:
mode:
Diffstat (limited to 'docs/requirements')
-rw-r--r--docs/requirements/NB_interface.rst1061
-rw-r--r--docs/requirements/annex1.rst37
-rw-r--r--docs/requirements/architecture.rst258
-rw-r--r--docs/requirements/gap_analysis.rst99
-rw-r--r--docs/requirements/glossary.rst73
-rw-r--r--docs/requirements/images/LICENSE14
-rwxr-xr-xdocs/requirements/images/computeflavor.pngbin105698 -> 0 bytes
-rw-r--r--docs/requirements/images/figure1.pngbin32278 -> 0 bytes
-rwxr-xr-xdocs/requirements/images/figure2.pngbin149390 -> 0 bytes
-rwxr-xr-xdocs/requirements/images/figure3.pngbin38065 -> 0 bytes
-rwxr-xr-xdocs/requirements/images/figure4.pngbin218419 -> 0 bytes
-rwxr-xr-xdocs/requirements/images/figure5.pngbin38402 -> 0 bytes
-rw-r--r--docs/requirements/images/figure5_new.pngbin69226 -> 0 bytes
-rwxr-xr-xdocs/requirements/images/figure6.pngbin401171 -> 0 bytes
-rw-r--r--docs/requirements/images/figure6_new.pngbin129286 -> 0 bytes
-rw-r--r--docs/requirements/images/figure7_new.pngbin172805 -> 0 bytes
-rw-r--r--docs/requirements/impl_architecture.rst313
-rw-r--r--docs/requirements/index.rst52
-rw-r--r--docs/requirements/intro.rst39
-rw-r--r--docs/requirements/references.rst25
-rw-r--r--docs/requirements/revision.rst43
-rw-r--r--docs/requirements/schemas.rst658
-rw-r--r--docs/requirements/summary.rst27
-rw-r--r--docs/requirements/supported_apis.rst608
-rw-r--r--docs/requirements/usecase.rst121
25 files changed, 0 insertions, 3428 deletions
diff --git a/docs/requirements/NB_interface.rst b/docs/requirements/NB_interface.rst
deleted file mode 100644
index 8dba601..0000000
--- a/docs/requirements/NB_interface.rst
+++ /dev/null
@@ -1,1061 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-.. _northbound_API:
-
-Detailed northbound interface specification
-===========================================
-
-.. Note::
- This is Work in Progress.
-
-ETSI NFV IFA Information Models
--------------------------------
-
-Compute Flavor
-^^^^^^^^^^^^^^
-
-A compute flavor includes information about number of virtual CPUs, size of
-virtual memory, size of virtual storage, and virtual network interfaces
-[NFVIFA005]_.
-
-.. figure:: images/computeflavor.png
- :name: computeflavor
- :width: 90%
-
-Virtualised Compute Resources
------------------------------
-
-Compute Capacity Management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Subscribe Compute Capacity Change Event
-"""""""""""""""""""""""""""""""""""""""
-
-Subscription from Consumer to VIM to be notified about compute capacity changes
-
-.. http:post:: /capacity/compute/subscribe
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /capacity/compute/subscribe HTTP/1.1
- Accept: application/json
-
- {
- "zoneId": "12345",
- "computeResourceTypeId": "vcInstances",
- "threshold": {
- "thresholdType" : "absoluteValue",
- "threshold": {
- "capacity_info": "available",
- "condition": "lt",
- "value": 5
- }
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "created": "2015-09-21T00:00:00Z",
- "capacityChangeSubscriptionId": "abcdef-ghijkl-123456789"
- }
-
- :statuscode 400: computeResourceTypeId is missing
-
-Query Compute Capacity for a defined resource type
-""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Request to find out about available, reserved, total and allocated compute
-capacity.
-
-.. http:get:: /capacity/compute/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /capacity/compute/query HTTP/1.1
- Accept: application/json
-
- {
- "zoneId": "12345",
- "computeResourceTypeId": "vcInstances",
- "timePeriod": {
- "startTime": "2015-09-21T00:00:00Z",
- "stopTime": "2015-09-21T00:05:30Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "zoneId": "12345",
- "lastUpdate": "2015-09-21T00:03:20Z",
- "capacityInformation": {
- "available": 4,
- "reserved": 17,
- "total": 50,
- "allocated": 29
- }
- }
-
- :query limit: Default is 10.
- :statuscode 404: resource zone unknown
-
-
-Query Compute Capacity with required attributes
-"""""""""""""""""""""""""""""""""""""""""""""""
-Request to find out available compute capacity with given characteristics
-
-.. http:get:: /capacity/compute/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /capacity/compute/query HTTP/1.1
- Accept: application/json
-
- {
- "zoneId": "12345",
- "resourceCriteria": {
- "virtualCPU": {
- "cpuArchitecture": "x86",
- "numVirtualCpu": 8
- }
- },
- "attributeSelector": "available",
- "timePeriod": {
- "startTime": "2015-09-21T00:00:00Z",
- "stopTime": "2015-09-21T00:05:30Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "zoneId": "12345",
- "lastUpdate": "2015-09-21T00:03:20Z",
- "capacityInformation": {
- "available": 50
- }
- }
-
- :query limit: Default is 10.
- :statuscode 404: resource zone unknown
-
-Notify Compute Capacity Change Event
-""""""""""""""""""""""""""""""""""""
-
-Notification about compute capacity changes
-
-.. http:post:: /capacity/compute/notification
- :noindex:
-
- **Example notification**:
-
- .. sourcecode:: http
-
- Content-Type: application/json
-
- {
- "zoneId": "12345",
- "notificationId": "zyxwvu-tsrqpo-987654321",
- "capacityChangeTime": "2015-09-21T00:03:20Z",
- "resourceDescriptor": {
- "computeResourceTypeId": "vcInstances"
- },
- "capacityInformation": {
- "available": 4,
- "reserved": 17,
- "total": 50,
- "allocated": 29
- }
- }
-
-Compute Resource Reservation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Create Compute Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request the reservation of compute resource capacity
-
-.. http:post:: /reservation/compute/create
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/compute/create HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-09-21T01:00:00Z",
- "computePoolReservation": {
- "numCpuCores": 20,
- "numVcInstances": 5,
- "virtualMemSize": 10
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-21T01:00:00Z",
- "reservationStatus": "initialized",
- "reservationId": "xxxx-yyyy-zzzz",
- "computePoolReserved": {
- "numCpuCores": 20,
- "numVcInstances": 5,
- "virtualMemSize": 10,
- "zoneId": "23456"
- }
- }
- }
-
-or virtualization containers
-
-.. http:post:: reservation/compute/create
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/compute/create HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-10-05T15:00:00Z",
- "virtualizationContainerReservation": [
- {
- "containerId": "myContainer",
- "containerFlavor": {
- "flavorId": "myFlavor",
- "virtualCpu": {
- "numVirtualCpu": 2,
- "cpuArchitecture": "x86"
- },
- "virtualMemory": {
- "numaEnabled": "False",
- "virtualMemSize": 16
- },
- "storageAttributes": {
- "typeOfStorage": "volume",
- "sizeOfStorage": 16
- }
- }
- }
- ]
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-10-05T15:00:00Z",
- "reservationId": "aaaa-bbbb-cccc",
- "reservationStatus": "initialized",
- "virtualizationContainerReserved": [
- {
- "containerId": "myContainer",
- "flavorId": "myFlavor",
- "virtualCpu": {
- "numVirtualCpu": 2,
- "cpuArchitecture": "x86"
- },
- "virtualMemory": {
- "numaEnabled": "False",
- "virtualMemSize": 16
- },
- "virtualDisks": {
- "storageId": "myStorage",
- "flavourId": "myStorageFlavour",
- "typeOfStorage": "volume",
- "sizeOfStorage": 16,
- "operationalState": "enabled"
- }
- }
- ]
- }
- }
-
-
-
-Query Compute Resource Reservation
-""""""""""""""""""""""""""""""""""
-
-Request to find out about reserved compute resources that the consumer has
-access to.
-
-.. http:get:: /reservation/compute/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /reservation/compute/query HTTP/1.1
- Accept: application/json
-
- {
- "queryReservationFilter": [
- {
- "reservationId": "xxxx-yyyy-zzzz"
- }
- ]
-
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "queryResult":
- {
- "startTime": "2015-09-21T01:00:00Z",
- "reservationStatus": "active",
- "reservationId": "xxxx-yyyy-zzzz",
- "computePoolReserved":
- {
- "numCpuCores": 20,
- "numVcInstances": 5,
- "virtualMemSize": 10,
- "zoneId": "23456"
- }
- }
- }
-
- :statuscode 404: reservation id unknown
-
-Update Compute Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request to update compute resource reservation
-
-.. http:post:: /reservation/compute/update
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/compute/update HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-09-14T16:00:00Z",
- "reservationId": "xxxx-yyyy-zzzz"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-14TT16:00:00Z",
- "reservationStatus": "active",
- "reservationId": "xxxx-yyyy-zzzz",
- "computePoolReserved": {
- "numCpuCores": 20,
- "numVcInstances": 5,
- "virtualMemSize": 10,
- "zoneId": "23456"
- }
- }
- }
-
-Terminate Compute Resource Reservation
-""""""""""""""""""""""""""""""""""""""
-
-Request to terminate a compute resource reservation
-
-.. http:delete:: /reservation/compute/(reservation_id)
- :noindex:
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200
- Content-Type: application/json
-
- {
- "reservationId": "xxxx-yyyy-zzzz",
- }
-
-
-Subscribe Resource Reservation Change Event
-"""""""""""""""""""""""""""""""""""""""""""
-
-Subscription from Consumer to VIM to be notified about changes
-related to a reservation or to the resources associated to it.
-
-.. http:post:: /reservation/subscribe
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/subscribe HTTP/1.1
- Accept: application/json
-
- {
- "inputFilter": [
- {
- "reservationId": "xxxx-yyyy-zzzz",
- }
- ]
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "created": "2015-09-21T00:00:00Z",
- "reservationChangeSubscriptionId": "abcdef-ghijkl-123456789"
- }
-
- :statuscode 400: inputFilter is missing
-
-
-Notify Resource Reservation Change Event
-""""""""""""""""""""""""""""""""""""""""
-
-Notification about changes in a compute resource reservation
-
-.. http:post:: /capacity/compute/notification
- :noindex:
-
- **Example notification**:
-
- .. sourcecode:: http
-
- Content-Type: application/json
-
- {
- "changeId": "aaaaaa-btgxxx-987654321",
- "reservationId": "xxxx-yyyy-zzzz",
- "vimId": "vim-CX-03"
- "changeType": "Reservation time change"
- "changedReservationData": {
- "endTime": "2015-10-14TT16:00:00Z",
- }
- }
-
-
-
-Virtualised Network Resources
------------------------------
-
-Network Capacity Management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Subscribe Network Capacity Change Event
-"""""""""""""""""""""""""""""""""""""""
-
-Susbcription from Consumer to VIM to be notified about network capacity changes
-
-.. http:post:: /capacity/network/subscribe
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /capacity/network/subscribe HTTP/1.1
- Accept: application/json
-
- {
- "networkResourceTypeId": "publicIps",
- "threshold": {
- "thresholdType": "absoluteValue",
- "threshold": {
- "capacity_info": "available",
- "condition": "lt",
- "value": 5
- }
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "created": "2015-09-28T00:00:00Z",
- "capacityChangeSubscriptionId": "bcdefg-hijklm-234567890"
- }
-
-Query Network Capacity
-""""""""""""""""""""""
-
-Request to find out about available, reserved, total and allocated network
-capacity.
-
-.. http:get:: /capacity/network/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /capacity/network/query HTTP/1.1
- Accept: application/json
-
- {
- "networkResourceTypeId": "publicIps",
- "timePeriod": {
- "startTime": "2015-09-28T00:00:00Z",
- "stopTime": "2015-09-28T00:05:30Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "lastUpdate": "2015-09-28T00:02:10Z",
- "capacityInformation": {
- "available": 4,
- "reserved": 10,
- "total": 64,
- "allocated": 50
- }
- }
-
-Notify Network Capacity Change Event
-""""""""""""""""""""""""""""""""""""
-
-Notification about network capacity changes
-
-.. http:post:: /capacity/network/notification
- :noindex:
-
- **Example notification**:
-
- .. sourcecode:: http
-
- Content-Type: application/json
-
- {
- "notificationId": "yxwvut-srqpon-876543210",
- "capacityChangeTime": "2015-09-28T00:02:10Z",
- "resourceDescriptor": {
- "networkResourceTypeId": "publicIps"
- },
- "capacityInformation": {
- "available": 4,
- "reserved": 10,
- "total": 64,
- "allocated": 50
- }
- }
-
-Network Resource Reservation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Create Network Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request the reservation of network resource capacity and/or virtual networks,
-network ports
-
-.. http:post:: /reservation/network/create
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/network/create HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-09-28T01:00:00Z",
- "networkReservation": {
- "numPublicIps": 2
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-28T01:00:00Z",
- "reservationStatus": "initialized",
- "reservationId": "wwww-xxxx-yyyy",
- "publicIps": [
- "10.2.91.60",
- "10.2.91.61"
- ]
- }
- }
-
-Query Network Resource Reservation
-""""""""""""""""""""""""""""""""""
-
-Request to find out about reserved network resources that the consumer has
-access to.
-
-.. http:get:: /reservation/network/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /reservation/network/query HTTP/1.1
- Accept: application/json
-
- {
- "queryReservationFilter": [
- {
- "reservationId": "wwww-xxxx-yyyy"
- }
- ]
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "queryResult": {
- "startTime": "2015-09-28T01:00:00Z",
- "reservationStatus": "active",
- "reservationId": "wwww-xxxx-yyyy",
- "publicIps": [
- "10.2.91.60",
- "10.2.91.61"
- ]
- }
- }
-
-Update Network Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request to update network resource reservation
-
-.. http:post:: /reservation/network/update
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/network/update HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-09-21T16:00:00Z",
- "reservationId": "wwww-xxxx-yyyy"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-21T16:00:00Z",
- "reservationStatus": "active",
- "reservationId": "wwww-xxxx-yyyy",
- "publicIps": [
- "10.2.91.60",
- "10.2.91.61"
- ]
- }
- }
-
-Terminate Network Resource Reservation
-""""""""""""""""""""""""""""""""""""""
-
-Request to terminate a network resource reservation
-
-.. http:delete:: /reservation/network/(reservation_id)
- :noindex:
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200
- Content-Type: application/json
-
- {
- "reservationId": "xxxx-yyyy-zzzz",
- }
-
-Virtualised Storage Resources
------------------------------
-
-Storage Capacity Management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Subscribe Storage Capacity Change Event
-"""""""""""""""""""""""""""""""""""""""
-
-Subscription from Consumer to VIM to be notified about storage capacity changes
-
-.. http:post:: /capacity/storage/subscribe
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /capacity/storage/subscribe HTTP/1.1
- Accept: application/json
-
- {
- "storageResourceTypeId": "volumes",
- "threshold": {
- "thresholdType": "absoluteValue",
- "threshold": {
- "capacity_info": "available",
- "condition": "lt",
- "value": 3
- }
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "created": "2015-09-28T12:00:00Z",
- "capacityChangeSubscriptionId": "cdefgh-ijklmn-345678901"
- }
-
-Query Storage Capacity for a defined resource type
-""""""""""""""""""""""""""""""""""""""""""""""""""
-
-Request to find out about available, reserved, total and allocated storage
-capacity.
-
-.. http:get:: /capacity/storage/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /capacity/storage/query HTTP/1.1
- Accept: application/json
-
- {
- "storageResourceTypeId": "volumes",
- "timePeriod": {
- "startTime": "2015-09-28T12:00:00Z",
- "stopTime": "2015-09-28T12:04:45Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "lastUpdate": "2015-09-28T12:01:35Z",
- "capacityInformation": {
- "available": 2,
- "reserved": 4,
- "total": 10,
- "allocated": 4
- }
- }
-
-Query Storage Capacity with required attributes
-"""""""""""""""""""""""""""""""""""""""""""""""
-
-Request to find out available capacity.
-
-.. http:get:: /capacity/storage/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /capacity/storage/query HTTP/1.1
- Accept: application/json
-
- {
- "resourceCriteria": {
- "typeOfStorage" : "volume",
- "sizeOfStorage" : 200,
- "rdmaSupported" : "True",
- },
- "attributeSelector": "available",
- "timePeriod": {
- "startTime": "2015-09-28T12:00:00Z",
- "stopTime": "2015-09-28T12:04:45Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "lastUpdate": "2015-09-28T12:01:35Z",
- "capacityInformation": {
- "available": 2
- }
- }
-
-Notify Storage Capacity Change Event
-""""""""""""""""""""""""""""""""""""
-
-Notification about storage capacity changes
-
-.. http:post:: /capacity/storage/notification
- :noindex:
-
- **Example notification**:
-
- .. sourcecode:: http
-
- Content-Type: application/json
-
- {
- "notificationId": "xwvuts-rqponm-765432109",
- "capacityChangeTime": "2015-09-28T12:01:35Z",
- "resourceDescriptor": {
- "storageResourceTypeId": "volumes"
- },
- "capacityInformation": {
- "available": 2,
- "reserved": 4,
- "total": 10,
- "allocated": 4
- }
- }
-
-Storage Resource Reservation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Create Storage Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request the reservation of storage resource capacity
-
-.. http:post:: /reservation/storage/create
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/storage/create HTTP/1.1
- Accept: application/json
-
- {
- "startTime": "2015-09-28T13:00:00Z",
- "storagePoolReservation": {
- "storageSize": 10,
- "numSnapshots": 3,
- "numVolumes": 2
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-28T13:00:00Z",
- "reservationStatus": "initialized",
- "reservationId": "vvvv-wwww-xxxx",
- "storagePoolReserved": {
- "storageSize": 10,
- "numSnapshots": 3,
- "numVolumes": 2
- }
- }
- }
-
-Query Storage Resource Reservation
-""""""""""""""""""""""""""""""""""
-
-Request to find out about reserved storage resources that the consumer has
-access to.
-
-.. http:get:: /reservation/storage/query
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- GET /reservation/storage/query HTTP/1.1
- Accept: application/json
-
- {
- "queryReservationFilter": [
- {
- "reservationId": "vvvv-wwww-xxxx"
- }
- ]
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "queryResult": {
- "startTime": "2015-09-28T13:00:00Z",
- "reservationStatus": "active",
- "reservationId": "vvvv-wwww-xxxx",
- "storagePoolReserved": {
- "storageSize": 10,
- "numSnapshots": 3,
- "numVolumes": 2
- }
- }
- }
-
-Update Storage Resource Reservation
-"""""""""""""""""""""""""""""""""""
-
-Request to update storage resource reservation
-
-.. http:post:: /reservation/storage/update
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /reservation/storage/update HTTP/1.1
- Accept: application/json
-
-
- {
- "startTime": "2015-09-20T23:00:00Z",
- "reservationId": "vvvv-wwww-xxxx"
-
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "reservationData": {
- "startTime": "2015-09-20T23:00:00Z",
- "reservationStatus": "active",
- "reservationId": "vvvv-wwww-xxxx",
- "storagePoolReserved": {
- "storageSize": 10,
- "numSnapshots": 3,
- "numVolumes": 2
- }
- }
- }
-
-Terminate Storage Resource Reservation
-""""""""""""""""""""""""""""""""""""""
-
-Request to terminate a storage resource reservation
-
-.. http:delete:: /reservation/storage/(reservation_id)
- :noindex:
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200
- Content-Type: application/json
-
- {
- "reservationId": "xxxx-yyyy-zzzz",
- }
diff --git a/docs/requirements/annex1.rst b/docs/requirements/annex1.rst
deleted file mode 100644
index 65a5f22..0000000
--- a/docs/requirements/annex1.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-.. _uc-brahmaputra:
-
-ANNEX A: Use case for OPNFV Brahmaputra
-=======================================
-
-A basic resource reservation use case to be realized for OPNFV B-release may
-look as follows:
-
-* Step 0: Shim-layer is monitoring/querying available capacity at NFVI
-
- * Step 0a: Cloud operator creates a new OpenStack tenant user and updates
- quota values for this user
-
- * Step 0b: The tenant user is creating and instantiating a simple VNF
- (e.g. 1 network, 2 VMs)
-
- * Step 0c: OpenStack is notifying shim-layer about capacity change for
- this new tenant user
-
- * Step 0d: Cloud operator can visualize the changes using the GUI
-
-* Step 1: Consumer(NFVO) is sending a reservation request for future use to
- shim-layer
-
-* Step 2: Shim-layer is checking for available capacity at the given time
- window
-
-* Step 3: Shim-layer is responding with reservation identifier
-
-* Step 4 (optional): Consumer(NFVO) is sending an update reservation request
- to shim-layer (startTime set to now) -> continue with Steps 2 and 3.
-
-* Step 5: Consumer(VNFM) is requesting the allocation of virtualised resources
- using the reservation identifier in Step 3
diff --git a/docs/requirements/architecture.rst b/docs/requirements/architecture.rst
deleted file mode 100644
index 3eb20d3..0000000
--- a/docs/requirements/architecture.rst
+++ /dev/null
@@ -1,258 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-============================================
-High level architecture and general features
-============================================
-
-Architecture Overview
-=====================
-
-.. figure:: images/figure1.png
- :name: figure1
- :width: 90%
-
- Resource Reservation Architecture
-
-:numref:`figure1` shows the high level architecture for the resource reservation
-use cases. Reserved resources are guaranteed for a given user/client for the
-period expressed by start and end time. User/client represents the requestor
-and the consequent consumer of the reserved resources and correspond to the
-NFVO or VNFM in ETSI NFV terminology.
-
-Note: in this document only reservation requests from NFVO are considered.
-
-General Features
-================
-
-This section provides a list of features that need to be developed in the
-Promise project.
-
-* Resource capacity management
-
- * Discovery of available resource capacity in resource providers
- * Monitoring of available resource capacity in resource providers
- * Update available resource capacity as a result of new or expired
- reservations, addition/removal of resources. Note: this is a VIM internal
- function, not an operation in the VIM northbound interface.
-
-* Resource reservation
-
- * Set start time and end time for allocation
- * Increase/decrease reserved resource's capacity
- * Update resource reservations, e.g. add/remove reserved resources
- * Terminate an allocated resource due to the end time of a reservation
-
-* VIM northbound interfaces
-
- * Receive/Reply resource reservation requests
- * Receive/Reply resource capacity management requests
- * Receive/Reply resource allocation requests for reserved resources when
- start time arrives
- * Subscribe/Notify resource reservation event
-
- * Notify reservation error or process completion prior to reservation
- start
- * Notify remaining time until termination of a resource due to the end
- time of a reservation
- * Notify termination of a resource due to the end time of a reservation
-
- * Receive/Reply queries on available resource capacity
- * Subscribe/Notify changes in available resource capacity
-
-High level northbound interface specification
-=============================================
-
-Resource Capacity Management
-----------------------------
-
-.. figure:: images/figure2.png
- :name: figure2
- :width: 90%
-
- Resource capacity management message flow: notification of capacity change
-
-:numref:`figure2` shows a high level flow for a use case of resource capacity
-management. In this example, the VIM notifies the NFVO of capacity change after
-having received an event regarding a change in capacity (e.g. a fault
-notification) from the NFVI. The NFVO can also retrieve detailed capacity
-information using the Query Capacity Request interface operation.
-
-.. figure:: images/figure3.png
- :name: figure3
- :width: 90%
-
- Resource capacity management message flow: query of capacity density
-
-:numref:`figure3` shows a high level flow for another use case of resource
-capacity management. In this example, the NFVO queries the VIM about the actual
-capacity to instantiate a certain resource according to a certain template, for
-example a VM according to a certain flavor. In this case the VIM responds with
-the number of VMs that could be instantiated according to that flavor with the
-currently available capacity.
-
-Resource Reservation
---------------------
-
-.. figure:: images/figure4.png
- :name: figure4
- :width: 90%
-
- Resource reservation flow
-
-:numref:`figure4` shows a high level flow for a use case of resource
-reservation. The main steps are:
-
-* The NFVO sends a resource reservation request to the VIM using the Create
- Resource Reservation Request interface operation.
-* The NFVO gets a reservation identifier reservation associated with this
- request in the reply message
-* Using the reservation identifier reservation, the NFVO can
- query/update/terminate a resource reservation using the corresponding
- interface operations
-* The NFVO is notified that the resource reservation is terminated due to the
- end time of the reservation
-
-
-Information elements
-====================
-
-Resource Capacity Management
-----------------------------
-
-Notify Capacity Change Event
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The notification change message shall include the following information elements:
-
-============================ ========== =====================================
-Name Type Description
-============================ ========== =====================================
-Notification Identifier Identifier issued by the VIM for the
- capacity change event notification
-Zone Identifier Identifier of the zone where capacity
- has changed
-Used/Reserved/Total Capacity List Used, reserved and total capacity
- information regarding the resource
- items subscribed for notification for
- which capacity change event occurred
-============================ ========== =====================================
-
-Query Resource Capacity Request
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The capacity management query request message shall include the following
-information elements:
-
-========== ========== ======================================================
-Name Type Description
-========== ========== ======================================================
-Zone Identifier Identifier of the zone where capacity is requested
-Attributes List Attributes of resource items to be notified regarding
- capacity change events
-Resources List Identifiers of existing resource items to be queried
- regarding capacity info (such as images, flavors,
- virtual containers, networks, physical machines, etc.)
-========== ========== ======================================================
-
-The capacity management query request message may also include the following
-information element:
-
-====== ========== ==========================================================
-Name Type Description
-====== ========== ==========================================================
-Flavor Identifier Identifier that is passed in the request to obtain
- information of the number of virtual resources that can be
- instantiated according to this flavor with the available
- capacity
-====== ========== ==========================================================
-
-Query Resource Capacity Reply
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The capacity management query reply message shall include the following
-information elements:
-
-============================ ========== =====================================
-Name Type Description
-============================ ========== =====================================
-Zone Identifier Identifier of the zone where capacity
- is requested
-Used/Reserved/Total Capacity List Used, reserved and total capacity
- information regarding each of the
- resource items requested to check for
- capacity
-============================ ========== =====================================
-
-The detailed specification of the northbound interface for Capacity Management
-in provided in section 5.1.1.
-
-Resource Reservation
---------------------
-
-Create Resource Reservation Request
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The create resource reservation request message shall include the following
-information elements:
-
-========== ========== =========================================================
-Name Type Description
-========== ========== =========================================================
-Start Timestamp Start time for consumption of the reserved resources
-End Timestamp End time for consumption of the reserved resources
-Expiry Timestamp If not all reserved resources are allocated between start
- time and expiry, the VIM shall release the corresponding
- resources [#expiry]_
-Amount Number Amount of the resources per resource item type (i.e.
- compute/network/storage) that need to be reserved
-Zone Identifier The zone where the resources need(s) to be reserved
-Attributes List Attributes of the resources to be reserved such as DPDK
- support, hypervisor, network link bandwidth, affinity
- rules, etc.
-Resources List Identifiers of existing resource items to be reserved
- (such as images, flavors, virtual containers, networks,
- physical machines, etc.)
-========== ========== =========================================================
-
-.. [#expiry] Expiry is a period around start time within which, the allocation
- process must take place. If allocation process does not start
- within the expiry period, the reservation becomes invalid and VIM
- should release the resources
-
-Create Resource Reservation Reply
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The create resource reservation reply message shall include the following
-information elements:
-
-=========== ========== =======================================================
-Name Type Description
-=========== ========== =======================================================
-Reservation Identifier Identification of the reservation instance. It can be
- used by a consumer to modify the reservation later, and
- to request the allocation of the reserved resources.
-Message Text Output message that provides additional information
- about the create resource reservation request (e.g. may
- be a simple ACK if the request is being background
- processed by the VIM)
-=========== ========== =======================================================
-
-Notify Reservation Event
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The notification reservation event message shall include the following
-information elements:
-
-============ ========== =====================================================
-Name Type Description
-============ ========== =====================================================
-Reservation Identifier Identification of the reservation instance triggering
- the event
-Notification Identifier Identification of the resource event notification
- issued by the VIM
-Message Text Message describing the event
-============ ========== =====================================================
-
-The detailed specification of the northbound interface for Resource Reservation
-is provided in section 5.1.2.
diff --git a/docs/requirements/gap_analysis.rst b/docs/requirements/gap_analysis.rst
deleted file mode 100644
index 9e4ec5c..0000000
--- a/docs/requirements/gap_analysis.rst
+++ /dev/null
@@ -1,99 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-=================================
-Gap analysis in upstream projects
-=================================
-
-This section provides a list of gaps in upstream projects for realizing
-resource reservation and management. The gap analysis work focuses on the
-current OpenStack Blazar project [BLAZAR]_ in this first release.
-
-OpenStack
-=========
-
-Resource reservation for future use
------------------------------------
-
-* Category: Blazar
-* Type: 'missing' (lack of functionality)
-* Description:
-
- * To-be: To reserve a whole set of compute/storage/network resources in the
- future
- * As-is: Blazar currently can do only compute resource reservation by using
- "Shelved VM"
-
-* Related blueprints:
-
- * https://blueprints.launchpad.net/blazar/+spec/basic-volume-plugin
- * https://blueprints.launchpad.net/blazar/+spec/basic-network-plugin
- * It was planned in Blazar to implement volume and network/fixed ip
- reservations
-
-Resource reservation update
----------------------------
-
-* Category: Blazar
-* Type: 'missing' (lack of functionality)
-* Description:
-
- * To-be: Have the possibility of adding/removing resources to an existing
- reservation, e..g in case of NFVI failure
- * As-is: Currently in Blazar, a reservation can only be modified in terms of
- start/end time
-
-* Related blueprints: N/A
-
-Give me an offer
-----------------
-
-* Category: Blazar
-* Type: 'missing' (lack of functionality)
-* Description:
-
- * To-be: To have the possibility of giving a quotation to a requesting user
- and an expiration time. Reserved resources shall be released if they are
- not claimed before this expiration time.
- * As-is: Blazar can already send notification e.g. to inform a given user
- that a reservation is about to expire
-
-* Related blueprints: N/A
-
-StormStack StormForge
----------------------
-
-Stormify
-^^^^^^^^
-* Stormify enables rapid web applications construction
-* Based on Ember.js style Data stores
-* Developed on Node.js using coffeescript/javascript
-* Auto RESTful API generation based on Data Models
-* Development starts with defining Data Models
-* Code hosted at github : http://github.com/stormstack/stormify
-
-StormForge
-^^^^^^^^^^
-* Data Model driven management of Resource Providers
-* Based on Stormify Framework and implemented as per the OPNFV Promise
- requirements
-* Data Models are auto generated and RESTful API code from YANG schema
-* Currently planned key services include Resource Capacity Management Service
- and Resource Reservation Service
-* List of YANG schemas for Promise project is attached in the Appendix
-* Code hosted at github: http://github.com/stormstack/stormforge
-
-Resource Discovery
-^^^^^^^^^^^^^^^^^^
-* Category: StormForge
-* Type: 'planning' (lack of functionality)
-* Description
-
- * To-be: To be able to discover resources in real time from OpenStack
- components. Planning to add OpenStack Project to interface with Promise for
- real time updates on capacity or any failures
- * As-is: Currently, resource capacity is learnt using NB APIs related to
- quota
-
-* Related Blueprints: N/A
-
diff --git a/docs/requirements/glossary.rst b/docs/requirements/glossary.rst
deleted file mode 100644
index 48fd75b..0000000
--- a/docs/requirements/glossary.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-===================
-Definition of terms
-===================
-
-Different SDOs and communities use different terminology related to
-NFV/Cloud/SDN. This list tries to define an OPNFV terminology,
-mapping/translating the OPNFV terms to terminology used in other contexts.
-
-.. glossary::
-
- Administrator
- Administrator of the system, e.g. OAM in Telco context.
-
- Consumer
- User-side Manager; consumer of the interfaces produced by the VIM; VNFM,
- NFVO, or Orchestrator in ETSI NFV [NFV003]_ terminology.
-
- NFV
- Network Function Virtualization
-
- NFVI
- Network Function Virtualization Infrastructure; totality of all hardware
- and software components which build up the environment in which VNFs are
- deployed.
-
- NFVO
- Network Functions Virtualization Orchestrator; functional block that
- manages the Network Service (NS) lifecycle and coordinates the management
- of NS lifecycle, VNF lifecycle (supported by the VNFM) and NFVI resources
- (supported by the VIM) to ensure an optimized allocation of the necessary
- resources and connectivity.
-
- Physical resource
- Actual resources in NFVI; not visible to Consumer.
-
- Resource zone
- A set of NFVI hardware and software resources logically grouped
- according to physical isolation and redundancy capabilities or to
- certain administrative policies for the NFVI [NFVIFA010]_
-
- VIM
- Virtualized Infrastructure Manager; functional block that is responsible
- for controlling and managing the NFVI compute, storage and network
- resources, usually within one operator's Infrastructure Domain, e.g. NFVI
- Point of Presence (NFVI-PoP).
-
- Virtual Machine (VM)
- Virtualized computation environment that behaves very much like a physical
- computer/server.
-
- Virtual network
- Virtual network routes information among the network interfaces of VM
- instances and physical network interfaces, providing the necessary
- connectivity.
-
- Virtual resource
- A Virtual Machine (VM), a virtual network, or virtualized storage; Offered
- resources to "Consumer" as result of infrastructure virtualization;
- visible to Consumer.
-
- Virtual Storage
- Virtualized non-volatile storage allocated to a VM.
-
- VNF
- Virtualized Network Function. Implementation of an Network Function that
- can be deployed on a Network Function Virtualization Infrastructure (NFVI).
-
- VNFM
- Virtualized Network Function Manager; functional block that is responsible
- for the lifecycle management of VNF.
diff --git a/docs/requirements/images/LICENSE b/docs/requirements/images/LICENSE
deleted file mode 100644
index 3b8719c..0000000
--- a/docs/requirements/images/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2015 Open Platform for NFV Project, Inc. and its contributors
-
-Open Platform for NFV Project Documentation Licence
-===================================================
-Any documentation developed by the "Open Platform for NFV Project"
-is licensed under a Creative Commons Attribution 4.0 International License.
-You should have received a copy of the license along with this. If not,
-see <http://creativecommons.org/licenses/by/4.0/>.
-
-Unless required by applicable law or agreed to in writing, documentation
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/docs/requirements/images/computeflavor.png b/docs/requirements/images/computeflavor.png
deleted file mode 100755
index 3ea3dba..0000000
--- a/docs/requirements/images/computeflavor.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure1.png b/docs/requirements/images/figure1.png
deleted file mode 100644
index 065a995..0000000
--- a/docs/requirements/images/figure1.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure2.png b/docs/requirements/images/figure2.png
deleted file mode 100755
index dd002a2..0000000
--- a/docs/requirements/images/figure2.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure3.png b/docs/requirements/images/figure3.png
deleted file mode 100755
index 20e51c7..0000000
--- a/docs/requirements/images/figure3.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure4.png b/docs/requirements/images/figure4.png
deleted file mode 100755
index e0c96a1..0000000
--- a/docs/requirements/images/figure4.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure5.png b/docs/requirements/images/figure5.png
deleted file mode 100755
index 4e161f4..0000000
--- a/docs/requirements/images/figure5.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure5_new.png b/docs/requirements/images/figure5_new.png
deleted file mode 100644
index 9307aa2..0000000
--- a/docs/requirements/images/figure5_new.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure6.png b/docs/requirements/images/figure6.png
deleted file mode 100755
index 8aeec23..0000000
--- a/docs/requirements/images/figure6.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure6_new.png b/docs/requirements/images/figure6_new.png
deleted file mode 100644
index 5ec4b43..0000000
--- a/docs/requirements/images/figure6_new.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/images/figure7_new.png b/docs/requirements/images/figure7_new.png
deleted file mode 100644
index 6684949..0000000
--- a/docs/requirements/images/figure7_new.png
+++ /dev/null
Binary files differ
diff --git a/docs/requirements/impl_architecture.rst b/docs/requirements/impl_architecture.rst
deleted file mode 100644
index d7375d5..0000000
--- a/docs/requirements/impl_architecture.rst
+++ /dev/null
@@ -1,313 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-Detailed architecture and message flows
-=======================================
-
-Within the Promise project we consider two different architectural options, i.e.
-a *shim-layer* based architecture and an architecture targeting at full
-OpenStack *integration*.
-
-Shim-layer architecture
------------------------
-
-The *shim-layer architecture* is using a layer on top of OpenStack to provide
-the capacity management, resource reservation, and resource allocation features.
-
-
-Detailed Message Flows
-^^^^^^^^^^^^^^^^^^^^^^
-
-Note, that only selected parameters for the messages are shown. Refer to
-:ref:`northbound_API` and Annex :ref:`yang_schema` for a full set of message
-parameters.
-
-Resource Capacity Management
-""""""""""""""""""""""""""""
-
-.. figure:: images/figure5_new.png
- :name: figure5
- :width: 90%
-
- Capacity Management Scenario
-
-:numref:`figure5` shows a detailed message flow between the consumers and the
-capacity management functional blocks inside the shim-layer. It has the
-following steps:
-
- * Step 1a: The Consumer sends a *query-capacity* request to Promise
- using some filter like time-windows or resource type. The capacity is
- looked up in the shim-layer capacity map.
-
- * Step 1b: The shim-layer will respond with information about the
- total, available, reserved, and used (allocated) capacities matching the
- filter.
-
- * Step 2a: The Consumer can send *increase/decrease-capacity* requests
- to update the capacity available to the reservation system. It can be
- 100% of available capacity in the given provider/source or only a subset,
- i.e., it can allow for leaving some "buffer" in the actual NFVI to be
- used outside the Promise shim-layer or for a different reservation
- service instance. It can also be used to inform the reservation system
- that from a certain time in the future, additional resources can be
- reserved (e.g. due to a planned upgrade of the capacity), or the
- available capacity will be reduced (e.g. due to a planned downtime of
- some of the resources).
-
- * Step 2b: The shim-layer will respond with an ACK/NACK message.
-
- * Step 3a: Consumers can subscribe for capacity-change events using a
- filter.
-
- * Step 3b: Each successful subscription is responded with a
- subscription_id.
-
- * Step 4: The shim-layer monitors the capacity information for the
- various types of resources by periodically querying the various
- Controllers (e.g. Nova, Neutron, Cinder) or by creating event alarms in
- the VIM (e.g. with Ceilometer for OpenStack) and updates capacity
- information in its capacity map.
-
- * Step 5: Capacity changes are notified to the Consumer.
-
-Resource Reservation
-""""""""""""""""""""
-
-.. figure:: images/figure6_new.png
- :name: figure6
- :width: 90%
-
- Resource Reservation for Future Use Scenario
-
-:numref:`figure6` shows a detailed message flow between the Consumer and the
-resource reservation functional blocks inside the shim-layer. It has the
-following steps:
-
- * Step 1a: The Consumer creates a resource reservation request for
- future use by setting a start and end time for the reservation as well as
- more detailed information about the resources to be reserved. The Promise
- shim-layer will check the free capacity in the given time window and in
- case sufficient capacity exists to meet the reservation request, will
- mark those resources "reserved" in its reservation map.
-
- * Step 1b: If the reservation was successful, a reservation_id and
- status of the reservation will be returned to the Consumer. In case the
- reservation cannot be met, the shim-layer may return information about
- the maximum capacity that could be reserved during the requested time
- window and/or a potential time window where the requested (amount of)
- resources would be available.
-
- * Step 2a: Reservations can be updated using an *update-reservation*,
- providing the reservation_id and the new reservation_data. Promise
- Reservation Manageer will check the feasibility to update the reservation
- as requested.
-
- * Step 2b: If the reservation was updated successfully, a
- reservation_id and status of the reservation will be returned to the
- Consumer. Otherwise, an appropriate error message will be returned.
-
- * Step 3a: A *cancel-reservation* request can be used to withdraw an
- existing reservation. Promise will update the reservation map by removing
- the reservation as well as the capacity map by adding the freed capacity.
-
- * Step 3b: The response message confirms the cancelation.
-
- * Step 4a: Consumers can also issue *query-reservation* requests to
- receive a list of reservation. An input filter can be used to narrow down
- the query, e.g., only provide reservations in a given time window.
- Promise will query its reservation map to identify reservations matching
- the input filter.
-
- * Step 4b: The response message contains information about all
- reservations matching the input filter. It also provides information
- about the utilization in the requested time window.
-
- * Step 5a: Consumers can subscribe for reservation-change events using
- a filter.
-
- * Step 5b: Each successful subscription is responded with a
- subscription_id.
-
- * Step 6a: Promise synchronizes the available and used capacity with
- the underlying VIM.
-
- * Step 6b: In certain cases, e.g., due a failure in the underlying
- hardware, some reservations cannot be kept up anymore and have to be
- updated or canceled. The shim-layer will identify affected reservations
- among its reservation records.
-
- * Step 7: Subscribed Consumers will be informed about the updated
- reservations. The notification contains the updated reservation_data and
- new status of the reservation. It is then up to the Consumer to take
- appropriate actions in order to ensure high priority reservations are
- favored over lower priority reservations.
-
-Resource Allocation
-"""""""""""""""""""
-
-.. figure:: images/figure7_new.png
- :name: figure7
- :width: 90%
-
- Resource Allocation
-
-:numref:`figure7` shows a detailed message flow between the Consumer, the
-functional blocks inside the shim-layer, and the VIM. It has the following
-steps:
-
- * Step 1a: The Consumer sends a *create-instance* request providing
- information about the resources to be reserved, i.e., provider_id
- (optional in case of only one provider), name of the instance, the
- requested flavour and image, etc. If the allocation is against an
- existing reservation, the reservation_id has to be provided.
-
- * Step 1b: If a reservation_id was provided, Promise checks if a
- reservation with that ID exists, the reservation start time has arrived
- (i.e. the reservation is active), and the required capacity for the
- requested flavor is within the available capacity of the reservation. If
- those conditions are met, Promise creates a record for the allocation
- (VMState="INITIALIZED") and update its databases. If no reservation_id
- was provided in the allocation request, Promise checks whether the
- required capacity to meet the request can be provided from the available,
- non-reserved capacity. If yes, Promise creates a record for the
- allocation and update its databases. In any other case, Promise rejects
- the *create-instance* request.
-
- * Step 2: In the case the *create-instance* request was rejected,
- Promise responds with a "status=rejected" providing the reason of the
- rejection. This will help the Consumer to take appropriate actions, e.g.,
- send an updated *create-instance* request. The allocation work flow will
- terminate at this step and the below steps are not executed.
-
- * Step 3a: If the *create-instance* request was accepted and a related
- allocation record has been created, the shim-layer issues a
- *createServer* request to the VIM Controller providing all information to
- create the server instance.
-
- * Step 3b: The VIM Controller sends an immediate reply with an
- instance_id and starts the VIM-internal allocation process.
-
- * Step 4: The Consumer gets an immediate response message with
- allocation status "in progress" and the assigned instance_id.
-
- * Step 5a+b: The consumer subscribes to receive notifications about
- allocation events related to the requested instance. Promise responds
- with an acknowledgment including a subscribe_id.
-
- * Step 6: In parallel to the previous step, Promise shim-layer creates
- an alarm in Aodh to receive notifications about all changes to the
- VMState for instance_id.
-
- * Step 7a: The VIM Controller notifies all instance related events to
- Ceilometer. After the allocation has been completed or failed, it sends
- an event to Ceilometer. This triggers the OpenStack alarming service Aodh
- to notify the new VMState (e.g. ACTIVE and ERROR) to the shim-layer that
- updates its internal allocation records.
-
- * Step 7b: Promise sends a notification message to the subscribed
- Consumer with information on the allocated resources including their new
- VMState.
-
- * Step 8a+b: Allocated instances can be terminated by the Consumer by
- sending a *destroy-instance* request to the shim-layer. Promise responds
- with an acknowledgment and the new status "DELETING" for the instance.
-
- * Step 9a: Promise sends a *deleteServer* request for the instance_id
- to the VIM Controller.
-
- * Step 10a: After the instance has been deleted, an event alarm is
- sent to the shim-layer that updates its internal allocation records and
- capacity utilization.
-
- * Step 10b: The shim-layer also notifies the subscribed Consumer about
- the successfully destroyed instance.
-
-
-Internal operations
-^^^^^^^^^^^^^^^^^^^
-
-.. note:: This section is to be updated
-
-In the following, the internal logic and operations of the shim-layer will be
-explained in more detail, e.g. the "check request" (step 1b in
-:numref:`figure7` of the allocation work flow).
-
-
-
-Integrated architecture
------------------------
-
-The *integrated architecture* aims at full integration with OpenStack.
-This means that it is planned to use the already existing OpenStack APIs
-extended with the reservation capabilities.
-
-The advantage of this approach is that we don't need to re-model the
-complex resource structure we have for the virtual machines and the
-corresponding infrastructure.
-
-The atomic item is the virtual machine with the minimum set of resources
-it requires to be able to start it up. It is important to state that
-resource reservation is handled on VM instance level as opposed to standalone
-resources like CPU, memory and so forth. As the placement is an important
-aspect in order to be able to use the reserved resources it provides the
-constraint to handle resources in groups.
-
-The placement constraint also makes it impossible to use a quota management
-system to solve the base use case described earlier in this document.
-
-OpenStack had a project called Blazar, which was created in order to provide
-resource reservation functionality in cloud environments. It uses the Shelve
-API of Nova, which provides a sub-optimal solution. Due to the fact that this
-feature blocks the reserved resources this solution cannot be considered to
-be final. Further work is needed to reach a more optimal stage, where the
-Nova scheduler is intended to be used to schedule the resources for future
-use to make the reservations.
-
-Phases of the work
-^^^^^^^^^^^^^^^^^^
-
-The work has two main stages to reach the final solution. The following main work items
-are on the roadmap for this approach:
-
-#. Sub-optimal solution by using the shelve API of Nova through the Blazar project:
-
- * Fix the code base of the Blazar project:
-
- Due to integration difficulties the Blazar project got suspended. Since the last
- activities in that repository the OpenStack code base and environment changed
- significantly, which means that the project's code base needs to be updated to the
- latest standards and has to be able to interact with the latest version of the
- other OpenStack services.
-
- * Update the Blazar API:
-
- The REST API needs to be extended to contain the attributes for the reservation
- defined in this document. This activity shall include testing towards the new API.
-
-#. Use Nova scheduler to avoid blocking the reserved resources:
-
- * Analyze the Nova scheduler:
-
- The status and the possible interface between the resource reservation system and
- the Nova scheduler needs to be identified. It is crucial to achieve a much more
- optimal solution than what the current version of Blazar can provide. The goal is
- to be able to use the reserved resources before the reservation starts. In order to
- be able to achieve this we need the scheduler to do scheduling for the future
- considering the reservation intervals that are specified in the request.
-
- * Define a new design based on the analysis and start the work on it:
-
- The design for the more optimal solution can be defined only after analyzing the
- structure and capabilities of the Nova scheduler.
-
- * This phase can be started in parallel with the previous one.
-
-Detailed Message Flows
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. note:: to be done
-
-Resource Reservation
-""""""""""""""""""""
-
-.. note:: to be specified
diff --git a/docs/requirements/index.rst b/docs/requirements/index.rst
deleted file mode 100644
index 00edf0e..0000000
--- a/docs/requirements/index.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-****************************
-Promise: Resource Management
-****************************
-
-:Project: Promise, https://wiki.opnfv.org/promise
-:Editors: Ashiq Khan (NTT DOCOMO), Bertrand Souville (NTT DOCOMO)
-:Authors: Ravi Chunduru (ClearPath Networks), Peter Lee (ClearPath Networks),
- Gerald Kunzmann (NTT DOCOMO), Ryota Mibu (NEC),
- Carlos Goncalves (NEC), Arturo Martin De Nicolas (Ericsson)
-
-:History:
- ========== =====================================================
- Date Description
- ========== =====================================================
- 04.12.2014 Project creation
- 20.04.2015 Initial version of the deliverable uploaded to gerrit
- 19.06.2015 Stable version of the Promise deliverable
- ========== =====================================================
-
-:Abstract: Promise is an OPNFV requirement project. Its objective is to realize
- ETSI NFV defined resource reservation and NFVI capacity features
- within the scope of OPNFV. Promise provides the details of the
- requirements on resource reservation, NFVI capacity management at
- VIM, specification of the northbound interfaces from VIM relevant to
- these features, and implementation plan to realize these features in
- OPNFV.
-
-.. raw:: latex
-
- \newpage
-
-.. toctree::
- :maxdepth: 4
- :numbered:
-
- glossary.rst
- intro.rst
- usecase.rst
- architecture.rst
- gap_analysis.rst
- impl_architecture.rst
- NB_interface.rst
- summary.rst
-
- references.rst
- annex1.rst
- schemas.rst
- supported_apis.rst
- revision.rst
diff --git a/docs/requirements/intro.rst b/docs/requirements/intro.rst
deleted file mode 100644
index 654fdf9..0000000
--- a/docs/requirements/intro.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-============
-Introduction
-============
-
-Resource reservation is a basic function for the operation of a virtualized
-telecom network. In resource reservation, VIM reserves resources for a certain
-period as requested by the NFVO. A resource reservation will have a start time
-which could be into the future. Therefore, the reserved resources shall be
-available for the NFVO requested purpose (e.g. for a VNF) at the start time for
-the duration asked by NFVO. Resources include all three resource types in an
-NFVI i.e. compute, storage and network.
-
-Besides, NFVO requires abstracted NFVI resource capacity information in order
-to take decisions on VNF placement and other operations related to the virtual
-resources. VIM is required to inform the NFVO of NFVI resource state
-information for this purpose. Promise project aims at delivering the detailed
-requirements on these two features defined in ETSI NFV MAN GS [NFVMAN]_,
-the list of gaps in upstream projects, potential implementation architecture
-and plan, and the VIM northbound interface specification for resource
-reservation and capacity management.
-
-Problem description
-===================
-
-OpenStack, a prominent candidate for the VIM, cannot reserve resources for
-future use. OpenStack requires immediate instantiation of Virtual Machines
-(VMs) in order to occupy resources intended to be reserved. Blazar can reserve
-compute resources for future by keeping the VMs in shelved mode. However, such
-reserved resources can also be used for scaling out rather than new VM
-instantiation. Blazar does not support network and storage resource reservation
-yet.
-
-Besides, OpenStack does not provide a northbound interface through which it can
-notify an upper layer management entity e.g. NFVO about capacity changes in its
-NFVI, periodically or in an event driven way. Capacity management is a feature
-defined in ETSI NFV MAN GS [NFVMAN]_ and is required in network operation.
diff --git a/docs/requirements/references.rst b/docs/requirements/references.rst
deleted file mode 100644
index c498b66..0000000
--- a/docs/requirements/references.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-References and bibliography
-===========================
-
-.. [PROMISE] OPNFV, "Promise" requirements project, [Online]. Available at
- https://wiki.opnfv.org/promise
-.. [BLAZAR] OpenStack Blazar Project, [Online]. Available at
- https://wiki.openstack.org/wiki/Blazar
-.. [PROMOSS] Promise reference implementation, [Online]. Available at
- https://github.com/opnfv/promise
-.. [YANGFO] Yangforge Project, [Online]. Available at
- https://github.com/opnfv/yangforge
-.. [NFVMAN] ETSI GS NFV MAN 001, "Network Function Virtualisation (NFV); Management and Orchestration"
-.. [NFV003] ETSI GS NFV 003, "Network Function Virtualisation (NFV); Terminology for Main Concepts in NFV"
-.. [NFVIFA010] ETSI GS NFV IFA 010, "Network Function Virtualisation (NFV); Management and Orchestration;
- Functional Requirements Specification"
-.. [NFVIFA005] ETSI GS NFV IFA 005, "Network Function Virtualisation (NFV); Management and Orchestration;
- Or-Vi reference point - Interface and Information Model Specification"
-.. [NFVIFA006] ETSI GS NFV IFA 006 "Network Function Virtualisation (NFV); Management and Orchestration;
- Vi-Vnfm reference point - Interface and Information Model Specification"
-.. [ETSINFV] ETSI NFV, [Online]. Available at
- http://www.etsi.org/technologies-clusters/technologies/nfv
-
diff --git a/docs/requirements/revision.rst b/docs/requirements/revision.rst
deleted file mode 100644
index cd0b76b..0000000
--- a/docs/requirements/revision.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-ANNEX D: Document revision
-==========================
-
-+---------+-----------------------------------------+
-| Version | Description |
-+---------+-----------------------------------------+
-| 1.0.1 | JIRA: PROMISE-23 |
-| | - Reference to YangForge Framework |
-| | - Corrections to figure 3.1 |
-+---------+-----------------------------------------+
-| 1.0.2 | JIRA: PROMISE-11 |
-| | - OPNFV Logo Added |
-| | - Alignment to ETSI NFV Specs |
-+---------+-----------------------------------------+
-| 1.0.3 | JIRA: PROMISE-54 |
-| | - Use case for Brahmaputra |
-+---------+-----------------------------------------+
-| 1.0.4 | JIRA: PROMISE-60 |
-| | - Editorial fixes |
-| | |
-| | JIRA: PROMISE-57 |
-| | - Split shim-layer architecture and |
-| | integrated architecture sections |
-+---------+-----------------------------------------+
-| 1.0.5 | JIRA: PROMISE-61 |
-| | - Updated Promise Yang Schema |
-+---------+-----------------------------------------+
-| 1.0.6 | JIRA: PROMISE-62 |
-| | - Supported APIs for Brahmaputra |
-+---------+-----------------------------------------+
-| 1.0.7 | JIRA: PROMISE-63 |
-| | - Update message flow for shim-layer |
-| | JIRA: PROMISE-58 |
-| | - Integrated approach description |
-| | JIRA: PROMISE-64 |
-| | - Promise userguide |
-+---------+-----------------------------------------+
-| 1.0.8 | JIRA: PROMISE-11 |
-| | - Alignment to ETSI NVF Specs |
-+---------+-----------------------------------------+
diff --git a/docs/requirements/schemas.rst b/docs/requirements/schemas.rst
deleted file mode 100644
index c98b7da..0000000
--- a/docs/requirements/schemas.rst
+++ /dev/null
@@ -1,658 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-.. _yang_schema:
-
-ANNEX B: Promise YANG schema based on YangForge
-===============================================
-
-.. code::
-
- module opnfv-promise {
- namespace "urn:opnfv:promise";
- prefix promise;
-
- import complex-types { prefix ct; }
- import ietf-yang-types { prefix yang; }
- import ietf-inet-types { prefix inet; }
- import access-control-models { prefix acm; }
- import nfv-infrastructure { prefix nfvi; }
- import nfv-mano { prefix mano; }
-
- description
- "OPNFV Promise Resource Reservation/Allocation controller module";
-
- revision 2015-10-05 {
- description "Complete coverage of reservation related intents";
- }
-
- revision 2015-08-06 {
- description "Updated to incorporate YangForge framework";
- }
-
- revision 2015-04-16 {
- description "Initial revision.";
- }
-
- feature reservation-service {
- description "When enabled, provides resource reservation service";
- }
-
- feature multi-provider {
- description "When enabled, provides resource management across multiple providers";
- }
-
- typedef reference-identifier {
- description "defines valid formats for external reference id";
- type union {
- type yang:uuid;
- type inet:uri;
- type uint32;
- }
- }
-
- grouping resource-utilization {
- container capacity {
- container total { description 'Conceptual container that should be extended'; }
- container reserved { description 'Conceptual container that should be extended';
- config false; }
- container usage { description 'Conceptual container that should be extended';
- config false; }
- container available { description 'Conceptual container that should be extended';
- config false; }
- }
- }
-
- grouping temporal-resource-collection {
- description
- "Information model capturing resource-collection with start/end time window";
-
- leaf start { type yang:date-and-time; }
- leaf end { type yang:date-and-time; }
-
- uses nfvi:resource-collection;
- }
-
- grouping resource-usage-request {
- description
- "Information model capturing available parameters to make a resource
- usage request.";
- reference "OPNFV-PROMISE, Section 3.4.1";
-
- uses temporal-resource-collection {
- refine elements {
- description
- "Reference to a list of 'pre-existing' resource elements that are
- required for fulfillment of the resource-usage-request.
-
- It can contain any instance derived from ResourceElement,
- such as ServerInstances or even other
- ResourceReservations. If the resource-usage-request is
- accepted, the ResourceElement(s) listed here will be placed
- into 'protected' mode as to prevent accidental removal.
-
- If any of these resource elements become 'unavailable' due to
- environmental or administrative activity, a notification will
- be issued informing of the issue.";
- }
- }
-
- leaf zone {
- description "Optional identifier to an Availability Zone";
- type instance-identifier { ct:instance-type nfvi:AvailabilityZone; }
- }
- }
-
- grouping query-start-end-window {
- container window {
- description "Matches entries that are within the specified start/end time window";
- leaf start { type yang:date-and-time; }
- leaf end { type yang:date-and-time; }
- leaf scope {
- type enumeration {
- enum "exclusive" {
- description "Matches entries that start AND end within the window";
- }
- enum "inclusive" {
- description "Matches entries that start OR end within the window";
- }
- }
- default "inclusive";
- }
- }
- }
-
- grouping query-resource-collection {
- uses query-start-end-window {
- description "Match for ResourceCollection(s) that are within the specified
- start/end time window";
- }
- leaf-list without {
- description "Excludes specified collection identifiers from the result";
- type instance-identifier { ct:instance-type ResourceCollection; }
- }
- leaf show-utilization { type boolean; default true; }
- container elements {
- leaf-list some {
- description "Query for ResourceCollection(s) that contain some or more of
- these element(s)";
- type instance-identifier { ct:instance-type nfvi:ResourceElement; }
- }
- leaf-list every {
- description "Query for ResourceCollection(s) that contain all of
- these element(s)";
- type instance-identifier { ct:instance-type nfvi:ResourceElement; }
- }
- }
- }
-
- grouping common-intent-output {
- leaf result {
- type enumeration {
- enum "ok";
- enum "conflict";
- enum "error";
- }
- }
- leaf message { type string; }
- }
-
- grouping utilization-output {
- list utilization {
- key 'timestamp';
- leaf timestamp { type yang:date-and-time; }
- leaf count { type int16; }
- container capacity { uses nfvi:resource-capacity; }
- }
- }
-
- ct:complex-type ResourceCollection {
- ct:extends nfvi:ResourceContainer;
- ct:abstract true;
-
- description
- "Describes an abstract ResourceCollection data model, which represents
- a grouping of capacity and elements available during a given
- window in time which must be extended by other resource
- collection related models";
-
- leaf start { type yang:date-and-time; }
- leaf end { type yang:date-and-time; }
-
- leaf active {
- config false;
- description
- "Provides current state of this record whether it is enabled and within
- specified start/end time";
- type boolean;
- }
- }
-
- ct:complex-type ResourcePool {
- ct:extends ResourceCollection;
-
- description
- "Describes an instance of an active ResourcePool record, which
- represents total available capacity and elements from a given
- source.";
-
- leaf source {
- type instance-identifier {
- ct:instance-type nfvi:ResourceContainer;
- require-instance true;
- }
- mandatory true;
- }
-
- refine elements {
- // following 'must' statement applies to each element
- // NOTE: just a non-working example for now...
- must "boolean(/source/elements/*[@id=id])" {
- error-message "One or more of the ResourceElement(s) does not exist in
- the provider to be reserved";
- }
- }
- }
-
- ct:complex-type ResourceReservation {
- ct:extends ResourceCollection;
-
- description
- "Describes an instance of an accepted resource reservation request,
- created usually as a result of 'create-reservation' request.
-
- A ResourceReservation is a derived instance of a generic
- ResourceCollection which has additional parameters to map the
- pool(s) that were referenced to accept this reservation as well
- as to track allocations made referencing this reservation.
-
- Contains the capacities of various resource attributes being
- reserved along with any resource elements that are needed to be
- available at the time of allocation(s).";
-
- reference "OPNFV-PROMISE, Section 3.4.1";
-
- leaf created-on { type yang:date-and-time; config false; }
- leaf modified-on { type yang:date-and-time; config false; }
-
- leaf-list pools {
- config false;
- description
- "Provides list of one or more pools that were referenced for providing
- the requested resources for this reservation. This is an
- important parameter for informing how/where allocation
- requests can be issued using this reservation since it is
- likely that the total reserved resource capacity/elements are
- made availble from multiple sources.";
- type instance-identifier {
- ct:instance-type ResourcePool;
- require-instance true;
- }
- }
-
- container remaining {
- config false;
- description
- "Provides visibility into total remaining capacity for this
- reservation based on allocations that took effect utilizing
- this reservation ID as a reference.";
-
- uses nfvi:resource-capacity;
- }
-
- leaf-list allocations {
- config false;
- description
- "Reference to a collection of consumed allocations referencing
- this reservation.";
- type instance-identifier {
- ct:instance-type ResourceAllocation;
- require-instance true;
- }
- }
- }
-
- ct:complex-type ResourceAllocation {
- ct:extends ResourceCollection;
-
- description
- "A ResourceAllocation record denotes consumption of resources from a
- referenced ResourcePool.
-
- It does not reflect an accepted request but is created to
- represent the actual state about the ResourcePool. It is
- created once the allocation(s) have successfully taken effect
- on the 'source' of the ResourcePool.
-
- The 'priority' state indicates the classification for dealing
- with resource starvation scenarios. Lower priority allocations
- will be forcefully terminated to allow for higher priority
- allocations to be fulfilled.
-
- Allocations without reference to an existing reservation will
- receive the lowest priority.";
-
- reference "OPNFV-PROMISE, Section 3.4.3";
-
- leaf reservation {
- description "Reference to an existing reservation identifier (optional)";
-
- type instance-identifier {
- ct:instance-type ResourceReservation;
- require-instance true;
- }
- }
-
- leaf pool {
- description "Reference to an existing resource pool from which allocation is drawn";
-
- type instance-identifier {
- ct:instance-type ResourcePool;
- require-instance true;
- }
- }
-
- container instance-ref {
- config false;
- description
- "Reference to actual instance identifier of the provider/server
- for this allocation";
- leaf provider {
- type instance-identifier { ct:instance-type ResourceProvider; }
- }
- leaf server { type yang:uuid; }
- }
-
- leaf priority {
- config false;
- description
- "Reflects current priority level of the allocation according to
- classification rules";
- type enumeration {
- enum "high" { value 1; }
- enum "normal" { value 2; }
- enum "low" { value 3; }
- }
- default "normal";
- }
- }
-
- ct:complex-type ResourceProvider {
- ct:extends nfvi:ResourceContainer;
-
- key "name";
- leaf token { type string; mandatory true; }
-
- container services { // read-only
- config false;
- container compute {
- leaf endpoint { type inet:uri; }
- ct:instance-list flavors { ct:instance-type nfvi:ComputeFlavor; }
- }
- }
-
- leaf-list pools {
- config false;
- description
- "Provides list of one or more pools that are referencing this provider.";
-
- type instance-identifier {
- ct:instance-type ResourcePool;
- require-instance true;
- }
- }
- }
-
- // MAIN CONTAINER
- container promise {
-
- uses resource-utilization {
- description "Describes current state info about capacity utilization info";
-
- augment "capacity/total" { uses nfvi:resource-capacity; }
- augment "capacity/reserved" { uses nfvi:resource-capacity; }
- augment "capacity/usage" { uses nfvi:resource-capacity; }
- augment "capacity/available" { uses nfvi:resource-capacity; }
- }
-
- ct:instance-list providers {
- if-feature multi-provider;
- description "Aggregate collection of all registered ResourceProvider instances
- for Promise resource management service";
- ct:instance-type ResourceProvider;
- }
-
- ct:instance-list pools {
- if-feature reservation-service;
- description "Aggregate collection of all ResourcePool instances";
- ct:instance-type ResourcePool;
- }
-
- ct:instance-list reservations {
- if-feature reservation-service;
- description "Aggregate collection of all ResourceReservation instances";
- ct:instance-type ResourceReservation;
- }
-
- ct:instance-list allocations {
- description "Aggregate collection of all ResourceAllocation instances";
- ct:instance-type ResourceAllocation;
- }
-
- container policy {
- container reservation {
- leaf max-future-start-range {
- description
- "Enforce reservation request 'start' time is within allowed range from now";
- type uint16 { range 0..365; }
- units "days";
- }
- leaf max-future-end-range {
- description
- "Enforce reservation request 'end' time is within allowed range from now";
- type uint16 { range 0..365; }
- units "days";
- }
- leaf max-duration {
- description
- "Enforce reservation duration (end-start) does not exceed specified threshold";
- type uint16;
- units "hours";
- default 8760; // for now cap it at max one year as default
- }
- leaf expiry {
- description
- "Duration in minutes from start when unallocated reserved resources
- will be released back into the pool";
- type uint32;
- units "minutes";
- }
- }
- }
- }
-
- //-------------------
- // INTENT INTERFACE
- //-------------------
-
- // RESERVATION INTENTS
- rpc create-reservation {
- if-feature reservation-service;
- description "Make a request to the reservation system to reserve resources";
- input {
- uses resource-usage-request;
- }
- output {
- uses common-intent-output;
- leaf reservation-id {
- type instance-identifier { ct:instance-type ResourceReservation; }
- }
- }
- }
-
- rpc update-reservation {
- description "Update reservation details for an existing reservation";
- input {
- leaf reservation-id {
- type instance-identifier {
- ct:instance-type ResourceReservation;
- require-instance true;
- }
- mandatory true;
- }
- uses resource-usage-request;
- }
- output {
- uses common-intent-output;
- }
- }
-
- rpc cancel-reservation {
- description "Cancel the reservation and be a good steward";
- input {
- leaf reservation-id {
- type instance-identifier { ct:instance-type ResourceReservation; }
- mandatory true;
- }
- }
- output {
- uses common-intent-output;
- }
- }
-
- rpc query-reservation {
- if-feature reservation-service;
- description "Query the reservation system to return matching reservation(s)";
- input {
- leaf zone { type instance-identifier { ct:instance-type nfvi:AvailabilityZone; } }
- uses query-resource-collection;
- }
- output {
- leaf-list reservations { type instance-identifier
- { ct:instance-type ResourceReservation; } }
- uses utilization-output;
- }
- }
-
- // CAPACITY INTENTS
- rpc increase-capacity {
- description "Increase total capacity for the reservation system
- between a window in time";
- input {
- uses temporal-resource-collection;
- leaf source {
- type instance-identifier {
- ct:instance-type nfvi:ResourceContainer;
- }
- }
- }
- output {
- uses common-intent-output;
- leaf pool-id {
- type instance-identifier { ct:instance-type ResourcePool; }
- }
- }
- }
-
- rpc decrease-capacity {
- description "Decrease total capacity for the reservation system
- between a window in time";
- input {
- uses temporal-resource-collection;
- leaf source {
- type instance-identifier {
- ct:instance-type nfvi:ResourceContainer;
- }
- }
- }
- output {
- uses common-intent-output;
- leaf pool-id {
- type instance-identifier { ct:instance-type ResourcePool; }
- }
- }
- }
-
- rpc query-capacity {
- description "Check available capacity information about a specified
- resource collection";
- input {
- leaf capacity {
- type enumeration {
- enum 'total';
- enum 'reserved';
- enum 'usage';
- enum 'available';
- }
- default 'available';
- }
- leaf zone { type instance-identifier { ct:instance-type nfvi:AvailabilityZone; } }
- uses query-resource-collection;
- // TBD: additional parameters for query-capacity
- }
- output {
- leaf-list collections { type instance-identifier
- { ct:instance-type ResourceCollection; } }
- uses utilization-output;
- }
- }
-
- // ALLOCATION INTENTS (should go into VIM module in the future)
- rpc create-instance {
- description "Create an instance of specified resource(s) utilizing capacity
- from the pool";
- input {
- leaf provider-id {
- if-feature multi-provider;
- type instance-identifier { ct:instance-type ResourceProvider;
- require-instance true; }
- }
- leaf name { type string; mandatory true; }
- leaf image {
- type reference-identifier;
- mandatory true;
- }
- leaf flavor {
- type reference-identifier;
- mandatory true;
- }
- leaf-list networks {
- type reference-identifier;
- description "optional, will assign default network if not provided";
- }
-
- // TODO: consider supporting a template-id (such as HEAT) for more complex instantiation
-
- leaf reservation-id {
- type instance-identifier { ct:instance-type ResourceReservation;
- require-instance true; }
- }
- }
- output {
- uses common-intent-output;
- leaf instance-id {
- type instance-identifier { ct:instance-type ResourceAllocation; }
- }
- }
- }
-
- rpc destroy-instance {
- description "Destroy an instance of resource utilization and release it
- back to the pool";
- input {
- leaf instance-id {
- type instance-identifier { ct:instance-type ResourceAllocation;
- require-instance true; }
- }
- }
- output {
- uses common-intent-output;
- }
- }
-
- // PROVIDER INTENTS (should go into VIM module in the future)
- rpc add-provider {
- description "Register a new resource provider into reservation system";
- input {
- leaf provider-type {
- description "Select a specific resource provider type";
- mandatory true;
- type enumeration {
- enum openstack;
- enum hp;
- enum rackspace;
- enum amazon {
- status planned;
- }
- enum joyent {
- status planned;
- }
- enum azure {
- status planned;
- }
- }
- default openstack;
- }
- uses mano:provider-credentials {
- refine endpoint {
- default "http://localhost:5000/v2.0/tokens";
- }
- }
- container tenant {
- leaf id { type string; }
- leaf name { type string; }
- }
- }
- output {
- uses common-intent-output;
- leaf provider-id {
- type instance-identifier { ct:instance-type ResourceProvider; }
- }
- }
- }
-
- // TODO...
- notification reservation-event;
- notification capacity-event;
- notification allocation-event;
- }
diff --git a/docs/requirements/summary.rst b/docs/requirements/summary.rst
deleted file mode 100644
index fcf10d1..0000000
--- a/docs/requirements/summary.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-======================
-Summary and conclusion
-======================
-
-Resource Reservation and Resource Capacity Management are features to be
-supported by the VIM and exposed to the consumer via the VIM NBI. These
-features have been specified by ETSI NFV.
-
-This document has described several use cases and corresponding high level
-flows where Resource Reservation and Capacity Management are of great benefit
-for the consumer of the virtualised resource management interface: the NFVO or
-the VNFM. The use cases include:
-
-* Notification of changes in capacity in the NFVI
-* Query of available resource capacity
-* Reservation of a resource or set of resources for immediate use
-* Reservation of a resource or set of resources for future use
-
-The Promise project has performed a gap analysis in order to fulfill the
-required functionality. Based on the gap analysis an implementation plan and
-way forward has been proposed, including a possible design architecture and
-high level information model. Immediate next steps of this project is to
-deliver a working Proof-of-Concepts (PoC) and engage upstream communities to
-fill out the gaps identified by Promise.
diff --git a/docs/requirements/supported_apis.rst b/docs/requirements/supported_apis.rst
deleted file mode 100644
index 40cba8d..0000000
--- a/docs/requirements/supported_apis.rst
+++ /dev/null
@@ -1,608 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-ANNEX C: Supported APIS
-=======================
-
-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 Targer URL end point 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
-============================ =========== ==============================================
-
-.. http:post:: /add-provider
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /add-provider HTTP/1.1
- Accept: application/json
-
- {
- "provider-type": "openstack",
- "endpoint": "http://10.0.2.15:5000/v2.0/tokens",
- "username": "promise_user",
- "password": "******",
- "tenant": {
- "name": "promise"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "provider-id": "f25ed9cb-de57-43d5-9b4a-a389a1397302",
- "result": "ok"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /create-reservation
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /create-reservation HTTP/1.1
- Accept: application/json
-
- {
- "capacity": {
- "cores": "5",
- "ram": "25600",
- "addresses": "3",
- "instances": "3"
- },
- "start": "2016-02-02T00:00:00Z",
- "end": "2016-02-03T00:00:00Z"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "reservation-id": "269b2944-9efc-41e0-b067-6898221e8619",
- "result": "ok",
- "message": "reservation request accepted"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /update-reservation
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /update-reservation HTTP/1.1
- Accept: application/json
-
- {
- "reservation-id": "269b2944-9efv-41e0-b067-6898221e8619",
- "capacity": {
- "cores": "1",
- "ram": "5120",
- "addresses": "1",
- "instances": "1"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "result": "ok",
- "message": "reservation update successful"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /cancel-reservation
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /cancel-reservation HTTP/1.1
- Accept: application/json
-
- {
- "reservation-id": "269b2944-9efv-41e0-b067-6898221e8619"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "result": "ok",
- "message": "reservation canceled"
- }
-
-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
-wndow.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
-============================ =================== ================================
-
-.. http:post:: /query-reservation
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /query-reservation HTTP/1.1
- Accept: application/json
-
- {
- "show-utilization": false,
- "window": {
- "start": "2016-02-01T00:00:00Z",
- "end": "2016-02-04T00:00:00Z"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "reservations": [
- "269b2944-9efv-41e0-b067-6898221e8619"
- ],
- "utilization": []
- }
-
-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
-flavor String Id of the flavor
-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
-============================ =========== ==============================================
-
-.. http:post:: /create-instance
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /create-instance HTTP/1.1
- Accept: application/json
-
- {
- "provider-id": "f25ed9cb-de57-43d5-9b4a-a389a1397302",
- "name": "vm1",
- "image": "ddffc6f5-5c86-4126-b0fb-2c71678633f8",
- "flavor": "91bfdf57-863b-4b73-9d93-fc311894b902"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "instance-id": "82572779-896b-493f-92f6-a63008868250",
- "result": "ok",
- "message": "created-instance request accepted"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /destroy-instance
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /destroy-instance HTTP/1.1
- Accept: application/json
-
- {
- "instance-id": "82572779-896b-493f-92f6-a63008868250"
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "result": "ok",
- "message": "instance destroyed and resource released back to pool"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /decrease-capacity
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /decrease-capacity HTTP/1.1
- Accept: application/json
-
- {
- "source": "ResourcePool:4085f0da-8030-4252-a0ff-c6f93870eb5f",
- "capacity": {
- "cores": "3",
- "ram": "5120",
- "addresses": "1"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "pool-id": "c63b2a41-bcc6-42f6-8254-89d633e1bd0b",
- "result": "ok",
- "message": "capacity decrease successful"
- }
-
-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
-============================ =========== ==============================================
-
-.. http:post:: /increase-capacity
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /increase-capacity HTTP/1.1
- Accept: application/json
-
- {
- "source": "ResourceProvider:f6f13fe3-0126-4c6d-a84f-15f1ab685c4f",
- "capacity": {
- "cores": "20",
- "ram": "51200",
- "instances": "10",
- "addresses": "10"
- }
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- {
- "pool-id": "279217a4-7461-4176-bf9d-66770574ca6a",
- "result": "ok",
- "message": "capacity increase successful"
- }
-
-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
-============================ =================== ================================
-
-.. http:post:: /query-capacity
- :noindex:
-
- **Example request**:
-
- .. sourcecode:: http
-
- POST /query-capacity HTTP/1.1
- Accept: application/json
-
- {
- "show-utilization": false
- }
-
- **Example response**:
-
- .. sourcecode:: http
-
- HTTP/1.1 201 CREATED
- Content-Type: application/json
-
- {
- "collections": [
- "ResourcePool:279217a4-7461-4176-bf9d-66770574ca6a"
- ],
- "utilization": []
- }
-
diff --git a/docs/requirements/usecase.rst b/docs/requirements/usecase.rst
deleted file mode 100644
index bdf8888..0000000
--- a/docs/requirements/usecase.rst
+++ /dev/null
@@ -1,121 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-=======================
-Use cases and scenarios
-=======================
-
-Use cases
-=========
-
-Resource reservation is a basic feature in any virtualization-based network
-operation. In order to perform such resource reservation from NFVO to VIM, NFVI
-capacity information is also necessary at the NFVO side. Below, four use cases
-to show typical requirements and solutions for capacity management and resource
-reservation is presented. A typical use case as considered for the Brahmaputra
-release is described in :ref:`uc-brahmaputra`.
-
-#. Resource capacity management
-#. Resource reservation for immediate use
-#. Resource reservation for future use
-#. Co-existence of reservations and allocation requests without reservation
-
-Resource capacity management
-----------------------------
-
-NFVO takes the first decision on in which NFVI it would instantiate a VNF. Along
-with NFVIs resource attributes (e.g. availability of hardware accelerators,
-particular CPU architectures etc.), NFVO needs to know available capacity of an
-NFVI in order to make an informed decision on selecting a particular NFVI. Such
-capacity information shall be in a coarser granularity than the respective VIM,
-as VIM maintains capacity information of its NFVI in fine details. However a
-very coarse granularity, like simply the number of available virtual CPU cores,
-may not be sufficient. In order to allow the NFVO to make well founded
-allocation decisions, an appropriate level to expose the available capacity may
-be per flavor. Capacity information may be required for the complete NFVI, or
-per partition or availability zone, or other granularities. Therefore, VIM
-requires to inform the NFVO about available capacity information regarding its
-NFVI at a pre-determined abstraction, either by a query-response, or in an
-event-based, or in a periodical way.
-
-Resource reservation for immediate use
---------------------------------------
-
-Reservation is inherently for the future. Even if some reserved resources are to
-be consumed instantly, there is a network latency between the issuance of a
-resource reservation request from the NFVO, a response from the VIM, and actual
-allocation of the requested resources to a VNF/VNFM. Within such latency,
-resource capacity in the NFVI in question could change, e.g., due to failure,
-allocation to a different request. Therefore, the response from a VIM to the
-NFVO to a resource reservation request for immediate use should have a validity
-period which shows until when this VIM can hold the requested resources. During
-this time, the NFVO should proceed to allocation if it wishes to consume the
-reserved requested. If allocation is not performed within the validity period,
-the response from VIM for a particular resource reservation request becomes
-invalid and VIM is not liable to provide those resources to NFVO/VNFM anymore.
-Reservations requests for immediate use do not have a start time but may have
-an end time.
-
-Resource reservation for future use
------------------------------------
-
-Network operators may want to reserve extra resources for future use. Such
-necessity could arise from predicted congestion in telecom nodes e.g. due to
-local traffic spikes for concerts, natural disasters etc. In such a case, the
-NFVO, while sending a resource reservation request to the VIM, shall include a
-start time (and an end time if necessary). The start time indicates at what
-time the reserved resource shall be available to a designated consumer e.g. a
-VNF/VNFM. Here, the requirement is that the reserved resources shall be
-available when the start time arrives. After the start time has arrived, the
-reserved resources are allocated to the designated consumer(s). An explicit
-allocation request is needed. How actually these requested resources are held
-by the VIM for the period in between the arrival of the resource reservation
-request and the actual allocation is outside the scope of this requirement
-project.
-
-Co-existence of reservations and allocation requests without reservation
-------------------------------------------------------------------------
-
-In a real environment VIM will have to handle allocation requests without any
-time reference, i.e. time-unbound, together with time-bound reservations and
-allocation requests with an explicitly indicated end-time. A granted
-reservation for the future will effectively reduce the available capacity for
-any new time-unbound allocation request. The consequence is that reservations,
-even those far in the future, may result in denial of service for new
-allocation requests.
-
-To alleviate this problem several approaches can be taken. They imply an
-implicit or explicit priority scheme:
-
-* Allocation requests without reservation and which are time-unbound will be
- granted resources in a best-effort way: if there is instant capacity, but the
- resources may be later withdrawn due to the start time of a previously
- granted reservation
-* Both allocation requests and reservation requests contain a priority which
- may be related to SLAs and contractual conditions between the tenant and the
- NFVI provider. Interactions may look like:
-
- * A reservation request for future use may cancel another, not yet
- started, reservation with lower priority
- * An allocation request without reservations and time-unbound [#unbound]_
- may be granted resources and prevent a future reservation with lower
- priority from getting resources at start time
- * A reservation request may result in terminating resources allocated to a
- request with no reservation, if the latter has lower priority
-
-.. [#unbound] In this case, the consumer (VNFM or NFVO) requests to immediately
- instantiate and assign virtualized resources without having
- reserved the resources beforehand
-
-Scenarios
-=========
-
-This section describes the expected behavior of the system in different
-scenarios.
-
-As we are targeting a cloud platform with the above use cases, it is crucial to
-keep the flexibility in the system. By this means it is hard to explicitely
-block hardware resources for the future and ensure their availablility for
-allocation therefore it can happen that the reservation plan cannot be fulfilled
-due to certain changes in the underlying environment. We need to ensure that we
-are prepared for error and edge cases during the design period.