| FORMAT: 1A |
| |
| # XOS |
| |
| |
| # Group Deployments |
| |
| List of the XOS deployments |
| |
| ## Deployments [/api/core/deployments/{id}/] |
| |
| ### List all deployments [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "MyDeployment", |
| "id": 1, |
| "created": "2016-04-29T16:19:03.549901Z", |
| "updated": "2016-04-29T16:19:05.624151Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": true, |
| "name": "MyDeployment", |
| "accessControl": "allow all", |
| "images": [ |
| "1" |
| ], |
| "sites": [ |
| "1" |
| ], |
| "flavors": [ |
| "1", |
| "2", |
| "3" |
| ], |
| "dashboardviews": [ |
| "1" |
| ] |
| } |
| ] |
| |
| ### View a Deployment Detail [GET] |
| |
| + Parameters |
| + id: 1 (number) - ID of the Deployment in the form of an integer |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "MyDeployment", |
| "id": 1, |
| "created": "2016-04-27T21:46:57.354544Z", |
| "updated": "2016-04-27T21:47:05.221720Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": true, |
| "name": "MyDeployment", |
| "accessControl": "allow all", |
| "images": [], |
| "sites": [ |
| "1" |
| ], |
| "flavors": [ |
| "3", |
| "2", |
| "1" |
| ], |
| "dashboardviews": [ |
| "3" |
| ] |
| } |
| |
| |
| |
| # Group Flavors |
| |
| List of the XOS flavors |
| |
| ## Flavors [/api/core/flavors/{id}/] |
| |
| ### List all flavors [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "m1.large", |
| "id": 1, |
| "created": "2016-04-29T16:19:01.979548Z", |
| "updated": "2016-04-29T16:19:03.568238Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": true, |
| "name": "m1.large", |
| "description": null, |
| "flavor": "m1.large", |
| "order": 0, |
| "default": false, |
| "deployments": [ |
| "1" |
| ] |
| } |
| ] |
| |
| ### View a Flavors Detail [GET] |
| |
| + Parameters |
| + id: 1 (number) - ID of the Flavors in the form of an integer |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "m1.large", |
| "id": 1, |
| "created": "2016-04-29T16:19:01.979548Z", |
| "updated": "2016-04-29T16:19:03.568238Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": true, |
| "name": "m1.large", |
| "description": null, |
| "flavor": "m1.large", |
| "order": 0, |
| "default": false, |
| "deployments": [ |
| "1" |
| ] |
| } |
| |
| |
| # Group Instances |
| |
| List of the XOS instances |
| |
| ## Instances [/api/core/instances/{id}/] |
| |
| ### List all Instances [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "id": 1, |
| "humanReadableName": "uninstantiated-1", |
| "created": "2016-04-26T00:36:22.465259Z", |
| "updated": "2016-04-26T00:36:22.465288Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": false, |
| "instance_id": null, |
| "instance_uuid": null, |
| "name": "mysite_vcpe", |
| "instance_name": null, |
| "ip": null, |
| "image": "1", |
| "creator": "1", |
| "slice": "1", |
| "deployment": "1", |
| "node": "1", |
| "numberCores": 0, |
| "flavor": "1", |
| "userData": null, |
| "isolation": "vm", |
| "volumes": "/etc/dnsmasq.d,/etc/ufw", |
| "parent": null, |
| "networks": [ |
| "1" |
| ] |
| } |
| ] |
| |
| |
| |
| # Group Nodes |
| |
| List of the XOS nodes |
| |
| ## Nodes [/api/core/nodes/{id}/] |
| |
| ### List all nodes [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "node2.opencloud.us", |
| "id": 1, |
| "created": "2016-04-29T16:19:05.661567Z", |
| "updated": "2016-04-29T16:19:05.661454Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": true, |
| "name": "node2.opencloud.us", |
| "site_deployment": "1", |
| "site": "1", |
| "nodelabels": [] |
| } |
| ] |
| |
| |
| |
| # Group Sites |
| |
| List of the XOS sites |
| |
| ## Sites [/api/core/sites/{id}/] |
| |
| ### List all sites [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "MySite", |
| "id": 1, |
| "created": "2016-04-29T16:19:03.587770Z", |
| "updated": "2016-04-29T16:19:05.651933Z", |
| "enacted": null, |
| "policed": null, |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": false, |
| "name": "MySite", |
| "site_url": "http://opencord.us/", |
| "enabled": true, |
| "hosts_nodes": true, |
| "hosts_users": true, |
| "location": null, |
| "longitude": null, |
| "latitude": null, |
| "login_base": "mysite", |
| "is_public": true, |
| "abbreviated_name": "", |
| "deployments": [ |
| "1" |
| ] |
| } |
| |
| |
| # Group Slices |
| |
| List of the XOS slices |
| |
| ## Slices [/api/core/slices/{id}/] |
| |
| ### List all slices [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "mysite_slice", |
| "id": 1, |
| "created": "2016-04-29T16:23:22.505072Z", |
| "updated": "2016-04-29T16:23:22.504691Z", |
| "enacted": null, |
| "policed": "2016-04-29T16:23:22.781298Z", |
| "backend_register": "{}", |
| "backend_status": "0 - Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "lazy_blocked": false, |
| "no_sync": false, |
| "name": "mysite_slice", |
| "enabled": true, |
| "omf_friendly": false, |
| "description": "", |
| "slice_url": "", |
| "site": "http://apt118.apt.emulab.net/api/core/sites/1/", |
| "max_instances": 10, |
| "service": null, |
| "network": null, |
| "exposed_ports": null, |
| "serviceClass": "http://apt118.apt.emulab.net/api/core/serviceclasses/1/", |
| "creator": "http://apt118.apt.emulab.net/api/core/users/1/", |
| "default_flavor": null, |
| "default_image": null, |
| "mount_data_sets": "GenBank", |
| "default_isolation": "vm", |
| "networks": [ |
| "http://apt118.apt.emulab.net/api/core/networks/1/" |
| ] |
| } |
| ] |
| |
| |
| |
| # Group Users |
| |
| List of the XOS users |
| |
| ## Users [/api/core/users/{id}/] |
| |
| ### List all Users [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "id": 2, |
| "password": "pbkdf2_sha256$12000$9gn8DmZuIoz2$YPQkx3AOOV7jZNYr2ddrgUCkiuaPpvb8+aJR7RwLZNA=", |
| "last_login": "2016-04-12T18:50:45.880823Z", |
| "email": "johndoe@myhouse.com", |
| "username": "johndoe@myhouse.com", |
| "firstname": "john", |
| "lastname": "doe", |
| "phone": null, |
| "user_url": null, |
| "site": "http://xos.dev:9999/api/core/sites/1/", |
| "public_key": null, |
| "is_active": true, |
| "is_admin": false, |
| "is_staff": true, |
| "is_readonly": false, |
| "is_registering": false, |
| "is_appuser": false, |
| "login_page": null, |
| "created": "2016-04-12T18:50:45.912602Z", |
| "updated": "2016-04-12T18:50:45.912671Z", |
| "enacted": null, |
| "policed": null, |
| "backend_status": "Provisioning in progress", |
| "deleted": false, |
| "write_protect": false, |
| "timezone": "America/New_York" |
| } |
| ] |
| |
| |
| |
| # Group Example |
| |
| ## Example Services Collection [/api/service/exampleservice/] |
| |
| ### List all Example Services [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "MyExample", |
| "id": 1, |
| "service_message": "This is the test message" |
| } |
| ] |
| |
| |
| # Group ONOS Services |
| |
| List of the active onos services |
| |
| ## ONOS Services Collection [/api/service/onos/] |
| |
| ### List all ONOS Services [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "service_ONOS_vBNG", |
| "id": 5, |
| "rest_hostname": "", |
| "rest_port": "8181", |
| "no_container": false, |
| "node_key": "" |
| } |
| ] |
| |
| |
| # Group vSG |
| |
| ## vSG Collection [/api/service/vsg/] |
| |
| ### List all vSGs [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "service_vsg", |
| "id": 2, |
| "dns_servers": "8.8.8.8", |
| "url_filter_kind": null, |
| "node_label": null |
| } |
| ] |
| |
| |
| # Group Utility |
| |
| List of the XOS Utility API |
| |
| ## Login [/api/utility/login/] |
| |
| ### Log a user in the system [POST] |
| |
| + Request (application/json) |
| |
| { |
| "username": "padmin@vicci.org", |
| "password": "letmein" |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "xoscsrftoken":"xuvsRC1jkXAsnrdRlgJvcXpmtthTAqqf", |
| "xossessionid":"7ds5a3wzjlgbjqo4odkd25qsm0j2s6zg", |
| "user": "{\"policed\": null, \"site\": 3, \"is_appuser\": false, \"is_staff\": true, \"backend_status\": \"Provisioning in progress\", \"id\": 3, \"is_registering\": false, \"last_login\": \"2016-04-30T22:51:04.788675+00:00\", \"email\": \"padmin@vicci.org\", \"no_sync\": false, \"username\": \"padmin@vicci.org\", \"dashboards\": [11], \"login_page\": null, \"firstname\": \"XOS\", \"user_url\": null, \"deleted\": false, \"lastname\": \"admin\", \"is_active\": true, \"lazy_blocked\": false, \"phone\": null, \"is_admin\": true, \"enacted\": null, \"public_key\": null, \"is_readonly\": false, \"no_policy\": false, \"write_protect\": false}" |
| } |
| |
| ## Logout [/api/utility/logout/] |
| |
| ### Log a user out of the system [POST] |
| |
| + Request (application/json) |
| {xossessionid: "sessionId"} |
| |
| + Response 200 (application/json) |
| |
| |
| |
| # Group Subscribers |
| |
| Resource related to the CORD Subscribers. |
| |
| ## Subscribers [/api/tenant/cord/subscriber/{subscriber_id}/] |
| |
| ### List All Subscribers [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "cordSubscriber-1", |
| "id": 1, |
| "features": { |
| "cdn": false, |
| "uplink_speed": 1000000000, |
| "downlink_speed": 1000000000, |
| "uverse": false, |
| "status": "enabled" |
| }, |
| "identity": { |
| "account_num": "123", |
| "name": "My House" |
| }, |
| "related": { |
| "instance_name": "mysite_vcpe", |
| "vsg_id": 4, |
| "compute_node_name": "node2.opencloud.us", |
| "c_tag": "432", |
| "instance_id": 1, |
| "wan_container_ip": null, |
| "volt_id": 3, |
| "s_tag": "222" |
| } |
| } |
| ] |
| |
| |
| ### View a Subscriber Detail [GET] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "cordSubscriber-1", |
| "id": 1, |
| "features": { |
| "cdn": false, |
| "uplink_speed": 1000000000, |
| "downlink_speed": 1000000000, |
| "uverse": false, |
| "status": "enabled" |
| }, |
| "identity": { |
| "account_num": "123", |
| "name": "My House" |
| }, |
| "related": { |
| "instance_name": "mysite_vcpe", |
| "vsg_id": 4, |
| "compute_node_name": "node2.opencloud.us", |
| "c_tag": "432", |
| "instance_id": 1, |
| "wan_container_ip": null, |
| "volt_id": 3, |
| "s_tag": "222" |
| } |
| } |
| |
| ### Delete a Subscriber [DELETE] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| + Response 204 |
| |
| ### Subscriber features [/api/tenant/cord/subscriber/{subscriber_id}/features/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| ### View a Subscriber Features Detail [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "cdn": false, |
| "uplink_speed": 1000000000, |
| "downlink_speed": 1000000000, |
| "uverse": true, |
| "status": "enabled" |
| } |
| |
| #### Subscriber features uplink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/uplink_speed/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| #### Read Subscriber uplink_speed [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "uplink_speed": 1000000000 |
| } |
| |
| #### Update Subscriber uplink_speed [PUT] |
| |
| + Request 200 (application/json) |
| |
| { |
| "uplink_speed": 1000000000 |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "uplink_speed": 1000000000 |
| } |
| |
| #### Subscriber features downlink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/downlink_speed/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| #### Read Subscriber downlink_speed [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "downlink_speed": 1000000000 |
| } |
| |
| #### Update Subscriber downlink_speed [PUT] |
| |
| + Request 200 (application/json) |
| |
| { |
| "downlink_speed": 1000000000 |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "downlink_speed": 1000000000 |
| } |
| |
| #### Subscriber features cdn [/api/tenant/cord/subscriber/{subscriber_id}/features/cdn/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| #### Read Subscriber cdn [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "cdn": false |
| } |
| |
| #### Update Subscriber cdn [PUT] |
| |
| + Request 200 (application/json) |
| |
| { |
| "cdn": false |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "cdn": false |
| } |
| |
| #### Subscriber features uverse [/api/tenant/cord/subscriber/{subscriber_id}/features/uverse/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| #### Read Subscriber uverse [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "uverse": false |
| } |
| |
| #### Update Subscriber uverse [PUT] |
| |
| + Request 200 (application/json) |
| |
| { |
| "uverse": false |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "uverse": false |
| } |
| |
| #### Subscriber features status [/api/tenant/cord/subscriber/{subscriber_id}/features/status/] |
| |
| + Parameters |
| + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer |
| |
| #### Read Subscriber status [GET] |
| |
| + Response 200 (application/json) |
| |
| { |
| "status": "enabled" |
| } |
| |
| #### Update Subscriber status [PUT] |
| |
| + Request 200 (application/json) |
| |
| { |
| "status": "enabled" |
| } |
| |
| + Response 200 (application/json) |
| |
| { |
| "status": "enabled" |
| } |
| |
| |
| # Group Truckroll |
| |
| Virtual Truckroll, enable to perform basic test on user connectivity such as ping, traceroute and tcpdump. |
| |
| ## Truckroll Collection [/api/tenant/truckroll/{truckroll_id}/] |
| |
| ### List all Truckroll [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "vTR-tenant-9", |
| "id": 9, |
| "provider_service": 6, |
| "target_id": 2, |
| "scope": "container", |
| "test": "ping", |
| "argument": "8.8.8.8", |
| "result": "", |
| "result_code": "", |
| "is_synced": false, |
| "backend_status": "2 - Exception('Unreachable results in ansible recipe',)" |
| } |
| ] |
| |
| ### Create a Truckroll [POST] |
| |
| A virtual truckroll is complete once is_synced equal true |
| |
| + Request (application/json) |
| |
| { |
| "target_id": 2, |
| "scope": "container", |
| "test": "ping", |
| "argument": "8.8.8.8" |
| } |
| |
| + Response 201 (application/json) |
| |
| { |
| "humanReadableName": "vTR-tenant-1", |
| "id": 1, |
| "provider_service": 6, |
| "target_id": 2, |
| "scope": "container", |
| "test": "ping", |
| "argument": "8.8.8.8", |
| "result": null, |
| "result_code": null, |
| "is_synced": false, |
| "backend_status": "0 - Provisioning in progress" |
| } |
| |
| |
| ### View a Truckroll Detail [GET] |
| |
| + Parameters |
| + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "vTR-tenant-10", |
| "id": 10, |
| "provider_service": 6, |
| "target_id": 2, |
| "scope": "container", |
| "test": "ping", |
| "argument": "8.8.8.8", |
| "result": null, |
| "result_code": null, |
| "is_synced": false, |
| "backend_status": "0 - Provisioning in progress" |
| } |
| |
| ### Delete a Truckroll Detail [DELETE] |
| |
| + Parameters |
| + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer |
| |
| + Response 204 |
| |
| |
| |
| # Group vOLT |
| |
| OLT devices aggregate a set of subscriber connections |
| |
| ## vOLT Collection [/api/tenant/cord/volt/{volt_id}/] |
| |
| ### List all vOLT [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "vOLT-tenant-1", |
| "id": 1, |
| "service_specific_id": "123", |
| "s_tag": "222", |
| "c_tag": "432", |
| "subscriber": 1, |
| "related": { |
| "instance_id": 1, |
| "instance_name": "mysite_vcpe", |
| "vsg_id": 4, |
| "wan_container_ip": null, |
| "compute_node_name": "node2.opencloud.us" |
| } |
| } |
| ] |
| |
| ### Create a vOLT [POST] |
| |
| + Request (application/json) |
| |
| { |
| "s_tag": "222", |
| "c_tag": "432", |
| "subscriber": 1 |
| } |
| |
| + Response 201 (application/json) |
| |
| { |
| "humanReadableName": "vOLT-tenant-1", |
| "id": 1, |
| "service_specific_id": "123", |
| "s_tag": "222", |
| "c_tag": "432", |
| "subscriber": 1, |
| "related": { |
| "instance_id": 1, |
| "instance_name": "mysite_vcpe", |
| "vsg_id": 4, |
| "wan_container_ip": null, |
| "compute_node_name": "node2.opencloud.us" |
| } |
| } |
| |
| ### View a vOLT Detail [GET] |
| |
| + Parameters |
| + volt_id: 1 (number) - ID of the vOLT in the form of an integer |
| |
| + Response 200 (application/json) |
| |
| { |
| "humanReadableName": "vOLT-tenant-1", |
| "id": 1, |
| "service_specific_id": "123", |
| "s_tag": "222", |
| "c_tag": "432", |
| "subscriber": 1, |
| "related": { |
| "instance_id": 1, |
| "instance_name": "mysite_vcpe", |
| "vsg_id": 4, |
| "wan_container_ip": null, |
| "compute_node_name": "node2.opencloud.us" |
| } |
| } |
| |
| |
| |
| # Group ONOS Apps |
| |
| ## ONOS App Collection [/api/tenant/onos/app/] |
| |
| ### List all apps [GET] |
| |
| + Response 200 (application/json) |
| |
| [ |
| { |
| "humanReadableName": "onos-tenant-7", |
| "id": 7, |
| "name": "vBNG_ONOS_app", |
| "dependencies": "org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd" |
| } |
| ] |