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
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
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
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
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
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
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
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
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
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
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
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
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
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
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'
}
]
}