Neutron/LBaaS/Architecture/Scheduler/API
概述
调度器操作设备,设备是具有管理接口参数的指定服务类型实体。
动词
| 动词 | URI |
| GET | /scheduler/devices.json |
| POST | /scheduler/devices.json |
| GET | /scheduler/devices/{device_id}.json |
| 更新 | /scheduler/devices/{device_id}.json |
| DELETE | /scheduler/devices/{device_id}.json |
模型
| 属性 | 类型 | CRUD | 必需 | 默认值 |
| id | uuid | CR | 是 | 自动生成 |
| name | 字符串 | CRU | 否 | none |
| service_type | 字符串 | CR | 是 | none |
| version | 字符串 | CR | 是 | none |
| management | 对象 | CRU | 否 | none |
| shared | 布尔值 | CR | 否 | false |
| tenant_id | uuid | CR | 否 | none |
| capabilities | 对象 | R | 否 | none |
示例
{
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"type": "lb-virtual",
"version": "1.0",
"shared": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
列出设备
| 动词 | URI |
| GET | /devices |
正常响应代码:200
错误响应代码:未授权 (401)
除非 Quantum 服务器正在没有 Keystone 集成的情况下运行,否则此操作不需要请求体。
此操作返回一个响应体。
JSON 请求
GET /scheduler/devices.json Accept: application/json
JSON 响应
{
"devices": [
{
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"type": "lb-virtual",
"version": "1.0",
"shared": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
},
"capabilities": {
"lb_methods": [
"STATIC_RR",
"ROUND_ROBIN",
],
"protocols": [
"TCP",
"HTTP"
],
"healthMonitors": [
"ICMP",
"HTTP_GET",
],
"sessionPersistences": [
"COOKIE",
"SRC_ADDR"
]
}
}
]
}
显示设备
| 动词 | URI |
| GET | /devices/{device_id} |
正常响应代码:200
错误响应代码:未授权 (401),未找到 (404)
除非 Quantum 服务器正在没有 Keystone 集成的情况下运行,否则此操作不需要请求体。
此操作返回一个响应体。
JSON 请求
GET /scheduler/devices/{afc75773-640e-403c-9fff-62ba98db1f19}.json
Accept: application/json
JSON 响应
{
"device": {
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"type": "HAPROXY",
"version": "1.0",
"shared": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
},
"capabilities": {
"lb_methods": [
"STATIC_RR",
"ROUND_ROBIN",
"HASH_SOURCE",
"LEAST_CONNECTION",
"HASH_URI"
],
"protocols": [
"TCP",
"HTTP"
],
"healthMonitors": [
"ICMP",
"HTTP_GET",
"HTTP_HEAD"
],
"sessionPersistences": [
"COOKIE",
"SRC_ADDR"
]
}
}
}
创建设备
| 动词 | URI |
| POST | /devices |
正常响应代码:201
错误响应代码:错误请求 (400) 未授权 (401)
此操作需要一个请求体。请求体必须包含一个网络对象,该对象指定网络的符号名称。
此操作返回一个响应体。
JSON 请求
POST /scheduler/devices.json Content-Type: application/json Accept: application/json
{
"device": {
"name": "HAP-001",
"type": "lb-virtual",
"version": "1.0",
"shared": "false",
"tenant_id": "f2bf34e028b64ce593aa8bab56259cad",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
JSON 响应
{
"device": {
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"type": "lb-virtual",
"version": "1.0",
"is_public": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
更新设备
| 动词 | URI |
| PUT | /devices/{device_id} |
正常响应代码:200
错误响应代码:错误请求 (400) 未授权 (401),禁止 (403) 未找到 (404)
此操作需要一个请求体。可以在请求体中设置以下属性
| 属性 |
| name |
| management |
如果请求更新任何其他属性,则返回 400 错误请求。注意:与 Quantum 类似,更新操作采用补丁语义。这意味着用户不需要发送整个资源进行更新,而只需发送用户希望更新的属性,如以下示例所示。
此操作返回一个响应体。
JSON 请求
PUT /scheduler/devices/fc68ea2c-b60b-4b4f-bd82-94ec81110766.json Content-Type: application/json Accept: application/json
{
"device": {
"name": "HAP-001-new",
}
}
JSON 响应
status: 200
content-length: 192
content-type: application/json
{
"device": {
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001-new",
"type": "lb-virtual",
"version": "1.0",
"is_public": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
删除设备
| 动词 | URI |
| DELETE | /devices/{device_id} |
正常响应代码:204
错误响应代码:未授权 (401),未找到 (404)
此操作不需要请求主体。
此操作不返回响应主体。
JSON 请求
DELETE /scheduler/devices/{afc75773-640e-403c-9fff-62ba98db1f19}.json
Accept: application/json
JSON 响应
status: 204