diff options
Diffstat (limited to 'requirements/05-impl.rst')
-rw-r--r-- | requirements/05-impl.rst | 947 |
1 files changed, 0 insertions, 947 deletions
diff --git a/requirements/05-impl.rst b/requirements/05-impl.rst deleted file mode 100644 index 951c6d6..0000000 --- a/requirements/05-impl.rst +++ /dev/null @@ -1,947 +0,0 @@ -Detailed architecture and message flows -======================================= - -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", - "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 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -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" - } - ] - - } - - **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: - - **Example request**: - - .. sourcecode:: http - - POST /capacity/network/subscribe HTTP/1.1 - Accept: application/json - - { - "resourceDescriptor": [ - { - "networkResourceTypeId": "publicIps" - } - ], - "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 - - { - "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 - } - } - -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", - "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: - - **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 -____________________________________ - -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**: - - .. 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: - -Detailed Message Flows ----------------------- - -Resource Capacity Management -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. figure:: images/figure5.png - :name: figure5 - :width: 90% - - Capacity Management Scenario - -:numref:`figure5` shows a detailed message flow between the consumers and the -functional blocks inside the VIM and has the following steps: - -Step 1: The consumer subscribes to capacity change notifications - -Step 2: The Capacity Manager monitors the capacity information for the various -types of resources by querying the various Controllers (e.g. Nova, Neutron, -Cinder), either periodically or on demand and updates capacity information in -the Capacity Map - -Step 3: Capacity changes are notified to the consumer - -Step 4: The consumer queries the Capacity Manager to retrieve capacity detailed -information - -Resource Reservation -^^^^^^^^^^^^^^^^^^^^ - -.. figure:: images/figure6.png - :name: figure6 - :width: 90% - - Resource Reservation for Future Use Scenario - -:numref:`figure6` shows a detailed message flow between the consumers and -the functional blocks inside the VIM and has the following steps: - -Step 1: The consumer creates a resource reservation request for future use by -setting a start and end time for the allocation - -Step 2: The consumer gets an immediate reply with a reservation status message -"reservationStatus" and an identifier to be used with this reservation instance -"reservationID" - -Step 3: The consumer subscribes to reservation notification events - -Step 4: The Resource Reservation Manager checks the feasibility of the -reservation request by consulting the Capacity Manager - -Step 5: The Resource Reservation Manager reserves the resources and stores the -list of reservations IDs generated by the Controllers (e.g. Nova, Neutron, -Cinder) in the Reservation Map - -Step 6: Once the reservation process is completed, the VIM sends a notification -message to the consumer with information on the reserved resources - -Step 7: When start time arrives, the consumer creates a resource allocation -request. - -Step 8: The consumer gets an immediate reply with an allocation status message -"allocationStatus". - -Step 9: The consumer subscribes to allocation notification events - -Step 10: The Resource Allocation Manager allocates the reserved resources. If -not all reserved resources are allocated before expiry, the reserved resources -are released and a notification is sent to the consumer - -Step 11: Once the allocation process is completed, the VIM sends a notification -message to the consumer with information on the allocated resources |