HTTP client request API
HTTP client request API
( The dbc_client_ip and dbc_client_port in the following HTTP request are the DBC client access addresses deployed by the user )
GPU Node Manage
1. Querying GPU Node Machine Configuration Information
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/mining_nodes
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {} }
Example:
2. Tenant query to get session_id
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/mining_nodes/session_id
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { }, //Identity authentication information, use tenant signature or multi-signature account signature (refer to the description of HTTP request format), choose one of the two ... }
Example (the tenant's signature is used here, and a multi-signature account signature can also be used):
Virtual Machine Manage
1. Create a virtual machine
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { // 镜像名字 "image_name": "ubuntu.qcow2", // 描述 "desc": "...", // 操作系统类型: linux、windows (默认值:linux) "operation_system": "linux", // 引导方式:(默认值:legacy) // linux系统设置: legacy // windows系统设置: uefi // pxe方式: pxe "bios_mode": "legacy", // 远程登录linux虚拟机,ssh端口号(linux) "ssh_port": "5684", // 远程登录windows虚拟机,rdp端口号(windows) "rdp_port": "5685", // vnc连接端口号 "vnc_port": "5904", //自定义端口映射 // [ // 宿主机的123转发到虚拟机的123 // "tcp/udp,123", // 宿主机的111转发到虚拟机的222 // "tcp/udp,111:222", // 宿主机的333-444转发到虚拟机的444 // "tcp/udp,333-444", // 宿主机的[555-666]转发到虚拟机的[777-888] // "tcp/udp,555-666:777-888" // ] "custom_port": [], // gpu数量(大于等于 0) "gpu_count": "2", // cpu数量(大于0) "cpu_cores": "8", // 内存大小(大于0,单位:G) "mem_size": "8", // 磁盘大小(大于0,单位:G) "disk_size": "10", // 已存在的数据盘文件(如:xxx.qcow2) "data_file_name": "xxx.qcow2", // 不同虚拟机之间互相传输的组播地址,范围为224.0.0.0~239.0.0.0 // 添加多组播地址续在括号中用","相隔,也可不填 "multicast": ["230.0.0.1:5558"], //内网名称(创建虚拟机网络时填的名称) "network_name": "test", // 公网ip地址 "public_ip": "", // 安全组 // [ // 使 TCP 端口 22 (ssh) 和 3389 (rdp) 可访问 // "in,tcp,22,0.0.0.0/0,accept", // "in,tcp,3389,0.0.0.0/0,accept", // 接受所有流出虚拟机的流量 // "out,all,all,0.0.0.0/0,accept", // 丢弃其他所有流入虚拟机的流量 // "in,all,all,0.0.0.0/0,drop" // ] "network_filters": [] }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Example:
- The length of the creation process will vary depending on the configuration, ranging from five to fifteen minutes.
- You can query the
login method
of the virtual machine and thecurrent status
of the virtual machine by requestingvirtual machine details
(when the status value is "creating", it means that the virtual machine is in the process of being created)
2. Querying Virtual Machine Details
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/<task_id value to query>
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Example:
3. Query the list of virtual machines
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Example:
4. Shut down the virtual machine
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/shutdown/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
示例:
5. Shut down the virtual machine (forced power off)
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/poweroff/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
示例:
6. Start Virtual Machine
Wakes a sleeping virtual machine, also use this api
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start/<task_id>
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Example:
7. delete virtual machine
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/delete/<task_id>
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Example:
8. Restart Virtual Machine
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<task_id>
request body
:{ "peer_nodes_list": [ // node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Note
After sending the restart request, the hypervisor will choose what it thinks is the best shutdown method. Note that the request may be ignored by the virtual machine. To force restart the virtual machine, please add the force_reboot parameter to the url. If the parameter is equal to true or 1, it will be forced to restart. If it is equal to false or 0 or no parameter, it will still use the above traditional method to restart. The request url to force restart the virtual machine is as follows:
http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<task_id>?force_reboot=true :::
9. Query Virtual Machine Logs
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/logs/<task_id>?flag=tail&line_num=10
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Tips
The request url for querying virtual machine logs has two parameters. The flag indicates the direction of the query log. If the parameter is equal to tail, the query starts from the end of the log file. If it is equal to head, the query starts from the head of the log file. line_num indicates the number of log lines to be queried. If it exceeds the actual number of lines in the file, the actual number of lines in the file shall prevail. Finally, this request returns up to 1024 bytes, and logs that are out of range are truncated.
10. Modify virtual machine configuration
Tips
Some changes require a restart of the virtual machine to take effect
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/modify/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "new_ssh_port": "5586", "new_vnc_port": "5986", "new_rdp_port": "5786", "new_custom_port": [ "tcp,123", // host的123转发到guest的123 "udp,111:222", // host的111转发到guest的222 "tcp,333-444", // host的333-444转发到guest的444 "udp,555-666:777-888" // host的[555-666]转发到guest的[777-888] ], "new_gpu_count": "2", // >= 0 "new_cpu_cores": "8", // > 0, 单位G "new_mem_size": "8" // > 0, 单位G }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
11. Modifying the virtual machine login password
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/passwd/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "username": "dbc", "password": "vm123456" }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Note
Only the running virtual machine can change the password.
The qemu guest agent or dbc guest agent must be installed in the virtual machine to support using this API to change the password.
The Ubuntu system uses the default username "dbc", and the Windows system uses the default username "Administrator". For custom images, please set your own username.
Disk management
1. Query disk list
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/list/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
2. Data disk expansion
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/resize/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "disk": "vdb", //盘符 "size": 20 //单位: G }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
3. Add a new data disk
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/add/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "size": 20, //单位: G "mount_dir": "/data" //挂载目录,默认:/data }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
4. Delete data disk
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/delete/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "disk": "vdb" //盘符 }, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
Snapshot Manage
1. Query snapshot list
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/snapshot/list/<task_id>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
2. Querying snapshot details
request method
:POST
request URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/snapshot/list/<task_id>/<snapshot_name>
request body
:{ "peer_nodes_list": [ //node_id of GPU Node "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "The session_id distributed by the renter", "session_id_sign": "session_id_sign distributed by the renter" }
3. Create snapshot
注意!
To create a snapshot, make sure the virtual machine is powered off.
request method: POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/create/<task_id>
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"snapshot_name": "snap1", //快照名
"desc": "...", //描述
"image_server": "ID_2" //创建的快照上传到此镜像中心
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
4. Delete snapshot
request method: POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/delete/<task_id>/<snapshot_name>
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
Image Manage
1. Query the mirror center ID list
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/servers`
- request body:
{
"peer_nodes_list": [],
"additional": {}
}
2. Query image list
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images`
- request body:
1. Query the image list of the image center
{
"peer_nodes_list": [],
"additional": {
// 【必填】指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
2. Query the image list of GPU nodes
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 【选填】指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
3. Query the image list of a user on a GPU node
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 指定要查询的镜像中心ID
"image_server": "ID_1"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
- examples:
3. Upload image
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/upload
- request body:
1. Upload an image on the GPU node to the image center
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2",
// 指定要查询的镜像中心ID
"image_server": "ID_1"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
2. Upload an image on the client node to the image center
{
"peer_nodes_list": [],
"additional": {
"image_filename": "ubuntu.qcow2",
// 指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
- examples:
4. Download image
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/download
- request body:
Download the image from the image center to the GPU node
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 指定要查询的镜像中心ID
"image_server": "ID_1",
"image_filename": "ubuntu.qcow2",
// 本地存储路径
"local_dir": "/my_local_dir"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
- examples:
5. Query download progress
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/downloadprogress
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
6. Query upload progress
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/uploadprogress
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
7. Stop download
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/download_stop
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
8. Stop upload
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/upload_stop
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
9. Delete image file
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/delete
- request body:
{
"peer_nodes_list": [
//node_id of GPU Node
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
Virtual LAN networking
1. Create a network
注意!
the created network can only be used in the same computer room
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/lan/create
- request body:
{
"peer_nodes_list": [
// node_id of GPU Node
"441f631da912b2186a3ef0452430f139cf01641bf4e2dce07e06103d8d70e533"
],
"additional": {
// 创建网络的名称(6-10位字母或者数字组合)
"network_name": "testnet",
// 网段/ 掩码位数
"ip_cidr": "192.168.66.0/24"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
2. Delete the network
注意!
DBC will automatically clean up the network that has not been used by the virtual machine for a long time
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/lan/delete/<network_name>
- request body:
{
"peer_nodes_list": [
// node_id of GPU Node
"441f631da912b2186a3ef0452430f139cf01641bf4e2dce07e06103d8d70e533"
],
"additional": {},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
Bare Metal Node Operations
To control operations such as switching on and off a bare metal server, you need a CPU server that is on the same network as the bare metal server. Run the bare metal node program of dbc on this CPU server, and then add the relevant information of the bare metal server (IP address and IPMI control information) to the node, and the node will generate a corresponding "node_id" for the bare metal server to join the dbc network, the bare metal server can be rented and controlled by "node_id".
To install dbc bare metal node, please refer to dbc bare metal node
1. Query the list of bare metal servers
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal
- request body:
{
"peer_nodes_list": [
// node_id of bare metal node. When this is empty, it means querying the list of all bare metal servers.
"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573"
],
"additional": {},
// Generated by the node_id and node_private_key of the bare metal node
"wallet":"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573",
"nonce":"5tYLiAF9vVP8bRqSfV9DfZnizsDNY7dNeEWrSUAY8f1LKiZqBu8zaVs",
"sign":"3c680ba745af6695981fe2b30aedf6861749f570d9a6fe949930caf4613c225d4a674c33ec3d4af26c20caf871dd0f3a7cb4e0c045f12c211a345781054fc282"
}
- return example:
{
"errcode": 0,
"message": {
"bare_metal_nodes": [
{
"node_id": "fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39",
"node_private_key": "4c2e7133834d6d7dd35088beda5556215f6f5b15d2cd3c3153f117aaeec2c28b",
"uuid": "3156995b-da18-4268-9734-f8d168e90a7d",
"ip": "175.221.204.110",
"os": "Ubuntu 20.04.3 LTS (Focal Fossa) 5.4.0-121-generic GNU/Linux",
"description": "在xxx平台租用的裸金属服务器,用于xxx业务,机房id是9f01ca9c-38bd-46a9-9637-dac92b352a63",
"ipmi_hostname": "192.168.0.110",
"ipmi_username": "admin",
"ipmi_password": "dbtu2017",
"deeplink_device_id": "123456789",
"deeplink_device_password": "aAbBcC"
}
]
}
}
When the "peer_nodes_list" array in the request body contains the node_id of the bare metal node, you can also query the specified bare metal server based on the uuid
entered when adding the bare metal server.
- Use
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/<node_id>
to query related information about the bare metal server with the specifiednode_id
. - Use
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/<uuid>
to query related information about the bare metal server with the specifieduuid
.
2. Add a bare metal server
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/add
- request body:
{
"peer_nodes_list": [
// node_id of bare metal node
"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573"
],
"additional": {
// Informations of bare metal server
"bare_metal_nodes": [
{
// The unique ID of the machine supplier to identify the bare metal, required.
// v0.4.1.2 starts to support retrieving related information of the specified bare metal server through uuid.
// Therefore uuid can only be composed of a-z, A-Z and -, and cannot be repeated within the same bare metal node.
"uuid": "3156995b-da18-4268-9734-f8d168e90a7d",
// The connection method provided by the bare metal server to the user. Required. A fixed IP address is recommended.
"ip": "175.221.204.110",
// Operating system of the bare metal server, optional.
"os": "Ubuntu 20.04.3 LTS (Focal Fossa) 5.4.0-121-generic GNU/Linux",
// A description customized by the machine owner, not required.
"desc": "在xxx平台租用的裸金属服务器,用于xxx业务,机房id是9f01ca9c-38bd-46a9-9637-dac92b352a63",
// The host ID of ipmi, required. A fixed IP address is recommended.
"ipmi_hostname": "192.168.0.110",
// ipmi username, required.
"ipmi_username": "admin",
// ipmi user password, required.
"ipmi_password": "dbtu2017",
// ipmi port,optional. v0.4.0.9 version added.
"ipmi_port": 623
}
]
},
// Generated by the node_id and node_private_key of the bare metal node
"wallet":"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573",
"nonce":"5tYLiAF9vVP8bRqSfV9DfZnizsDNY7dNeEWrSUAY8f1LKiZqBu8zaVs",
"sign":"3c680ba745af6695981fe2b30aedf6861749f570d9a6fe949930caf4613c225d4a674c33ec3d4af26c20caf871dd0f3a7cb4e0c045f12c211a345781054fc282"
}
- return example:
{
"errcode": 0,
"message": {
"bare_metal_nodes": [
{
"node_id": "fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39",
"uuid": "3156995b-da18-4268-9734-f8d168e90a7d"
}
]
}
}
3. Delete bare metal servers
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/delete
- request body:
{
"peer_nodes_list": [
// node_id of bare metal node
"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573"
],
"additional": {
// node_id list of bare metal server
"bare_metal_node_ids": [
// The node_id returned when adding a bare metal server
"8c29b20da3fdb2d6c5ad7c2c85b303d9d337a1b82fa584a6b6cf1303331efd16"
]
},
// Generated by the node_id and node_private_key of the bare metal node
"wallet":"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573",
"nonce":"5tYLiAF9vVP8bRqSfV9DfZnizsDNY7dNeEWrSUAY8f1LKiZqBu8zaVs",
"sign":"3c680ba745af6695981fe2b30aedf6861749f570d9a6fe949930caf4613c225d4a674c33ec3d4af26c20caf871dd0f3a7cb4e0c045f12c211a345781054fc282"
}
4. Modify bare metal server IPMI and other information
v0.4.1.1 version added.
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/modify/{{node_id}}
The node_id in the URL is the node_id corresponding to the bare metal server. Please distinguish it from the id in the Body.
- request Body:
{
"peer_nodes_list": [
// node_id of bare metal node
"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573"
],
"additional": {
// The unique ID of the machine supplier to identify the bare metal.
"uuid": "3156995b-da18-4268-9734-f8d168e90a7d",
// The connection method provided by the bare metal server to the user. A fixed IP address is recommended.
"ip": "175.221.204.110",
// Operating system of the bare metal server.
"os": "Ubuntu 20.04.3 LTS (Focal Fossa) 5.4.0-121-generic GNU/Linux",
// A description customized by the machine owner.
"desc": "在xxx平台租用的裸金属服务器,用于xxx业务,机房id是9f01ca9c-38bd-46a9-9637-dac92b352a63",
// The host ID of ipmi. A fixed IP address is recommended.
"ipmi_hostname": "192.168.0.110",
// ipmi username.
"ipmi_username": "admin",
// ipmi user password.
"ipmi_password": "dbtu2017",
// ipmi port.
"ipmi_port": 623
},
// Generated by the node_id and node_private_key of the bare metal node
"wallet":"ccd9a2118ba3c95cd458302601f15281edc39d72dcf11a07527893d97ac1a573",
"nonce":"5tYLiAF9vVP8bRqSfV9DfZnizsDNY7dNeEWrSUAY8f1LKiZqBu8zaVs",
"sign":"3c680ba745af6695981fe2b30aedf6861749f570d9a6fe949930caf4613c225d4a674c33ec3d4af26c20caf871dd0f3a7cb4e0c045f12c211a345781054fc282"
}
5. Bare Metal Server Power Control
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/power
- request body:
{
"peer_nodes_list": [
// node_id of bare metal server
"fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39"
],
"additional": {
// power control command
// "on" - power on
// "off" - power off
// "reset" - power reset
// "status" - get power status
"command": "on"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
6. Modifying the boot device order of a bare metal server
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/bare_metal/bootdev
- request body:
{
"peer_nodes_list": [
// node_id of bare metal server
"fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39"
],
"additional": {
// boot device order
// "pxe" - Force PXE boot
// "disk" - Force boot from default Hard-drive
// "cdrom" - Force boot from CD/DVD
// "bios" - Force boot into BIOS Setup
"device": "pxe"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
DeepLink device information
In the cloud Internet cafe scene, after a GPU machine is connected to the chain in the form of a bare metal server, if you want to obtain an e-sports-level gaming experience, you also need to use a low-latency remote control software based on cloud games- DeepLink.
Correspondingly, to use DeepLink remote control, it is necessary to obtain the device code and device verification code of the DeepLink software running on the GPU machine (hereinafter collectively referred to as DeepLink device information). To this end, we add an interface to query DeepLink device information through the dbc node.
In order to ensure security, it is recommended that the GPU machines in the cloud Internet cafe scene have different device verification codes every time they are powered on, and use the interface for setting DeepLink device information to inform the bare metal node of the dbc of the device information as soon as it is powered on.
In addition, you need to modify http_ip=127.0.0.1
in the configuration file dbc_baremetal_node/conf/core.conf
of the bare metal node to http_ip=0.0.0.0
, so that the bare metal node can directly accept HTTP requests.
When the GPU machine and the bare metal node of dbc are in the same network, you can directly use the HTTP service of the bare metal node to get/set device information, and the request at this time does not need session_id
and session_id_sign
parameters. When the renter queries the device information through the HTTP service of the client node, it must have session_id
and session_id_sign
parameters.
1. Get DeepLink device information
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/deeplink
- request Body:
{
"peer_nodes_list": [
// The node_id corresponding to the GPU machine
"fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39"
],
"additional": {},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
- return example:
{
"errcode": 0,
"message": {
"device_id": "123456789",
"device_password": "aAbBcC"
}
}
2. Set DeepLink device information
request method:POST
request URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/deeplink/set
- request Body:
{
"peer_nodes_list": [
// The node_id corresponding to the GPU machine
"fcf2cd8b99958606d260ca00c5ac00c88c242bcf8eb38e7cc3f29e9719a73f39"
],
"additional": {
"device_id": "123456789",
"device_password": "aAbBcC"
},
"session_id": "The session_id distributed by the renter",
"session_id_sign": "session_id_sign distributed by the renter"
}
- return example:
{
"errcode": 0,
"message": "ok"
}