跳转到: 导航, 搜索

Neutron/LBaaS/Architecture/Scheduler/API

< Neutron‎ | LBaaS‎ | 架构‎ | 调度器

概述

调度器操作设备,设备是具有管理接口参数的指定服务类型实体。

动词

动词 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