- Managing Cisco NFVI
- Cisco VIM REST API
- Monitoring Cisco NFVI Performance
- Managing Cisco NFVI Security
- Managing Cisco NFVI Storage
- Overview to Cisco VIM Insight
- Managing Cisco VIM through Insight
- Managing Blueprints
- Managing Pod Through Cisco VIM Insight
- Day 2 Operations of Cisco VIM Insight
- Overview to the Cisco Virtual Topology System
- Managing Backup and Restore Operations
- Troubleshooting
Cisco VIM REST API
The following topics explain how to use the Cisco VIM REST API to manage Cisco NFVI.
Overview to Cisco VIM REST API
Cisco VIM provides a Representational State Transfer (REST) API that you can use to install, expand, and update Cisco VIM. Actions you can perform using the RESTful API include:
-
Install Cisco VIM on Cisco NFVI pods.
-
Add and delete pods to and from Cisco NFVI installations.
-
Update Cisco VIM software.
-
Replace controller nodes.
-
Perform cloud maintenance operations.
-
Run cloud validations using Virtual Machine ThroughPut (VMTP), a data path performance measurement tool for OpenStack clouds.
The figure below shows the Cisco VIM REST API flow.

The Cisco VIM REST API security is provided by the Secure Sockets Layer (SSL) included on the Apache webserver. The Pecan-based web application is called by mod_wsgi, which runs the Rest API server. The Pecan REST API server requires a username and password to authorize REST API server requests. Apache handles the authorization process, which authorizes the request to access the Pecan web application. You can use the Cisco VIM API to upload a new setup_data.yaml file, and start, stop, and query the state of the installation. You can also use it to manage the cloud, add and remove compute and Ceph nodes, and replace the controller nodes. A REST API to launch VMTP (L2/L3 data plane testing) and CloudPulse is also provided.
The Cisco VIM REST API is enabled by default in the management node, if you are using the supplied Cisco VIM buildnode.iso. You can access API server on the br_api interface on port 8445. Authentication is enabled by default in the web service.
The API end points can be reached with the following URL format:
https://<Management_node_api_ip>:8445
The API endpoint expects a basic authentication which is enabled by default in the management node. The authentication credentials can be found in /opt/cisco/ui_config.json in the management node. Sample ui_config.json contents are as shown below:
{ "Kibana-Url": "http://10.10.10.10:5601", "RestAPI-Url": "https:// 10.10.10.10:8445", "RestAPI-Username": "admin", "RestAPI-Password": "a96e86ccb28d92ceb1df", "BuildNodeIP": "10.10.10.10" }
Cisco VIM REST API Resources
Setupdata
REST wrapper for setupdata. Provides methods for listing, creating, modifying and deleting setupdata.
Retrieving the setupdata
Resource URI
Verb |
URI |
GET |
/v1/setupdata |
Example
JSON Request
GET /v1/setupdata Accept: application/json
JSON Response
200 OK Content-Type: application/json {"setupdatas": [{ "status": "Active", "name":"GG34", "uuid": "123" "meta":{ "user":"root" }, "jsondata":{ ....... } }]}
Creating the setupdata
Resource URI
Verb |
URI |
POST |
/v1/setupdata |
Example
JSON Request
POST /v1/setupdata Accept: application/json { "name":"GG34", "uuid": "123" "meta":{ "user":"root" }, "jsondata":{ ....... } }
JSON Response
201 OK Content-Type: application/json { "status": "Active", "name":"GG34", "uuid": "123" "meta":{ "user":"root" }, "jsondata":{ ....... } } 400 Bad Request Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Error" } 409 CONFLICT Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Error" }
Retrieving a single setupdata
Resource URI
Verb |
URI |
GET |
/v1/setupdata/(id) |
Property:
id - the id of the setupdata to be queried.
Example
JSON Request
GET /v1/setupdata/123 Accept: application/json
JSON Response
200 OK Content-Type: application/json { "status": "Active", "name":"GG34", "uuid": "123" "meta":{ "user":"root" }, "jsondata":{ ....... } } 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Setupdata could not be found." }
Updating a setupdata
Resource URI
Verb |
URI |
PUT |
/v1/setupdata/(id) |
Property:
id - the id of the setupdata to be updated.
Example
JSON Request
PUT /v1/setupdata/123 Accept: application/json
JSON Response
200 OK Content-Type: application/json { "status": "Active", "name":"GG34", "uuid": "123" "meta":{ "user":"root" }, "jsondata":{ ....... } } 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Setupdata could not be found." }
Deleting a setupdata
Resource URI
Verb |
URI |
DELETE |
/v1/setupdata/(id) |
Property:
id - the id of the setupdata to be deleted.
Example
JSON Request
DELETE /v1/setupdata/123 Accept: application/json
JSON Response
204 NO CONTENT Returned on success 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Setupdata could not be found." } 400 BAD REQUEST Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Setupdata cannot be deleted when it is being used by an installation" }
Install resource
REST wrapper for install. Provides methods for starting, stopping, and viewing the status of the installation process.
Return a list of installation
Resource URI
Verb |
URI |
GET |
/v1/install |
Example
JSON Request
GET /v1/install Accept: application/json
JSON Response
200 OK Content-Type: application/json {"installs": [{ "ceph": "Skipped", "uuid": "123", "setupdata": "345", "vmtpresult": "{ "status": "PASS", "EXT_NET": [] }", "baremetal": "Success", "orchestration": "Success", "validationstatus": "{ "status": "PASS", "Software_Validation": [], "Hardware_Validation": [] }", "currentstatus": "Completed", "validation": "Success", "hostsetup": "Success", "vmtp": "Skipped" }] }
Create an installation
Resource URI
Verb |
URI |
POST |
/v1/install |
Example
JSON Request
GET /v1/install Accept: application/js { "setupdata": "123", "stages": [ "validation", "bootstrap", "runtimevalidation", "baremetal", "orchestration", "hostsetup", "ceph", "vmtp" ] }
JSON Response
201 CREATED Content-Type: application/json { "ceph": "Skipped", "uuid": "123", "setupdata": "345", "vmtpresult": "{ "status": "PASS", "EXT_NET": [] }", "baremetal": "Success", "orchestration": "Success", "validationstatus": "{ "status": "PASS", "Software_Validation": [], "Hardware_Validation": [] }", "currentstatus": "Completed", "validation": "Success", "hostsetup": "Success", "vmtp": "Skipped" } 409 CONFLICT Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Install already exists" }
Retrieve the installation
Resource URI
Verb |
URI |
GET |
/v1/install/{id} |
Property:
id - the id of the install to be queried.
Example
JSON Request
GET /v1/install/345 Accept: application/js
JSON Response
200 OK Content-Type: application/json { "ceph": "Skipped", "uuid": "123", "setupdata": "345", "vmtpresult": "{ "status": "PASS", "EXT_NET": [] }", "baremetal": "Success", "orchestration": "Success", "validationstatus": "{ "status": "PASS", "Software_Validation": [], "Hardware_Validation": [] }", "currentstatus": "Completed", "validation": "Success", "hostsetup": "Success", "vmtp": "Skipped" } 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Install doesn’t exists" }
Stop the installation
Resource URI
Verb |
URI |
DELETE |
/v1/install/{id} |
Property:
id - the id of the install to be stopped.
Example
JSON Request
DELETE /v1/install/345 Accept: application/js
JSON Response
204 NO CONTENT Content-Type: application/json 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Install doesn’t exists" }
Nodes
Getting a list of nodes
Resource URI
Verb |
URI |
GET |
/v1/nodes |
Example
JSON Request
Get /v1/nodes Accept: application/js
JSON Response
200 OK Content-Type: application/json { "nodes": [ [ "status": "Active", "uuid": "456", "setupdata": "123", "node_data": "{ "rack_info": { "rack_id": "RackA" }, "cimc_info": { "cimc_ip": "10.10.10.10" }, "management_ip": "7.7.7.10" }", "updated_at": null, "mtype": "compute", "install": "345", "install_logs": "logurl", "created_at":"2016-0710T06:17:03.761152", "name": " compute-1" } ] }
Add new nodes
The nodes are in compute or block_storage type. Before adding the nodes to the system, the name of the nodes and other necessary information like cimc_ip and rackid must be updated in the setupdata object. If the setupdata object is not updated, the post call will not allow you to add the node.
Resource URI
Verb |
URI |
POST |
/v1/nodes |
Example
JSON Request
POST /v1/nodes Accept: application/js { "name" : "compute-5" }
JSON Response
201 CREATED Content-Type: application/json { "status": "ToAdd", "uuid": "456", "setupdata": "123", "node_data": "{ "rack_info": { "rack_id": "RackA" }, "cimc_info": { "cimc_ip": "10.10.10.10" }, "management_ip": "7.7.7.10" }", "updated_at": null, "mtype": "compute", "install": "345", "install_logs": "logurl", "created_at":"2016-0710T06:17:03.761152", "name": " compute-1" }
Retrieve information about a particular node
Resource URI
Verb |
URI |
GET |
/v1/nodes{id} |
Property:
id - the id of the node to be queried.
Example
JSON Request
POST /v1/nodes Accept: application/js
JSON Response
200 OK Content-Type: application/json { "status": "Active", "uuid": "456", "setupdata": "123", "node_data": "{ "rack_info": { "rack_id": "RackA" }, "cimc_info": { "cimc_ip": "10.10.10.10" }, "management_ip": "7.7.7.10" }", "updated_at": null, "mtype": "compute", "install": "345", "install_logs": "logurl", "created_at":"2016-0710T06:17:03.761152", "name": " compute-1" } 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Node doesn’t exists" }
Remove a node
The node that must be deleted must be removed from the setupdata object. Once the setupdata object is updated, you can safely delete of the node. The node object will not be deleted until it calls the remove node backend and succeeds.
Resource URI
Verb |
URI |
DELETE |
/v1/nodes{id} |
Property:
id - the id of the node to be removed.
Example
JSON Request
DELETE /v1/nodes/456 Accept: application/js
JSON Response
204 ACCEPTED Content-Type: application/json 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Node doesn’t exists" }
For clearing the database and deleting the entries in the nodes, the delete api is called with special parameters that are passed along with the delete request. The JSON parameters are in the following format.
JSON Request
DELETE /v1/nodes/456 Accept: application/js { "clear_db_entry":"True"\ }
JSON Response
204 ACCEPTED Content-Type: application/json 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Node doesn’t exists" }
![]() Note | This is done only if the node is deleted from the REST API database. The failure reason of the node must be rectified manually apart from the API. True is a string and not a boolean in the above line. |
Replace a controller
Resource URI
Verb |
URI |
PUT |
/v1/nodes{id} |
Property:
id - the id of the controller to be replaced.
Example
JSON Request
PUT /v1/nodes/456 Accept: application/js
JSON Response
200 OK Content-Type: application/json 404 NOT FOUND Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Node doesn’t exists" }
Offline validation
REST wrapper does the offline validation of setupdata. This will only do S/W Validation of the input setupdata.
Create an offline validation operation
Resource URI
Verb |
URI |
POST |
/v1/offlinevalidation |
Example
JSON Request
POST /v1/offlinevalidation Accept: application/json { "jsondata": ".. .. .." }
JSON Response
201 CREATED Content-Type: application/json { "status": "NotValidated", "uuid": "bb42e4ba-c8b7-4a5c-98b3-1f384aae2b69", "created_at": "2016-02-03T02:05:28.384274", "updated_at": "2016-02-03T02:05:51.880785", "jsondata": "{}", "validationstatus": { "status": "PASS", "Software_Validation": [], "Hardware_Validation": [] } }
Retrieve the results of offline validation
Resource URI
Verb |
URI |
GET |
/v1/offlinevalidation |
Property:
id - the id of the node to be queried.
Example
JSON Request
GET /v1/offlinevalidation/789 Accept: application/json
JSON Response
200 OK Content-Type: application/json { "status": " ValidationSuccess", "uuid": "bb42e4ba-c8b7-4a5c-98b3-1f384aae2b69", "created_at": "2016-02-03T02:05:28.384274", "updated_at": "2016-02-03T02:05:51.880785", "jsondata": "{}", "validationstatus": { "status": "PASS", "Software_Validation": [], "Hardware_Validation": [] } }
Update
Start an update process
Resource URI
Verb |
URI |
POST |
/v1/update |
Parameters:
Example
JSON Request
curl -sS -X POST --form "fileupload=@Test/installer.good.tgz" --form "filename=installer.good.tgz" https://10.10.10.8445/v1/update
![]() Note | This curl request is done as a form request. |
JSON Response
200 OK Content-Type: application/json { "update_logs": "logurl", "update_status": "UpdateSuccess", "update_filename": "installer-4579.tgz", "created_at": "2016-07-10T18:33:52.698656", "updated_at": "2016-07-10T18:54:56.885083" } 409 CONFLICT Content-Type: application/json { "debuginfo": null "faultcode": "Client" "faultstring": "Uploaded file is not in tar format" }
Rollback an update
Resource URI
Verb |
URI |
PUT |
/v1/update |
Example
JSON Request
PUT /v1/update Accept: application/json { "action":"rollback" }
JSON Response
200 OK Content-Type: application/json { "update_logs": "logurl", "update_status": "ToRollback", "update_filename": "installer-4579.tgz", "created_at": "2016-07-10T18:33:52.698656", "updated_at": "2016-07-10T18:54:56.885083" }
Commit an update
Resource URI
Verb |
URI |
PUT |
/v1/update |
Example
JSON Request
PUT /v1/update Accept: application/json { "action":"commit" }
JSON Response
200 OK Content-Type: application/json { "update_logs": "logurl", "update_status": "ToCommit", "update_filename": "installer-4579.tgz", "created_at": "2016-07-10T18:33:52.698656", "updated_at": "2016-07-10T18:54:56.885083" }
Retrieve the details of an update
Resource URI
Verb |
URI |
GET |
/v1/update |
Example
JSON Request
GET /v1/update Accept: application/json
JSON Response
200 OK Content-Type: application/json { "update_logs": "logurl", "update_status": "UpdateSuccess", "update_filename": "installer-4579.tgz", "created_at": "2016-07-10T18:33:52.698656", "updated_at": "2016-07-10T18:54:56.885083" }
Secrets
Retrieve the list of secrets associated with the OpenStack Setup
You can retrieve the set of secret password associated with the OpenStack setup using the above api. This gives the list of secrets for each service in OpenStack.
Resource URI
Verb |
URI |
GET |
/v1/secrets |
Example
JSON Request
GET /v1/secrets Accept: application/json
JSON Response
200 OK Content-Type: application/json { "HEAT_KEYSTONE_PASSWORD": "xxxx", "CINDER_KEYSTONE_PASSWORD": "xxxxx", …. …. "RABBITMQ_PASSWORD": "xxxxx" }
OpenStack Configs
Retrieve the list of OpenStack configs associated with the OpenStack Setup
You can retrieve the set of OpenStack configs associated with the OpenStack setup using the above api. This gives the current settings of different configs like verbose logging, debug logging for different OpenStack services.
Resource URI
Verb |
URI |
GET |
/v1/openstack_config |
Example
JSON Request
GET /v1/openstack_config Accept: application/json
JSON Response
200 OK Content-Type: application/json { "CINDER_DEBUG_LOGGING": false, "KEYSTONE_DEBUG_LOGGING": false, …. …. "NOVA_VERBOSE_LOGGING": true }
Version
Retrieve the version of the Cisco Virtualized Infrastructure Manager.
Resource URI
Verb |
URI |
GET |
/v1/version |
Example
JSON Request
GET /v1/version Accept: application/json
JSON Response
200 OK Content-Type: application/json {"version": "1.9.1"}
Health of the Management Node
Retrieve the health of the Management node
This api can be used to retrieve the health of the management node. It checks various parameters like partitions, space and so on.
Resource URI
Verb |
URI |
GET |
/v1/health |
Example
JSON Request
GET /v1/health Accept: application/json
JSON Response
200 OK Content-Type: application/json { "status": "PASS", "BuildNode Validation": { "Check Docker Pool Settings": {"status": "Pass", "reason": "None"} …. …. } }
Hardware Information
REST wrapper to do hardware information of setupdata. This will return the hardware information of all hardware available in the setupdata.
Create a HWinfo operation
Resource URI
Verb |
URI |
GET |
/v1/hwinfo |
Example
JSON Request
POST /v1/hwinfo Accept: application/json { "setupdata":"c94d7973-2fcc-4cd1-832d-453d66e6b3bf" }
JSON Response
201 CREATED Content-Type: application/json { "status": "hwinfoscheduled", "uuid": "928216dd-9828-407b-9739-8a7162bd0676", "setupdata": "c94d7973-2fcc-4cd1-832d-453d66e6b3bf", "created_at": "2017-03-19T13:41:25.488524", "updated_at": null, "hwinforesult": "" }
Retrieve the results of Hwinfo Operation
Resource URI
Verb |
URI |
GET |
/v1/hwinfo/{id} |
Property:
id - the id of the node to be queried.
Example
JSON Request
GET /v1/hwinfo/789 Accept: application/json
JSON Response
200 OK Content-Type: application/json { "status": "hwinfosuccess", "uuid": "928216dd-9828-407b-9739-8a7162bd0676", "setupdata": "c94d7973-2fcc-4cd1-832d-453d66e6b3bf", "created_at": "2017-03-19T13:41:25.488524", "updated_at": "2017-03-19T13:42:05.087491", "hwinforesult": "{\"172.29.172.73\": {\"firmware\": ………….. ………… …………….. }
Release mapping Information
This api is used to see the list of Features included and list of options which can be reconfigured in the Openstack Setup.
Retrieve the release mapping information
Resource URI
Verb |
URI |
GET |
/v1/releasemapping |
JSON Request
GET /v1/releasemapping Accept: application/json
JSON Response
200 OK Content-Type: application/json [ { "SWIFTSTACK": { "feature_status": true, ], "desc": "swift stack feature" } },…….. ………….. }
POST Install operations
The following are the post install operations that can be carried on once the OpenStack installation is carried out successfully. It uses a common api. So only one operation is given as an example below:
-
reconfigure,
-
reconfigure -regenerate passwords
-
reconfigure -setpasswords,setopenstack_configs,
-
check-fernet-keys
-
period-rotate-fernet-keys
-
resync-fernet-keys
-
rotate-fernet-keys
Create a post install operation
Resource URI
Verb |
URI |
POST |
/v1/misc |
Example
JSON Request
POST /v1/misc Accept: application/json {"action": {"reconfigure": true}}
JSON Response
201 CREATED Content-Type: application/json { "uuid": "7e30a671-bacf-4e3b-9a8f-5a1fd8a46733", "created_at": "2017-03-19T14:03:39.723914", "updated_at": null, "operation_status": "OperationScheduled", "operation_logs": "", "operation_name": "{"reconfigure": true}" }
Retrieve a status of the post install operation
Resource URI
Verb |
URI |
GET |
/v1/misc |
Example
JSON Request
GET /v1/misc Accept: application/json
JSON Response
201 CREATED Content-Type: application/json { "uuid": "7e30a671-bacf-4e3b-9a8f-5a1fd8a46733", "created_at": "2017-03-19T14:03:39.723914", "updated_at": "2017-03-19T14:03:42.181180", "operation_status": "OperationRunning", "operation_logs": "xxxxxxxxxxxxxxxxx", "operation_name": "{\"reconfigure\": true}" }
In VIM 2.2, additional Rest APIs are introduced to support NFVBench, query hardware information and to get a list of optional and mandatory features that the pod supports.
Listed below are the details of the API.
NFVBench Network Performance Testing
Create NFVBench Run
Starts network performance test with provided configuration.
REST API To Create Fixed Rate Test
Verb |
URI |
Post |
v1/nfvbench/ create_ndr_pdr_test |
Example
JSON Request
POST Request URL /v1/nfvbench/create_fixed_rate_test JSON Request: {“nfvbench_request”: { "duration_sec": 20, "traffic_profile": [ { "name": "custom", "l2frame_size": [ "64", "IMIX", "1518" ] } ], "traffic": { "bidirectional": true, "profile": "custom" }, "flow_count": 1000 } }
JSON Response
201 CREATED Content-Type: application/json { "status": "not_run", "nfvbench_request": ‘{ "duration_sec": 20, "traffic_profile": [ { "name": "custom", "l2frame_size": [ "64", "IMIX", "1518" ] } ], "traffic": { "bidirectional": true, "profile": "custom" }, "flow_count": 1000 }’, "created_at": "2017-08-16T06:14:54.219106", "updated_at": null, "nfvbench_result": "", "test_name": "Fixed_Rate_Test" }
Status Polling
Polling of NFVbench run status which is one of nfvbench_running, nfvbench_failed, nfvbench_completed.
Resource URI
Verb |
URI |
GET |
v1/nfvbench/<test_name> |
REST API To Get Fixed Rate Test Result
GET Request URL /v1/upgrade/get_fixed_rate_test_result JSON Response: Check If NFVbench Test is running 200 OK Content-Type: application/json { "status": "nfvbench_running", "nfvbench_request": '{"traffic": {"bidirectional": true, "profile": "custom"}, "rate": "1000000pps", "traffic_profile": [{"l2frame_size": ["1518"], "name": "custom"}], "duration_sec": 60, "flow_count": 1000}', "nfvbench_result": "" "created_at": "2017-05-30T21:40:40.394274", "updated_at": "2017-05-30T21:40:41.367279", } Check If NFVbench Test is completed 200 OK Content-Type: application/json { "status": "nfvbench_completed", "nfvbench_request": '{"traffic": {"bidirectional": true, "profile": "custom"}, "rate": "1000000pps", "traffic_profile": [{"l2frame_size": ["1518"], "name": "custom"}], "duration_sec": 60, "flow_count": 1000}', "nfvbench_result": '{"status": "PROCESSED", "message": {"date": "2017-08-15 23:15:04", "nfvbench_version": "0.9.3.dev2", ….} "created_at": "2017-05-30T21:40:40.394274", "updated_at": "2017-05-30T22:29:56.970779", }
REST API to create NDR/PDR Test
POST Request URL /v1/nfvbench/create_ndr_pdr_test Accept: application/json {“nfvbench_request”: { "duration_sec": 20, "traffic_profile": [ { "name": "custom", "l2frame_size": [ "64", "IMIX", "1518" ] } ], "traffic": { "bidirectional": true, "profile": "custom" }, "flow_count": 1000 } } JSON Response 201 CREATED Content-Type: application/json { "status": "not_run", “nfvbench_request”: ‘{ "duration_sec": 20, "traffic_profile": [ { "name": "custom", "l2frame_size": [ "64", "IMIX", "1518" ] } ], "traffic": { "bidirectional": true, "profile": "custom" }, "flow_count": 1000 }’ "created_at": "2017-08-16T07:18:41.652891", "updated_at": null, "nfvbench_result": "", "test_name": "NDR_PDR_Test" }
REST API To Get NDR/PDR Test Results
GET Request URL /v1/ nfvbench/get_ndr_pdr_test_result JSON Response: If NFVbench NDR/PDR test is running 200 OK Content-Type: application/json { "status": "nfvbench_running", "nfvbench_request": '{"duration_sec": 20, "traffic": {"bidirectional": true, "profile": "custom"}, "traffic_profile": [{"l2frame_size": ["64", "IMIX", "1518"], "name": "custom"}], "flow_count": 1000}', "nfvbench_result": "" "created_at": "2017-08-16T07:18:41.652891", "updated_at": "2017-09-30T22:29:56.970779", } If NFVbench NDR/PDR test is completed 200 OK Content-Type: application/json { "status": "nfvbench_completed", "nfvbench_request": '{"duration_sec": 20, "traffic": {"bidirectional": true, "profile": "custom"}, "traffic_profile": [{"l2frame_size": ["64", "IMIX", "1518"], "name": "custom"}], "flow_count": 1000}', "nfvbench_result": '{"status": "PROCESSED",...}' "created_at": "2017-08-16T07:18:41.652891", "updated_at": "2017-09-30T22:29:56.970779", }
REST API to Get Node Hardware Information
Rest API helps you to get the hardware information of all the nodes in the POD through CIMC/UCSM.
GET Request URL /v1/hwinfo Output Response { "hwinforesult": "{"control-server-2": {"memory": {"total_memory": "131072"}, "firmware": {"serial_number": "FCH1905V16Q", "fw_model": "UCSC-C220-M4S"}, "cimc_ip": "172.31.230.100", "storage": {"num_storage": 4}, "cisco_vic_adapters": {"product_name": "UCS VIC 1225"}, "cpu": {"number_of_cores": "24"}, "power_supply": {"power_state": "on"}} … }
REST API to Get Mandatory Features Mapping
POST Request URL /v1/releasemapping/mandatory_features_mapping JSON Response: { "mandatory": { "networkType": { "C": { "feature_status": true, "values": [{"name": "VXLAN/Linux Bridge", "value": "VXLAN/Linux Bridge"},], "insight_label": "Tenant Network", "desc": "Tenant Network" }, "B": { "feature_status": true, "values": [{"name": "VXLAN/Linux Bridge", "value": "VXLAN/Linux Bridge"},], "insight_label": "Tenant Network", "desc": "Tenant Network" } }, "cephMode": { "all": { "feature_status": true, "values": [{"name": "Central", "value": "Central"},], "insight_label": "Ceph Mode", "desc": "Ceph Mode" } }, "podType": { "C": { "feature_status": true, "values": [{"name": "Fullon", "value": "fullon"},], "insight_label": "POD Type", "desc": "POD Type" }, "B": { "feature_status": true, "values": [{"name": "Fullon", "value": "fullon"},], "insight_label": "POD Type", "desc": "POD Type" } }, "installMode": { "all": { "feature_status": true, "values": [{"name": "Connected", "value": "connected"}, ], "insight_label": "Install Mode", "desc": "Install Mode" } } }, "platformType": [{"name": "B-series", "value": "B"}, {"name": "C-series", "value": "C"}], "postinstalllinks": { "view_cloudpulse": {"alwayson": true, "feature_status": true, "platformtype": "all", "insight_label": "Run VMTP", "desc": "Cloudpluse"}, "password_reconfigure": {"alwayson": true, "feature_status": true, "platformtype": "all", "insight_label": "Reconfigure Passwords", "desc": "Reconfigure Passwords"} } }
REST API to Get Optional Features Mapping
POST Request URL /v1/releasemapping/optional_features_mapping JSON Response: [ { "SWIFTSTACK": { "feature_status": true, "insight_label": "Swiftstack", "repeated_redeployment": true, "reconfigurable": ["cluster_api_endpoint", "reseller_prefix", "admin_password", "protocol"], "desc": "swift stack feature" } }, { "heat": { "feature_status": true, "insight_label": "Heat", "repeated_redeployment": false, "reconfigurable": ["all"], "desc": "Openstack HEAT service" } }, ….. other features ]
Disk Maintenance information
REST wrapper to query information about RAID disks on Pod nodes. This will return the RAID disk information of all or a selection of RAID disks available in the Pod.
The disk management extension to the VIM REST API enables support for Disk Management actions
End Point |
Type |
Valid Args |
Valid Arg Values |
Example |
---|---|---|---|---|
/diskmgmt |
GET |
None |
None |
/v1/diskmgmt/ |
/diskmgmt/ check_disks |
GET |
None, args |
All, control, compute |
/v1/diskmgmt/check_disks/ /v1/diskmgmt/check_disks/? args=control,compute |
/diskmgmt/ replace_disks |
GET |
None, args |
All, control, compute |
/v1/diskmgmt/replace_disks/ /v1/diskmgmt/replace_disks/? args=control,compute |
/diskmgmt/server |
GET |
server_list, action |
List of valid server names, check_disks, replace_disks |
/v1/diskmgmt/server/?server_list= srv1,srv2&action=check_disks /v1/diskmgmt/server/?server_list= srv1&action=replace_disks |
Get a Check disk operation
Resource URI
Verb |
URI |
---|---|
GET |
/v1/diskmgmt |
Example
JSON Request
GET /v1/diskmgmt Accept: application/json
JSON Response
200 OK Content-Type: application/json { "add_as_spares_disks_results_list": [], "bad_disks_results_list": [], "fcfg_disks_results_list": [], "raid_results_list": [ { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "EMC-Testbed", "role": "management", "server": "localhost" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-20", "role": "control", "server": "15.0.0.7" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-21", "role": "control", "server": "15.0.0.8" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-22", "role": "control", "server": "15.0.0.5" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-23", "role": "compute", "server": "15.0.0.6" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-24", "role": "compute", "server": "15.0.0.10" } ], "rbld_disks_results_list": [], "spare_disks_results_list": [] }
Get a Check disk operation for compute nodes
Resource URI
Verb |
URI |
---|---|
GET |
/v1/diskmgmt/check_disks/?args={all,control,compute} |
Example
JSON Request
GET /v1/diskmgmt/check_disks/?args=compute Accept: application/json
JSON Response
200 OK Content-Type: application/json { "add_as_spares_disks_results_list": [], "bad_disks_results_list": [], "fcfg_disks_results_list": [], "raid_results_list": [ { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-23", "role": "compute", "server": "15.0.0.6" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-24", "role": "compute", "server": "15.0.0.10" } ], "rbld_disks_results_list": [], "spare_disks_results_list": [] }
Post a replace disk operation
Resource URI
Verb |
URI |
---|---|
GET |
/v1/diskmgmt/replace_disks/?args={all,control,compute} |
Example
JSON Request
Get /v1/diskmgmt/replace_disks/?args=compute Accept: application/json
JSON Response
200 OK Content-Type: application/json { "add_as_spares_disks_results_list": [ { "disk slot": "1", "host": "i13-21", "replace status": "Success", "role": "control", "server": "15.0.0.8" } ] }
Get a check disk operation for a particular server
Resource URI
Verb |
URI |
---|---|
GET |
v1/diskmgmt/server/?server_list={server_list}&action=check_disks |
Example
JSON Request
GET /v1/diskmgmt/server/?server_list=i13-21,i13-23&action=check_disks Accept: application/json
JSON Response
200 OK Content-Type: application/json { "add_as_spares_disks_results_list": [ { "disk slot": "1", "disk state": " UGood", "host": "i13-21", "role": "control", "server": "15.0.0.8" } ], "bad_disks_results_list": [], "fcfg_disks_results_list": [], "raid_results_list": [ { "Num PDs": 4, "Num VDs": 1, "RAID health": "NdAtn", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Dgrd", "host": "i13-21", "role": "control", "server": "15.0.0.8" }, { "Num PDs": 4, "Num VDs": 1, "RAID health": "Opt", "RAID level": "RAID10", "RAID type": "HW", "VD health": "Optl", "host": "i13-23", "role": "compute", "server": "15.0.0.6" } ], "rbld_disks_results_list": [], "spare_disks_results_list": [] }
Perform a replace disk operation for a particular server
Resource URI
Verb |
URI |
---|---|
GET |
v1/diskmgmt/server/?server_list={server_list}&action={replace_disks} |
Example
JSON Request
GET /v1/diskmgmt/server?server_list=i13-21&action=replace_disks Accept: application/json
JSON Response
200 OK Content-Type: application/json { "add_as_spares_disks_results_list": [ { "disk slot": "1", "host": "i13-21", "replace status": "Success", "role": "control", "server": "15.0.0.8" } ] }
OSD Maintenance information
REST wrapper to query information about OSD on Pod storage nodes. This will return the OSD status information of all or a selection of OSDs available in the Pod.
End Point |
Type |
Valid Args |
Valid Arg Values |
Example |
---|---|---|---|---|
/osdmgmt |
GET |
None |
None |
/v1/osdmgmt/ |
/osdmgmt/check_osds |
GET |
None |
Detail |
/v1/osdmgmt/check_osds/ |
osdmgmt/server |
GET |
server_list, action |
List of valid server names, check_osds, replace_osd, osd_name |
/v1/osdmgmt/server/?server_list =svr1,svr2&action=check_osds /v1/osdmgmt/server/server_list=svr1&action =replace_osd&osd_name=osd_name |
Get a OSD disk operation
Resource URI
Verb |
URI |
---|---|
GET |
/v1/osdmgmt |
Example
JSON Request
GET /v1/osdmgmt Accept: application/json
JSON Response
200 OK Content-Type: application/json { "bad_osds_results_list": [], "osd_details_results_list": [ { "All OSD status": "All Good", "Num OSDs": 5, "OSD_detail": [ { "OSD_id": 0, "OSD_journal": "/dev/sda4", "OSD_mount": "/var/lib/ceph/osd/ceph-0", "OSD_name": "osd.0", "OSD_path": "/dev/sdb1", "OSD_status": "up", "slot_id": 2 }, { "OSD_id": 3, "OSD_journal": "/dev/sda5", "OSD_mount": "/var/lib/ceph/osd/ceph-3", "OSD_name": "osd.3", "OSD_path": "/dev/sdc1", "OSD_status": "up", "slot_id": 3 }, { "OSD_id": 6, "OSD_journal": "/dev/sda6", "OSD_mount": "/var/lib/ceph/osd/ceph-6", "OSD_name": "osd.6", "OSD_path": "/dev/sdd1", "OSD_status": "up", "slot_id": 4 }, { "OSD_id": 9, "OSD_journal": "/dev/sda7", "OSD_mount": "/var/lib/ceph/osd/ceph-9", "OSD_name": "osd.9", "OSD_path": "/dev/sde1", "OSD_status": "up", "slot_id": 5 }, { "OSD_id": 12, "OSD_journal": "/dev/sda8", "OSD_mount": "/var/lib/ceph/osd/ceph-12", "OSD_name": "osd.12", "OSD_path": "/dev/sdf1", "OSD_status": "up", "slot_id": 6 } ], "host": "i13-27-test", "role": "block_storage", "server": "15.0.0.4" }, { "All OSD status": "All Good", "Num OSDs": 5, "OSD_detail": [ { "OSD_id": 1, "OSD_journal": "/dev/sda4", "OSD_mount": "/var/lib/ceph/osd/ceph-1", "OSD_name": "osd.1", "OSD_path": "/dev/sdb1", "OSD_status": "up", "slot_id": 2 }, { "OSD_id": 4, "OSD_journal": "/dev/sda5", "OSD_mount": "/var/lib/ceph/osd/ceph-4", "OSD_name": "osd.4", "OSD_path": "/dev/sdc1", "OSD_status": "up", "slot_id": 3 }, { "OSD_id": 7, "OSD_journal": "/dev/sda6", "OSD_mount": "/var/lib/ceph/osd/ceph-7", "OSD_name": "osd.7", "OSD_path": "/dev/sdd1", "OSD_status": "up", "slot_id": 4 }, { "OSD_id": 10, "OSD_journal": "/dev/sda7", "OSD_mount": "/var/lib/ceph/osd/ceph-10", "OSD_name": "osd.10", "OSD_path": "/dev/sde1", "OSD_status": "up", "slot_id": 5 }, { "OSD_id": 13, "OSD_journal": "/dev/sda8", "OSD_mount": "/var/lib/ceph/osd/ceph-13", "OSD_name": "osd.13", "OSD_path": "/dev/sdf1", "OSD_status": "up", "slot_id": 6 } ], "host": "i13-25", "role": "block_storage", "server": "15.0.0.11" }, { "All OSD status": "All Good", "Num OSDs": 5, "OSD_detail": [ { "OSD_id": 2, "OSD_journal": "/dev/sda4", "OSD_mount": "/var/lib/ceph/osd/ceph-2", "OSD_name": "osd.2", "OSD_path": "/dev/sdb1", "OSD_status": "up", "slot_id": 2 }, { "OSD_id": 5, "OSD_journal": "/dev/sda5", "OSD_mount": "/var/lib/ceph/osd/ceph-5", "OSD_name": "osd.5", "OSD_path": "/dev/sdc1", "OSD_status": "up", "slot_id": 3 }, { "OSD_id": 8, "OSD_journal": "/dev/sda6", "OSD_mount": "/var/lib/ceph/osd/ceph-8", "OSD_name": "osd.8", "OSD_path": "/dev/sdd1", "OSD_status": "up", "slot_id": 4 }, { "OSD_id": 11, "OSD_journal": "/dev/sda7", "OSD_mount": "/var/lib/ceph/osd/ceph-11", "OSD_name": "osd.11", "OSD_path": "/dev/sde1", "OSD_status": "up", "slot_id": 5 }, { "OSD_id": 14, "OSD_journal": "/dev/sda8", "OSD_mount": "/var/lib/ceph/osd/ceph-14", "OSD_name": "osd.14", "OSD_path": "/dev/sdf1", "OSD_status": "up", "slot_id": 6 } ], "host": "i13-26", "role": "block_storage", "server": "15.0.0.9" } ] }
Perform a check OSD operation for a particular server
Resource URI
Verb |
URI |
---|---|
GET |
/v1/osdmgmt/server/?server_list={server_list}&action={check_osds} |
Example
JSON Request
GET /v1/diskmgmt/server/?server_list=i13-26&action=check_osds Accept: application/json
JSON Response
200 OK Content-Type: application/json { "bad_osds_results_list": [], "osd_details_results_list": [ { "All OSD status": "All Good", "Num OSDs": 5, "OSD_detail": [ { "OSD_id": 2, "OSD_journal": "/dev/sda4", "OSD_mount": "/var/lib/ceph/osd/ceph-2", "OSD_name": "osd.2", "OSD_path": "/dev/sdb1", "OSD_status": "up", "slot_id": 2 }, { "OSD_id": 5, "OSD_journal": "/dev/sda5", "OSD_mount": "/var/lib/ceph/osd/ceph-5", "OSD_name": "osd.5", "OSD_path": "/dev/sdc1", "OSD_status": "up", "slot_id": 3 }, { "OSD_id": 8, "OSD_journal": "/dev/sda6", "OSD_mount": "/var/lib/ceph/osd/ceph-8", "OSD_name": "osd.8", "OSD_path": "/dev/sdd1", "OSD_status": "up", "slot_id": 4 }, { "OSD_id": 11, "OSD_journal": "/dev/sda7", "OSD_mount": "/var/lib/ceph/osd/ceph-11", "OSD_name": "osd.11", "OSD_path": "/dev/sde1", "OSD_status": "up", "slot_id": 5 }, { "OSD_id": 14, "OSD_journal": "/dev/sda8", "OSD_mount": "/var/lib/ceph/osd/ceph-14", "OSD_name": "osd.14", "OSD_path": "/dev/sdf1", "OSD_status": "up", "slot_id": 6 } ], "host": "i13-26", "role": "block_storage", "server": "15.0.0.9" } ] }
Perform a replace OSD operation for a particular server
Resource URI
Verb |
URI |
---|---|
GET |
/v1/osdmgmt/server/?server_list={server_name}&action=replace_osd&osd_name={osd_name} |
Example
JSON Request
GET /v1/diskmgmt/server/?server_list=i13-25&action=replace_osd&osd_name=osd.10 Accept: application/json
JSON Response
200 OK Content-Type: application/json { 'osd_replace_details_results_list': [ { 'hdd_slot': 5, 'host_name': 'i13-25', 'journal_mnt': '/dev/sda4', 'new_dev_uuid': 'UUID=94480b3e-5698-4d6a-b715-0613be41cff5', 'new_mount': '/var/lib/ceph/osd/ceph-10', 'new_osd_id': 10, 'new_path': '/dev/sde1', 'old_osd_id': 10, 'status_msg': 'Successfully deleted, removed and replaced OSD osd.10 from server i13-25' } ] }