Neutron/DeviceInventory
< 中子(重定向自 Quantum/DeviceInventory)
设备清单管理
理由:某些厂商驱动程序可能需要存储可用的设备及其参数,以选择逻辑配置将部署到哪个实例。
设备清单管理是 Quantum 中提供 高级服务的设备的集中控制点。它应该被设计成通用,以支持不同类型的服务设备:负载均衡器、VPN、防火墙等。
设备模型
| 属性 | 类型 | CRUD | 必需 | 默认值 | 评论 |
| id | uuid | CR | 是 | 自动生成 | |
| name | 字符串 | CRU | 否 | none | |
| service_providers | uuid_list | CRU | 是 | [] | 设备覆盖的服务提供商 UUID 列表 |
| management | 对象 | CRU | 否 | none | 地址、凭据等。 |
| shared | 布尔值 | CR | 否 | true | 指示设备是否可以在租户之间共享 |
| tenant_id | uuid | CR | 否 | none | |
| capabilities | 对象 | R | 否 | none |
示例
{
"id": "f2bf34e0-28b6-4ce5-93aa-8bab56259cad",
"name": "HAP-001",
"service_providers": ["db902c0c-d5ff-4753-b465-668ad9656918"],
"shared": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
"capabilities": {
"lb_methods": [
"ROUND_ROBIN",
"STATIC_RR"
],
"protocols": [
"TCP",
"HTTP"
],
"healthMonitors": [
"ICMP",
"HTTP"
],
"sessionPersistences": [
"HTTP_COOKIE",
"SOURCE_IP"
]
}
API 命令
| 动词 | URI | 评论 |
| GET | /v2.0/appliances | |
| POST | /v2.0/appliances | 仅限管理员 |
| GET | /v2.0/appliances/{appliance_id} | |
| 更新 | /v2.0/appliances/{appliance_id} | 仅限管理员 |
| DELETE | /v2.0/appliances/{appliance_id} | 仅限管理员 |
列出设备
| 动词 | URI |
| GET | /appliances |
正常响应代码:200
错误响应代码:未授权 (401)
除非 Quantum 服务器正在没有 Keystone 集成的情况下运行,否则此操作不需要请求体。
此操作返回一个响应体。
JSON 请求
GET /v2.0/appliances Accept: application/json
JSON 响应
{
"appliances": [
{
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"service_providers": ["db902c0c-d5ff-4753-b465-668ad9656918"],
"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 | /appliances/{appliance_id} |
正常响应代码:200
错误响应代码:未授权 (401),未找到 (404)
除非 Quantum 服务器正在没有 Keystone 集成的情况下运行,否则此操作不需要请求体。
此操作返回一个响应体。
JSON 请求
GET /v2.0/appliances/{afc75773-640e-403c-9fff-62ba98db1f19}
Accept: application/json
JSON 响应
{
"appliance": {
"id": "afc75773-640e-403c-9fff-62ba98db1f19",
"name": "HAP-001",
"service_providers": ["db902c0c-d5ff-4753-b465-668ad9656918"],
"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 | /appliances |
正常响应代码:201
错误响应代码:错误请求 (400) 未授权 (401)
此操作需要一个请求体。请求体必须包含一个网络对象,该对象指定网络的符号名称。
此操作返回一个响应体。
JSON 请求
POST /v2.0/appliances Content-Type: application/json Accept: application/json
{
"appliance": {
"name": "HAP-001",
"service_providers": ["db902c0c-d5ff-4753-b465-668ad9656918"],
"shared": "false",
"tenant_id": "f2bf34e028b64ce593aa8bab56259cad",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
JSON 响应
{
"appliance": {
"id": "f2bf34e028b64ce593aa8bab56259cad",
"name": "HAP-001",
"service_providers": ["db902c0c-d5ff-4753-b465-668ad9656918"],
"is_public": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
更新设备
| 动词 | URI |
| PUT | /appliances/{appliance_id} |
正常响应代码:200
错误响应代码:错误请求 (400) 未授权 (401),禁止 (403) 未找到 (404)
此操作需要一个请求体。可以在请求体中设置以下属性
| 属性 |
| name |
| management |
如果请求更新任何其他属性,则返回 400 错误请求。注意:与 Quantum 类似,更新操作采用补丁语义。这意味着用户不需要发送整个资源进行更新,而只需发送用户希望更新的属性,如以下示例所示。
此操作返回一个响应体。
JSON 请求
PUT /v2.0/appliances/fc68ea2c-b60b-4b4f-bd82-94ec81110766 Content-Type: application/json Accept: application/json
{
"appliance": {
"name": "HAP-001-new",
}
}
JSON 响应
status: 200
content-length: 192
content-type: application/json
{
"appliance": {
"id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766",
"name": "HAP-001-new",
"type": "virtual_load_balancing",
"is_public": "true",
"management": {
"address": "10.0.0.6",
"port": 22,
"user": "user",
"password": "swordfish"
}
}
}
删除设备
| 动词 | URI |
| DELETE | /appliances/{appliance_id} |
正常响应代码:204
错误响应代码:未授权 (401),未找到 (404)
此操作不需要请求主体。
此操作不返回响应主体。
JSON 请求
DELETE /v2.0/appliances/{afc75773-640e-403c-9fff-62ba98db1f19}
Accept: application/json
JSON 响应
status: 204