跳转到: 导航, 搜索

MelangeAPIBase

Melange API 规范

目录

常规信息

Melange API 使用 RESTful Web 服务接口实现。

  • 所有 GET /resources 接受 'limit' 和 'marker' 参数。如果未传递这些参数,则应用默认限制。
  • 如果 POST 或 PUT 到资源时未发送强制参数,API 将返回 '400 Bad Request' 响应。

请求/响应类型

  • Melange API 支持 JSON 和 XML 数据序列化格式。
  • 请求格式使用 Content-Type 标头指定,并且是需要请求体的操作所必需的。
  • 可以使用 Accept 标头或在请求 URI 中添加 .xml 或 .json 扩展来指定响应格式。
  • 如果未指定响应格式,则默认使用 JSON。
  • 如果同时使用 Accept 标头和查询扩展指定了冲突的格式,则查询扩展优先。

版本


列出版本


动词 URI
GET /

参数

响应代码

正常响应代码:200

JSON 响应


{
 "versions": 
                 [
                   {"status": "CURRENT", "name": "v0.1", "links":  [ {"href": "https://:9898/v0.1", "rel": "self"}]
                   }
                 ]
}


扩展

Melange API 是可扩展的。API 扩展允许在不更改版本的情况下将新功能引入 API,并允许供应商特定的利基功能。API 扩展的工作方式类似于 nova 扩展。


列出扩展


动词 URI
GET /extensions

参数

响应代码

正常响应代码:200


列出扩展详情


动词 URI
GET /extensions/{alias}

参数

响应代码

正常响应代码:200

注意

以下所有 URL 均以 "/v0.1" 为前缀。

IP 块


列出租户的块


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks

参数

类型('public' 或 'private')

响应代码

正常响应代码:200


列出租户的子网


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 不存在时]-~+~


获取租户 IP 块的详情


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 不存在时]-~+~


创建租户的 IP 块


动词 URI
POST /ipam/tenants/{tenant_id}/ip_blocks

参数

~+~-'type': 'public' 或 'private' [必需]

'cidr': IPv4 或 IPv6 cidr [必需]

'network_id': 可以是 uuid,任何字符串均可接受

'policy_id': 是一个 uuid,必须是现有的策略

'dns1': 主 DNS 服务器 IP 地址,默认为 Melange 中配置的 DNS

'dns2': 辅助 DNS 服务器 IP 地址,默认为 Melange 中配置的 DNS

'gateway': 任何有效的 IP 地址,默认为块的第二个 IP 地址-~+~

响应代码

~+~-正常响应代码:201

错误 - 400 Bad Request [当缺少强制参数或字段验证失败时]-~+~


创建租户的子网


动词 URI
POST /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/subnets

参数

~+~-'cidr': IpV4IpV6 cidr [必需]

'network_id' : 可以是 uuid,任何字符串均可接受

'policy_id' : 是一个 uuid,必须是现有的策略

'tenant_id' : 可以是 uuid,任何字符串均可接受,默认为父块的 tenant_id-~+~

响应代码

~+~-正常响应代码:201

错误 - 404 Not Found [当给定 ip_block_id 和 tenant_id 的 IpBlock 不存在时]

错误 - 400 Bad Request [当缺少强制参数或字段验证失败时]-~+~


更新租户的 IP 块


动词 URI
PUT /ipam/tenants/{tenant_id}/ip_blocks/:(id)

参数

~+~-'network_id' : 可以是 uuid,任何字符串均可接受

'policy_id' : 是一个 uuid,必须是现有的策略-~+~

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 id 和 tenant_id 的 IpBlock 不存在时]

错误 - 400 Bad Request [当字段验证失败时]-~+~


删除租户的 IP 块


动词 URI
DELETE /ipam/tenants/{tenant_id}/ip_blocks/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 id 和 tenant_id 的 IpBlock 不存在时]-~+~

来自租户 IP 块的 IP 地址


列出租户的地址


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found (当给定 ip_block_id 和 tenant_id 的 IpBlock 未找到时)-~+~


列出租户已分配的地址


动词 URI
GET /ipam/tenants/{tenant_id}/allocated_ip_addresses

参数

'used_by_device': 设备的 uuid,可以是任何字符串。如果给定,将过滤并返回分配给此设备的 IP。

响应代码

正常响应代码:200


列出云提供商已分配的地址


动词 URI
GET /ipam/allocated_ip_addresses

参数

'used_by_device': 设备的 uuid,可以是任何字符串。如果给定,将过滤并返回分配给此设备的 IP。

响应代码

正常响应代码:200


获取地址详情


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address}

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found (当给定 ip_block_id 和 tenant_id 的 IpBlock 未找到时,或者给定地址的 IpAddress 未找到时)-~+~


分配租户的地址


动词 URI
POST /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses

参数

~+~-'address' : 用于分配此地址。如果未提供此地址,将分配下一个可用地址。

'interface_id' : 可以是 uuid,任何字符串均可接受。是配置 IP 的接口的 ID

'tenant_id' : 实际使用 IP 的“承租人”租户(与拥有块的租户相反)。默认为拥有块的租户。

'used_by_device' : 可以是 uuid,任何字符串均可接受。是使用 IP 的实例(或任何其他设备)的 ID。

'mac_address' : 任何有效的 mac_address,仅适用于生成 ipv6 地址,ipv6 块是必需的-~+~

响应代码

~+~-正常响应代码:201

错误 - 404 Not Found [当给定 ip_block_id 的 IpBlock 未找到时]

错误 - 422 Unprocessable Entity [如果无法从 IpBlock 分配任何新的 ip_address]

错误 - 409 Conflict [如果给定的地址已分配]

错误 - 400 Bad Request [当缺少强制参数或字段验证失败时]-~+~


释放租户的地址


动词 URI
DELETE /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address}

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found (当给定 id 和 tenant_id 的 ip_block 未找到时)-~+~


恢复租户的地址


动词 URI
PUT /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_addresses/{address}/restore

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found (当给定 id 和 tenant_id 的 IpBlock 未找到时,或者给定地址的 IpAddress 未找到时)-~+~

静态路由


列出 IpBlock 的所有静态路由


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes

参数

响应代码

正常响应代码:200


获取静态路由的详情


动词 URI
GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 ip_block_id 和 tenant_id 的 IpBlock 不存在时,或者给定 id 的 IpRoute 不存在时]-~+~


IpBlock 创建静态路由


动词 URI
POST /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes

参数

~+~-'destination' : [必需] IpAddress 或目标主机或网络的 Cidr。

'netmask : 目标网络的 netmask(如果适用)。

'gateway' : [必需] IpAddress 的网关。

响应代码

~+~-正常响应代码:201

错误 - 404 Not Found [当给定 ip_block_id 和 tenant_id 的 IpBlock 不存在时]

错误 - 400 Bad Request [当缺少必需的参数或字段验证失败时]-~+~


更新静态路由


动词 URI
PUT /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes/:(id)

参数

~+~-'destination' : IpAddress 或目标主机或网络的 Cidr。

'netmask : 目标网络的 netmask(如果适用)。

'gateway' : IpAddress 的网关。

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 ip_block_id 和 tenant_id 的 IpBlock 不存在时,或者给定 id 的静态路由不存在时]

错误 - 400 Bad Request [当字段验证失败时]-~+~


删除静态路由


动词 URI
DELETE /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 ip_block_id 和 tenant_id 的 IpBlock 不存在时,或者给定 id 的静态路由不存在时]-~+~

网络中的 IP 分配


从租户网络分配地址


动词 URI
POST /ipam/tenants/{tenant_id}/networks/{network_id}/interfaces/{interface_id}/ip_allocations

参数

~+~-'addresses' : 这些地址(可以是 ipv4 和/或 ipv6 地址的数组)用于分配。如果未提供,将从一个 IPv4 和一个 IPv6 块分配下一个可用地址。

'mac_address' : 将用于分配 IPv6 地址。如果网络具有 IPv6 块,则为必需项。

'tenant_id' : 实际使用 IP 的“承租人”租户(与拥有块的租户相反)。默认为拥有分配 IP 的块的租户。

'used_by_device' : 可以是 uuid,任何字符串均可接受。是配置 IP 的实例(或任何其他设备)的 ID。

响应代码

~+~-正常响应代码:201

错误 - 422 Unprocessable Entity [如果无法从网络分配 ip 地址]

错误 - 404 Not Found [当给定 network_id 和 tenant_id 的网络未找到时]

错误 - 409 Conflict [如果给定的地址已分配]-~+~

错误 - 400 Bad Request [当缺少必需的参数或字段验证失败时]-~+~


列出租户网络的已分配 IpAddresses


动词 URI
GET /ipam/tenants/{tenant_id}/networks/{network_id}/interfaces/{interface_id}/ip_allocations

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 network_id 和 tenant_id 的网络未找到时]-~+~


释放租户网络的全部 IpAddresses


动词 URI
DELETE /ipam/tenants/{tenant_id}/networks/{network_id}/interfaces/{interface_id}/ip_allocations

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 network_id 和 tenant_id 的网络未找到时]-~+~

NAT

跟踪 NAT 信息旨在协助实现和跟踪浮动 IP。


列出全局


动词 URI
GET /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 的 ip 块 ID 或给定地址的 IP 地址未找到时]-~+~


列出本地


动词 URI
GET /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IP 块的 ip_block_id 或给定地址的 IpAddress 未找到时]-~+~


分配全局


动词 URI
POST /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals

参数

{'ip_addresses':'[ { "ip_block_id" : "some_global_ip_block_id", "ip_address" : "some_global_ip_address" }, ..., {....} }

响应代码

~+~-正常响应代码:200

错误 - 400 Bad Request [当参数中缺少 ip_block_id 和 ip_address 的值时]-~+~


分配本地


动词 URI
POST /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals

参数

{'ip_addresses':'[ { "ip_block_id" : "some_local_ip_block_id", "ip_address" : "some_local_ip_address" } ... {} }

响应代码

~+~-正常响应代码:200

错误 - 400 Bad Request [当参数中缺少 ip_block_id 和 ip_address 的值时]-~+~


移除全局


动词 URI
DELETE /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals/{inside_globals_address}

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 的 ip_block_id 或给定地址的 IpAddress 未找到时]-~+~


移除本地


动词 URI
DELETE /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals/{inside_locals_address}

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 的 ip_block_id 或给定地址的 IpAddress 未找到时]-~+~


移除所有全局


动词 URI
DELETE /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals/{address}

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 的 ip_block_id 或给定地址的 IpAddress 未找到时]-~+~


移除所有本地


动词 URI
DELETE /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_locals

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当 IpBlock 的 ip_block_id 或给定地址的 IpAddress 未找到时]-~+~

IP 策略

策略


列出所有租户的 IP 策略


动词 URI
GET /ipam/tenants/{tenant_id}/policies

参数

响应代码

正常响应代码:200


获取租户 IP 策略的详情


动词 URI
GET /ipam/tenants/{tenant_id}/policies/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 id 和 tenant_id 的策略不存在时]-~+~


为租户创建 IP 策略


动词 URI
POST /ipam/tenants/{tenant_id}/policies

参数

~+~-'name' : [必需] 策略的名称。

'description' : 策略的简短描述。

响应代码

~+~-正常响应代码:201

错误 - 400 Bad Request [当缺少必需的参数或字段验证失败时]-~+~


更新租户的 IP 策略


动词 URI
PUT /ipam/tenants/{tenant_id}/policies/:(id)

参数

~+~-'name' : 策略的名称。

'description' : 策略的简短描述。

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 id 和 tenant_id 的策略不存在时]

错误 - 400 Bad Request [当缺少必需的参数或字段验证失败时]-~+~


删除租户的 IP 策略


动词 URI
DELETE /ipam/tenants/{tenant_id}/policies/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当给定 id 和 tenant_id 的策略不存在时]-~+~

不可用 IP 范围


列出租户策略的所有不可用 IP 范围


动词 URI
GET /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当策略不存在时]-~+~


获取租户策略不可用 IP 范围的详情


动词 URI
GET /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges

参数

响应代码

~+~-正常响应代码:200

错误 - 404 Not Found [当策略或 IP 范围不存在时]-~+~


在租户策略中创建不可用 IP 范围


动词 URI
POST /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges

参数

~+~-'offset': 整数 [必需,可以是正数或负数整数]

'length' : 整数 [必需,应该是正数整数]-~+~

响应代码

~+~-正常响应代码:201

错误 - 404 未找到 [当策略不存在时]-~+~


更新租户策略的不可用 IP 地址范围


动词 URI
PUT /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id)

参数

~+~-'offset': 整数 [可以是正数或负数整数]

'length' : 整数 [应该是正数整数]-~+~

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略或 IP 地址范围不存在时]-~+~


删除租户策略的不可用 IP 地址范围


动词 URI
DELETE /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_ranges/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略或 IP 地址范围不存在时]-~+~

租户策略不可用 IP 八位字节


列出租户策略的所有不可用 IP 八位字节


动词 URI
GET /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets

参数

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略不存在时]-~+~


获取租户策略的不可用 IP 八位字节的详细信息


动词 URI
GET /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略或 IP 八位字节不存在时]-~+~


在租户策略中创建一个不可用的 IP 八位字节


动词 URI
POST /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets

参数

'octet': 整数 [必需,应该是 0-255]

响应代码

~+~-正常响应代码:201

错误 - 404 未找到 [当策略不存在时]-~+~


更新租户策略的不可用 IP 八位字节的详细信息。


动词 URI
PUT /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id)

参数

'octet': 整数 [应该是 0-255]

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略或 IP 八位字节不存在时]-~+~


删除租户策略的不可用 IP 八位字节


动词 URI
DELETE /ipam/tenants/{tenant_id}/policies/{policy_id}/unusable_ip_octets/:(id)

参数

响应代码

~+~-正常响应代码:200

错误 - 404 未找到 [当策略或 IP 八位字节不存在时]-~+~

待办事项

  • 在资源详细信息中添加 'self' 和 'bookmark' 链接。
  • 版本 Atom 订阅
  • 通过 instance_id 列出所有 IP 的 API