blob: d7034d8fb66a3fbbe5f2e6cc938386f52c305105 [file] [log] [blame]
Teone620bafd2016-04-18 14:39:41 -07001FORMAT: 1A
2
3# XOS
4
5
Matteo Scandoloe25820a2016-04-27 17:31:11 -07006# Group Example
7
8## Example Services Collection [/api/service/exampleservice/]
9
10### List all Example Services [GET]
11
12+ Response 200 (application/json)
13
14 [
15 {
16 "humanReadableName": "MyExample",
17 "id": 1,
18 "service_message": "This is the test message"
19 }
20 ]
21
22
Teone620bafd2016-04-18 14:39:41 -070023# Group ONOS Services
24
Matteo Scandoloe25820a2016-04-27 17:31:11 -070025List of the active onos services
26
Teone620bafd2016-04-18 14:39:41 -070027## ONOS Services Collection [/api/service/onos/]
28
29### List all ONOS Services [GET]
30
31+ Response 200 (application/json)
32
33 [
34 {
35 "humanReadableName": "service_ONOS_vBNG",
36 "id": 5,
37 "rest_hostname": "",
38 "rest_port": "8181",
39 "no_container": false,
40 "node_key": ""
41 }
42 ]
43
44
45# Group vSG
46
47## vSG Collection [/api/service/vsg/]
48
49### List all vSGs [GET]
50
51+ Response 200 (application/json)
52
53 [
54 {
55 "humanReadableName": "service_vsg",
56 "id": 2,
Teone620bafd2016-04-18 14:39:41 -070057 "dns_servers": "8.8.8.8",
58 "url_filter_kind": null,
59 "node_label": null
60 }
61 ]
62
63
Matteo Scandolob71510b2016-04-29 09:56:48 -070064# Group Deployments
65
66List of the XOS deployments
67
68## Deployments [/api/core/deployments/{id}/]
69
70### List all deployments [GET]
71
72+ Response 200 (application/json)
73
74 {
75 "humanReadableName": "MyDeployment",
76 "id": 1,
77 "created": "2016-04-29T16:19:03.549901Z",
78 "updated": "2016-04-29T16:19:05.624151Z",
79 "enacted": null,
80 "policed": null,
81 "backend_register": "{}",
82 "backend_status": "0 - Provisioning in progress",
83 "deleted": false,
84 "write_protect": false,
85 "lazy_blocked": false,
86 "no_sync": true,
87 "name": "MyDeployment",
88 "accessControl": "allow all",
89 "images": [
90 "1"
91 ],
92 "sites": [
93 "1"
94 ],
95 "flavors": [
96 "1",
97 "2",
98 "3"
99 ],
100 "dashboardviews": [
101 "1"
102 ]
103 }
104
105
106# Group Flavors
107
108List of the XOS flavors
109
110## Flavors [/api/core/flavors/{id}/]
111
112### List all flavors [GET]
113
114+ Response 200 (application/json)
115
116 [
117 {
118 "humanReadableName": "m1.large",
119 "id": 1,
120 "created": "2016-04-29T16:19:01.979548Z",
121 "updated": "2016-04-29T16:19:03.568238Z",
122 "enacted": null,
123 "policed": null,
124 "backend_register": "{}",
125 "backend_status": "0 - Provisioning in progress",
126 "deleted": false,
127 "write_protect": false,
128 "lazy_blocked": false,
129 "no_sync": true,
130 "name": "m1.large",
131 "description": null,
132 "flavor": "m1.large",
133 "order": 0,
134 "default": false,
135 "deployments": [
136 "1"
137 ]
138 }
139 ]
140
141### View a Flavors Detail [GET]
142
143+ Parameters
144 + id: 1 (number) - ID of the Flavors in the form of an integer
145
146+ Response 200 (application/json)
147
148 {
149 "humanReadableName": "m1.large",
150 "id": 1,
151 "created": "2016-04-29T16:19:01.979548Z",
152 "updated": "2016-04-29T16:19:03.568238Z",
153 "enacted": null,
154 "policed": null,
155 "backend_register": "{}",
156 "backend_status": "0 - Provisioning in progress",
157 "deleted": false,
158 "write_protect": false,
159 "lazy_blocked": false,
160 "no_sync": true,
161 "name": "m1.large",
162 "description": null,
163 "flavor": "m1.large",
164 "order": 0,
165 "default": false,
166 "deployments": [
167 "1"
168 ]
169 }
170
171
172# Group Instances
173
174List of the XOS instances
175
176## Instances [/api/core/instances/{id}/]
177
178### List all Instances [GET]
179
180+ Response 200 (application/json)
181
182 [
183 {
184 "id": 1,
185 "humanReadableName": "uninstantiated-1",
186 "created": "2016-04-26T00:36:22.465259Z",
187 "updated": "2016-04-26T00:36:22.465288Z",
188 "enacted": null,
189 "policed": null,
190 "backend_register": "{}",
191 "backend_status": "0 - Provisioning in progress",
192 "deleted": false,
193 "write_protect": false,
194 "lazy_blocked": false,
195 "no_sync": false,
196 "instance_id": null,
197 "instance_uuid": null,
198 "name": "mysite_vcpe",
199 "instance_name": null,
200 "ip": null,
201 "image": "1",
202 "creator": "1",
203 "slice": "1",
204 "deployment": "1",
205 "node": "1",
206 "numberCores": 0,
207 "flavor": "1",
208 "userData": null,
209 "isolation": "vm",
210 "volumes": "/etc/dnsmasq.d,/etc/ufw",
211 "parent": null,
212 "networks": [
213 "1"
214 ]
215 }
216 ]
217
218
219
220# Group Nodes
221
222List of the XOS nodes
223
224## Nodes [/api/core/nodes/{id}/]
225
226### List all nodes [GET]
227
228+ Response 200 (application/json)
229
230 [
231 {
232 "humanReadableName": "node2.opencloud.us",
233 "id": 1,
234 "created": "2016-04-29T16:19:05.661567Z",
235 "updated": "2016-04-29T16:19:05.661454Z",
236 "enacted": null,
237 "policed": null,
238 "backend_register": "{}",
239 "backend_status": "0 - Provisioning in progress",
240 "deleted": false,
241 "write_protect": false,
242 "lazy_blocked": false,
243 "no_sync": true,
244 "name": "node2.opencloud.us",
245 "site_deployment": "1",
246 "site": "1",
247 "nodelabels": []
248 }
249 ]
250
251
252
253# Group Sites
254
255List of the XOS sites
256
257## Sites [/api/core/sites/{id}/]
258
259### List all sites [GET]
260
261+ Response 200 (application/json)
262
263 {
264 "humanReadableName": "MySite",
265 "id": 1,
266 "created": "2016-04-29T16:19:03.587770Z",
267 "updated": "2016-04-29T16:19:05.651933Z",
268 "enacted": null,
269 "policed": null,
270 "backend_register": "{}",
271 "backend_status": "0 - Provisioning in progress",
272 "deleted": false,
273 "write_protect": false,
274 "lazy_blocked": false,
275 "no_sync": false,
276 "name": "MySite",
277 "site_url": "http://opencord.us/",
278 "enabled": true,
279 "hosts_nodes": true,
280 "hosts_users": true,
281 "location": null,
282 "longitude": null,
283 "latitude": null,
284 "login_base": "mysite",
285 "is_public": true,
286 "abbreviated_name": "",
287 "deployments": [
288 "1"
289 ]
290 }
291
292
293# Group Slices
294
295List of the XOS slices
296
297## Slices [/api/core/slices/{id}/]
298
299### List all slices [GET]
300
301+ Response 200 (application/json)
302
303 [
304 {
305 "humanReadableName": "mysite_slice",
306 "id": 1,
307 "created": "2016-04-29T16:23:22.505072Z",
308 "updated": "2016-04-29T16:23:22.504691Z",
309 "enacted": null,
310 "policed": "2016-04-29T16:23:22.781298Z",
311 "backend_register": "{}",
312 "backend_status": "0 - Provisioning in progress",
313 "deleted": false,
314 "write_protect": false,
315 "lazy_blocked": false,
316 "no_sync": false,
317 "name": "mysite_slice",
318 "enabled": true,
319 "omf_friendly": false,
320 "description": "",
321 "slice_url": "",
322 "site": "http://apt118.apt.emulab.net/api/core/sites/1/",
323 "max_instances": 10,
324 "service": null,
325 "network": null,
326 "exposed_ports": null,
327 "serviceClass": "http://apt118.apt.emulab.net/api/core/serviceclasses/1/",
328 "creator": "http://apt118.apt.emulab.net/api/core/users/1/",
329 "default_flavor": null,
330 "default_image": null,
331 "mount_data_sets": "GenBank",
332 "default_isolation": "vm",
333 "networks": [
334 "http://apt118.apt.emulab.net/api/core/networks/1/"
335 ]
336 }
337 ]
338
339
340
341# Group Users
342
343List of the XOS users
344
345## Users [/api/core/users/{id}/]
346
347### List all Users [GET]
348
349+ Response 200 (application/json)
350
351 [
352 {
353 "id": 2,
354 "password": "pbkdf2_sha256$12000$9gn8DmZuIoz2$YPQkx3AOOV7jZNYr2ddrgUCkiuaPpvb8+aJR7RwLZNA=",
355 "last_login": "2016-04-12T18:50:45.880823Z",
356 "email": "johndoe@myhouse.com",
357 "username": "johndoe@myhouse.com",
358 "firstname": "john",
359 "lastname": "doe",
360 "phone": null,
361 "user_url": null,
362 "site": "http://xos.dev:9999/api/core/sites/1/",
363 "public_key": null,
364 "is_active": true,
365 "is_admin": false,
366 "is_staff": true,
367 "is_readonly": false,
368 "is_registering": false,
369 "is_appuser": false,
370 "login_page": null,
371 "created": "2016-04-12T18:50:45.912602Z",
372 "updated": "2016-04-12T18:50:45.912671Z",
373 "enacted": null,
374 "policed": null,
375 "backend_status": "Provisioning in progress",
376 "deleted": false,
377 "write_protect": false,
378 "timezone": "America/New_York"
379 }
380 ]
381
382
383
Teone620bafd2016-04-18 14:39:41 -0700384# Group Subscribers
385
386Resource related to the CORD Subscribers.
387
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700388## Subscribers [/api/tenant/cord/subscriber/{subscriber_id}/]
Teone620bafd2016-04-18 14:39:41 -0700389
390### List All Subscribers [GET]
391
392+ Response 200 (application/json)
393
394 [
395 {
396 "humanReadableName": "cordSubscriber-1",
397 "id": 1,
398 "features": {
399 "cdn": false,
400 "uplink_speed": 1000000000,
401 "downlink_speed": 1000000000,
402 "uverse": false,
403 "status": "enabled"
404 },
405 "identity": {
406 "account_num": "123",
407 "name": "My House"
408 },
409 "related": {
410 "instance_name": "mysite_vcpe",
411 "vsg_id": 4,
412 "compute_node_name": "node2.opencloud.us",
413 "c_tag": "432",
414 "instance_id": 1,
415 "wan_container_ip": null,
416 "volt_id": 3,
417 "s_tag": "222"
418 }
419 }
420 ]
421
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700422
423### View a Subscriber Detail [GET]
Teone620bafd2016-04-18 14:39:41 -0700424
425+ Parameters
426 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
427
Teone620bafd2016-04-18 14:39:41 -0700428+ Response 200 (application/json)
429
430 {
431 "humanReadableName": "cordSubscriber-1",
432 "id": 1,
433 "features": {
434 "cdn": false,
435 "uplink_speed": 1000000000,
436 "downlink_speed": 1000000000,
437 "uverse": false,
438 "status": "enabled"
439 },
440 "identity": {
441 "account_num": "123",
442 "name": "My House"
443 },
444 "related": {
445 "instance_name": "mysite_vcpe",
446 "vsg_id": 4,
447 "compute_node_name": "node2.opencloud.us",
448 "c_tag": "432",
449 "instance_id": 1,
450 "wan_container_ip": null,
451 "volt_id": 3,
452 "s_tag": "222"
453 }
454 }
455
456### Delete a Subscriber [DELETE]
457
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700458+ Parameters
459 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
460
Teone620bafd2016-04-18 14:39:41 -0700461+ Response 204
462
463### Subscriber features [/api/tenant/cord/subscriber/{subscriber_id}/features/]
464
465+ Parameters
466 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
467
468### View a Subscriber Features Detail [GET]
469
470+ Response 200 (application/json)
471
472 {
473 "cdn": false,
474 "uplink_speed": 1000000000,
475 "downlink_speed": 1000000000,
476 "uverse": true,
477 "status": "enabled"
478 }
479
480#### Subscriber features uplink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/uplink_speed/]
481
482+ Parameters
483 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
484
485#### Read Subscriber uplink_speed [GET]
486
487+ Response 200 (application/json)
488
489 {
490 "uplink_speed": 1000000000
491 }
492
493#### Update Subscriber uplink_speed [PUT]
494
495+ Request 200 (application/json)
496
497 {
498 "uplink_speed": 1000000000
499 }
500
501+ Response 200 (application/json)
502
503 {
504 "uplink_speed": 1000000000
505 }
506
507#### Subscriber features downlink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/downlink_speed/]
508
509+ Parameters
510 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
511
512#### Read Subscriber downlink_speed [GET]
513
514+ Response 200 (application/json)
515
516 {
517 "downlink_speed": 1000000000
518 }
519
520#### Update Subscriber downlink_speed [PUT]
521
522+ Request 200 (application/json)
523
524 {
525 "downlink_speed": 1000000000
526 }
527
528+ Response 200 (application/json)
529
530 {
531 "downlink_speed": 1000000000
532 }
533
534#### Subscriber features cdn [/api/tenant/cord/subscriber/{subscriber_id}/features/cdn/]
535
536+ Parameters
537 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
538
539#### Read Subscriber cdn [GET]
540
541+ Response 200 (application/json)
542
543 {
544 "cdn": false
545 }
546
547#### Update Subscriber cdn [PUT]
548
549+ Request 200 (application/json)
550
551 {
552 "cdn": false
553 }
554
555+ Response 200 (application/json)
556
557 {
558 "cdn": false
559 }
560
561#### Subscriber features uverse [/api/tenant/cord/subscriber/{subscriber_id}/features/uverse/]
562
563+ Parameters
564 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
565
566#### Read Subscriber uverse [GET]
567
568+ Response 200 (application/json)
569
570 {
571 "uverse": false
572 }
573
574#### Update Subscriber uverse [PUT]
575
576+ Request 200 (application/json)
577
578 {
579 "uverse": false
580 }
581
582+ Response 200 (application/json)
583
584 {
585 "uverse": false
586 }
587
588#### Subscriber features status [/api/tenant/cord/subscriber/{subscriber_id}/features/status/]
589
590+ Parameters
591 + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer
592
593#### Read Subscriber status [GET]
594
595+ Response 200 (application/json)
596
597 {
598 "status": "enabled"
599 }
600
601#### Update Subscriber status [PUT]
602
603+ Request 200 (application/json)
604
605 {
606 "status": "enabled"
607 }
608
609+ Response 200 (application/json)
610
611 {
612 "status": "enabled"
613 }
614
615
616# Group Truckroll
617
618Virtual Truckroll, enable to perform basic test on user connectivity such as ping, traceroute and tcpdump.
619
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700620## Truckroll Collection [/api/tenant/truckroll/{truckroll_id}/]
Teone620bafd2016-04-18 14:39:41 -0700621
622### List all Truckroll [GET]
623
624+ Response 200 (application/json)
625
626 [
627 {
628 "humanReadableName": "vTR-tenant-9",
629 "id": 9,
630 "provider_service": 6,
631 "target_id": 2,
632 "scope": "container",
633 "test": "ping",
634 "argument": "8.8.8.8",
635 "result": "",
636 "result_code": "",
637 "is_synced": false,
638 "backend_status": "2 - Exception('Unreachable results in ansible recipe',)"
639 }
640 ]
641
642### Create a Truckroll [POST]
643
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700644A virtual truckroll is complete once is_synced equal true
645
Teone620bafd2016-04-18 14:39:41 -0700646+ Request (application/json)
647
648 {
649 "target_id": 2,
650 "scope": "container",
651 "test": "ping",
652 "argument": "8.8.8.8"
653 }
654
655+ Response 201 (application/json)
656
657 {
658 "humanReadableName": "vTR-tenant-1",
659 "id": 1,
660 "provider_service": 6,
661 "target_id": 2,
662 "scope": "container",
663 "test": "ping",
664 "argument": "8.8.8.8",
665 "result": null,
666 "result_code": null,
667 "is_synced": false,
668 "backend_status": "0 - Provisioning in progress"
669 }
670
Teone620bafd2016-04-18 14:39:41 -0700671
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700672### View a Truckroll Detail [GET]
Teone620bafd2016-04-18 14:39:41 -0700673
674+ Parameters
675 + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer
676
Teone620bafd2016-04-18 14:39:41 -0700677+ Response 200 (application/json)
678
679 {
680 "humanReadableName": "vTR-tenant-10",
681 "id": 10,
682 "provider_service": 6,
683 "target_id": 2,
684 "scope": "container",
685 "test": "ping",
686 "argument": "8.8.8.8",
687 "result": null,
688 "result_code": null,
689 "is_synced": false,
690 "backend_status": "0 - Provisioning in progress"
691 }
692
693### Delete a Truckroll Detail [DELETE]
694
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700695+ Parameters
696 + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer
697
Teone620bafd2016-04-18 14:39:41 -0700698+ Response 204
699
700
701
702# Group vOLT
703
704OLT devices aggregate a set of subscriber connections
705
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700706## vOLT Collection [/api/tenant/cord/volt/{volt_id}/]
Teone620bafd2016-04-18 14:39:41 -0700707
708### List all vOLT [GET]
709
710+ Response 200 (application/json)
711
712 [
713 {
714 "humanReadableName": "vOLT-tenant-1",
715 "id": 1,
716 "service_specific_id": "123",
717 "s_tag": "222",
718 "c_tag": "432",
719 "subscriber": 1,
720 "related": {
721 "instance_id": 1,
722 "instance_name": "mysite_vcpe",
723 "vsg_id": 4,
724 "wan_container_ip": null,
725 "compute_node_name": "node2.opencloud.us"
726 }
727 }
728 ]
729
730### Create a vOLT [POST]
731
732+ Request (application/json)
733
734 {
735 "s_tag": "222",
736 "c_tag": "432",
737 "subscriber": 1
738 }
739
740+ Response 201 (application/json)
741
742 {
743 "humanReadableName": "vOLT-tenant-1",
744 "id": 1,
745 "service_specific_id": "123",
746 "s_tag": "222",
747 "c_tag": "432",
748 "subscriber": 1,
749 "related": {
750 "instance_id": 1,
751 "instance_name": "mysite_vcpe",
752 "vsg_id": 4,
753 "wan_container_ip": null,
754 "compute_node_name": "node2.opencloud.us"
755 }
756 }
757
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700758### View a vOLT Detail [GET]
Teone620bafd2016-04-18 14:39:41 -0700759
760+ Parameters
761 + volt_id: 1 (number) - ID of the vOLT in the form of an integer
762
Teone620bafd2016-04-18 14:39:41 -0700763+ Response 200 (application/json)
764
765 {
766 "humanReadableName": "vOLT-tenant-1",
767 "id": 1,
768 "service_specific_id": "123",
769 "s_tag": "222",
770 "c_tag": "432",
771 "subscriber": 1,
772 "related": {
773 "instance_id": 1,
774 "instance_name": "mysite_vcpe",
775 "vsg_id": 4,
776 "wan_container_ip": null,
777 "compute_node_name": "node2.opencloud.us"
778 }
779 }
780
781
782
783# Group ONOS Apps
784
Matteo Scandoloe25820a2016-04-27 17:31:11 -0700785## ONOS App Collection [/api/tenant/onos/app/]
Teone620bafd2016-04-18 14:39:41 -0700786
787### List all apps [GET]
788
789+ Response 200 (application/json)
790
791 [
792 {
793 "humanReadableName": "onos-tenant-7",
794 "id": 7,
795 "name": "vBNG_ONOS_app",
796 "dependencies": "org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd"
797 }
798 ]