summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rwxr-xr-xetc/conf.py8
-rw-r--r--requirements.txt2
-rw-r--r--requirements/05-impl.rst1253
-rw-r--r--requirements/08-revision.rst6
-rw-r--r--requirements/glossary.rst5
-rwxr-xr-xrequirements/images/computeflavor.pngbin0 -> 105698 bytes
-rw-r--r--requirements/images/opnfv-logo.pngbin0 -> 2829 bytes
-rw-r--r--requirements/index.rst6
9 files changed, 854 insertions, 433 deletions
diff --git a/Makefile b/Makefile
index d1a0e8a..73fa622 100644
--- a/Makefile
+++ b/Makefile
@@ -2,11 +2,8 @@ BUILDDIR := build
.PHONY: default clean
-default: plantuml.jar
+default:
tox
-plantuml.jar:
- wget 'http://downloads.sourceforge.net/project/plantuml/plantuml.jar'
-
clean:
- rm -rf .tox build plantuml.jar
+ rm -rf .tox build
diff --git a/etc/conf.py b/etc/conf.py
index 8c70b15..88fcb28 100755
--- a/etc/conf.py
+++ b/etc/conf.py
@@ -4,9 +4,7 @@ import os
needs_sphinx = '1.3'
-# plantuml
-extensions = ['sphinxcontrib.plantuml']
-plantuml = ['java', '-jar', 'plantuml.jar']
+extensions = ['sphinxcontrib.httpdomain']
numfig = True
@@ -27,6 +25,6 @@ latex_elements = {
project = u'Promise: Resource Management'
copyright = u'%s, OPNFV' % datetime.date.today().year
-version = u'1.0.1'
-release = u'1.0.1'
+version = u'1.0.2'
+release = u'1.0.2'
diff --git a/requirements.txt b/requirements.txt
index 6024eb7..fea41a9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,3 @@
sphinx
sphinx_numfig
-sphinxcontrib-plantuml
+sphinxcontrib-httpdomain
diff --git a/requirements/05-impl.rst b/requirements/05-impl.rst
index 9903a54..951c6d6 100644
--- a/requirements/05-impl.rst
+++ b/requirements/05-impl.rst
@@ -5,462 +5,873 @@ Detailed northbound interface specification
-------------------------------------------
.. Note::
- Once the output of the work from ETSI NFV IFA has been made publicly
- available, the UML diagrams and REST/JSON examples in this section will be
- extended
+ This is Work in Progress.
-Resource Capacity Management
+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",
+ "resourceDescriptor": [
+ {
+ "computeResourceTypeId": "vcInstances"
+ }
+ ],
+ "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: resourceDescriptor is missing
+
+Query Compute Capacity
+______________________
+
+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",
+ "resourceDescriptor": {
+ "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
+
+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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Subscribe Capacity Change Event
-_______________________________
-
-**SubscribeRequest (Consumer -> VIM)**
-
-.. uml::
-
- @startuml
- class SubscribeRequest {
- + zone [0..N]: Identifier
- + attributes [0..1]: String
- + resourceItems [0..1]: String
- + thresholds [0..N]: String
- + notificationId [0..1]: Identifier
- }
- @enduml
+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"
+ }
+ }
+ }
+
+and/or virtualized 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
+ },
+ "virtualStorage": {
+ "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",
+ "containerFlavor": {
+ "flavorId": "myFlavor",
+ "virtualCpu": {
+ "numVirtualCpu": 2,
+ "cpuArchitecture": "x86"
+ },
+ "virtualMemory": {
+ "numaEnabled": "False",
+ "virtualMemSize": 16
+ },
+ "virtualStorage": {
+ "typeOfStorage": "volume",
+ "sizeOfStorage": 16
+ }
+ }
+ }
+ ]
+ }
+ }
+
+
+
+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"
+ }
+ ]
-Subscription from Consumer to VIM to be notified about capacity changes.
-Input Parameters:
+ }
+
+ **Example response**:
+
+ .. sourcecode:: http
+
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+
+ {
+ "reservationData":
+ {
+ "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:
+
+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:
-* Zone [0..N]: Identification of the zone(s) to notify regarding capacity
- change events
-* Attributes [0..1]: Attributes of resource items to be notified regarding
- capacity change events
-* ResourceItems [0..1]: Identifiers of existing resource items to be notified
- regarding capacity change events (such as images, flavors, virtual
- containers, networks, physical machines, etc.)
-* Thresholds [0..N]: Lower/Upper limits for triggering change event for
- used/reserved/total capacity change for specified resource items
-* NotificationId [0..1]: Identification of existing capacity change event
- notification issued by the VIM. When specified, the previously defined
- conditions for change event notifications will be re-used and notification
- sent to the additional requestor.
+ **Example request**:
-Application/json::
+ .. sourcecode:: http
- {
- "zone": ["opnfv-JP8", "opnfv-JP9"],
- "resourceitems": "numvcinstances"
- }
+ POST /capacity/network/subscribe HTTP/1.1
+ Accept: application/json
-**SubscribeReply (VIM -> Consumer)**
+ {
+ "resourceDescriptor": [
+ {
+ "networkResourceTypeId": "publicIps"
+ }
+ ],
+ "threshold": [
+ {
+ "capacity_info": "available",
+ "condition": "lt",
+ "value": 5
+ }
+ ]
+  }
+
+ **Example response**:
-.. uml::
+ .. sourcecode:: http
- @startuml
- class SubscribeReply {
- + subscriptionId [1]: Identifier
- + created [1]: DateTime
- + message [0..1]: String
- }
- @enduml
-
-Reply Parameters:
-
-* subscriptionId (Identifier): Identification of the created subscription to
- receive notifications about capacity change events
-* created (DateTime): Timestamp when subscription has been created
-* message [0..1] (String): Output message that provides additional information
- about the subscribe request
-
-Application/json::
-
- {
- "created": "2015-03-23T00:00:01Z",
- "subscriptionId": "abcdef-ghijkl-123456789"
- }
-
-Query Resource Capacity
-_______________________
-
-**QueryRequest (NFVO -> VIM)**
-
-.. uml::
-
- @startuml
- class QueryCapacityRequest {
- + capacityQueryFilter [0..1]: CapacityQueryFilterClass
- }
-
- class CapacityQueryFilter {
- + zone [0..1]: Identifier
- + resourceItems [0..1]: String
- + flavorID [0..1]: Identifier
- + timePeriod [0..1]: DateTime
- }
-
- QueryCapacityRequest "1" *- "0..1" CapacityQueryFilter : ""
- @enduml
-
-.. -*
-
-Request to find out about used, reserved and total capacity.
-A CapacityQueryFilter can be used to narrow down the capacity details returned
-in the response message.
-
-Input Parameters:
-
-* capacityQueryFilter (CapacityQueryFilterClass): Optional information to
- narrow down the QueryCapacityRequest, for example to limit the query to given
- resource items, or a given resource zone. The capacityQueryFilter can also
- include a FlavorId or template ID. In this case, the QueryCapacity is a
- request to obtain information of the number of virtual resources that can be
- instantiated according to this flavor with the actual available capacity.
- A timePeriod can be specified to narrow down the query to a certain period of time.
-
-Application/json::
-
- {
- "capacityqueryfilter": {
- "resourceitems": "numvcinstances,virtualmemorysize",
- "zone": "opnfv-JP7"
- }
- }
-
-**QueryReply (VIM -> NFVO)**
-
-.. uml::
-
- @startuml
- class QueryCapacityReply {
- + capacityInformation [0..N]: CapacityInformationClass
- + zone [0..1]: Identifier
- + lastUpdate [0..1]: DateTime
- + message [0..1]: String
- }
-
- QueryCapacityReply "1" *- "0..N" CapacityInformationClass : ""
- @enduml
-
-.. -*
+ HTTP/1.1 201 CREATED
+ Content-Type: application/json
-Reply Parameters:
+ {
+ "created": "2015-09-28T00:00:00Z",
+ "capacityChangeSubscriptionId": "bcdefg-hijklm-234567890"
+ }
-* capacityInformation [0..N] (CapacityInformationClass): Capacity information
- matching the CapacityQueryFilter specified in the QueryCapacityRequest
-* Zone [0..1] (Identifier): Identification of the resource zone
-* lastUpdate [0..1] (DateTime): Timestamp of the capacity last update
-* message [0..1] (String): Output message that provides additional information
- about the query capacity request
+Query Network Capacity
+______________________
-Application/json::
-
- {
- "capacityInformation": {
- "numvcinstances": {
- "used": 5,
- "reserved": 1,
- "total": 10
- },
- "virtualmemorysize": {
- "used": 4,
- "reserved": 6,
- "total": 16
+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
+
+ {
+ "resourceDescriptor": {
+ "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
+ }
}
- },
- "zone":"opnfv-JP7",
- "lastUpdate":"2015-03-23T00:00:00Z"
- }
-Notify Capacity Change Event
-____________________________
+Notify Network Capacity Change Event
+____________________________________
+
+Notification about network capacity changes
-**CapacityChangeNotification (VIM -> Consumer)**
+.. http:post:: /capacity/network/notification
+ :noindex:
-.. uml::
+ **Example notification**:
- @startuml
- class CapacityChangeNotification {
- + capacityInformation [0..1]: CapacityInformationClass
- + zone [0..1]: Identifier
- + notificationTime [1]: DateTime
- + notificationId [1]: Identifier
- }
+ .. sourcecode:: http
- CapacityChangeNotification "1" *- "0..1" CapacityInformationClass : ""
- @enduml
+ 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
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Notification about capacity changes
+Create Network Resource Reservation
+___________________________________
-Notify Parameters:
+Request the reservation of network resource capacity and/or virtual networks, network ports
-* capacityInformation [0..1] (CapacityInformationClass): Capacity information
- matching a given subscription request defined by the Consumer
-* zone [0..1] (Identifier): Identification of the resource zone
-* notificationTime [1] (DateTime): Timestamp when the capacity change is
- detected
-* notificationId [1]: Identification of the capacity change event notification
- issued by the VIM.
+.. http:post:: /reservation/network/create
+ :noindex:
-Application/json::
+ **Example request**:
- {
- "capacity": {
- "numvcinstances": {
- "used": 16,
- "reserved": 2,
- "total": 20
+ .. sourcecode:: http
+
+ POST /reservation/network/create HTTP/1.1
+ Accept: application/json
+
+ {
+ "startTime": "2015-09-28T01:00:00Z",
+ "networkReservation": {
+ "numPublicIps": 2
+ }
}
- },
- "zone": "opnfv-JP8",
- "notificationTime":"2015-03-23T12:00:05Z",
- "notificationId":"abcdef-ghijkl-123456789"
- }
-Resource Reservation
-^^^^^^^^^^^^^^^^^^^^
+ **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",
+ "networkReserved": {
+ "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:
-Create Resource Reservation
-___________________________
-
-**CreateResourceReservationRequest (NFVO -> VIM)**
-
-.. uml::
-
- @startuml
- class CreateResourceReservationRequest {
- + startTime [0..1]: DateTime
- + endTime [0..1]: DateTime
- + expiry [0..1]: DateTime
- + virtualizationContainerReservation [0..N]: VirtualizationContainerReservationClass
- + computePoolReservation [0..1]: ComputePoolReservationClass
- + storagePoolReservation [0..1]: StoragePoolReservationClass
- + networkReservation [0..1]: NetworkReservationClass
- + zone [0..1]: Identifier
- }
-
- class VirtualizationContainerReservationClass {
- + containerId [1]: Identifier
- + flavor [0..1]: FlavorClass
- }
-
- CreateResourceReservationRequest "1" *- "0..N" VirtualizationContainerReservationClass : ""
- VirtualizationContainerReservationClass "1" *-- "0..1" FlavorClass
- CreateResourceReservationRequest "1" *-- "0..1" ComputePoolReservationClass
- CreateResourceReservationRequest "1" *-- "0..1" StoragePoolReservationClass
- CreateResourceReservationRequest "1" *-- "0..1" NetworkReservationClass
- @enduml
-
-.. -*
-
-**CreateResourceReservationReply (VIM -> NFVO)**
-
-.. uml::
-
- @startuml
- class CreateResourceReservationReply {
- + reservationId [1]: Identifier
- + virtualizationContainerReserved [0..N]: VirtualizationContainerReservedClass
- + computePoolReserved [0..1]: ComputePoolReservedClass
- + storagePoolReserved [0..1]: StoragePoolReservedClass
- + networkReserved [0..1]: NetworkReservedClass
- + reservationStatus [1]: String
- + startTime [0..1]: DateTime
- + endTime [0..1]: DateTime
- + message [0..1]: String
- }
-
- class VirtualizationContainerReservedClass {
- + containerId [1]: Identifier
- + flavor [0..1]: FlavorClass
- }
-
- CreateResourceReservationReply "1" *- "0..N" VirtualizationContainerReservedClass : ""
- VirtualizationContainerReservedClass "1" *-- "0..1" FlavorClass
- CreateResourceReservationReply "1" *-- "0..1" ComputePoolReservedClass
- CreateResourceReservationReply "1" *-- "0..1" StoragePoolReservedClass
- CreateResourceReservationReply "1" *-- "0..1" NetworkReservedClass
- @enduml
-
-.. -*
-
-Subscribe / Notify Reservation Event
+ **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
+
+ {
+ "reservationData": {
+ "startTime": "2015-09-28T01:00:00Z",
+ "reservationStatus": "active",
+ "reservationId": "wwww-xxxx-yyyy",
+ "networkReserved": "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",
+ "networkReserved": {
+ "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:
+
+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
+
+ {
+ "resourceDescriptor": [
+ {
+ "storageResourceTypeId": "volumes"
+ }
+ ],
+ "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
+______________________
+
+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
+
+ {
+ "resourceDescriptor": {
+ "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
+ }
+ }
+
+Notify Storage Capacity Change Event
____________________________________
-**SubscribeRequest (Consumer -> VIM)**
+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
+
+ {
+ "reservationData": {
+ "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**:
-.. uml::
-
- @startuml
- class SubscribeRequest {
- + reservationId [1]: Identifier
- + eventType [0..1]: String
- }
- @enduml
-
-**SubscribeReply (VIM -> Consumer)**
-
-.. uml::
-
- @startuml
- class SubscribeReply {
- + notificationId [1]: Identifier
- + created [1]: DateTime
- + message [0..1]: String
- }
- @enduml
+ .. sourcecode:: http
-**NotifyReservationEvent (VIM -> Consumer)**
+ HTTP/1.1 201 CREATED
+ Content-Type: application/json
-.. uml::
-
- @startuml
- class ReservationEventNotification {
- + notificationId [1]: Identifier
- + reservationId [1]: Identifier
- + notificationTime [1]: DateTime
- + vimId [1]: Identifier
- + eventType [1]: String
- + eventDetails [1]: String
- + message [0..1]: String
- }
- @enduml
-
-Query Resource Reservation
-__________________________
-
-**QueryResourceReservationRequest (Consumer -> VIM)**
-
-.. uml::
-
- @startuml
- class QueryResourceReservationRequest {
- + reservationQueryFilter [0..1]: ReservationQueryFilterClass
- }
-
- QueryResourceReservationRequest "1" *- "0..1" ReservationQueryFilterClass : ""
- @enduml
-
-.. -*
-
-**QueryResourceReservationReply (VIM -> Consumer)**
-
-.. uml::
-
- @startuml
- class CreateResourceReservationReply {
- + reservationId [1]: Identifier
- + virtualizationContainerReserved [0..N]: VirtualizationContainerReservedClass
- + computePoolReserved [0..1]: ComputePoolReservedClass
- + storagePoolReserved [0..1]: StoragePoolReservedClass
- + networkReserved [0..1]: NetworkReservedClass
- + reservationStatus [1]: String
- + message [0..1]: String
- }
-
- class VirtualizationContainerReservedClass {
- + containerId [1]: Identifier
- + flavor [0..1]: FlavorClass
- }
-
- CreateResourceReservationReply "1" *- "0..N" VirtualizationContainerReservedClass : ""
- VirtualizationContainerReservedClass "1" *-- "0..1" FlavorClass
- CreateResourceReservationReply "1" *-- "0..1" ComputePoolReservedClass
- CreateResourceReservationReply "1" *-- "0..1" StoragePoolReservedClass
- CreateResourceReservationReply "1" *-- "0..1" NetworkReservedClass
- @enduml
-
-.. -*
-
-Update Resource Reservation
-___________________________
-
-**UpdateResourceReservationRequest (NFVO ->VIM)**
-
-.. uml::
-
- @startuml
- class UpdateResourceReservationRequest {
- + reservationId [1]: Identifier
- + start [0..1]: DateTime
- + end [0..1]: DateTime
- + expiry [0..1]: DateTime
- + virtualizationContainerReservation [0..N]: VirtualizationContainerReservationClass
- + computePoolReservation [0..1]: ComputePoolReservationClass
- + storagePoolReservation [0..1]: StoragePoolReservationClass
- + networkReservation [0..1]: NetworkReservationClass
- + zone [0..1]: Identifier
- }
-
- class VirtualizationContainerReservationClass {
- + containerId [1]: Identifier
- + flavor [0..1]: FlavorClass
- }
-
- UpdateResourceReservationRequest "1" *- "0..N" VirtualizationContainerReservationClass : ""
- VirtualizationContainerReservationClass "1" *-- "0..1" FlavorClass
- UpdateResourceReservationRequest "1" *-- "0..1" ComputePoolReservationClass
- UpdateResourceReservationRequest "1" *-- "0..1" StoragePoolReservationClass
- UpdateResourceReservationRequest "1" *-- "0..1" NetworkReservationClass
- @enduml
-
-.. -*
-
-**UpdateResourceReservationReply (VIM -> NFVO)**
-
-.. uml::
-
- @startuml
- class UpdateResourceReservationReply {
- + reservationId [1]: Identifier
- + virtualizationContainerReserved [0..N]: VirtualizationContainerReservedClass
- + computePoolReserved [0..1]: ComputePoolReservedClass
- + storagePoolReserved [0..1]: StoragePoolReservedClass
- + networkReserved [0..1]: NetworkReservedClass
- + reservationStatus [1]: String
- + message [0..1]: String
- }
-
- class VirtualizationContainerReservedClass {
- + containerId [1]: Identifier
- + flavor [0..1]: FlavorClass
- }
+ {
+ "reservationData": {
+ "startTime": "2015-09-20T23:00:00Z",
+ "reservationStatus": "active",
+ "reservationId": "vvvv-wwww-xxxx",
+ "storagePoolReserved": {
+ "storageSize": 10,
+ "numSnapshots": 3,
+ "numVolumes": 2
+ }
+ }
+ }
- UpdateResourceReservationReply "1" *- "0..N" VirtualizationContainerReservedClass : ""
- VirtualizationContainerReservedClass "1" *-- "0..1" FlavorClass
- UpdateResourceReservationReply "1" *-- "0..1" ComputePoolReservedClass
- UpdateResourceReservationReply "1" *-- "0..1" StoragePoolReservedClass
- UpdateResourceReservationReply "1" *-- "0..1" NetworkReservedClass
- @enduml
-
-.. -*
-
-Release Resource Reservation
-____________________________
-
-**ReleaseResourceReservationRequest (NFVO -> VIM)**
-
-.. uml::
-
- @startuml
- class ReleaseResourceReservationRequest {
- + reservationId [1]: Identifier
- }
- @enduml
-
-**ReleaseResourceReservationReply (VIM -> NFVO)**
-
-.. uml::
-
- @startuml
- class ReleaseResourceReservationReply {
- + reservationId [1]: Identifier
- + message [0..1]: String
- }
- @enduml
+Terminate Storage Resource Reservation
+______________________________________
+Request to terminate a storage resource reservation
+.. http:delete:: /reservation/storage/(reservation_id)
+ :noindex:
Detailed Message Flows
----------------------
diff --git a/requirements/08-revision.rst b/requirements/08-revision.rst
index 2db306d..b543fa5 100644
--- a/requirements/08-revision.rst
+++ b/requirements/08-revision.rst
@@ -8,5 +8,9 @@ ANNEX B: DOCUMENT REVISION
| | - Reference to YangForge Framework |
| | - Corrections to figure 3.1 |
+---------+-----------------------------------------+
-| | |
+| 1.0.2 | JIRA: PROMISE-11 |
+| | - OPNFV Logo Added |
+| | - Alignment to ETSI NFV Specs |
++---------+-----------------------------------------+
+| |                                         |
+---------+-----------------------------------------+
diff --git a/requirements/glossary.rst b/requirements/glossary.rst
index 99b593f..1addb9c 100644
--- a/requirements/glossary.rst
+++ b/requirements/glossary.rst
@@ -31,6 +31,11 @@ mapping/translating the OPNFV terms to terminology used in other contexts.
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
diff --git a/requirements/images/computeflavor.png b/requirements/images/computeflavor.png
new file mode 100755
index 0000000..3ea3dba
--- /dev/null
+++ b/requirements/images/computeflavor.png
Binary files differ
diff --git a/requirements/images/opnfv-logo.png b/requirements/images/opnfv-logo.png
new file mode 100644
index 0000000..1519503
--- /dev/null
+++ b/requirements/images/opnfv-logo.png
Binary files differ
diff --git a/requirements/index.rst b/requirements/index.rst
index 0b4ffcb..bd5bbfb 100644
--- a/requirements/index.rst
+++ b/requirements/index.rst
@@ -4,6 +4,12 @@
http://creativecommons.org/licenses/by/3.0/legalcode
+.. image:: images/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+
.. title::
Promise