序 :为什么会有这篇文章
1 写这篇翻译的目的是为了记录自己的学习成果。
2 顺手学习一下如何使用Markdown。
- 本文的API翻译省略部分 不常用API方法 及 不了解的API方法。所以,下面的链接放送给大家: NetworkWork API v2.0 官网原文(English), 猛戳这里!
- 刚刚学习Markdown,使用不当之处请不吝赐教
- 受水平所限,如果出现语法或语义翻译错误,请指出
- [推荐]真是一个好工具啊!!!!Markdown新手指南+Markdown中文手册 有了,才发现文字之美
正文开始啦
OpenStack管理的Computer服务的设备间使用的是虚拟网络服务。Networking (neutron) API v2.0 结合了API v1.1 以及 一些必要的互联网地址管理(IPAM)功能。允许用户绑定IP地址块 和 通过OpenStack社交网络进行其他网络配置设置。你可以从块中选择一个特定的IP地址 或 让OpenStack 网络选择第一个有效的IP地址。
Networks
GET /v2.0/networks
List networks:列出特定租户有权访问的网络。
* 虽然API上是这么写的。但是,在安装好的OpenStack管理环境上利用命令(neutron net-list)进行测试时发现,可以看到当前租户自己创建的内网和外网和全部的外部网络。但是路由的list命令(neutron router-list)只能看到当前租户自身的路由。不明白为什么和API描述的不一致。
通过使用查询参数,你可以控制返回哪些属性。更多信息,请查看 Filtering and Column Selection in the OpenStack Networking API v2.0 Reference .
正常返回码 200
异常返回码 非法的(401)
响应参数:
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up 来自OpenStack中国的解释 | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
id | plain | csapi:uuid | 网络的id(network id) |
name | plain | xsd:string | 网络名称(network name) |
shared | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值 |
subnets | plain | xsd:dict | 相关联的子网 |
tenant_id | plain | csapi:uuid | 租户id(tenant id) |
【疑问】
- 话说xsd、csapi好像是web service里的东东。本人对这个玩意儿已经无力再爱了
- style:plain 指的是get或post请求的‘contentType’???大神给解答一下
JOSN返回数据:这个操作不接受请求主体。
{
"networks": [
{
"status": "ACTIVE",
"subnets": [
"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"
],
"name": "private-network",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"provider:network_type": "local",
"router:external": true,
"shared": true,
"id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
"provider:segmentation_id": null
},
{
"status": "ACTIVE",
"subnets": [
"08eae331-0402-425a-923c-34f7cfe39c1b"
],
"name": "private",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e",
"provider:network_type": "local",
"router:external": true,
"shared": true,
"id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324",
"provider:segmentation_id": null
}
]
}
POST /v2.0/networks
创建网络:创建一个网络
这个操作不需要请求主体。你在URI中指定的租户ID(tenant ID)是创建网络的租户的ID。在操作的请求主体中一个管理员用户可以指定另一个租户的ID,这个被指定ID的租户是这个网络的拥有者。
正常返回码 201
错误返回码 错误的请求(badRequest 400),非法的(unauthorized 401)
请求参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up (可选) | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
name (可选) | plain | xsd:string | 网络的名称。一个请求主体是可选的:如果包含这个参数,它可以指定这个操作属性。 |
shared (可选) | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值。 |
tenant_id (可选) | plain | xsd:string | 仅管理模式。这个UUID(tenant_id)的租户将是这个网络的持有者。发送这个创建命令的租户和命令中被指定的租户(网络的持有者)可以不是一个租户。然而,只有管理用户可以指定不是他们自己的租户ID。你无法通过授权策略更改这个值。 |
返回参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
id | plain | csapi:uuid | 网络id(network id) |
name | plain | xsd:string | 网络名称 |
shared | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值 |
status | plain | xsd:string | 网络的状态 |
subnets | plain | xsd:dict | 相关联的子网 |
tenant_id | plain | csapi:uuid | 所属租户id(tenant id) |
JSON请求数据:
{
"network": {
"name": "sample_network",
"admin_state_up": true
}
}
JSON返回数据:
{
"network": {
"status": "ACTIVE",
"subnets": [],
"name": "net1",
"admin_state_up": true,
"tenant_id": "9bacb3c5d39d41a79512987f338cf177",
"segments": [
{
"provider:segmentation_id": 2,
"provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453",
"provider:network_type": "vlan"
},
{
"provider:segmentation_id": null,
"provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453",
"provider:network_type": "stt"
}
],
"shared": false,
"port_security_enabled": true,
"id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c"
}
}
POST /v2.0/networks
批量创建网络:在一个请求中创建多个网络
在请求主体中,指定一个网络列表
批量操作总是原子性的。全部或没有网络在请求主体中被创建。
正常返回码 201
错误返回码 错误的请求(badRequest 400),非法的(unauthorized 401)
请求参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up (可选) | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
name | plain | xsd:string | 网络的名称。一个请求主体是可选的:如果包含这个参数,它可以指定这个操作属性。 |
shared (可选) | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值。 |
tenant_id (可选) | plain | xsd:string | 仅管理模式。这个UUID(tenant_id)的租户将是这个网络的持有者。发送这个创建命令的租户和命令中被指定的租户(网络的持有者)可以不是一个租户。然而,只有管理用户可以指定不是他们自己租户的租户ID。你无法通过授权策略更改这个值。 |
返回参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
id | plain | csapi:uuid | 网络id(network id) |
name | plain | xsd:string | 网络名称 |
shared | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值 |
status | plain | xsd:string | 网络的状态 |
subnets | plain | xsd:dict | 相关联的子网 |
tenant_id | plain | csapi:uuid | 所属租户id(tenant id) |
JSON请求数据:
{
"networks": [
{
"name": "sample_network3",
"admin_state_up": true
},
{
"name": "sample_network4",
"admin_state_up": true
}
]
}
JSON返回数据:
{
"networks": [
{
"status": "ACTIVE",
"subnets": [],
"name": "sample_network3",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"provider:network_type": "local",
"shared": false,
"id": "bc1a76cb-8767-4c3a-bb95-018b822f2130",
"provider:segmentation_id": null
},
{
"status": "ACTIVE",
"subnets": [],
"name": "sample_network4",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"provider:network_type": "local",
"shared": false,
"id": "af374017-c9ae-4a1d-b799-ab73111476e2",
"provider:segmentation_id": null
}
]
}
GET /v2.0/networks/{network_id}
展示网络:展现指定的网络的信息
通过使用查询参数,你可以控制返回哪些属性。更多信息,请查看 Filtering and Column Selection in the OpenStack Networking API v2.0 Reference .
正常返回码 200
异常返回码 非法的(unauthorized 401),数据未找到(itemNotFound 404)
请求参数:
参数 | Style | 类型 | 描述 |
---|---|---|---|
network_id | URI | csapi:UUID | 你感兴趣的网络的UUID。 |
响应参数:
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
id | plain | csapi:uuid | 网络的id(network id) |
name | plain | xsd:string | 网络名称(network name) |
shared | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值 |
status | plain | xsd:string | 网络状态 |
subnets | plain | xsd:dict | 相关联的子网 |
tenant_id | plain | csapi:uuid | 租户id(tenant id) |
JSON响应数据:
{
"network": {
"status": "ACTIVE",
"subnets": [
"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"
],
"name": "private-network",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"provider:network_type": "local",
"router:external": true,
"shared": true,
"id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
"provider:segmentation_id": null
}
}
PUT /v2.0/networks/{network_id}
更新网络:更新指定的网络
正常响应码 200
错误响应码 失败的请求(badRequest 400), 非法的请求(unauthorized 401), 禁止的操作( forbidden 403), 数据未找到(itemNotFound 404)
请求参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
network_id | URI | csapi:UUID | 你感兴趣的网络的ID |
admin_state_up (可选) | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
name | plain | xsd:string | 网络名称 |
shared (可选) | plain | xsd:bool | 仅管理模式。表示这个网络是否被共享给全部租户。 |
tenant_id (可选) | plain | csapi:uuid | 网络持有者的租户ID。只有管理用户可以指定不是他们自己租户的租户ID。你无法通过授权策略更改这个值。 |
响应参数:
参数 | Style | 类型 | 描述 |
---|---|---|---|
admin_state_up | plain | xsd:bool | 网络的管理状态,up (true) or down (false) |
id | plain | csapi:uuid | 网络的id(network id) |
name | plain | xsd:string | 网络名称(network name) |
shared | plain | xsd:bool | 表示这个网络是否被共享给全部租户。默认情况下,只有管理用户可以改变这个值 |
status | plain | xsd:string | 网络状态 |
subnets | plain | xsd:dict | 相关联的子网 |
tenant_id | plain | csapi:uuid | 租户id(tenant id) |
JSON请求数据:
{
"network": {
"name": "sample_network_5_updated"
}
}
JSON响应数据:
{
"network": {
"status": "ACTIVE",
"subnets": [],
"name": "sample_network_5_updated",
"provider:physical_network": null,
"admin_state_up": true,
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"provider:network_type": "local",
"router:external": false,
"shared": false,
"id": "1f370095-98f6-4079-be64-6d3d4a6adcc6",
"provider:segmentation_id": null
}
}
DELETE /v2.0/networks/{network_id}
删除网络:删除指定的网络和它所关联的资源
这个操作不接受请求主体并且不返回响应主体
正常响应码 204
错误响应码 非法的操作(unauthorized 401), 数据未发现(itemNotFound 404), 请求冲突(conflict 409)
请求参数
参数 | Style | 类型 | 描述 |
---|---|---|---|
network_id | URI | csapi:UUID | 你感兴趣的网络的ID |
Subnets
GET /v2.0/subnets
列出子网:列出指定租户可以访问的子网
这个操作不接受请求主体。
默认策略是返回提交请求的租户的所用有的专有子网,除非这个请求是被一个具有管理权限的用户提交的。你可以通过使用查询参数的字段,控制返回哪些熟悉。你可以通过使用字符串类型的查询参数来过滤返回结果。更多信息,请查看 Filtering and Column Selection in the OpenStack Networking API v2.0 Reference .
正常响应码 200
错误响应码 非法的请求(unauthorized 401)
JSON响应参数:
{
"subnets": [
{
"name": "private-subnet",
"enable_dhcp": true,
"network_id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324",
"tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e",
"dns_nameservers": [],
"allocation_pools": [
{
"start": "10.0.0.2",
"end": "10.0.0.254"
}
],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "10.0.0.1",
"cidr": "10.0.0.0/24",
"id": "08eae331-0402-425a-923c-34f7cfe39c1b"
},
{
"name": "my_subnet",
"enable_dhcp": true,
"network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
"tenant_id": "4fd44f30292945e481c7b8a0c8908869",
"dns_nameservers": [],
"allocation_pools": [
{
"start": "192.0.0.2",
"end": "192.255.255.254"
}
],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "192.0.0.1",
"cidr": "192.0.0.0/8",
"id": "54d6f61d-db07-451c-9ab3-b9609b6b6f0b"
}
]
}
POST /v2.0/subnets
创建子网:在指定的网络上创建子网
默认情况下,OpenStack网络创建 IP v4 子网。为了创建 IP v6子网,你必须指定请求主体中属性ip_version
的值为6。OpenStack网络不会尝试从提供的CIDR中获取正确的IP version。如果gateway地址的参数,gateway_ip
,没有被指定,OpenStack网络会为子网网关从cidr中分配一个地址。
* Ps: 未完待续...