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": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {

    }
}
1
2
3
4
5
6
7
8
9

示例:


2. 租用者查询获取session_id

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/mining_nodes/session_id

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {

    },
   //身份认证信息,使用租用者签名或者多签账户签名(参考HTTP请求格式说明),两者选一
   ...
}
1
2
3
4
5
6
7
8
9
10
11

示例(此处使用的是租用者签名,也可以使用多签账户签名):


虚拟机管理

1. 创建虚拟机

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
        // ssh登录linux虚拟机时使用的端口号(每个虚拟机设置一个不同的值)
        "ssh_port": "5684",
        // 登录windows虚拟机时使用的端口号
        "rdp_port": "5685",
        // 使用vnc连接该虚拟机时的端口号(每个虚拟机设置一个不同的值)
        "vnc_port": "5904",
        // 镜像名字(查看机器信息时显示机器拥有的镜像或在镜像管理中心拥有的镜像均可填写应用)
        "image_name": "ubuntu.qcow2",
        // 填写数据盘的名称(可不填,不填dbc默认以形式为data_1_<task_id>.qcow2的名称存在,
         // 如填写会检查文件是否存在,存在则数据盘会以填写的文件的.qcow2形式存在)
        "data_file_name": "",
        // 操作系统名字: win 、ubuntu
        "operation_system": "",
        // 引导方式: legacy 、uefi
        "bios_mode": "",
        // 不同虚拟机之间互相传输的组播地址,范围为224.0.0.0~239.0.0.0
        // 添加多组播地址续在括号中用","相隔,也可不填
        "multicast":["230.0.0.1:5558"]
        // gpu数量(大于等于 0)
        "gpu_count": "2",
        // cpu数量(大于0)
        "cpu_cores": "8",
        // 内存大小(大于0,单位:G)
        "mem_size": "8",
        // 磁盘大小(大于0,单位:G)
        "disk_size": "10"
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

示例:

  • 创建过程的时间长短,会根据配置的不同而不同,大约在五分钟到十五分钟之间。
  • 可以通过请求虚拟机详细信息,查询到虚拟机登录方式以及虚拟机的当前状态(当状态值为"creating",表示虚拟机正在创建过程中)

2. 查询虚拟机详细信息

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/<要查询的task_id值>

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

示例:

3. 查询虚拟机列表

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

示例:

4. 停止虚拟机

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/stop/<要停止的task_id值>

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

示例:

5. 启动虚拟机

唤醒处于睡眠状态的虚拟机,也是用此接口

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/start/<要启动的task_id值>

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

示例:

6. 删除虚拟机

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/delete/<要删除的task_id值>

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

示例:

7. 重启虚拟机

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<要重启的task_id值>

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

WARNING

发送重启请求后,管理程序将选择它认为最好的关闭方法。请注意,虚拟机可能会忽略该请求。若要强制重启虚拟机,请给url加上force_reboot参数,参数等于true或者1即强制重启,等于false或者0或者不带参数则仍旧使用上面传统的方式重启。强制重启虚拟机的请求url如下:

http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/restart/<要重启的task_id值>?force_reboot=true

8. 查询虚拟机日志

请求方式:POST

请求URL:http://<dbc_client_ip>:<dbc_client_port>/api/v1/tasks/logs/<要查询的task_id值>?flag=tail&line_num=10

请求body

{
    "peer_nodes_list": [
        // 请求机器的node_id
        "58fb618aa482c41114eb3cfdaefd3ba183172da9e25251449d045043fbd37f45"
    ],
    "additional": {
         
    },

    "session_id": "租用者分发的session_id",
    "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12

注意!

查询虚拟机日志的请求url有两个参数,flag表示查询日志的方向,参数等于tail即从日志文件的尾部开始查询,等于head即从日志文件的头部开始查询。line_num表示要查询的日志行数,如果超过文件的实际行数,则以文件实际行数为准。最后,此请求最多返回1024个字节,超出范围的日志会被截断。


快照/镜像管理

1.创建快照

注意!

创建快照是请确保虚拟机为关闭状态

  • 请求方式: POST

  • 请求 URL:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/<task_id>/create
1
  • 请求 Body:
{
  "peer_nodes_list": [
    "80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965" //请求的机器id
  ],
  "additional": {
    "snapshot_name": "snap2", //自定义的镜像名
    "description": "finish hello world", // 自定义的镜像描述(可不写)
    "disks": [
      //选择磁盘创建(可以不写,如果没有"disks",则默认对所有磁盘做外部增量快照,快照文件由 libvirt 自动生成)
      {
        "disk_name": "vda", //磁盘名称
        "snapshot_type": "external" //external创建外部快照
      },
      {
        "disk_name": "vdb", //磁盘名称
        "snapshot_type": "no" //no不创建快照(不填写默认使用external)
      }
    ]
  },
  "session_id": "租用者分发的 session_id",
  "session_id_sign": "租用者分发的 session_id_sign"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • 实例:

create_snap

2.查看快照列表

  • 请求方式:POST

  • 请求 URL:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/<task_id>
1
  • 请求 Body:
{
  "peer_nodes_list": [
    "80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965" // 请求的机器id
  ],
  "additional": {},
  "session_id": "租用者分发的session_id",
  "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
  • 实例:

snap_list

3.查看快照详情信息

  • 请求方式:POST

  • 请求 URL:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/snapshot/<task_id>/<snap_name>
1
  • 请求 Body:
{
  "peer_nodes_list": [
    "80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965" // 请求的机器id
  ],
  "additional": {},
  "session_id": "租用者分发的session_id",
  "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
  • 实例:

snap_list

4.查询镜像管理中心的镜像列表(查看所有上传的镜像)

  • 请求方式:POST

  • 请求 URl:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images`
1
  • 请求 Body:
{
  "peer_nodes_list": [],
  "additional": {}
}
1
2
3
4
  • 实例:

all_images

5.上传镜像

  • 请求方式:POST

  • 请求 URL:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/upload/<images_name>
1
  • 请求 Body:
{
  "peer_nodes_list": [
    "80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965" // 请求的机器id
  ],
  "additional": {},
  "session_id": "租用者分发的session_id",
  "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
  • 实例:

snap_list

6.下载镜像

  • 请求方式:POST

  • 请求 URL:

http://{{dbc_client_ip}}:{{dbc_client_port}}/api/v1/images/download/<images_name>
1
  • 请求 Body:
{
  "peer_nodes_list": [
    "80720ffadecb07087b3a5b6f88b91b58f7c738b15405c93914ee04f607a14965" // 请求的机器id
  ],
  "additional": {},
  "session_id": "租用者分发的session_id",
  "session_id_sign": "租用者分发的session_id_sign"
}
1
2
3
4
5
6
7
8
  • 实例:

snap_list