1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
6 Detailed northbound interface specification
7 ===========================================
10 This is Work in Progress.
12 ETSI NFV IFA Information Models
13 -------------------------------
18 A compute flavor includes information about number of virtual CPUs, size of
19 virtual memory, size of virtual storage, and virtual network interfaces
22 .. figure:: images/computeflavor.png
26 Virtualised Compute Resources
27 -----------------------------
29 Compute Capacity Management
30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
32 Subscribe Compute Capacity Change Event
33 """""""""""""""""""""""""""""""""""""""
35 Subscription from Consumer to VIM to be notified about compute capacity changes
37 .. http:post:: /capacity/compute/subscribe
44 POST /capacity/compute/subscribe HTTP/1.1
45 Accept: application/json
49 "computeResourceTypeId": "vcInstances",
51 "thresholdType" : "absoluteValue",
53 "capacity_info": "available",
65 Content-Type: application/json
68 "created": "2015-09-21T00:00:00Z",
69 "capacityChangeSubscriptionId": "abcdef-ghijkl-123456789"
72 :statuscode 400: computeResourceTypeId is missing
74 Query Compute Capacity for a defined resource type
75 """"""""""""""""""""""""""""""""""""""""""""""""""
77 Request to find out about available, reserved, total and allocated compute
80 .. http:get:: /capacity/compute/query
87 GET /capacity/compute/query HTTP/1.1
88 Accept: application/json
92 "computeResourceTypeId": "vcInstances",
94 "startTime": "2015-09-21T00:00:00Z",
95 "stopTime": "2015-09-21T00:05:30Z"
104 Content-Type: application/json
108 "lastUpdate": "2015-09-21T00:03:20Z",
109 "capacityInformation": {
117 :query limit: Default is 10.
118 :statuscode 404: resource zone unknown
121 Query Compute Capacity with required attributes
122 """""""""""""""""""""""""""""""""""""""""""""""
123 Request to find out available compute capacity with given characteristics
125 .. http:get:: /capacity/compute/query
132 GET /capacity/compute/query HTTP/1.1
133 Accept: application/json
137 "resourceCriteria": {
139 "cpuArchitecture": "x86",
143 "attributeSelector": "available",
145 "startTime": "2015-09-21T00:00:00Z",
146 "stopTime": "2015-09-21T00:05:30Z"
150 **Example response**:
155 Content-Type: application/json
159 "lastUpdate": "2015-09-21T00:03:20Z",
160 "capacityInformation": {
165 :query limit: Default is 10.
166 :statuscode 404: resource zone unknown
168 Notify Compute Capacity Change Event
169 """"""""""""""""""""""""""""""""""""
171 Notification about compute capacity changes
173 .. http:post:: /capacity/compute/notification
176 **Example notification**:
180 Content-Type: application/json
184 "notificationId": "zyxwvu-tsrqpo-987654321",
185 "capacityChangeTime": "2015-09-21T00:03:20Z",
186 "resourceDescriptor": {
187 "computeResourceTypeId": "vcInstances"
189 "capacityInformation": {
197 Compute Resource Reservation
198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
200 Create Compute Resource Reservation
201 """""""""""""""""""""""""""""""""""
203 Request the reservation of compute resource capacity
205 .. http:post:: /reservation/compute/create
212 POST /reservation/compute/create HTTP/1.1
213 Accept: application/json
216 "startTime": "2015-09-21T01:00:00Z",
217 "computePoolReservation": {
224 **Example response**:
229 Content-Type: application/json
233 "startTime": "2015-09-21T01:00:00Z",
234 "reservationStatus": "initialized",
235 "reservationId": "xxxx-yyyy-zzzz",
236 "computePoolReserved": {
239 "virtualMemSize": 10,
245 or virtualization containers
247 .. http:post:: reservation/compute/create
254 POST /reservation/compute/create HTTP/1.1
255 Accept: application/json
258 "startTime": "2015-10-05T15:00:00Z",
259 "virtualizationContainerReservation": [
261 "containerId": "myContainer",
263 "flavorId": "myFlavor",
266 "cpuArchitecture": "x86"
269 "numaEnabled": "False",
272 "storageAttributes": {
273 "typeOfStorage": "volume",
281 **Example response**:
286 Content-Type: application/json
290 "startTime": "2015-10-05T15:00:00Z",
291 "reservationId": "aaaa-bbbb-cccc",
292 "reservationStatus": "initialized",
293 "virtualizationContainerReserved": [
295 "containerId": "myContainer",
296 "flavorId": "myFlavor",
299 "cpuArchitecture": "x86"
302 "numaEnabled": "False",
306 "storageId": "myStorage",
307 "flavourId": "myStorageFlavour",
308 "typeOfStorage": "volume",
310 "operationalState": "enabled"
319 Query Compute Resource Reservation
320 """"""""""""""""""""""""""""""""""
322 Request to find out about reserved compute resources that the consumer has
325 .. http:get:: /reservation/compute/query
332 GET /reservation/compute/query HTTP/1.1
333 Accept: application/json
336 "queryReservationFilter": [
338 "reservationId": "xxxx-yyyy-zzzz"
344 **Example response**:
349 Content-Type: application/json
354 "startTime": "2015-09-21T01:00:00Z",
355 "reservationStatus": "active",
356 "reservationId": "xxxx-yyyy-zzzz",
357 "computePoolReserved":
361 "virtualMemSize": 10,
367 :statuscode 404: reservation id unknown
369 Update Compute Resource Reservation
370 """""""""""""""""""""""""""""""""""
372 Request to update compute resource reservation
374 .. http:post:: /reservation/compute/update
381 POST /reservation/compute/update HTTP/1.1
382 Accept: application/json
385 "startTime": "2015-09-14T16:00:00Z",
386 "reservationId": "xxxx-yyyy-zzzz"
389 **Example response**:
394 Content-Type: application/json
398 "startTime": "2015-09-14TT16:00:00Z",
399 "reservationStatus": "active",
400 "reservationId": "xxxx-yyyy-zzzz",
401 "computePoolReserved": {
404 "virtualMemSize": 10,
410 Terminate Compute Resource Reservation
411 """"""""""""""""""""""""""""""""""""""
413 Request to terminate a compute resource reservation
415 .. http:delete:: /reservation/compute/(reservation_id)
418 **Example response**:
423 Content-Type: application/json
426 "reservationId": "xxxx-yyyy-zzzz",
430 Subscribe Resource Reservation Change Event
431 """""""""""""""""""""""""""""""""""""""""""
433 Subscription from Consumer to VIM to be notified about changes
434 related to a reservation or to the resources associated to it.
436 .. http:post:: /reservation/subscribe
443 POST /reservation/subscribe HTTP/1.1
444 Accept: application/json
449 "reservationId": "xxxx-yyyy-zzzz",
454 **Example response**:
459 Content-Type: application/json
462 "created": "2015-09-21T00:00:00Z",
463 "reservationChangeSubscriptionId": "abcdef-ghijkl-123456789"
466 :statuscode 400: inputFilter is missing
469 Notify Resource Reservation Change Event
470 """"""""""""""""""""""""""""""""""""""""
472 Notification about changes in a compute resource reservation
474 .. http:post:: /capacity/compute/notification
477 **Example notification**:
481 Content-Type: application/json
484 "changeId": "aaaaaa-btgxxx-987654321",
485 "reservationId": "xxxx-yyyy-zzzz",
487 "changeType": "Reservation time change"
488 "changedReservationData": {
489 "endTime": "2015-10-14TT16:00:00Z",
495 Virtualised Network Resources
496 -----------------------------
498 Network Capacity Management
499 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
501 Subscribe Network Capacity Change Event
502 """""""""""""""""""""""""""""""""""""""
504 Susbcription from Consumer to VIM to be notified about network capacity changes
506 .. http:post:: /capacity/network/subscribe
513 POST /capacity/network/subscribe HTTP/1.1
514 Accept: application/json
517 "networkResourceTypeId": "publicIps",
519 "thresholdType": "absoluteValue",
521 "capacity_info": "available",
528 **Example response**:
533 Content-Type: application/json
536 "created": "2015-09-28T00:00:00Z",
537 "capacityChangeSubscriptionId": "bcdefg-hijklm-234567890"
540 Query Network Capacity
541 """"""""""""""""""""""
543 Request to find out about available, reserved, total and allocated network
546 .. http:get:: /capacity/network/query
553 GET /capacity/network/query HTTP/1.1
554 Accept: application/json
557 "networkResourceTypeId": "publicIps",
559 "startTime": "2015-09-28T00:00:00Z",
560 "stopTime": "2015-09-28T00:05:30Z"
564 **Example response**:
569 Content-Type: application/json
572 "lastUpdate": "2015-09-28T00:02:10Z",
573 "capacityInformation": {
581 Notify Network Capacity Change Event
582 """"""""""""""""""""""""""""""""""""
584 Notification about network capacity changes
586 .. http:post:: /capacity/network/notification
589 **Example notification**:
593 Content-Type: application/json
596 "notificationId": "yxwvut-srqpon-876543210",
597 "capacityChangeTime": "2015-09-28T00:02:10Z",
598 "resourceDescriptor": {
599 "networkResourceTypeId": "publicIps"
601 "capacityInformation": {
609 Network Resource Reservation
610 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
612 Create Network Resource Reservation
613 """""""""""""""""""""""""""""""""""
615 Request the reservation of network resource capacity and/or virtual networks,
618 .. http:post:: /reservation/network/create
625 POST /reservation/network/create HTTP/1.1
626 Accept: application/json
629 "startTime": "2015-09-28T01:00:00Z",
630 "networkReservation": {
635 **Example response**:
640 Content-Type: application/json
644 "startTime": "2015-09-28T01:00:00Z",
645 "reservationStatus": "initialized",
646 "reservationId": "wwww-xxxx-yyyy",
654 Query Network Resource Reservation
655 """"""""""""""""""""""""""""""""""
657 Request to find out about reserved network resources that the consumer has
660 .. http:get:: /reservation/network/query
667 GET /reservation/network/query HTTP/1.1
668 Accept: application/json
671 "queryReservationFilter": [
673 "reservationId": "wwww-xxxx-yyyy"
678 **Example response**:
683 Content-Type: application/json
687 "startTime": "2015-09-28T01:00:00Z",
688 "reservationStatus": "active",
689 "reservationId": "wwww-xxxx-yyyy",
697 Update Network Resource Reservation
698 """""""""""""""""""""""""""""""""""
700 Request to update network resource reservation
702 .. http:post:: /reservation/network/update
709 POST /reservation/network/update HTTP/1.1
710 Accept: application/json
713 "startTime": "2015-09-21T16:00:00Z",
714 "reservationId": "wwww-xxxx-yyyy"
717 **Example response**:
722 Content-Type: application/json
726 "startTime": "2015-09-21T16:00:00Z",
727 "reservationStatus": "active",
728 "reservationId": "wwww-xxxx-yyyy",
736 Terminate Network Resource Reservation
737 """"""""""""""""""""""""""""""""""""""
739 Request to terminate a network resource reservation
741 .. http:delete:: /reservation/network/(reservation_id)
744 **Example response**:
749 Content-Type: application/json
752 "reservationId": "xxxx-yyyy-zzzz",
755 Virtualised Storage Resources
756 -----------------------------
758 Storage Capacity Management
759 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
761 Subscribe Storage Capacity Change Event
762 """""""""""""""""""""""""""""""""""""""
764 Subscription from Consumer to VIM to be notified about storage capacity changes
766 .. http:post:: /capacity/storage/subscribe
773 POST /capacity/storage/subscribe HTTP/1.1
774 Accept: application/json
777 "storageResourceTypeId": "volumes",
779 "thresholdType": "absoluteValue",
781 "capacity_info": "available",
788 **Example response**:
793 Content-Type: application/json
796 "created": "2015-09-28T12:00:00Z",
797 "capacityChangeSubscriptionId": "cdefgh-ijklmn-345678901"
800 Query Storage Capacity for a defined resource type
801 """"""""""""""""""""""""""""""""""""""""""""""""""
803 Request to find out about available, reserved, total and allocated storage
806 .. http:get:: /capacity/storage/query
813 GET /capacity/storage/query HTTP/1.1
814 Accept: application/json
817 "storageResourceTypeId": "volumes",
819 "startTime": "2015-09-28T12:00:00Z",
820 "stopTime": "2015-09-28T12:04:45Z"
824 **Example response**:
829 Content-Type: application/json
832 "lastUpdate": "2015-09-28T12:01:35Z",
833 "capacityInformation": {
841 Query Storage Capacity with required attributes
842 """""""""""""""""""""""""""""""""""""""""""""""
844 Request to find out available capacity.
846 .. http:get:: /capacity/storage/query
853 GET /capacity/storage/query HTTP/1.1
854 Accept: application/json
857 "resourceCriteria": {
858 "typeOfStorage" : "volume",
859 "sizeOfStorage" : 200,
860 "rdmaSupported" : "True",
862 "attributeSelector": "available",
864 "startTime": "2015-09-28T12:00:00Z",
865 "stopTime": "2015-09-28T12:04:45Z"
869 **Example response**:
874 Content-Type: application/json
877 "lastUpdate": "2015-09-28T12:01:35Z",
878 "capacityInformation": {
883 Notify Storage Capacity Change Event
884 """"""""""""""""""""""""""""""""""""
886 Notification about storage capacity changes
888 .. http:post:: /capacity/storage/notification
891 **Example notification**:
895 Content-Type: application/json
898 "notificationId": "xwvuts-rqponm-765432109",
899 "capacityChangeTime": "2015-09-28T12:01:35Z",
900 "resourceDescriptor": {
901 "storageResourceTypeId": "volumes"
903 "capacityInformation": {
911 Storage Resource Reservation
912 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
914 Create Storage Resource Reservation
915 """""""""""""""""""""""""""""""""""
917 Request the reservation of storage resource capacity
919 .. http:post:: /reservation/storage/create
926 POST /reservation/storage/create HTTP/1.1
927 Accept: application/json
930 "startTime": "2015-09-28T13:00:00Z",
931 "storagePoolReservation": {
938 **Example response**:
943 Content-Type: application/json
947 "startTime": "2015-09-28T13:00:00Z",
948 "reservationStatus": "initialized",
949 "reservationId": "vvvv-wwww-xxxx",
950 "storagePoolReserved": {
958 Query Storage Resource Reservation
959 """"""""""""""""""""""""""""""""""
961 Request to find out about reserved storage resources that the consumer has
964 .. http:get:: /reservation/storage/query
971 GET /reservation/storage/query HTTP/1.1
972 Accept: application/json
975 "queryReservationFilter": [
977 "reservationId": "vvvv-wwww-xxxx"
982 **Example response**:
987 Content-Type: application/json
991 "startTime": "2015-09-28T13:00:00Z",
992 "reservationStatus": "active",
993 "reservationId": "vvvv-wwww-xxxx",
994 "storagePoolReserved": {
1002 Update Storage Resource Reservation
1003 """""""""""""""""""""""""""""""""""
1005 Request to update storage resource reservation
1007 .. http:post:: /reservation/storage/update
1010 **Example request**:
1012 .. sourcecode:: http
1014 POST /reservation/storage/update HTTP/1.1
1015 Accept: application/json
1019 "startTime": "2015-09-20T23:00:00Z",
1020 "reservationId": "vvvv-wwww-xxxx"
1024 **Example response**:
1026 .. sourcecode:: http
1028 HTTP/1.1 201 CREATED
1029 Content-Type: application/json
1032 "reservationData": {
1033 "startTime": "2015-09-20T23:00:00Z",
1034 "reservationStatus": "active",
1035 "reservationId": "vvvv-wwww-xxxx",
1036 "storagePoolReserved": {
1044 Terminate Storage Resource Reservation
1045 """"""""""""""""""""""""""""""""""""""
1047 Request to terminate a storage resource reservation
1049 .. http:delete:: /reservation/storage/(reservation_id)
1052 **Example response**:
1054 .. sourcecode:: http
1057 Content-Type: application/json
1060 "reservationId": "xxxx-yyyy-zzzz",