跳转到: 导航, 搜索

Neutron/DeviceInventory

设备清单管理

原理:某些厂商驱动程序可能需要存储可用的设备及其参数,以选择将逻辑配置部署到哪个实例。

设备清单管理是 Quantum 中提供 高级服务 的设备的集中控制点。它应该被设计成通用,以支持不同类型的服务设备:负载均衡器、VPN、防火墙等。

设备型号

属性 类型 CRUD 必需 默认值 评论
id uuid CR 自动生成
name 字符串 CRU none
service_providers uuid_列表 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