Evaluate ETSI NFV IFA vs. Promise specifications 03/1803/6
authorbertys <souville@docomolab-euro.com>
Sun, 20 Sep 2015 21:46:35 +0000 (23:46 +0200)
committerbertys <souville@docomolab-euro.com>
Mon, 5 Oct 2015 14:26:06 +0000 (16:26 +0200)
JIRA: PROMISE-11
Added definition of resource zone (NFV IFA 010 V0.5.2)
Section 5 aligned to NFV IFA 005 V0.7.0
Added OPNFV Logo

Change-Id: I02e564d9db3846e3f2901caade65082cb4ca83ff
Signed-off-by: bertys <souville@docomolab-euro.com>
Makefile
etc/conf.py
requirements.txt
requirements/05-impl.rst
requirements/08-revision.rst
requirements/glossary.rst
requirements/images/computeflavor.png [new file with mode: 0755]
requirements/images/opnfv-logo.png [new file with mode: 0644]
requirements/index.rst

index d1a0e8a..73fa622 100644 (file)
--- 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
index 8c70b15..88fcb28 100755 (executable)
@@ -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'
 
index 6024eb7..fea41a9 100644 (file)
@@ -1,3 +1,3 @@
 sphinx
 sphinx_numfig
-sphinxcontrib-plantuml
+sphinxcontrib-httpdomain
index 9903a54..951c6d6 100644 (file)
@@ -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
 ----------------------
index 2db306d..b543fa5 100644 (file)
@@ -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          |
++---------+-----------------------------------------+
+|         |                                         |
 +---------+-----------------------------------------+
index 99b593f..1addb9c 100644 (file)
@@ -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 (executable)
index 0000000..3ea3dba
Binary files /dev/null and b/requirements/images/computeflavor.png differ
diff --git a/requirements/images/opnfv-logo.png b/requirements/images/opnfv-logo.png
new file mode 100644 (file)
index 0000000..1519503
Binary files /dev/null and b/requirements/images/opnfv-logo.png differ
index 0b4ffcb..bd5bbfb 100644 (file)
@@ -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