API 文档
一.任务相关接口
1.查询任务状态
接口说明:是创建,删除,更新任务获取的任务ID的请求地址。
请求方法:
GET
请求接口:
/task/status
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | jobid | String | 是 | 任务id(多个为逗号相接字符串) |
请求URL示例:
/tingyu/task/status?jobid=jobid
响应参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | code | int | 是 | 200:成功,500: 系统错误 |
2 | msg | String | 是 | 成功:success |
3 | info | array | 是 | 返回的每条任务的详情 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": [
{
"deploymentname": "25573790700e807cd563ddc659cdd9f9vdp1",
"state": 3,
"uuid": "25573790700e807cd563ddc659cdd9f9",
"deviceid": "tingyu-73bc6b60935cc7001c9d939109b0dfc0"
}
]
}
二.部署相关接口
1.创建容器
请求方法:
POST
请求接口:
/container/create
请求URL示例:
/tingyu/container/create
请求body示例:
[
{
"uuid": "string",
"image": "string",
"imageversion": "string",
"deploymentname": "string",
"env": [
{
"key": "string",
"value": "string"
}
],
"volumes": [
{
"hostPath": "string",
"mountPath": "string"
}
],
"requestscpu": 0,
"requestsmemory": 0,
"limitscpu": 0,
"limitsmemory": 0
}
]
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据详情,若响应失败则不显示 |
响应body示例:
//响应成功
{
"msg": "success",
"code": 200,
"data": [
{
"code": 500,
"deploymentname": "25573790700e807cd563ddc659cdd9f9vdp1",
"message": "Node is not ready"
}
]
}
//响应失败
{
"msg": "uuid不存在!",
"code": "TY0015"
}
2.根据容器名字修改容器
请求方法:
PUT
请求接口:
/container/updateByName
请求URL示例:
/tingyu/container/updateByName
请求body示例:
[
{
"uuid": "string",
"image": "string",
"imageversion": "string",
"deploymentname": "string",
"env": [
{
"key": "string",
"value": "string"
}
],
"volumes": [
{
"hostPath": "string",
"mountPath": "string"
}
],
"requestscpu": 0,
"requestsmemory": 0,
"limitscpu": 0,
"limitsmemory": 0
}
]
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据详情,若响应失败则不显示 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"code": 500,
"deploymentname": "25573790700e807cd563ddc659cdd9f9vdp1",
"message": "Node is not ready"
}
]
}
{
"msg": "uuid不存在!",
"code": "TY0015"
}
3.根据区域和运营商修改容器
请求方法:
PUT
请求接口:
/container/updateByInherit
请求URL示例:
/tingyu/container/updateByInherit
请求body示例:
{
"area": "string",
"operator": "string",
"percent": 0,
"image": "string",
"imageversion": "string"
}
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据详情,若响应失败则不显示 |
响应body示例:
//成功
{
"msg": "success",
"code": 200,
"data": null
}
//失败
{
"msg": "运营商错误!正确为移动、联通和电信!",
"code": "TY0032"
}
4.升级镜像
请求方法:
POST
请求接口:
/container/inheritUpdate
请求URL示例:
/tingyu/container/inheritUpdate
请求body示例:
{
"deploymentnames": "string",
"image": "string",
"imageversion": "string"
}
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"code": 500,
"deploymentname": "string",
"message": "Get Deploymentname Fail"
}
]
}
5.根据name查询详情
请求方法:
POST
请求接口:
/container/get
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可查询多个,逗号隔开 |
请求URL示例:
/tingyu/container/get?name=nginx
/tingyu/container/get?name=25573790700e807cd563ddc659cdd9f9pop2p1
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据 |
响应body示例:
//请求成功
{
"msg": "success",
"code": 200,
"data": [
{
"code": 200,
"data": {
"image": "registry.cn-hangzhou.aliyuncs.com/pcdn-images/pop2p:v3.18",
"restart": "Always",
"name": "25573790700e807cd563ddc659cdd9f9pop2p1",
"volumes": [
{
"mountPath": "/storage",
"hostPath": "/data/vdp/instance1"
},
{
"mountPath": "/etc/resolv.conf",
"hostPath": "/etc/resolv.conf"
},
{
"mountPath": "/etc/localtime",
"hostPath": "/etc/localtime"
}
],
"env": [
{
"value": "6555",
"key": "port"
},
{
"value": "somnus",
"key": "name"
}
],
"network": "host"
},
"message": "success"
}
]
}
//请求不存在的container name
{
"msg": "success",
"code": 200,
"data": [
{
"code": 500,
"data": {
"name": "nginx"
},
"message": "deployments.apps \"nginx\" not found"
}
]
}
6.根据name查询配置详情
请求方法:
POST
请求接口:
/container/info
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可查询多个,逗号隔开 |
请求URL示例:
/tingyu/container/info?name=25573790700e807cd563ddc659cdd9f9pop2p1
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"code": 200,
"data": {
"createtime": "2021-06-13 19:27:58",
"podinfo": [
{
"podname": "25573790700e807cd563ddc659cdd9f9pop2p1-74d9d659d6-qx98q",
"podstate": "Pending"
}
],
"deploymentname": "25573790700e807cd563ddc659cdd9f9pop2p1"
},
"message": "success"
}
]
}
7.根据uuid查询所有容器配置
请求方法:
POST
请求接口:
/container/list
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | uuid | string | 是 | 机器uuid |
请求URL示例:
/tingyu/container/list?uuid=tingyu-73bc6b60935cc7001c9d939109b0dfc0
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应状态描述 |
code | int | 状态码 |
data | array | 响应数据 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": []
}
//错误的uuid
{
"msg": "uuid不存在!",
"code": "TY0015"
}
8.删除容器
请求方法:
DELETE
请求接口:
/container/delete
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可传多个,逗号隔开 |
请求URL示例:
/tingyu/container/delete?name=25573790700e807cd563ddc659cdd9f9pop2p1
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
data | array | 响应数据 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"code": 500,
"deploymentname": "25573790700e807cd563ddc659cdd9f9pop2p1",
"message": "Node is not ready"
}
]
}
9.启动容器
请求方法:
POST
请求接口:
/container/start
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可传多个,逗号隔开 |
请求URL示例:
/tingyu/container/start?name=cdn
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "启动成功!",
"code": 200
}
10.停止容器
请求方法:
POST
请求接口:
/container/stop
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可传多个,逗号隔开 |
请求URL示例:
/tingyu/container/stop?name=ceshi
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "停止成功!",
"code": 200
}
11.重启容器
请求方法:
POST
请求接口:
/container/restart
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可传多个,逗号隔开 |
请求URL示例:
/tingyu/container/restart?name=ceshi
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "重启成功!",
"code": 200
}
三.镜像相关接口
1.删除镜像
请求方法:
DELETE
请求接口:
/image/deleteByImage
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | image | string | 是 | 镜像名字 |
请求URL示例:
/tingyu/image/deleteByImage?image=pcdn
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "未知异常,请联系管理员",
"code": 500
}
2.删除镜像版本
请求方法:
DELETE
请求接口:
/image/deleteByImageVersion
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | image | string | 是 | 镜像名字 |
2 | imageVersion | string | 是 | 镜像版本 |
请求URL示例:
/tingyu/image/deleteByImageVersion?image=pcdn&imageVersion=v6.1333
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "未知异常,请联系管理员",
"code": 500
}
3.镜像查询
请求方法:
GET
请求接口:
/image/search
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | wordkey | string | 是 | 关键字 |
请求URL示例:
/tingyu/image/search?wordKey=pcdn
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
data | string array | 镜像数据 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": []
}
4.镜像上传
请求方法:
POST
请求接口:
/image/uploadImage
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | image_name | string | 是 | 镜像名 |
2 | image_url | string | 是 | 镜像地址 |
3 | version | string | 是 | 镜像版本 |
4 | detail | string | 是 | 镜像描述 |
请求URL示例:
/tingyu/image/uploadImage?image_name=doc&image_url=doc_url&version=v1.33&detail=jiekouceshi
请求body示例:
上传文件的格式为tar包。
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
响应body示例:
{
"msg": "上传失败!请检查tar包是否是通过docker save保存!",
"code": 500
}
四.计量带宽相关接口
1.用户整体带宽
请求方法:
GET
请求接口:
/info/bandWith/getAllNode
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | startDate | string | 是 | 开始时间(yyyy-MM-dd HH:mm:ss) |
2 | endDate | string | 是 | 结束时间(yyyy-MM-dd HH:mm:ss) |
请求URL示例:
/tingyu/info/bandWith/getAllNode?startDate=2020-11-08%2011%3A24%3A22&endDate=2020-12-08%2011%3A24%3A22
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
info | string array | 带宽信息 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": []
}
2.镜像维度带宽
请求方法:
GET
请求接口:
/info/bandWith/getByImage
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | startDate | string | 是 | 开始时间(yyyy-MM-dd HH:mm:ss) |
2 | endDate | string | 是 | 结束时间(yyyy-MM-dd HH:mm:ss) |
3 | image | string | 否 | 镜像名称,不填则表示全部 |
请求URL示例:
/tingyu/info/bandWith/getByImage?startDate=2020-11-08%2011%3A24%3A22&endDate=2020-12-08%2011%3A24%3A22&image=pcdn
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
info | string array | 带宽信息 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": []
}
3.镜像版本维度带宽
请求方法:
GET
请求接口:
/info/bandWith/getByImageVersion
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | startDate | string | 是 | 开始时间(yyyy-MM-dd HH:mm:ss) |
2 | endDate | string | 是 | 结束时间(yyyy-MM-dd HH:mm:ss) |
3 | imageVersion | string | 否 | 镜像名称,不填则表示全部 |
请求URL示例:
/tingyu/info/bandWith/getByImageVersion?startDate=2020-11-08%2011%3A24%3A22&endDate=2020-12-08%2011%3A24%3A22&imageVersion=pcdn%3Av6.1333
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
info | string array | 带宽信息 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": []
}
五.资源使用统计相关接口
1.镜像维度资源统计
请求方法:
GET
请求接口:
/info/resourceUse/getByImage
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | startDate | string | 是 | 开始时间(yyyy-MM-dd HH:mm:ss) |
2 | endDate | string | 是 | 结束时间(yyyy-MM-dd HH:mm:ss) |
3 | image | string | 是 | 镜像名称 |
请求URL示例:
/tingyu/info/resourceUse/getByImage?startDate=2021-05-08%2011%3A24%3A22&endDate=2021-05-11%2011%3A24%3A22&image=pcdn
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应信息 |
code | int | 状态码 |
info | string array | 资源统计信息 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": []
}
2.镜像版本维度资源统计
请求方法:
GET
请求接口:
/info/resourceUse/getByImageVersion
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | startDate | string | 是 | 开始时间(yyyy-MM-dd HH:mm:ss) |
2 | endDate | string | 是 | 结束时间(yyyy-MM-dd HH:mm:ss) |
3 | image | string | 是 | 镜像名称 |
请求URL示例:
/tingyu/info/resourceUse/getByImageVersion?startDate=2020-11-08%2011%3A24%3A22&endDate=2020-12-08%2011%3A24%3A22&imageVersion=pcdn%3Av6.1333
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应信息 |
code | int | 状态码 |
info | string array | 资源统计信息 |
响应body示例:
{
"msg": "success",
"code": 200,
"info": []
}
六.节点信息相关接口
1.根据节点名称查询信息
请求方法:
GET
请求接口:
/node/get
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 节点名称,可查询多个,逗号隔开 |
请求URL示例:
/tingyu/node/get?name=25573790700e807cd563ddc659cdd9f9
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 响应码 |
data | array | 响应数据,失败则不显示 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"area": "南京",
"nodename": "25573790700e807cd563ddc659cdd9f9",
"bandwith": 1000,
"eth": "[{\"Name\":\"eth0\",\"IP\":\"192.168.3.102\",\"Type\":\"real\"},{\"Name\":\"docker0\",\"IP\":\"172.17.0.1\",\"Type\":\"virt\"}]",
"operatingsystem": "linux",
"osimage": "CentOS Linux 7 (Core)",
"uuid": "tingyu-73bc6b60935cc7001c9d939109b0dfc0",
"diskinfo": "[{\"Name\":\"/\",\"Size\":99,\"Use\":15},{\"Name\":\"/boot\",\"Size\":0,\"Use\":0}]",
"operator": "移动",
"architecture": "amd64",
"kernelversion": "5.12.2-1.el7.elrepo.x86_64"
}
]
}
2.查询全部节点信息
请求方法:
GET
请求接口:
/node/list
请求URL示例:
/tingyu/node/list
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 响应码 |
data | array | 响应数据,失败则不显示 |
响应body示例:
{
"msg": "success",
"code": 200,
"data": [
{
"area": "江苏省",
"createtime": "2021-02-06 02:14:42",
"memory": 32052,
"address": "abb23dbf59397919f38ad64f4767dae91590138827537",
"bandwith": 2000,
"operatingsystem": "linux",
"cpu": 24,
"uuid": "tingyu-10fda1d5bb64de1b5badb83156bb099d",
"operator": "移动",
"kernelversion": "5.5.11-1.el7.elrepo.x86_64",
"nodename": "abb23dbf59397919f38ad64f4767dae91590138827537",
"eth": "[{\"Name\":\"bond0\",\"IP\":\"221.130.100.133\",\"Type\":\"virt\"},{\"Name\":\"docker0\",\"IP\":\"172.17.0.1\",\"Type\":\"virt\"}]",
"systemos": "CentOS Linux 7 (Core)",
"osimage": "CentOS Linux 7 (Core)",
"diskinfo": "[{\"Name\":\"/\",\"Size\":100,\"Use\":10},{\"Name\":\"/data\",\"Size\":1782,\"Use\":404},{\"Name\":\"/boot\",\"Size\":0,\"Use\":0}]",
"heartbeattime": "2021-07-13 15:44:01",
"status": "Ready",
"architecture": "amd64"
}
]
}
七.文件相关接口
1.文件下载
请求方法:
POST
请求接口:
/file/downloadfile
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | name | string | 是 | 容器名称 |
2 | filepath | string | 是 | 文件路径 |
请求URL示例:
/tingyu/file/downloadfile?name=podname&filepath=filepath
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码,成功200,错误500 |
error | string | 错误信息,成功则不显示 |
响应body示例:
{
"msg": "未知异常,请联系管理员",
"code": 500,
"error": "Abnormal error, please contact the administrator"
}
2.根据任务ID获取文件信息
请求方法:
POST
请求接口:
/file/getResponseByJobId
请求参数:
序号 | 名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|---|
1 | jobId | string | 是 | 任务ID |
请求URL示例:
/tingyu/file/getResponseByJobId?jobId=jobid
响应参数:
名称 | 类型 | 描述 |
---|---|---|
msg | string | 响应结果描述 |
code | int | 状态码 |
error | string | 错误信息,成功则不显示 |
响应body示例:
{
"msg": "未知异常,请联系管理员",
"code": 500,
"error": "get file info fail"
}