8dba601924484911f1e8367470b25d9448123f84
[promise.git] / docs / requirements / NB_interface.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3
4 .. _northbound_API:
5
6 Detailed northbound interface specification
7 ===========================================
8
9 .. Note::
10    This is Work in Progress.
11
12 ETSI NFV IFA Information Models
13 -------------------------------
14
15 Compute Flavor
16 ^^^^^^^^^^^^^^
17
18 A compute flavor includes information about number of virtual CPUs, size of
19 virtual memory, size of virtual storage, and virtual network interfaces
20 [NFVIFA005]_.
21
22 .. figure:: images/computeflavor.png
23    :name: computeflavor
24    :width: 90%
25
26 Virtualised Compute Resources
27 -----------------------------
28
29 Compute Capacity Management
30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
31
32 Subscribe Compute Capacity Change Event
33 """""""""""""""""""""""""""""""""""""""
34
35 Subscription from Consumer to VIM to be notified about compute capacity changes
36
37 .. http:post:: /capacity/compute/subscribe
38    :noindex:
39
40    **Example request**:
41
42    .. sourcecode:: http
43
44        POST /capacity/compute/subscribe HTTP/1.1
45        Accept: application/json
46
47        {
48           "zoneId": "12345",
49           "computeResourceTypeId": "vcInstances",
50           "threshold": {
51              "thresholdType" : "absoluteValue",
52              "threshold": {
53                  "capacity_info": "available",
54                  "condition": "lt",
55                  "value": 5
56              }
57           }
58        }
59
60    **Example response**:
61
62    .. sourcecode:: http
63
64        HTTP/1.1 201 CREATED
65        Content-Type: application/json
66
67        {
68           "created": "2015-09-21T00:00:00Z",
69           "capacityChangeSubscriptionId": "abcdef-ghijkl-123456789"
70        }
71
72    :statuscode 400: computeResourceTypeId is missing
73
74 Query Compute Capacity for a defined resource type
75 """"""""""""""""""""""""""""""""""""""""""""""""""
76
77 Request to find out about available, reserved, total and allocated compute
78 capacity.
79
80 .. http:get:: /capacity/compute/query
81    :noindex:
82
83    **Example request**:
84
85    .. sourcecode:: http
86
87       GET /capacity/compute/query HTTP/1.1
88       Accept: application/json
89
90       {
91         "zoneId": "12345",
92         "computeResourceTypeId": "vcInstances",
93         "timePeriod":  {
94              "startTime": "2015-09-21T00:00:00Z",
95              "stopTime": "2015-09-21T00:05:30Z"
96         }
97       }
98
99    **Example response**:
100
101    .. sourcecode:: http
102
103        HTTP/1.1 200 OK
104        Content-Type: application/json
105
106        {
107           "zoneId": "12345",
108           "lastUpdate": "2015-09-21T00:03:20Z",
109           "capacityInformation": {
110              "available": 4,
111              "reserved": 17,
112              "total": 50,
113              "allocated": 29
114           }
115        }
116
117    :query limit: Default is 10.
118    :statuscode 404: resource zone unknown
119
120
121 Query Compute Capacity with required attributes
122 """""""""""""""""""""""""""""""""""""""""""""""
123 Request to find out available compute capacity with given characteristics
124
125 .. http:get:: /capacity/compute/query
126    :noindex:
127
128    **Example request**:
129
130    .. sourcecode:: http
131
132       GET /capacity/compute/query HTTP/1.1
133       Accept: application/json
134
135       {
136         "zoneId": "12345",
137         "resourceCriteria":  {
138              "virtualCPU": {
139                  "cpuArchitecture": "x86",
140                  "numVirtualCpu": 8
141              }
142         },
143         "attributeSelector":  "available",
144         "timePeriod":  {
145              "startTime": "2015-09-21T00:00:00Z",
146              "stopTime": "2015-09-21T00:05:30Z"
147         }
148       }
149
150    **Example response**:
151
152    .. sourcecode:: http
153
154        HTTP/1.1 200 OK
155        Content-Type: application/json
156
157        {
158           "zoneId": "12345",
159           "lastUpdate": "2015-09-21T00:03:20Z",
160           "capacityInformation": {
161              "available": 50
162           }
163        }
164
165    :query limit: Default is 10.
166    :statuscode 404: resource zone unknown
167
168 Notify Compute Capacity Change Event
169 """"""""""""""""""""""""""""""""""""
170
171 Notification about compute capacity changes
172
173 .. http:post:: /capacity/compute/notification
174    :noindex:
175
176    **Example notification**:
177
178    .. sourcecode:: http
179
180       Content-Type: application/json
181
182       {
183            "zoneId": "12345",
184            "notificationId": "zyxwvu-tsrqpo-987654321",
185            "capacityChangeTime": "2015-09-21T00:03:20Z",
186            "resourceDescriptor": {
187               "computeResourceTypeId": "vcInstances"
188            },
189            "capacityInformation": {
190               "available": 4,
191               "reserved": 17,
192               "total": 50,
193               "allocated": 29
194            }
195       }
196
197 Compute Resource Reservation
198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
199
200 Create Compute Resource Reservation
201 """""""""""""""""""""""""""""""""""
202
203 Request the reservation of compute resource capacity
204
205 .. http:post:: /reservation/compute/create
206    :noindex:
207
208    **Example request**:
209
210    .. sourcecode:: http
211
212        POST /reservation/compute/create HTTP/1.1
213        Accept: application/json
214
215        {
216            "startTime": "2015-09-21T01:00:00Z",
217            "computePoolReservation": {
218                "numCpuCores": 20,
219                "numVcInstances": 5,
220                "virtualMemSize": 10
221            }
222        }
223
224    **Example response**:
225
226    .. sourcecode:: http
227
228        HTTP/1.1 201 CREATED
229        Content-Type: application/json
230
231        {
232           "reservationData": {
233              "startTime": "2015-09-21T01:00:00Z",
234              "reservationStatus": "initialized",
235              "reservationId": "xxxx-yyyy-zzzz",
236              "computePoolReserved": {
237                  "numCpuCores": 20,
238                  "numVcInstances": 5,
239                  "virtualMemSize": 10,
240                  "zoneId": "23456"
241              }
242           }
243        }
244
245 or virtualization containers
246
247 .. http:post:: reservation/compute/create
248    :noindex:
249
250    **Example request**:
251
252    .. sourcecode:: http
253
254        POST /reservation/compute/create HTTP/1.1
255        Accept: application/json
256
257        {
258          "startTime": "2015-10-05T15:00:00Z",
259          "virtualizationContainerReservation": [
260            {
261               "containerId": "myContainer",
262               "containerFlavor": {
263                  "flavorId": "myFlavor",
264                  "virtualCpu": {
265                     "numVirtualCpu": 2,
266                     "cpuArchitecture": "x86"
267                  },
268                  "virtualMemory": {
269                      "numaEnabled": "False",
270                      "virtualMemSize": 16
271                  },
272                  "storageAttributes": {
273                      "typeOfStorage": "volume",
274                      "sizeOfStorage": 16
275                  }
276               }
277            }
278          ]
279        }
280
281    **Example response**:
282
283    .. sourcecode:: http
284
285        HTTP/1.1 201 CREATED
286        Content-Type: application/json
287
288        {
289           "reservationData": {
290              "startTime": "2015-10-05T15:00:00Z",
291              "reservationId": "aaaa-bbbb-cccc",
292              "reservationStatus": "initialized",
293              "virtualizationContainerReserved": [
294                  {
295                     "containerId": "myContainer",
296                     "flavorId": "myFlavor",
297                     "virtualCpu": {
298                         "numVirtualCpu": 2,
299                         "cpuArchitecture": "x86"
300                     },
301                     "virtualMemory": {
302                         "numaEnabled": "False",
303                         "virtualMemSize": 16
304                     },
305                     "virtualDisks": {
306                         "storageId": "myStorage",
307                         "flavourId": "myStorageFlavour",
308                         "typeOfStorage": "volume",
309                         "sizeOfStorage": 16,
310                         "operationalState": "enabled"
311                     }
312                  }
313              ]
314           }
315        }
316
317
318
319 Query Compute Resource Reservation
320 """"""""""""""""""""""""""""""""""
321
322 Request to find out about reserved compute resources that the consumer has
323 access to.
324
325 .. http:get:: /reservation/compute/query
326    :noindex:
327
328    **Example request**:
329
330    .. sourcecode:: http
331
332       GET /reservation/compute/query HTTP/1.1
333       Accept: application/json
334
335       {
336          "queryReservationFilter": [
337              {
338                  "reservationId": "xxxx-yyyy-zzzz"
339              }
340          ]
341
342       }
343
344    **Example response**:
345
346    .. sourcecode:: http
347
348        HTTP/1.1 200 OK
349        Content-Type: application/json
350
351        {
352           "queryResult":
353           {
354              "startTime": "2015-09-21T01:00:00Z",
355              "reservationStatus": "active",
356              "reservationId": "xxxx-yyyy-zzzz",
357              "computePoolReserved":
358              {
359                  "numCpuCores": 20,
360                  "numVcInstances": 5,
361                  "virtualMemSize": 10,
362                  "zoneId": "23456"
363              }
364           }
365        }
366
367    :statuscode 404: reservation id unknown
368
369 Update Compute Resource Reservation
370 """""""""""""""""""""""""""""""""""
371
372 Request to update compute resource reservation
373
374 .. http:post:: /reservation/compute/update
375    :noindex:
376
377    **Example request**:
378
379    .. sourcecode:: http
380
381        POST /reservation/compute/update HTTP/1.1
382        Accept: application/json
383
384        {
385            "startTime": "2015-09-14T16:00:00Z",
386            "reservationId": "xxxx-yyyy-zzzz"
387        }
388
389    **Example response**:
390
391    .. sourcecode:: http
392
393        HTTP/1.1 201 CREATED
394        Content-Type: application/json
395
396        {
397          "reservationData": {
398              "startTime": "2015-09-14TT16:00:00Z",
399              "reservationStatus": "active",
400              "reservationId": "xxxx-yyyy-zzzz",
401              "computePoolReserved": {
402                  "numCpuCores": 20,
403                  "numVcInstances": 5,
404                  "virtualMemSize": 10,
405                  "zoneId": "23456"
406              }
407           }
408        }
409
410 Terminate Compute Resource Reservation
411 """"""""""""""""""""""""""""""""""""""
412
413 Request to terminate a compute resource reservation
414
415 .. http:delete:: /reservation/compute/(reservation_id)
416    :noindex:
417
418    **Example response**:
419
420    .. sourcecode:: http
421
422        HTTP/1.1 200
423        Content-Type: application/json
424
425        {
426           "reservationId": "xxxx-yyyy-zzzz",
427        }
428
429
430 Subscribe Resource Reservation Change Event
431 """""""""""""""""""""""""""""""""""""""""""
432
433 Subscription from Consumer to VIM to be notified about changes
434 related to a reservation or to the resources associated to it.
435
436 .. http:post:: /reservation/subscribe
437    :noindex:
438
439    **Example request**:
440
441    .. sourcecode:: http
442
443        POST /reservation/subscribe HTTP/1.1
444        Accept: application/json
445
446        {
447           "inputFilter": [
448               {
449                  "reservationId": "xxxx-yyyy-zzzz",
450               }
451           ]
452       }
453
454    **Example response**:
455
456    .. sourcecode:: http
457
458        HTTP/1.1 201 CREATED
459        Content-Type: application/json
460
461        {
462           "created": "2015-09-21T00:00:00Z",
463           "reservationChangeSubscriptionId": "abcdef-ghijkl-123456789"
464        }
465
466    :statuscode 400: inputFilter is missing
467
468
469 Notify Resource Reservation Change Event
470 """"""""""""""""""""""""""""""""""""""""
471
472 Notification about changes in a compute resource reservation
473
474 .. http:post:: /capacity/compute/notification
475    :noindex:
476
477    **Example notification**:
478
479    .. sourcecode:: http
480
481       Content-Type: application/json
482
483       {
484            "changeId": "aaaaaa-btgxxx-987654321",
485            "reservationId": "xxxx-yyyy-zzzz",
486            "vimId": "vim-CX-03"
487            "changeType": "Reservation time change"
488            "changedReservationData": {
489               "endTime": "2015-10-14TT16:00:00Z",
490            }
491       }
492
493
494
495 Virtualised Network Resources
496 -----------------------------
497
498 Network Capacity Management
499 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
500
501 Subscribe Network Capacity Change Event
502 """""""""""""""""""""""""""""""""""""""
503
504 Susbcription from Consumer to VIM to be notified about network capacity changes
505
506 .. http:post:: /capacity/network/subscribe
507     :noindex:
508
509     **Example request**:
510
511     .. sourcecode:: http
512
513         POST /capacity/network/subscribe HTTP/1.1
514         Accept: application/json
515
516         {
517             "networkResourceTypeId": "publicIps",
518             "threshold": {
519                "thresholdType": "absoluteValue",
520                "threshold": {
521                    "capacity_info": "available",
522                    "condition": "lt",
523                    "value": 5
524                }
525             }
526         }
527
528     **Example response**:
529
530     .. sourcecode:: http
531
532         HTTP/1.1 201 CREATED
533         Content-Type: application/json
534
535         {
536            "created": "2015-09-28T00:00:00Z",
537            "capacityChangeSubscriptionId": "bcdefg-hijklm-234567890"
538         }
539
540 Query Network Capacity
541 """"""""""""""""""""""
542
543 Request to find out about available, reserved, total and allocated network
544 capacity.
545
546 .. http:get:: /capacity/network/query
547     :noindex:
548
549     **Example request**:
550
551     .. sourcecode:: http
552
553         GET /capacity/network/query HTTP/1.1
554         Accept: application/json
555
556         {
557             "networkResourceTypeId": "publicIps",
558             "timePeriod":  {
559                 "startTime": "2015-09-28T00:00:00Z",
560                 "stopTime": "2015-09-28T00:05:30Z"
561             }
562         }
563
564     **Example response**:
565
566     .. sourcecode:: http
567
568         HTTP/1.1 200 OK
569         Content-Type: application/json
570
571         {
572             "lastUpdate": "2015-09-28T00:02:10Z",
573             "capacityInformation": {
574                 "available": 4,
575                 "reserved": 10,
576                 "total": 64,
577                 "allocated": 50
578             }
579         }
580
581 Notify Network Capacity Change Event
582 """"""""""""""""""""""""""""""""""""
583
584 Notification about network capacity changes
585
586 .. http:post:: /capacity/network/notification
587     :noindex:
588
589     **Example notification**:
590
591     .. sourcecode:: http
592
593         Content-Type: application/json
594
595         {
596             "notificationId": "yxwvut-srqpon-876543210",
597             "capacityChangeTime": "2015-09-28T00:02:10Z",
598             "resourceDescriptor": {
599                 "networkResourceTypeId": "publicIps"
600             },
601             "capacityInformation": {
602                 "available": 4,
603                 "reserved": 10,
604                 "total": 64,
605                 "allocated": 50
606             }
607         }
608
609 Network Resource Reservation
610 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
611
612 Create Network Resource Reservation
613 """""""""""""""""""""""""""""""""""
614
615 Request the reservation of network resource capacity and/or virtual networks,
616 network ports
617
618 .. http:post:: /reservation/network/create
619     :noindex:
620
621     **Example request**:
622
623     .. sourcecode:: http
624
625         POST /reservation/network/create HTTP/1.1
626         Accept: application/json
627
628         {
629             "startTime": "2015-09-28T01:00:00Z",
630             "networkReservation": {
631                 "numPublicIps": 2
632             }
633         }
634
635     **Example response**:
636
637     .. sourcecode:: http
638
639         HTTP/1.1 201 CREATED
640         Content-Type: application/json
641
642         {
643             "reservationData": {
644                 "startTime": "2015-09-28T01:00:00Z",
645                 "reservationStatus": "initialized",
646                 "reservationId": "wwww-xxxx-yyyy",
647                 "publicIps": [
648                     "10.2.91.60",
649                     "10.2.91.61"
650                 ]
651             }
652         }
653
654 Query Network Resource Reservation
655 """"""""""""""""""""""""""""""""""
656
657 Request to find out about reserved network resources that the consumer has
658 access to.
659
660 .. http:get:: /reservation/network/query
661     :noindex:
662
663     **Example request**:
664
665     .. sourcecode:: http
666
667         GET /reservation/network/query HTTP/1.1
668         Accept: application/json
669
670         {
671             "queryReservationFilter": [
672                 {
673                     "reservationId": "wwww-xxxx-yyyy"
674                 }
675             ]
676         }
677
678     **Example response**:
679
680     .. sourcecode:: http
681
682        HTTP/1.1 200 OK
683        Content-Type: application/json
684
685        {
686            "queryResult": {
687                "startTime": "2015-09-28T01:00:00Z",
688                "reservationStatus": "active",
689                "reservationId": "wwww-xxxx-yyyy",
690                "publicIps": [
691                    "10.2.91.60",
692                    "10.2.91.61"
693                ]
694            }
695        }
696
697 Update Network Resource Reservation
698 """""""""""""""""""""""""""""""""""
699
700 Request to update network resource reservation
701
702 .. http:post:: /reservation/network/update
703     :noindex:
704
705     **Example request**:
706
707     .. sourcecode:: http
708
709          POST /reservation/network/update HTTP/1.1
710          Accept: application/json
711
712          {
713              "startTime": "2015-09-21T16:00:00Z",
714              "reservationId": "wwww-xxxx-yyyy"
715          }
716
717     **Example response**:
718
719     .. sourcecode:: http
720
721         HTTP/1.1 201 CREATED
722         Content-Type: application/json
723
724         {
725             "reservationData": {
726                 "startTime": "2015-09-21T16:00:00Z",
727                 "reservationStatus": "active",
728                 "reservationId": "wwww-xxxx-yyyy",
729                 "publicIps": [
730                    "10.2.91.60",
731                    "10.2.91.61"
732                 ]
733             }
734         }
735
736 Terminate Network Resource Reservation
737 """"""""""""""""""""""""""""""""""""""
738
739 Request to terminate a network resource reservation
740
741 .. http:delete:: /reservation/network/(reservation_id)
742    :noindex:
743
744    **Example response**:
745
746    .. sourcecode:: http
747
748        HTTP/1.1 200
749        Content-Type: application/json
750
751        {
752           "reservationId": "xxxx-yyyy-zzzz",
753        }
754
755 Virtualised Storage Resources
756 -----------------------------
757
758 Storage Capacity Management
759 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
760
761 Subscribe Storage Capacity Change Event
762 """""""""""""""""""""""""""""""""""""""
763
764 Subscription from Consumer to VIM to be notified about storage capacity changes
765
766 .. http:post:: /capacity/storage/subscribe
767     :noindex:
768
769     **Example request**:
770
771     .. sourcecode:: http
772
773         POST /capacity/storage/subscribe HTTP/1.1
774         Accept: application/json
775
776         {
777            "storageResourceTypeId": "volumes",
778            "threshold": {
779               "thresholdType": "absoluteValue",
780               "threshold": {
781                   "capacity_info": "available",
782                   "condition": "lt",
783                   "value": 3
784                }
785            }
786         }
787
788     **Example response**:
789
790     .. sourcecode:: http
791
792         HTTP/1.1 201 CREATED
793         Content-Type: application/json
794
795         {
796             "created": "2015-09-28T12:00:00Z",
797             "capacityChangeSubscriptionId": "cdefgh-ijklmn-345678901"
798         }
799
800 Query Storage Capacity for a defined resource type
801 """"""""""""""""""""""""""""""""""""""""""""""""""
802
803 Request to find out about available, reserved, total and allocated storage
804 capacity.
805
806 .. http:get:: /capacity/storage/query
807     :noindex:
808
809     **Example request**:
810
811     .. sourcecode:: http
812
813         GET /capacity/storage/query HTTP/1.1
814         Accept: application/json
815
816         {
817             "storageResourceTypeId": "volumes",
818             "timePeriod":  {
819                 "startTime": "2015-09-28T12:00:00Z",
820                 "stopTime": "2015-09-28T12:04:45Z"
821             }
822         }
823
824     **Example response**:
825
826     .. sourcecode:: http
827
828        HTTP/1.1 200 OK
829        Content-Type: application/json
830
831        {
832            "lastUpdate": "2015-09-28T12:01:35Z",
833            "capacityInformation": {
834                "available": 2,
835                "reserved": 4,
836                "total": 10,
837                "allocated": 4
838            }
839        }
840
841 Query Storage Capacity with required attributes
842 """""""""""""""""""""""""""""""""""""""""""""""
843
844 Request to find out available capacity.
845
846 .. http:get:: /capacity/storage/query
847     :noindex:
848
849     **Example request**:
850
851     .. sourcecode:: http
852
853         GET /capacity/storage/query HTTP/1.1
854         Accept: application/json
855
856         {
857             "resourceCriteria": {
858                 "typeOfStorage" : "volume",
859                 "sizeOfStorage" : 200,
860                 "rdmaSupported" : "True",
861             },
862             "attributeSelector": "available",
863             "timePeriod":  {
864                 "startTime": "2015-09-28T12:00:00Z",
865                 "stopTime": "2015-09-28T12:04:45Z"
866             }
867         }
868
869     **Example response**:
870
871     .. sourcecode:: http
872
873        HTTP/1.1 200 OK
874        Content-Type: application/json
875
876        {
877            "lastUpdate": "2015-09-28T12:01:35Z",
878            "capacityInformation": {
879                "available": 2
880            }
881        }
882
883 Notify Storage Capacity Change Event
884 """"""""""""""""""""""""""""""""""""
885
886 Notification about storage capacity changes
887
888 .. http:post:: /capacity/storage/notification
889     :noindex:
890
891     **Example notification**:
892
893     .. sourcecode:: http
894
895         Content-Type: application/json
896
897         {
898             "notificationId": "xwvuts-rqponm-765432109",
899             "capacityChangeTime": "2015-09-28T12:01:35Z",
900             "resourceDescriptor": {
901                 "storageResourceTypeId": "volumes"
902             },
903             "capacityInformation": {
904                 "available": 2,
905                 "reserved": 4,
906                 "total": 10,
907                 "allocated": 4
908             }
909        }
910
911 Storage Resource Reservation
912 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
913
914 Create Storage Resource Reservation
915 """""""""""""""""""""""""""""""""""
916
917 Request the reservation of storage resource capacity
918
919 .. http:post:: /reservation/storage/create
920     :noindex:
921
922     **Example request**:
923
924     .. sourcecode:: http
925
926         POST /reservation/storage/create HTTP/1.1
927         Accept: application/json
928
929         {
930             "startTime": "2015-09-28T13:00:00Z",
931             "storagePoolReservation": {
932                 "storageSize": 10,
933                 "numSnapshots": 3,
934                 "numVolumes": 2
935             }
936         }
937
938     **Example response**:
939
940     .. sourcecode:: http
941
942         HTTP/1.1 201 CREATED
943         Content-Type: application/json
944
945         {
946             "reservationData": {
947                 "startTime": "2015-09-28T13:00:00Z",
948                 "reservationStatus": "initialized",
949                 "reservationId": "vvvv-wwww-xxxx",
950                 "storagePoolReserved": {
951                     "storageSize": 10,
952                     "numSnapshots": 3,
953                     "numVolumes": 2
954                 }
955             }
956         }
957
958 Query Storage Resource Reservation
959 """"""""""""""""""""""""""""""""""
960
961 Request to find out about reserved storage resources that the consumer has
962 access to.
963
964 .. http:get:: /reservation/storage/query
965     :noindex:
966
967     **Example request**:
968
969     .. sourcecode:: http
970
971         GET /reservation/storage/query HTTP/1.1
972         Accept: application/json
973
974         {
975             "queryReservationFilter": [
976                 {
977                     "reservationId": "vvvv-wwww-xxxx"
978                 }
979             ]
980         }
981
982     **Example response**:
983
984     .. sourcecode:: http
985
986         HTTP/1.1 200 OK
987         Content-Type: application/json
988
989         {
990             "queryResult": {
991                 "startTime": "2015-09-28T13:00:00Z",
992                 "reservationStatus": "active",
993                 "reservationId": "vvvv-wwww-xxxx",
994                 "storagePoolReserved": {
995                     "storageSize": 10,
996                     "numSnapshots": 3,
997                     "numVolumes": 2
998                 }
999             }
1000         }
1001
1002 Update Storage Resource Reservation
1003 """""""""""""""""""""""""""""""""""
1004
1005 Request to update storage resource reservation
1006
1007 .. http:post:: /reservation/storage/update
1008     :noindex:
1009
1010     **Example request**:
1011
1012     .. sourcecode:: http
1013
1014         POST /reservation/storage/update HTTP/1.1
1015         Accept: application/json
1016
1017
1018         {
1019             "startTime": "2015-09-20T23:00:00Z",
1020             "reservationId": "vvvv-wwww-xxxx"
1021
1022         }
1023
1024     **Example response**:
1025
1026     .. sourcecode:: http
1027
1028         HTTP/1.1 201 CREATED
1029         Content-Type: application/json
1030
1031         {
1032             "reservationData": {
1033                 "startTime": "2015-09-20T23:00:00Z",
1034                 "reservationStatus": "active",
1035                 "reservationId": "vvvv-wwww-xxxx",
1036                 "storagePoolReserved": {
1037                     "storageSize": 10,
1038                     "numSnapshots": 3,
1039                     "numVolumes": 2
1040                 }
1041             }
1042         }
1043
1044 Terminate Storage Resource Reservation
1045 """"""""""""""""""""""""""""""""""""""
1046
1047 Request to terminate a storage resource reservation
1048
1049 .. http:delete:: /reservation/storage/(reservation_id)
1050    :noindex:
1051
1052    **Example response**:
1053
1054    .. sourcecode:: http
1055
1056        HTTP/1.1 200
1057        Content-Type: application/json
1058
1059        {
1060           "reservationId": "xxxx-yyyy-zzzz",
1061        }