HTTP 客户端请求 API
HTTP 客户端请求 API
注意!
以下 HTTP 请求其中的 dbc_client_ip 和 dbc_client_port 为用户自己部署的 DBC 客户端访问地址
GPU 节点管理
1. 查询 GPU 节点机器配置信息
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/mining_nodes
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {} }
示例:
2. 租用者查询获取 session_id
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/mining_nodes/session_id
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { }, //身份认证信息,使用租用者签名或者多签账户签名(参考HTTP请求格式说明),两者选一 ... }
示例(此处使用的是租用者签名,也可以使用多签账户签名):
虚拟机管理
1. 创建虚拟机
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "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": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
- 创建过程的时间长短,会根据配置的不同而不同,大约需要几分钟时间。
- 可以通过请求
虚拟机详细信息
,查询到虚拟机登录方式
以及虚拟机的当前状态
(当状态值为"creating",表示虚拟机正在创建过程中)
2. 查询虚拟机详细信息
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/<要查询的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
3. 查询虚拟机列表
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
4. 关闭虚拟机(shutdown)
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/shutdown/<要停止的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
5. 关闭虚拟机(强制断电)
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/poweroff/<要停止的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
6. 启动虚拟机
唤醒处于睡眠状态的虚拟机,也是用此接口
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start/<要启动的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
7. 删除虚拟机
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/delete/<要删除的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
示例:
8. 重启虚拟机
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<要重启的 task_id 值>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
注意
发送重启请求后,管理程序将选择它认为最好的关闭方法。请注意,虚拟机可能会忽略该请求。若要强制重启虚拟机,请给 url 加上 force_reboot 参数,参数等于 true 或者 1 即强制重启,等于 false 或者 0 或者不带参数则仍旧使用上面传统的方式重启。强制重启虚拟机的请求 url 如下:
http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<要重启的 task_id 值>?force_reboot=true
9. 查询虚拟机日志
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/logs/<要查询的 task_id 值>?flag=tail&line_num=10
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
注意!
查询虚拟机日志的请求 url 有两个参数,flag 表示查询日志的方向,参数等于 tail 即从日志文件的尾部开始查询,等于 head 即从日志文件的头部开始查询。line_num 表示要查询的日志行数,如果超过文件的实际行数,则以文件实际行数为准。最后,此请求最多返回 1024 个字节,超出范围的日志会被截断。
10. 修改虚拟机配置
提示
需要先关闭虚拟机
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/modify/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "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 "new_public_ip: "", // 公网ip地址 "new_network_filters": [] // 安全组 }, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
11. 修改虚拟机登录密码
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/passwd/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "username": "dbc", "password": "vm123456" }, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
注意
只有正在运行的虚拟机才能修改密码。
虚拟机内必须安装了 qemu guest agent 或者 dbc guest agent 才支持使用此 API 修改密码。
Ubuntu 系统默认使用用户名"dbc", windows 系统默认使用用户名"Administrator",自定义镜像请自行设置用户名。
磁盘管理
1.查询磁盘列表
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/list/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
2.数据盘扩容
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/resize/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "disk": "vdb", //盘符 "size": 20 //单位: G }, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
3.添加新的数据盘
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/add/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "size": 20, //单位: G "mount_dir": "/data" //挂载目录,默认:/data }, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
4.删除数据盘
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/disk/delete/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": { "disk": "vdb" //盘符 }, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
快照管理
1.查询快照列表
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/snapshot/list/<task_id>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
2.查询快照详细信息
请求方式
:POST
请求URL
:http://<dbc_client_ip>:<dbc_client_port>/api/v1/snapshot/list/<task_id>/<snapshot_name>
请求body
:{ "peer_nodes_list": [ //GPU节点的node_id "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45" ], "additional": {}, "session_id": "租用者分发的session_id", "session_id_sign": "租用者分发的session_id_sign" }
3.创建快照
注意!
创建快照是请确保虚拟机为关闭状态
请求方式: POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/create/<task_id>
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"snapshot_name": "snap1", //快照名
"desc": "...", //描述
"image_server": "ID_2" //创建的快照上传到此镜像中心
},
"session_id": "租用者分发的 session_id",
"session_id_sign": "租用者分发的 session_id_sign"
}
4.删除快照
请求方式: POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/delete/<task_id>/<snapshot_name>
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {},
"session_id": "租用者分发的 session_id",
"session_id_sign": "租用者分发的 session_id_sign"
}
镜像管理
1. 查询镜像中心 ID 列表
请求方式:POST
请求 URl:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/servers`
- 请求 Body:
{
"peer_nodes_list": [],
"additional": {}
}
2.查询镜像列表
请求方式:POST
请求 URl:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images`
- 请求 Body:
1. 查询镜像中心的镜像列表
{
"peer_nodes_list": [],
"additional": {
// 【必填】指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
2. 查询 GPU 节点的镜像列表
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 【可选】指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
3. 查询 GPU 节点上某个用户的镜像列表
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 指定要查询的镜像中心ID
"image_server": "ID_1"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
- 实例:
3.上传镜像
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/upload
- 请求 Body:
1. 将 GPU 节点上的某个镜像上传到镜像中心
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2",
// 指定要查询的镜像中心ID
"image_server": "ID_1"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
2. 将客户端节点上的某个镜像上传到镜像中心
{
"peer_nodes_list": [],
"additional": {
"image_filename": "ubuntu.qcow2",
// 指定要查询的镜像中心ID
"image_server": "ID_1"
}
}
- 实例:
4.下载镜像
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/download
- 请求 Body:
从镜像中心下载镜像到 GPU 节点
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
// 指定要查询的镜像中心ID
"image_server": "ID_1",
"image_filename": "ubuntu.qcow2",
// 本地存储路径
"local_dir": "/my_local_dir"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
- 实例:
5.查询下载进度
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/downloadprogress
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
6.查询上传进度
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/uploadprogress
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
7.停止下载
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/download_stop
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
8.停止上传
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/upload_stop
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
9.删除镜像文件
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/delete
- 请求 Body:
{
"peer_nodes_list": [
//GPU节点的node_id
"80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965"
],
"additional": {
"image_filename": "ubuntu.qcow2"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
虚拟机组网
1.创建网络(创建的网络只能在同一机房内使用)
请求方式:POST
请求 URl:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/lan/create
- 请求 Body:
{
"peer_nodes_list": [
// GPU节点的node_id
"441f631da912b2186a3ef0452430f139cf01641bf4e2dce07e06103d8d70e533"
],
"additional": {
// 创建网络的名称(6-10位字母或者数字组合)
"network_name": "testnet",
// 网段/ 掩码位数
"ip_cidr": "192.168.66.0/24"
},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}
2.删除网络(DBC 会自动清理长时间没有虚拟机使用的网络)
请求方式:POST
请求 URL:
http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/lan/delete/<network_name>
- 请求 Body:
{
"peer_nodes_list": [
// GPU节点的node_id
"441f631da912b2186a3ef0452430f139cf01641bf4e2dce07e06103d8d70e533"
],
"additional": {},
"session_id": "租用者分发的session_id",
"session_id_sign": "租用者分发的session_id_sign"
}