Merge "Update to point to wadls in the api-site repo to correct neutron:type error"

This commit is contained in:
Jenkins 2013-12-23 16:30:14 +00:00 committed by Gerrit Code Review
commit 42b5116e5c
113 changed files with 7120 additions and 4834 deletions

View File

@ -0,0 +1,7 @@
{
"network":
{
"name": "sample_network",
"admin_state_up": false
}
}

View File

@ -0,0 +1,3 @@
<network>
<name>sample_network</name>
</network>

View File

@ -0,0 +1,13 @@
{
"network":{
"admin_state_up":true,
"id":"850d3f2c-f0a5-4f8b-b1cf-5836fc0be940",
"name":"sample_network",
"shared":false,
"status":"ACTIVE",
"subnets":[
],
"tenant_id":"f667b69e4d6749749ef3bcba7251d9ce"
}
}

View File

@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets quantum:type="list" />
<name>sample_network</name>
<tenant_id>4be6b806faa0491eb358018bbe9f0d4e</tenant_id>
<admin_state_up quantum:type="bool">True</admin_state_up>
<shared quantum:type="bool">False</shared>
<id>0657ef52-d3f6-4320-9c26-015a3e9badea</id>
</network>

View File

@ -0,0 +1,12 @@
{
"network":
{
"status": "ACTIVE",
"subnets": ["e12f0c45-46e3-446a-b207-9474b27687a6"],
"name": "private",
"admin_state_up": true,
"tenant_id": "625887121e364204873d362b553ab171",
"id": "9d83c053-b0a4-4682-ae80-c00df269ce0a",
"shared": false
}
}

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets>
<subnet>e12f0c45-46e3-446a-b207-9474b27687a6</subnet>
</subnets>
<name>private</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true" />
</network>

View File

@ -0,0 +1,6 @@
{
"network":
{
"name": "updated_name"
}
}

View File

@ -0,0 +1,3 @@
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>nova2</name>
</network>

View File

@ -0,0 +1,34 @@
{
"networks":[
{
"status":"ACTIVE",
"subnets":[
],
"name":"sample_network_1",
"provider:physical_network":null,
"admin_state_up":false,
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"provider:network_type":"local",
"router:external":false,
"shared":false,
"id":"e9330b1f-a2ef-4160-a951-169ee6ab17f5",
"provider:segmentation_id":null
},
{
"status":"ACTIVE",
"subnets":[
],
"name":"sample_network_2",
"provider:physical_network":null,
"admin_state_up":false,
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"provider:network_type":"local",
"router:external":false,
"shared":false,
"id":"cfb5f52c-dfe2-4357-a10d-a225693e2b84",
"provider:segmentation_id":null
}
]
}

View File

@ -0,0 +1,33 @@
<?xml version='1.0' encoding='UTF-8'?>
<networks xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/neutron/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<network>
<status>ACTIVE</status>
<subnets quantum:type="list"/>
<name>sample_network_1</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9eb3ce34-183b-4a75-b08f-d6a3d241e68b</id>
<provider:segmentation_id xsi:nil="true"/>
</network>
<network>
<status>ACTIVE</status>
<subnets quantum:type="list"/>
<name>sample_network_2</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>df679a25-915d-41ed-b5ec-721481ddfd56</id>
<provider:segmentation_id xsi:nil="true"/>
</network>
</networks>

View File

@ -0,0 +1,12 @@
{
"network":
{
"status": "ACTIVE",
"subnets": ["e12f0c45-46e3-446a-b207-9474b27687a6"],
"name": "private",
"admin_state_up": true,
"tenant_id": "625887121e364204873d362b553ab171",
"id": "9d83c053-b0a4-4682-ae80-c00df269ce0a",
"shared": false
}
}

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets>
<subnet>e12f0c45-46e3-446a-b207-9474b27687a6</subnet>
</subnets>
<name>private</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true" />
</network>

View File

@ -0,0 +1,31 @@
{
"networks": [
{
"status": "ACTIVE",
"subnets": ["a318fcb4-9ff0-4485-b78c-9e6738c21b26"],
"name": "private",
"admin_state_up": true,
"tenant_id": "625887121e364204873d362b553ab171",
"id": "9d83c053-b0a4-4682-ae80-c00df269ce0a",
"shared": false
},
{
"status": "ACTIVE",
"subnets": ["aca4d43c-c48c-4a2c-9bb6-ba374ef7e135"],
"name": "nova",
"admin_state_up": true,
"tenant_id": "63878e4c5dd649d2a980e37aefddfa87",
"id": "ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"shared": false
},
{
"status": "ACTIVE",
"subnets": ["e12f0c45-46e3-446a-b207-9474b27687a6"],
"name": "network_3",
"admin_state_up": true,
"tenant_id": "ed680f49ff714162ab3612d7876ffce5",
"id": "afc75773-640e-403c-9fff-62ba98db1f19",
"shared": true
}
]
}

View File

@ -0,0 +1,36 @@
<networks xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<network>
<status>ACTIVE</status>
<subnets>
<subnet>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet>
</subnets>
<name>private</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true"/>
</network>
<network>
<status>ACTIVE</status>
<subnets>
<subnet>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet>
</subnets>
<name>nova</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">True</router:external>
<shared quantum:type="bool">False</shared>
<id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</id>
<provider:segmentation_id xsi:nil="true"/>
</network>
</networks>

View File

@ -0,0 +1,12 @@
{
"networks":[
{
"name":"sample_network_1",
"admin_state_up":false
},
{
"name":"sample_network_2",
"admin_state_up":false
}
]
}

View File

@ -0,0 +1,8 @@
<networks>
<network>
<name>sample_network_1</name>
</network>
<network>
<name>sample_network_2</name>
</network>
</networks>

View File

@ -0,0 +1,25 @@
{
"port":[
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"tenant_id":"63878e4c5dd649d2a980e37aefddfa87",
"binding:vif_type":"ovs",
"device_owner":"compute:None",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:b9:ef:05",
"fixed_ips":[
{
"subnet_id":"aca4d43c-c48c-4a2c-9bb6-ba374ef7e135",
"ip_address":"172.24.4.227"
}
],
"id":"664ebd1a-facd-4c20-948c-07a784475ab0",
"device_id":"f288bb5f-920d-4276-8345-2c0319c16f58"
}
]
}

View File

@ -0,0 +1,25 @@
<?xml version='1.0' encoding='UTF-8'?>
<port xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<name/>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</network_id>
<tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>compute:None</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:b9:ef:05</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet_id>
<ip_address>172.24.4.227</ip_address>
</fixed_ip>
</fixed_ips>
<id>664ebd1a-facd-4c20-948c-07a784475ab0</id>
<device_id>f288bb5f-920d-4276-8345-2c0319c16f58</device_id>
</port>

View File

@ -0,0 +1,8 @@
{
"port": {
"admin_state_up": true,
"device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc0",
"name": "port1",
"network_id": "6aeaf34a-c482-4bd3-9dc3-7faf36412f12"
}
}

View File

@ -0,0 +1,26 @@
{
"port":[
{
"status":"DOWN",
"binding:host_id":null,
"name":"sample_port_1",
"admin_state_up":true,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"binding:vif_type":"ovs",
"device_owner":"",
"binding:capabilities":{
"port_filter":true
},
"mac_address":"fa:16:3e:2e:7c:8a",
"fixed_ips":[
],
"id":"8fb361d8-bab0-418d-b1b8-7204a230fb06",
"security_groups":[
"99f465bc-0d7c-4142-8829-7ae0179f2fa8"
],
"device_id":""
}
]
}

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<port xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>DOWN</status>
<binding:host_id xsi:nil="true"/>
<name>test_port_1</name>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner/>
<binding:capabilities>
<port_filter quantum:type="bool">True</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:c9:8d:cf</mac_address>
<fixed_ips quantum:type="list"/>
<id>7f0aa3f1-883a-43b2-8d1b-e85fac52b417</id>
<security_groups>
<security_group>99f465bc-0d7c-4142-8829-7ae0179f2fa8</security_group>
</security_groups>
<device_id/>
</port>

View File

@ -0,0 +1,48 @@
{
"ports":[
{
"status":"DOWN",
"binding:host_id":null,
"name":"sample_port_1",
"admin_state_up":true,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"binding:vif_type":"ovs",
"device_owner":"",
"binding:capabilities":{
"port_filter":true
},
"mac_address":"fa:16:3e:2e:7c:8a",
"fixed_ips":[
],
"id":"8fb361d8-bab0-418d-b1b8-7204a230fb06",
"security_groups":[
"99f465bc-0d7c-4142-8829-7ae0179f2fa8"
],
"device_id":""
},
{
"status":"DOWN",
"binding:host_id":null,
"name":"sample_port_2",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"binding:vif_type":"ovs",
"device_owner":"",
"binding:capabilities":{
"port_filter":true
},
"mac_address":"fa:16:3e:0a:4e:13",
"fixed_ips":[
],
"id":"d4c93b0b-f593-424e-a199-d648478a5a3c",
"security_groups":[
"99f465bc-0d7c-4142-8829-7ae0179f2fa8"
],
"device_id":""
}
]
}

View File

@ -0,0 +1,46 @@
<?xml version='1.0' encoding='UTF-8'?>
<ports xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<port>
<status>DOWN</status>
<binding:host_id xsi:nil="true"/>
<name>test_port_1</name>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner/>
<binding:capabilities>
<port_filter quantum:type="bool">True</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:c9:8d:cf</mac_address>
<fixed_ips quantum:type="list"/>
<id>7f0aa3f1-883a-43b2-8d1b-e85fac52b417</id>
<security_groups>
<security_group>99f465bc-0d7c-4142-8829-7ae0179f2fa8</security_group>
</security_groups>
<device_id/>
</port>
<port>
<status>DOWN</status>
<binding:host_id xsi:nil="true"/>
<name>test_port_2</name>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner/>
<binding:capabilities>
<port_filter quantum:type="bool">True</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:79:90:81</mac_address>
<fixed_ips quantum:type="list"/>
<id>a4a81484-c1c4-4b2b-95bc-f8c4484241d0</id>
<security_groups>
<security_group>99f465bc-0d7c-4142-8829-7ae0179f2fa8</security_group>
</security_groups>
<device_id/>
</port>
</ports>

View File

@ -0,0 +1,88 @@
{
"ports":[
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"tenant_id":"63878e4c5dd649d2a980e37aefddfa87",
"binding:vif_type":"ovs",
"device_owner":"compute:None",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:b9:ef:05",
"fixed_ips":[
{
"subnet_id":"aca4d43c-c48c-4a2c-9bb6-ba374ef7e135",
"ip_address":"172.24.4.227"
}
],
"id":"664ebd1a-facd-4c20-948c-07a784475ab0",
"device_id":"f288bb5f-920d-4276-8345-2c0319c16f58"
},
{
"status":"DOWN",
"name":"",
"admin_state_up":true,
"network_id":"ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"tenant_id":"",
"binding:vif_type":"ovs",
"device_owner":"network:router_gateway",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:4a:3a:a2",
"fixed_ips":[
{
"subnet_id":"aca4d43c-c48c-4a2c-9bb6-ba374ef7e135",
"ip_address":"172.24.4.226"
}
],
"id":"c5ca7017-c390-4ccc-8cd7-333747e57fef",
"device_id":"0dc517bf-9169-4aa6-88b7-569219962881"
},
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"9d83c053-b0a4-4682-ae80-c00df269ce0a",
"tenant_id":"625887121e364204873d362b553ab171",
"binding:vif_type":"ovs",
"device_owner":"network:router_interface",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:2d:dc:7e",
"fixed_ips":[
{
"subnet_id":"a318fcb4-9ff0-4485-b78c-9e6738c21b26",
"ip_address":"10.0.0.1"
}
],
"id":"d7815f5b-a228-47bb-a5e5-f139c4e476f6",
"device_id":"0dc517bf-9169-4aa6-88b7-569219962881"
},
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"9d83c053-b0a4-4682-ae80-c00df269ce0a",
"tenant_id":"625887121e364204873d362b553ab171",
"binding:vif_type":"ovs",
"device_owner":"network:dhcp",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:73:6d:1c",
"fixed_ips":[
{
"subnet_id":"a318fcb4-9ff0-4485-b78c-9e6738c21b26",
"ip_address":"10.0.0.2"
}
],
"id":"f8639521-fab2-4879-94b2-83a47bee8a26",
"device_id":"dhcpe1b8334f-9be9-5e49-aeee-b31e6df6c847-9d83c053-b0a4-4682-ae80-c00df269ce0a"
}
]
}

View File

@ -0,0 +1,87 @@
<?xml version='1.0' encoding='UTF-8'?>
<ports xmlns="http://openstack.org/quantum/api/v2.0" xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</network_id>
<tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>compute:None</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:b9:ef:05</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet_id>
<ip_address>172.24.4.227</ip_address>
</fixed_ip>
</fixed_ips>
<id>664ebd1a-facd-4c20-948c-07a784475ab0</id>
<device_id>f288bb5f-920d-4276-8345-2c0319c16f58</device_id>
</port>
<port>
<status>DOWN</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</network_id>
<tenant_id />
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:router_gateway</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:4a:3a:a2</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet_id>
<ip_address>172.24.4.226</ip_address>
</fixed_ip>
</fixed_ips>
<id>c5ca7017-c390-4ccc-8cd7-333747e57fef</id>
<device_id>0dc517bf-9169-4aa6-88b7-569219962881</device_id>
</port>
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>9d83c053-b0a4-4682-ae80-c00df269ce0a</network_id>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:router_interface</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:2d:dc:7e</mac_address>
<fixed_ip>
<fixed_ip>
<subnet_id>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet_id>
<ip_address>10.0.0.1</ip_address>
</fixed_ip>
</fixed_ips>
<id>d7815f5b-a228-47bb-a5e5-f139c4e476f6</id>
<device_id>0dc517bf-9169-4aa6-88b7-569219962881</device_id>
</port>
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>9d83c053-b0a4-4682-ae80-c00df269ce0a</network_id>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:dhcp</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:73:6d:1c</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet_id>
<ip_address>10.0.0.2</ip_address>
</fixed_ip>
</fixed_ips>
<id>f8639521-fab2-4879-94b2-83a47bee8a26</id>
<device_id>dhcpe1b8334f-9be9-5e49-aeee-b31e6df6c847-9d83c053-b0a4-4682-ae80-c00df269ce0a</device_id>
</port>
</ports>

View File

@ -0,0 +1,14 @@
{
"ports":[
{
"name":"sample_port_1",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce"
},
{
"name":"sample_port_2",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce"
}
]
}

View File

@ -0,0 +1,10 @@
<ports>
<port>
<name>test_port_1</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
</port>
<port>
<name>test_port_2</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
</port>
</ports>

View File

@ -0,0 +1,10 @@
{
"quotas": [{
"subnet": 10,
"network": 10,
"floatingip": 50,
"tenant_id": "b7445f221cda4f4a8ac7db6b218b1339",
"router": 10,
"port": 30
}]
}

View File

@ -0,0 +1,9 @@
{
"quota": {
"subnet": 40,
"router": 50,
"network": 10,
"floatingip": 30,
"port": 30
}
}

View File

@ -0,0 +1,9 @@
{
"quota": {
"subnet": 40,
"router": 50,
"port": 30,
"network": 10,
"floatingip": 30
}
}

View File

@ -0,0 +1,9 @@
{
"quota": {
"subnet": 10,
"router": 10,
"port": 50,
"network": 10,
"floatingip": 50
}
}

View File

@ -0,0 +1,12 @@
{
"port":
{
"state": "DOWN",
"id": "98017ddc-efc8-4c25-a915-774b2a633855",
"attachment":
{
"id": "test_interface_identifier"
}
}
}

View File

@ -0,0 +1,6 @@
<port
id="98017ddc-efc8-4c25-a915-774b2a633855"
state="DOWN">
<attachment
id="test_interface_identifier"/>
</port>

View File

@ -0,0 +1,8 @@
{
"port":
{
"state": "DOWN",
"id": "98017ddc-efc8-4c25-a915-774b2a633855"
}
}

View File

@ -0,0 +1,3 @@
<port
id="98017ddc-efc8-4c25-a915-774b2a633855"
state="DOWN"/>

View File

@ -0,0 +1,16 @@
status: 201,
content-length: 306,
content-type: application/json
{
"subnet": {
"name": "",
"network_id": "ed2e3c10-2e43-4297-9006-2863a2d1abbc",
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
"allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}],
"gateway_ip": "10.0.3.1",
"ip_version": 4,
"cidr": "10.0.3.0/24",
"id": "9436e561-47bf-436a-b1f1-fe23a926e031",
"enable_dhcp": true}
}

View File

@ -0,0 +1,2 @@
<port
state="ACTIVE"/>

View File

@ -0,0 +1,24 @@
status: 200
content-length: 381
content-type: application/json
{
"subnet": {
"allocation_pools": [
{
"end": "10.0.3.254",
"start": "10.0.3.2"
}
],
"cidr": "10.0.3.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.3.1",
"host_routes": [],
"id": "91e47a57-7508-46fe-afc9-fc454e8580e1",
"ip_version": 4,
"name": "sample_subnet",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
}
}

View File

@ -0,0 +1,2 @@
<port
id="98017ddc-efc8-4c25-a915-774b2a633855"/>

View File

@ -0,0 +1,28 @@
{
"subnets": [
{
"name": "sample_subnet_1",
"enable_dhcp": true,
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"dns_nameservers": [],
"allocation_pools":[{"start": "10.100.0.2", "end": "10.100.255.254"}],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "10.100.0.1",
"cidr": "10.100.0.0/16",
"id": "70ffbaeb-4b43-4605-abe6-4c5bdbb8236b"
},
{
"name": "sample_subnet_2",
"enable_dhcp": true,
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"dns_nameservers": [],
"allocation_pools": [{"start": "172.16.0.2", "end": "172.31.255.254"}],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "172.16.0.1",
"cidr": "172.16.0.0/12",
"id": "d849e3fc-557d-4b27-8f1c-aceca1daa410"}]
}

View File

@ -0,0 +1,41 @@
<?xml version='1.0' encoding='UTF-8'?>
<subnets xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<subnet>
<name>test_subnet_1</name>
<enable_dhcp quantum:type="bool">True</enable_dhcp>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<dns_nameservers quantum:type="list" />
<allocation_pools>
<allocation_pool>
<start>10.0.0.2</start>
<end>10.255.255.254</end>
</allocation_pool>
</allocation_pools>
<host_routes quantum:type="list" />
<ip_version quantum:type="int">4</ip_version>
<gateway_ip>10.0.0.1</gateway_ip>
<cidr>10.0.0.0/8</cidr>
<id>bd3fd365-fe19-431a-be63-07017a09316c</id>
</subnet>
<subnet>
<name>test_subnet_2</name>
<enable_dhcp quantum:type="bool">True</enable_dhcp>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<dns_nameservers quantum:type="list" />
<allocation_pools>
<allocation_pool>
<start>192.168.0.2</start>
<end>192.168.255.254</end>
</allocation_pool>
</allocation_pools>
<host_routes quantum:type="list" />
<ip_version quantum:type="int">4</ip_version>
<gateway_ip>192.168.0.1</gateway_ip>
<cidr>192.168.0.0/16</cidr>
<id>86e7c838-fb75-402b-9dbf-d68166e3f5fe</id>
</subnet>
</subnets>

View File

@ -0,0 +1,18 @@
status: 200
content-length: 309
content-type: application/json
{
"subnet":
{
"name": "",
"network_id": "ed2e3c10-2e43-4297-9006-2863a2d1abbc",
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
"allocation_pools": [{"start": "10.10.0.2", "end": "10.10.0.254"}],
"gateway_ip": "10.10.0.1",
"ip_version": 4,
"cidr": "10.10.0.0/24",
"id": "4156c7a5-e8c4-4aff-a6e1-8f3c7bc83861",
"enable_dhcp": false,
}
}

View File

@ -0,0 +1,8 @@
<ports>
<port
id="98017ddc-efc8-4c25-a915-774b2a633855"
state="ACTIVE"/>
<port
id="b832be00-6553-4f69-af33-acd554e36d08"
state="ACTIVE"/>
</ports>

View File

@ -0,0 +1,40 @@
{
"subnets": [
{
"allocation_pools": [
{
"end": "10.0.3.254",
"start": "10.0.3.2"
}
],
"cidr": "10.0.3.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.3.1",
"host_routes": [],
"id": "91e47a57-7508-46fe-afc9-fc454e8580e1",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
},
{
"allocation_pools": [
{
"end": "10.0.2.254",
"start": "10.0.2.2"
}
],
"cidr": "10.0.2.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.2.1",
"host_routes": [],
"id": "e3c3620c-9d24-4470-b226-739da2f617c0",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
}
]
}

View File

@ -0,0 +1,6 @@
<ports>
<port
id="98017ddc-efc8-4c25-a915-774b2a633855"/>
<port
id="b832be00-6553-4f69-af33-acd554e36d08"/>
</ports>

View File

@ -0,0 +1,40 @@
{
"subnets": [
{
"allocation_pools": [
{
"end": "10.0.3.254",
"start": "10.0.3.2"
}
],
"cidr": "10.0.3.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.3.1",
"host_routes": [],
"id": "91e47a57-7508-46fe-afc9-fc454e8580e1",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
},
{
"allocation_pools": [
{
"end": "10.0.2.254",
"start": "10.0.2.2"
}
],
"cidr": "10.0.2.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.2.1",
"host_routes": [],
"id": "e3c3620c-9d24-4470-b226-739da2f617c0",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
}
]
}

View File

@ -0,0 +1,14 @@
{
"subnets": [
{"name": "sample_subnet_1",
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"cidr": "10.100.0.0/16",
"ip_version": 4
},
{
"name": "sample_subnet_2",
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"cidr": "172.16.0.0/12",
"ip_version": 4
}]
}

View File

@ -0,0 +1,14 @@
<subnets>
<subnet>
<name>test_subnet_1</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<cidr>10.0.0.0/8</cidr>
<ip_version>4</ip_version>
</subnet>
<subnet>
<name>test_subnet_2</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<cidr>192.168.0.0/16</cidr>
<ip_version>4</ip_version>
</subnet>
</subnets>

View File

@ -0,0 +1,29 @@
status: 200
content-length: 607
content-type: application/json
{
"subnets": [
{
"name": "",
"network_id": "ed2e3c10-2e43-4297-9006-2863a2d1abbc",
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
"allocation_pools": [{"start": "10.10.0.2", "end": "10.10.0.254"}],
"gateway_ip": "10.10.0.1",
"ip_version": 4,
"cidr": "10.10.0.0/24",
"id": "4156c7a5-e8c4-4aff-a6e1-8f3c7bc83861",
"enable_dhcp": true
},
{
"name": "",
"network_id": "afc75773-640e-403c-9fff-62ba98db1f19",
"tenant_id": "ed680f49ff714162ab3612d7876ffce5",
"allocation_pools": [{"start": "10.0.0.2", "end": "10.0.0.254"}],
"gateway_ip": "10.0.0.1",
"ip_version": 4,
"cidr": "10.0.0.0/24",
"id": "e12f0c45-46e3-446a-b207-9474b27687a6",
"enable_dhcp": true
}]
}

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="API_extensions">
<title>API Extensions</title>
<para>The API extensions augment the core API. An API extension
extends one or more of the following components of the core
API:</para>
<itemizedlist>
<listitem>
<para>Resources. An extension defines new object
classes.</para>
</listitem>
<listitem>
<para>Attributes. An extended attribute defines a new
attribute on existing resources. Prefixed by the
extension name.</para>
</listitem>
<listitem>
<para>Actions. An extended action defines a new operation
on an existing resource.</para>
</listitem>
</itemizedlist>
<para>Generic API extensions are not plug-in-specific. For
information about plug-in-specific extensions that are shipped
with OpenStack Networking, see the extension documentation in
the source code tree.</para>
<xi:include href="section_neutron_list-extensions.xml"/>
<xi:include href="section_neutron-provider-ext.xml"/>
<xi:include href="section_neutron_binding_ext_ports.xml"/>
<xi:include href="section_neutron-l3-ext.xml"/>
<xi:include href="section_neutron-extgwmodes-ext.xml"/>
<xi:include href="section_neutron-quotas-ext.xml"/>
<xi:include href="section_neutron-security-groups-ext.xml"/>
<xi:include href="section_neutron-agent-ext.xml"/>
<xi:include href="section_neutron-extraroute-ext.xml"/>
<xi:include href="section_neutron-loadbalancer-ext.xml"/>
<xi:include href="section_neutron-firewall-ext.xml"/>
<xi:include href="section_neutron-scheduler-ext.xml"/>
<xi:include href="section_neutron-vpn-ext.xml"/>
<xi:include href="section_neutron-allowed-address-pair-ext.xml"/>
<xi:include href="section_neutron-extra-dhcp-opt-ext.xml"/>
</chapter>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="API_Operations" role="api-reference">
<title>API Operations</title>
<para>Provides virtual networking services among devices that are
managed by the OpenStack Compute service. The Networking API
v2.0 combines the API v1.1 functionality with some essential
Internet Protocol Address Management (IPAM) functionality.
Enables users to associate IP address blocks and other network
configuration settings with a neutron network. You can choose
a specific IP address from the block or let neutron choose the
first available IP address.</para>
<section xml:id="networks">
<title>Networks</title>
<para>Lists, shows information for, creates, updates, and
deletes networks.</para>
<wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-networks.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/>
</section>
<section xml:id="subnets">
<title>Subnets</title>
<para>Lists, shows information for, creates, updates, and
deletes subnet resources.</para>
<wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-subnets.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/>
</section>
<section xml:id="ports">
<title>Ports</title>
<para>Lists, shows information for, creates, updates, and
deletes ports.</para>
<wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-ports.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/>
</section>
</chapter>

View File

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="General_API_Information-d1e436">
<?dbhtml stop-chunking?>
<title>General API Information</title>
<para>The &APIv2; is a ReSTful HTTP service that uses all aspects
of the HTTP protocol including methods, URIs, media types,
response codes, and so on. Providers can use existing features
of the protocol including caching, persistent connections, and
content compression. For example, providers who employ a
caching layer can respond with a <errorcode>203</errorcode>
code instead of a <errorcode>200</errorcode> code when a
request is served from the cache. Additionally, providers can
offer support for conditional &GET; requests by using ETags,
or they may send a redirect in response to a &GET; request.
Create clients so that these differences are accounted
for.</para>
<section xml:id="Authentication-d1e444">
<title>Authentication and Authorization</title>
<para>The &APIv2; uses the <link
xlink:href="https://openstack.keystone.org">Keystone
Identity Service</link> as the default authentication
service. When Keystone is enabled, users that submit
requests to the OpenStack Networking service must provide
an authentication token in <emphasis role="bold"
>X-Auth-Token</emphasis> request header. You obtain
the token by authenticating to the Keystone endpoint. For
more information about Keystone, see the <link
xlink:href="http://docs.openstack.org/api/openstack-identity-service/2.0/content/"
><citetitle>OpenStack Identity Service API v2.0
Reference</citetitle></link>.</para>
<para>When Keystone is enabled, the
<literal>tenant_id</literal> attribute is not required
in create requests because the tenant ID is derived from
the authentication token.</para>
<para>The default authorization settings allow only
administrative users to create resources on behalf of a
different tenant.</para>
<para>OpenStack Networking uses information received from
Keystone to authorize user requests. OpenStack Networking
handles the following types of authorization policies: <itemizedlist>
<listitem>
<para><emphasis role="bold">Operation-based
policies</emphasis> specify access
criteria for specific operations, possibly
with fine-grained control over specific
attributes.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Resource-based
policies</emphasis> access a specific
resource. Permissions might or might not be
granted depending on the permissions
configured for the resource. Currently
available for only the network
resource.</para>
</listitem>
</itemizedlist></para>
<para>The actual authorization policies enforced in OpenStack
Networking might vary from deployment to
deployment.</para>
</section>
<?hard-pagebreak?>
<section xml:id="Request_Response_Types">
<title>Request/Response Types</title>
<para>The &APIv2; supports the JSON data serialization
format.</para>
<para>The format for both the request and the response can be
specified by using the <code>Content-Type</code> header,
the <code>Accept</code> header or adding the
<code>.json</code> extension to the request
URI.</para>
<example>
<title>JSON Request with Headers</title>
<literallayout class="monospaced">POST /v1.0/tenants/tenantX/networks HTTP/1.1
Host 127.0.0.1:9696
Content-Type application/json
Accept application/json
Content-Length 57</literallayout>
<programlisting language="json"><xi:include href="samples/networks-post-req.json" parse="text"/></programlisting>
</example>
<example>
<title>JSON Response with Headers</title>
<literallayout class="monospaced">HTTP/1.1 201 Created
Content-Type application/json
Content-Length 204</literallayout>
<programlisting language="json"><xi:include href="samples/networks-post-res.json" parse="text"/></programlisting>
</example>
</section>
<section xml:id="filtering">
<title>Filtering and Column Selection</title>
<para>The &APIv2; supports filtering based on all top level
attributes of a resource. Filters are applicable to all
list requests.</para>
<para>For example, the following request returns all networks
named <literal>foobar</literal>:</para>
<programlisting language="bash" role="gutter: false">GET /v2.0/networks?name=foobar</programlisting>
<para>When you specify multiple filters, the &APIv2; returns
only objects that meet all filtering criteria. The
operation applies an AND condition among the
filters.</para>
<note>
<para>OpenStack Networking does not offer an OR mechanism
for filters.</para>
</note>
<para>Alternatively, you can issue a distinct request for each
filter and build a response set from the received
responses on the client-side.</para>
<para>By default, OpenStack Networking returns all attributes
for any show or list call. The &APIv2; has a mechanism to
limit the set of attributes returned. For example, return
<literal>id</literal>.</para>
<para>You can use the <literal>fields</literal> query
parameter to control the attributes returned from the
&APIv2;.</para>
<para>For example, the following request returns only
<literal>id</literal> and <literal>name</literal> for
each network:</para>
<programlisting language="bash" role="gutter: false">GET /v2.0/networks.json?fields=id&amp;fields=name</programlisting>
</section>
<section xml:id="Async_behaviour">
<title>Synchronous versus Asynchronous Plug-in
Behavior</title>
<para>The &APIv2; presents a logical model of network
connectivity consisting of networks, ports, and subnets.
It is up to the OpenStack Networking plug-in to
communicate with the underlying infrastructure to ensure
packet forwarding is consistent with the logical model. A
plug-in might perform these operations
asynchronously.</para>
<para>When an API client modifies the logical model by issuing
an HTTP &POST;, &PUT;, or &DELETE; request, the API call
might return before the plug-in modifies underlying
virtual and physical switching devices. However, an API
client is guaranteed that all subsequent API calls
properly reflect the changed logical model.</para>
<para>For example, if a client issues an HTTP &PUT; request to
set the attachment for a port, there is no guarantee that
packets sent by the interface named in the attachment are
forwarded immediately when the HTTP call returns. However,
it is guaranteed that a subsequent HTTP &GET; request to
view the attachment on that port returns the new
attachment value.</para>
<para>You can use the <literal>status</literal> attribute with
the network and port resources to determine whether the
OpenStack Networking plug-in has successfully completed
the configuration of the resource.</para>
</section>
<section xml:id="bulk_create_operations">
<title>Bulk Create Operations</title>
<para>The &APIv2; enables you to create several objects of the
same type in the same API request. Bulk create operations
use exactly the same API syntax as single create
operations except that you specify a list of objects
rather than a single object in the request body.</para>
<para>Bulk operations are always performed atomically, meaning
that either all or none of the objects in the request body
are created. If a particular plug-in does not support
atomic operations, the &APIv2; emulates the atomic
behavior so that users can expect the same behavior
regardless of the particular plug-in running in the
background.</para>
<para>OpenStack Networking might be deployed without support
for bulk operations and when the client attempts a bulk
create operation, a <errorcode>400</errorcode>
<errortext>Bad Request</errortext> error is
returned.</para>
<!-- <para>For information about how to submit bulk requests to the
&APIv2; see <xref linkend="bulk_create_networks"/>, <xref
linkend="bulK_create_subnets"/>, and <xref
linkend="bulk_create_ports"/>.</para> -->
</section>
<section xml:id="pagination">
<title>Pagination</title>
<para>To reduce load on the service, list operations will
return a maximum number of items at a time. To navigate
the collection, the parameters limit, marker and
page_reverse can be set in the URI. For example:</para>
<programlisting language="bash">?limit=100&amp;marker=1234&amp;page_reverse=False</programlisting>
<para>The <parameter>marker</parameter> parameter is the ID of
the last item in the previous list. The
<parameter>limit</parameter> parameter sets the page
size. The <parameter>page_reverse</parameter> parameter
sets the page direction. These parameters are optional. If
the client requests a limit beyond the maximum limit
configured by the deployment, the server returns the
maximum limit number of items.</para>
<para>For convenience, list responses contain atom "next"
links and "previous" links. The last page in the list
requested with 'page_reverse=False' will not contain
"next" link, and the last page in the list requested with
'page_reverse=True' will not contain "previous" link. The
following examples illustrate two pages with three items.
The first page was retrieved through:</para>
<programlisting language="bash">&GET; http://127.0.0.1:9696/v2.0/networks.json?limit=2</programlisting>
<para>Pagination is an optional feature of OpenStack
Networking API, and it might be disabled. If pagination is
disabled, the pagination parameters will be ignored and
return all the items.</para>
<para>If a particular plug-in does not support pagination
operations, and pagination is enabled, the &APIv2; will
emulate the pagination behavior so that users can expect
the same behavior regardless of the particular plug-in
running in the background.</para>
<para>Unfortunately OpenStack Networking does not expose any
mechanism to tell user if pagination is supported by
particular plug-in or enabled.</para>
<example>
<title>Network Collection, First Page: JSON
Request</title>
<literallayout class="monospaced">GET /v2.0/networks.json?limit=2 HTTP/1.1
Host: 127.0.0.1:9696
Content-Type: application/json
Accept: application/json</literallayout>
</example>
<example>
<title>Network Collection, First Page: JSON
Response</title>
<programlisting language="json"><xi:include href="samples/networks-get-first-page-res.json" parse="text"/></programlisting>
</example>
<example>
<title>Network Collection, First Page: XML Request</title>
<literallayout class="monospaced">
GET /v2.0/networks.xml?limit=2 HTTP/1.1
Host: 127.0.0.1:9696
Content-Type: application/xml
Accept: application/xml
</literallayout>
</example>
<example>
<title>Network Collection, First Page: XML
Response</title>
<programlisting language="xml"><xi:include href="samples/networks-get-first-page-res.xml" parse="text"/></programlisting>
</example>
<para>The last page won't show the "next" links</para>
<example>
<title>Network Collection, Last Page: JSON Request</title>
<literallayout class="monospaced">
GET /v2.0/networks.json?limit=2&amp;marker=71c1e68c-171a-4aa2-aca5-50ea153a3718 HTTP/1.1
Host: 127.0.0.1:9696
Content-Type: application/json
Accept: application/json
</literallayout>
</example>
<example>
<title>Network Collection, Last Page: JSON
Response</title>
<programlisting language="json"><xi:include href="samples/networks-get-last-page-res.json" parse="text"/></programlisting>
</example>
<example>
<title>Network Collection, Last Page: XML Request</title>
<literallayout class="monospaced">
GET /v2.0/networks.xml?limit=2&amp;marker=71c1e68c-171a-4aa2-aca5-50ea153a3718 HTTP/1.1
Host: 127.0.0.1:9696
Content-Type: application/xml
Accept: application/xml
</literallayout>
</example>
<example>
<title>Network Collection, Last Page: XML Response</title>
<programlisting language="json"><xi:include href="samples/networks-get-last-page-res.xml" parse="text"/></programlisting>
</example>
</section>
<section xml:id="Sorting">
<title>Sorting</title>
<para>The results of list operations can be ordered using the
'sort_key' and 'sort_dir' parameters. Currently sorting
doesn't work with extended attributes of resource. The
'sort_key' and 'sort_dir' can be repeated, and the number
of 'sort_key' and 'sort_dir' provided must be same. The
sort_dir parameter indicates in which direction to sort.
Acceptable values are 'asc' (ascending) and 'desc'
(descending).</para>
<para>Sorting is optional feature of OpenStack Networking API,
and it might be disabled. If sorting is disabled, the
sorting parameters will be ignored.</para>
<para>If a particular plug-in does not support sorting
operations, and sorting is enabled, the &APIv2; will
emulate the sorting behavior so that users can expect the
same behavior regardless of the particular plug-in running
in the background.</para>
<para>Unfortunately OpenStack Networking does provide a
mechanism to tell users if specific plug-ins support or
have enabled sorting.</para>
</section>
<section xml:id="extensions">
<title>Extensions</title>
<para>The &APIv2; is extensible.</para>
<para>The purpose of &APIv2; extensions is to:</para>
<itemizedlist>
<listitem>
<para>Introduce new features in the API without
requiring a version change.</para>
</listitem>
<listitem>
<para>Introduce vendor-specific niche
functionality.</para>
</listitem>
<listitem>
<para>Act as a proving ground for experimental
functionalities that might be included in a future
version of the API.</para>
</listitem>
</itemizedlist>
<para>To programmatically determine which extensions are
available, issue a &GET; request on the
<command>v2.0/extensions</command> URI.</para>
<para>To query extensions individually by unique alias, issue
a &GET; request on the
<command>/v2.0/extensions/<replaceable>alias_name</replaceable></command>
URI. Use this method to easily determine if an extension
is available. If the extension is not available, a
<errorcode>404</errorcode>
<errortext>Not Found</errortext> response is
returned.</para>
<para>You can extend existing core API resources with new
actions or extra attributes. Also, you can add new
resources as extensions. Extensions usually have tags that
prevent conflicts with other extensions that define
attributes or resources with the same names, and with core
resources and attributes. Because an extension might not
be supported by all plug-ins, the availability of an
extension varies with deployments and the specific plug-in
in use.</para>
<para>For more information regarding specific extensions, see
<xref linkend="API_extensions"/></para>
</section>
<?hard-pagebreak?>
<section xml:id="faults">
<title>Faults</title>
<para>The &APIv2; returns an error response if a failure
occurs while processing a request. OpenStack Networking
uses only standard HTTP error codes.
4<varname>xx</varname> errors indicate problems in the
particular request being sent from the client.</para>
<informaltable rules="all">
<col width="10%"/>
<col width="20%"/>
<col width="70%"/>
<thead>
<tr>
<th>Error</th>
<th colspan="2">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="6">400</td>
<td rowspan="6">Bad Request</td>
<td>Malformed request URI or body</td>
</tr>
<tr>
<td>Requested admin state invalid</td>
</tr>
<tr>
<td>Invalid values entered</td>
</tr>
<tr>
<td>Bulk operations disallowed</td>
</tr>
<tr>
<td>Validation failed</td>
</tr>
<tr>
<td>Method not allowed for request body (such as
trying to update attributes that can be
specified at create-time only)</td>
</tr>
<tr>
<td rowspan="2">404</td>
<td rowspan="2">Not Found</td>
<td>Non existent URI</td>
</tr>
<tr>
<td>Resource not found</td>
</tr>
<tr>
<td rowspan="3">409</td>
<td rowspan="3">Conflict</td>
<td>Port configured on network</td>
</tr>
<tr>
<td>IP allocated on subnet</td>
</tr>
<tr>
<td>Conflicting IP allocation pools for
subnet</td>
</tr>
<tr>
<td>500</td>
<td>Internal server error</td>
<td>Internal OpenStack Networking error</td>
</tr>
<tr>
<td>503</td>
<td>Service unavailable</td>
<td>Failure in Mac address generation</td>
</tr>
</tbody>
</informaltable>
<para>Users submitting requests to the &APIv2; might also
receive the following errors:</para>
<itemizedlist>
<listitem>
<para><errorcode>401</errorcode> Unauthorized - If
invalid credentials are provided.</para>
</listitem>
<listitem>
<para><errorcode>403</errorcode> Forbidden - If the
user cannot access a specific resource or perform
the requested operation.</para>
</listitem>
</itemizedlist>
</section>
</chapter>

View File

@ -0,0 +1,270 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="Overview-d1e71">
<?dbhtml stop-chunking?>
<title>Overview</title>
<para>The Neutron project provides virtual networking services
among devices that are managed by the <link
xlink:href="http://wiki.openstack.org/OpenStack"
>OpenStack</link> compute service.</para>
<para>The &APIv2; combines the <link
xlink:href="http://docs.openstack.org/api/openstack-network/1.0/content/"
>Quantum API v1.1</link> with some essential Internet
Protocol Address Management (IPAM) capabilities from the <link
xlink:href="http://melange.readthedocs.org/en/latest/apidoc.html"
>Melange API</link>. </para>
<para>These IPAM capabilities enable you to:</para>
<itemizedlist>
<listitem>
<para>Associate IP address blocks and other network
configuration settings required by a network device,
such as a default gateway and dns-servers settings,
with an OpenStack Networking network.</para>
</listitem>
<listitem>
<para>Allocate an IP address from a block and associate it
with a device that is attached to the network through
an OpenStack Networking port.</para>
</listitem>
</itemizedlist>
<para>To do this, the &APIv2; introduces the subnet entity. A
subnet can represent either an IP version 4 or version 6
address block. Each OpenStack Networking network commonly has
one or more subnets. When you create a port on the network, an
available fixed IP address is allocated to it from one the
designated subnets for each IP version. When you delete the
port, the allocated addresses return to the pool of available
IPs on the subnet. &APIv2; users can choose a specific IP
address from the block or let OpenStack Networking choose the
first available IP address.</para>
<note>
<para>The Quantum API v1.<varname>x</varname> was removed from
the source code tree. To use the Quantum API
v1.<varname>x</varname>, install the Quantum Essex
release.</para>
</note>
<?hard-pagebreak?>
<section xml:id="Glossary">
<title>Glossary</title>
<informaltable rules="all">
<thead>
<tr>
<td align="left">Term</td>
<td colspan="4" align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td align="left">CRUD</td>
<td colspan="4">Create, read, update, and delete
(CRUD) are the basic functions of persistent
storage in computer programming.</td>
</tr>
<tr>
<td align="left">entity</td>
<td colspan="4">Any piece of hardware or software
that can connect to the network services
provided by OpenStack Networking. An entity
can use OpenStack Networking services by
implementing a VIF.</td>
</tr>
<tr>
<td align="left">IPAM</td>
<td colspan="4">Internet Protocol Address
Management (IPAM) is a means of planning,
tracking, and managing the Internet Protocol
(IP) address space that is used in a
network.</td>
</tr>
<tr>
<!-- <td align="left" bgcolor="#4F91BD"> -->
<td align="left">layer-2 network</td>
<!-- <td colspan="4" bgcolor="#4F91BD"> -->
<td colspan="4">A virtual Ethernet network that is
managed by the OpenStack Networking service.
Currently, OpenStack Networking manages only
Ethernet networks. </td>
</tr>
<tr>
<td align="left">network</td>
<td colspan="4">An isolated virtual layer-2
broadcast domain that is typically reserved
for the tenant who created it unless the
network is configured to be shared. Tenants
can create multiple networks until they reach
the thresholds specified by per-tenant
quotas.</td>
</tr>
<tr>
<!-- <td align="left" bgcolor="#4F91BD"> -->
<td align="left">plug-in</td>
<!-- <td colspan="4" bgcolor="#4F91BD"> -->
<td colspan="4">A software component that
implements &APIv2;.</td>
</tr>
<tr>
<td align="left">port</td>
<td colspan="4">A virtual switch port on a logical
network switch. Virtual instances attach their
interfaces into ports. The logical port also
defines the MAC address and the IP addresses
to be assigned to the interfaces plugged into
them. When IP addresses are associated to a
port, this also implies the port is associated
with a subnet, as the IP address was taken
from the allocation pool for a specific
subnet. </td>
</tr>
<tr>
<td align="left">subnet</td>
<td colspan="4">An IP address block that can be
used to assign IP addresses to virtual
instances. Each subnet must have a CIDR and
must be associated with a network. IPs can be
either selected from the whole subnet CIDR or
from allocation pools that can be specified by
the user.</td>
</tr>
<tr>
<td align="left">VM</td>
<td colspan="4">A virtual machine (VM) is a
completely isolated guest operating system
installation within a normal host operating
system.</td>
</tr>
</tbody>
</informaltable>
</section>
<?hard-pagebreak?>
<xi:include href="section_neutron_concepts.xml"/>
<section xml:id="Theory">
<title>High-Level Task Flow</title>
<para>The high-level task flow for OpenStack Networking
involves creating a network, associating a subnet with
that network, and booting a VM that is attached to the
network. Clean-up includes deleting the VM, deleting any
ports associated with the network, and deleting the
networks. OpenStack Networking deletes any subnets
associated with the deleted network.</para>
<procedure>
<title>To use OpenStack Networking - high-level task
flow</title>
<step>
<title>Create a network</title>
<para>The tenant creates a network.</para>
<para>For example, the tenant creates the
<literal>net1</literal> network. Its ID is
<emphasis role="italic"
>net1_id</emphasis>.</para>
<!-- <para>See <xref linkend="Create_Network"/>.</para> -->
</step>
<step>
<title>Associate a subnet with the network</title>
<para>The tenant associates a subnet with that
network.</para>
<para>For example, the tenant associates the
<literal>10.0.0.0/24</literal> subnet with the
<literal>net1</literal> network.</para>
<!-- <para>See <xref linkend="create_subnet"/>.</para> -->
</step>
<step>
<title>Boot a VM and attach it to the network</title>
<para>The tenant boots a virtual machine (VM) and
specifies a single NIC that connects to the
network.</para>
<para>The following examples use the nova client to
boot a VM.</para>
<para>In the first example, Nova contacts OpenStack
Networking to create the NIC and attach it to the
<literal>net1</literal> network, with the ID
<emphasis role="italic"
>net1_id</emphasis>:</para>
<screen><prompt>$</prompt> <userinput>nova boot &lt;server_name&gt; --image &lt;image&gt; --flavor &lt;flavor&gt; --nic net-id=&lt;net1_id&gt;</userinput></screen>
<para>In a second example, you first create the
<literal>port1</literal>, port and then you
boot the VM with a specified port. OpenStack
Networking creates a NIC and attaches it to the
<literal>port1</literal> port, with the ID
<emphasis role="italic"
>port1_id</emphasis>:</para>
<screen><prompt>$</prompt> <userinput>nova boot &lt;server_name&gt; --image &lt;image&gt; --flavor &lt;flavor&gt; --nic port-id=&lt;port1_id&gt;</userinput></screen>
<para>OpenStack Networking chooses and assigns an IP
address to the <literal>port1</literal>
port.</para>
<para>For more information about the <command>nova
boot</command> command, enter:</para>
<screen><prompt>$</prompt> <userinput>nova help boot</userinput></screen>
</step>
<step>
<title>Delete the VM</title>
<para>The tenant deletes the VM.</para>
<para>Nova contacts OpenStack Networking and deletes
the <literal>port1</literal> port.</para>
<para>The allocated IP address is returned to the pool
of available IP addresses.</para>
</step>
<step>
<title>Delete any ports</title>
<para>If the tenant created any ports and associated
them with the network, the tenant deletes the
ports.</para>
<!-- <para>See <xref linkend="Delete_Port"/>.</para>-->
</step>
<step>
<title>Delete the network</title>
<para>The tenant deletes the network. This operation
deletes an OpenStack Networking network and its
associated subnets provided that no port is
currently configured on the network.</para>
</step>
</procedure>
</section>
<?hard-pagebreak?>
<section xml:id="plugin">
<title>Plug-ins</title>
<para>Virtual networking services are implemented through a
plug-in. A plug-in can use different techniques and
technologies to provide isolated virtual networks to
tenants. A plug-in also provides other services, such as
IP address management. Because each plug-in implements all
the operations included in &APIv2;, do not be concerned
about which plug-in is used.</para>
<para>However, some plug-ins might expose additional
capabilities through API extensions, which this document
discusses. For more information about the extensions
exposed by a particular plug-in, see the plug-in
documentation.</para>
</section>
</chapter>

File diff suppressed because it is too large Load Diff

View File

@ -1,207 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
]>
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook" version="5.0" status="final" xml:id="extgwmodes-ext">
<title>Configurable external gateway modes extension</title>
<para>By default, when a gateway is attached to a router using the Neutron L3 extension, Network
Address Translation (NAT) is enabled for traffic generated by subnets attached to the
router. With this extension, the user will have the option of choosing whether SNAT
should be enabled or not on a router basis.</para>
<para>This is achieved simply by specifying a boolean attribute, <literal>enable_snat</literal>,
in the <literal>external_gateway_info</literal> attribute of the <literal>router</literal>
resource. </para>
<para>This extension redefines the external_gateway_info attribute as depicted in the following
table. </para>
<table rules="all">
<caption>external_gateway_info attributes</caption>
<col width="20%"/>
<col width="8%"/>
<col width="10%"/>
<col width="15%"/>
<col width="15%"/>
<col width="32%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>Default Value </th>
<th>Validation Constraints </th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>network_id</td>
<td>UUID</td>
<td>Yes</td>
<td>N/A</td>
<td>Must be a valid uuid representative of an external network.</td>
<td/>
</tr>
<tr>
<td>enable_snat</td>
<td>Boolean</td>
<td>No</td>
<td>True</td>
<td>{True|False}</td>
<td>The default setting is <literal>True</literal> to ensure backward compatibility
for plugins supporting this extension.</td>
</tr>
</tbody>
</table>
<para>SNAT can be enabled or disabled at any time on a Neutron router regardless of the
current status of floating IPs. Floating IPs will continue working even when SNAT is
disabled.</para>
<section xml:id="list_routers_extgwmodes">
<title>List Routers</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/routers</td>
<td>Retrieve Neutron routers</td>
</tr>
</tbody>
</informaltable>
</para>
<simpara>Success and error response codes are not changed with regards to the operation as
introduced by the L3 API extension.</simpara>
<simpara>When this extension is enabled, this operation will also return the current Source
NAT status for configured routers, as shown in the sample below.</simpara>
<simpara>The response for the <emphasis>show router</emphasis> operation is the same, with
the obvious exception that a single router is returned.</simpara>
<example>
<title>Router list with configurable external gateway modes enabled</title>
<programlisting language="json"><xi:include href="samples/routers-get-enablesnat-res.json" parse="text"/></programlisting>
</example>
</section>
<section xml:id="create_router_extgwmodes">
<title>Create Router with external gateway</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&POST;</td>
<td>/routers</td>
<td>Create a new Neutron router</td>
</tr>
</tbody>
</informaltable>
</para>
<para>Success and error response codes are not changed with regards to the operation as
introduced by the L3 API extension.</para>
<para>Neutron API users can specify whether SNAT should be performed on the network
specifed as the router's external gateway by setting <literal>enable_snat</literal> in
<literal>external_gateway_info</literal> to either <literal>True</literal> or
<literal>False</literal>; the default value is <literal>True</literal>.</para>
<example>
<title>Create router with SNAT disabled</title>
<programlisting><xi:include href="samples/router-create-enablesnat.sample" parse="text"/></programlisting>
</example>
</section>
<section xml:id="update_router_extgwmodes">
<title>Update Router's external gateway info</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&PUT;</td>
<td>/routers/<literal>router_id</literal></td>
<td>Create a new Neutron router</td>
</tr>
</tbody>
</informaltable>
</para>
<para>Success and error response codes are not changed with regards to the operation as
introduced by the L3 API extension.</para>
<para>Neutron API users can enable or disable SNAT on a router specifying the
<literal>enable_snat</literal> attribute in the
<literal>external_gateway_info</literal> attribute for the router resource. This
operation can be either used for updating the SNAT status only, the
external network, or both attributes at the same time. In any case, if
the <literal>enable_snat</literal> attribute is not specified, it will default to
<literal>True</literal>. For instance, if the current SNAT status is disabled, and
the router's gateway is updated to a different external network without specifying
<literal>enable_snat</literal>, SNAT will be enabled for the new network.</para>
<para>It is important to note that whenever updating a router's external gateway
information, the <literal>network_id </literal>parameter must be specified always, even
if the final goal is just to enable or disable SNAT for the router on the same
external network.</para>
<para>The rest of this section provides some samples for updating a router's external gateway
info with SNAT mode.</para>
<para>
<example>
<title>Disable SNAT for the current external network</title>
<programlisting><xi:include href="samples/router-update-enablesnat-1.sample" parse="text"/></programlisting>
</example>
<example>
<title>Change external network and enable SNAT</title>
<programlisting><xi:include href="samples/router-update-enablesnat-2.sample" parse="text"/></programlisting>
</example>
<example>
<title>Change external network and keep SNAT disabled</title>
<programlisting><xi:include href="samples/router-update-enablesnat-3.sample" parse="text"/></programlisting>
</example>
</para>
</section>
<?hard-pagebreak?>
</section>

View File

@ -1,262 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section [
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
status="final" xml:id="quotas_ext">
<title>Quotas</title>
<para>The <db:filename>neutron.conf</db:filename> configuration file defines default quota
values that are applied identically to all tenants. This extension enables an admin user to
define quotas values on a per-tenant basis. For example, an admin user can permit tenant A
to create at most X networks, and permit tenant B to create at most Y networks.</para>
<para>If quotas per tenant is needed, you must enable the Quotas
extension. For information, see the <citetitle>OpenStack
Cloud Administrator Guide</citetitle>.</para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr align="center">
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/quotas</td>
<td>Lists quotas for tenants who have non-default
quota values.</td>
</tr>
<tr>
<td>&GET;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Shows quotas for a specified tenant.</td>
</tr>
<tr>
<td>&PUT;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Updates quotas for a specified tenant. Use when
non-default quotas are desired.</td>
</tr>
<tr>
<td>&DELETE;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Resets quotas to default values for a specified
tenant.</td>
</tr>
</tbody>
</informaltable>
<?hard-pagebreak?>
<section xml:id="List_Quotas">
<title>List Quotas</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/quotas</td>
<td> Lists quotas for tenants who have non-default
quota values.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>)</simpara>
<para>This operation does not require a request body. </para>
<para>This operation returns a response body.</para>
<example>
<title>List Quotas: JSON Request</title>
<programlisting>GET /v2.0/quotas HTTP/1.1
Host: controlnode:9696
User-Agent: python-neutronclient
Content-Type: application/json
Accept: application/json
X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2</programlisting>
</example>
<example>
<title>List Quotas: JSON Response</title>
<programlisting language="json"><xi:include href="samples/quotas-list-res.json" parse="text"/></programlisting>
</example>
</section>
<?hard-pagebreak?>
<section xml:id="Show_Quotas">
<title>Show Quotas</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Shows quotas for a specified tenant.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>)</simpara>
<para>This operation returns information for the quotas of the
tenant specified in the request URI. </para>
<para>This operation does not require a request body.</para>
<para>This operation returns a response body.</para>
<example>
<title>Show Quotas: JSON Request</title>
<programlisting>GET /v2.0/quotas/5fcfbc3283a142a5bb6978b549a511ac.json HTTP/1.1
Host: controlnode:9696
User-Agent: python-neutronclient
Content-Type: application/json
Accept: application/json
X-Auth-Token: a54d6fdda41341f892150e2aaf648f0d</programlisting>
</example>
<example>
<title>Show Quotas: JSON Response</title>
<programlisting language="json"><xi:include href="samples/quotas-show-res.json" parse="text"/></programlisting>
</example>
</section>
<?hard-pagebreak?>
<section xml:id="Update_Quotas">
<title>Update Quotas</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&PUT;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Updates quotas for a specified tenant. Use
when non-default quotas are desired.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>)</simpara>
<para>This operation updates quotas for a given tenant.</para>
<para>This operation requires a request body. The body
contains the resource names and their new quota values. </para>
<para>This operation returns a response body.</para>
<example>
<title>Update Quotas: JSON Request</title>
<programlisting>PUT /v2.0/quotas/5fcfbc3283a142a5bb6978b549a511ac.json HTTP/1.1
Host: controlnode:9696
User-Agent: python-neutronclient
Content-Type: application/json
Accept: application/json
X-Auth-Token: 4cbb09e780434b249ff596d6979fd8fc
Content-Length: 88
<xi:include href="samples/quotas-put-req.json" parse="text"/></programlisting>
</example>
<example>
<title>Update Quotas: JSON Response</title>
<programlisting language="json"><xi:include href="samples/quotas-put-res.json" parse="text"/></programlisting>
</example>
</section>
<?hard-pagebreak?>
<section xml:id="Reset_Quotas">
<title>Reset Quotas</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&DELETE;</td>
<td>/quotas/<parameter>tenant_id</parameter></td>
<td>Resets quotas to default values for a
specified tenant.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>204</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>)</simpara>
<para>This operation resets quotas of a given tenant to
default values.</para>
<para>This operation does not require a request body.</para>
<para>This operation does not return a response body.</para>
<example>
<title>Reset Quotas: JSON Request</title>
<programlisting>DELETE /v2.0/quotas/5fcfbc3283a142a5bb6978b549a511ac.json HTTP/1.1
Host: controlnode:9696
User-Agent: python-neutronclient
Content-Type: application/json
Accept: application/json
X-Auth-Token: 903857de62274690911c364b60582440</programlisting>
</example>
</section>
</section>

View File

@ -1,2 +1,3 @@
<network <network>
name="test_create_network"/> <name>sample_network</name>
</network>

View File

@ -0,0 +1,15 @@
'status': '201'
'content-length': '194'
'content-type': 'application/json;
{
"network": {
"admin_state_up": true,
"id": "850d3f2c-f0a5-4f8b-b1cf-5836fc0be940",
"name": "sample_network",
"shared": false,
"status": "ACTIVE",
"subnets": [],
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
}
}

View File

@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets quantum:type="list" />
<name>sample_network</name>
<tenant_id>4be6b806faa0491eb358018bbe9f0d4e</tenant_id>
<admin_state_up quantum:type="bool">True</admin_state_up>
<shared quantum:type="bool">False</shared>
<id>0657ef52-d3f6-4320-9c26-015a3e9badea</id>
</network>

View File

@ -0,0 +1,12 @@
{
"network":
{
"status": "ACTIVE",
"subnets": ["e12f0c45-46e3-446a-b207-9474b27687a6"],
"name": "private",
"admin_state_up": true,
"tenant_id": "625887121e364204873d362b553ab171",
"id": "9d83c053-b0a4-4682-ae80-c00df269ce0a",
"shared": false
}
}

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets>
<subnet>e12f0c45-46e3-446a-b207-9474b27687a6</subnet>
</subnets>
<name>private</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true" />
</network>

View File

@ -0,0 +1,6 @@
{
"network":
{
"name": "updated_name"
}
}

View File

@ -0,0 +1,3 @@
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>nova2</name>
</network>

View File

@ -0,0 +1,28 @@
{
"networks": [
{
"status": "ACTIVE",
"subnets": [],
"name": "sample_network_1",
"provider:physical_network": null,
"admin_state_up": false,
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"provider:network_type": "local",
"router:external": false,
"shared": false,
"id": "e9330b1f-a2ef-4160-a951-169ee6ab17f5",
"provider:segmentation_id": null
},
{
"status": "ACTIVE",
"subnets": [],
"name": "sample_network_2",
"provider:physical_network": null,
"admin_state_up": false,
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"provider:network_type": "local",
"router:external": false,
"shared": false,
"id": "cfb5f52c-dfe2-4357-a10d-a225693e2b84",
"provider:segmentation_id": null}]
}

View File

@ -0,0 +1,33 @@
<?xml version='1.0' encoding='UTF-8'?>
<networks xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/neutron/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<network>
<status>ACTIVE</status>
<subnets quantum:type="list" />
<name>sample_network_1</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9eb3ce34-183b-4a75-b08f-d6a3d241e68b</id>
<provider:segmentation_id xsi:nil="true" />
</network>
<network>
<status>ACTIVE</status>
<subnets quantum:type="list" />
<name>sample_network_2</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>df679a25-915d-41ed-b5ec-721481ddfd56</id>
<provider:segmentation_id xsi:nil="true" />
</network>
</networks>

View File

@ -0,0 +1,12 @@
{
"network":
{
"status": "ACTIVE",
"subnets": ["e12f0c45-46e3-446a-b207-9474b27687a6"],
"name": "private",
"admin_state_up": true,
"tenant_id": "625887121e364204873d362b553ab171",
"id": "9d83c053-b0a4-4682-ae80-c00df269ce0a",
"shared": false
}
}

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<network xmlns="http://openstack.org/quantum/api/v2.0" xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<status>ACTIVE</status>
<subnets>
<subnet>e12f0c45-46e3-446a-b207-9474b27687a6</subnet>
</subnets>
<name>private</name>
<provider:physical_network xsi:nil="true" />
<admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true" />
</network>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<networks xmlns="http://openstack.org/quantum/api/v2.0" <networks xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:provider="http://docs.openstack.org/ext/provider/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0" xmlns:router="http://docs.openstack.org/ext/quantum/router/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@ -9,11 +10,14 @@
<subnet>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet> <subnet>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet>
</subnets> </subnets>
<name>private</name> <name>private</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up> <admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>625887121e364204873d362b553ab171</tenant_id> <tenant_id>625887121e364204873d362b553ab171</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">False</router:external> <router:external quantum:type="bool">False</router:external>
<shared quantum:type="bool">False</shared> <shared quantum:type="bool">False</shared>
<id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id> <id>9d83c053-b0a4-4682-ae80-c00df269ce0a</id>
<provider:segmentation_id xsi:nil="true"/>
</network> </network>
<network> <network>
<status>ACTIVE</status> <status>ACTIVE</status>
@ -21,10 +25,13 @@
<subnet>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet> <subnet>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet>
</subnets> </subnets>
<name>nova</name> <name>nova</name>
<provider:physical_network xsi:nil="true"/>
<admin_state_up quantum:type="bool">True</admin_state_up> <admin_state_up quantum:type="bool">True</admin_state_up>
<tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id> <tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id>
<provider:network_type>local</provider:network_type>
<router:external quantum:type="bool">True</router:external> <router:external quantum:type="bool">True</router:external>
<shared quantum:type="bool">False</shared> <shared quantum:type="bool">False</shared>
<id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</id> <id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</id>
<provider:segmentation_id xsi:nil="true"/>
</network> </network>
</networks> </networks>

View File

@ -0,0 +1,11 @@
{
"networks": [
{
"name": "sample_network_1",
"admin_state_up": false
},
{
"name": "sample_network_2",
"admin_state_up": false
}]
}

View File

@ -0,0 +1,8 @@
<networks>
<network>
<name>sample_network_1</name>
</network>
<network>
<name>sample_network_2</name>
</network>
</networks>

View File

@ -0,0 +1,8 @@
{
"port": {
"admin_state_up": true,
"device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc0",
"name": "port1",
"network_id": "6aeaf34a-c482-4bd3-9dc3-7faf36412f12"
}
}

View File

@ -0,0 +1,49 @@
{
"ports":[
{
"status":"DOWN",
"binding:host_id":null,
"name":"sample_port_1",
"admin_state_up":true,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"binding:vif_type":"ovs",
"device_owner":"",
"binding:capabilities":{
"port_filter":true
},
"mac_address":"fa:16:3e:2e:7c:8a",
"fixed_ips":[
],
"id":"8fb361d8-bab0-418d-b1b8-7204a230fb06",
"security_groups":[
"99f465bc-0d7c-4142-8829-7ae0179f2fa8"
],
"device_id":""
},
{
"status":"DOWN",
"binding:host_id":null,
"name":"sample_port_2",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id":"60cd4f6dbc2f491982a284e7b83b5be3",
"binding:vif_type":"ovs",
"device_owner":"",
"binding:capabilities":{
"port_filter":true
},
"mac_address":"fa:16:3e:0a:4e:13",
"fixed_ips":[
],
"id":"d4c93b0b-f593-424e-a199-d648478a5a3c",
"security_groups":[
"99f465bc-0d7c-4142-8829-7ae0179f2fa8"
],
"device_id":""
}
]
}

View File

@ -0,0 +1,46 @@
<?xml version='1.0' encoding='UTF-8'?>
<ports xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<port>
<status>DOWN</status>
<binding:host_id xsi:nil="true" />
<name>test_port_1</name>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner />
<binding:capabilities>
<port_filter quantum:type="bool">True</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:c9:8d:cf</mac_address>
<fixed_ips quantum:type="list" />
<id>7f0aa3f1-883a-43b2-8d1b-e85fac52b417</id>
<security_groups>
<security_group>99f465bc-0d7c-4142-8829-7ae0179f2fa8</security_group>
</security_groups>
<device_id />
</port>
<port>
<status>DOWN</status>
<binding:host_id xsi:nil="true" />
<name>test_port_2</name>
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner />
<binding:capabilities>
<port_filter quantum:type="bool">True</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:79:90:81</mac_address>
<fixed_ips quantum:type="list" />
<id>a4a81484-c1c4-4b2b-95bc-f8c4484241d0</id>
<security_groups>
<security_group>99f465bc-0d7c-4142-8829-7ae0179f2fa8</security_group>
</security_groups>
<device_id />
</port>
</ports>

View File

@ -0,0 +1,88 @@
{
"ports":[
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"tenant_id":"63878e4c5dd649d2a980e37aefddfa87",
"binding:vif_type":"ovs",
"device_owner":"compute:None",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:b9:ef:05",
"fixed_ips":[
{
"subnet_id":"aca4d43c-c48c-4a2c-9bb6-ba374ef7e135",
"ip_address":"172.24.4.227"
}
],
"id":"664ebd1a-facd-4c20-948c-07a784475ab0",
"device_id":"f288bb5f-920d-4276-8345-2c0319c16f58"
},
{
"status":"DOWN",
"name":"",
"admin_state_up":true,
"network_id":"ebda9658-093b-41ba-80ce-0cf8cb8365d4",
"tenant_id":"",
"binding:vif_type":"ovs",
"device_owner":"network:router_gateway",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:4a:3a:a2",
"fixed_ips":[
{
"subnet_id":"aca4d43c-c48c-4a2c-9bb6-ba374ef7e135",
"ip_address":"172.24.4.226"
}
],
"id":"c5ca7017-c390-4ccc-8cd7-333747e57fef",
"device_id":"0dc517bf-9169-4aa6-88b7-569219962881"
},
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"9d83c053-b0a4-4682-ae80-c00df269ce0a",
"tenant_id":"625887121e364204873d362b553ab171",
"binding:vif_type":"ovs",
"device_owner":"network:router_interface",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:2d:dc:7e",
"fixed_ips":[
{
"subnet_id":"a318fcb4-9ff0-4485-b78c-9e6738c21b26",
"ip_address":"10.0.0.1"
}
],
"id":"d7815f5b-a228-47bb-a5e5-f139c4e476f6",
"device_id":"0dc517bf-9169-4aa6-88b7-569219962881"
},
{
"status":"ACTIVE",
"name":"",
"admin_state_up":true,
"network_id":"9d83c053-b0a4-4682-ae80-c00df269ce0a",
"tenant_id":"625887121e364204873d362b553ab171",
"binding:vif_type":"ovs",
"device_owner":"network:dhcp",
"binding:capabilities":{
"port_filter":false
},
"mac_address":"fa:16:3e:73:6d:1c",
"fixed_ips":[
{
"subnet_id":"a318fcb4-9ff0-4485-b78c-9e6738c21b26",
"ip_address":"10.0.0.2"
}
],
"id":"f8639521-fab2-4879-94b2-83a47bee8a26",
"device_id":"dhcpe1b8334f-9be9-5e49-aeee-b31e6df6c847-9d83c053-b0a4-4682-ae80-c00df269ce0a"
}
]
}

View File

@ -0,0 +1,87 @@
<?xml version='1.0' encoding='UTF-8'?>
<ports xmlns="http://openstack.org/quantum/api/v2.0" xmlns:binding="http://docs.openstack.org/ext/binding/api/v1.0" xmlns:quantum="http://openstack.org/quantum/api/v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</network_id>
<tenant_id>63878e4c5dd649d2a980e37aefddfa87</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>compute:None</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:b9:ef:05</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet_id>
<ip_address>172.24.4.227</ip_address>
</fixed_ip>
</fixed_ips>
<id>664ebd1a-facd-4c20-948c-07a784475ab0</id>
<device_id>f288bb5f-920d-4276-8345-2c0319c16f58</device_id>
</port>
<port>
<status>DOWN</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>ebda9658-093b-41ba-80ce-0cf8cb8365d4</network_id>
<tenant_id />
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:router_gateway</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:4a:3a:a2</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>aca4d43c-c48c-4a2c-9bb6-ba374ef7e135</subnet_id>
<ip_address>172.24.4.226</ip_address>
</fixed_ip>
</fixed_ips>
<id>c5ca7017-c390-4ccc-8cd7-333747e57fef</id>
<device_id>0dc517bf-9169-4aa6-88b7-569219962881</device_id>
</port>
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>9d83c053-b0a4-4682-ae80-c00df269ce0a</network_id>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:router_interface</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:2d:dc:7e</mac_address>
<fixed_ip>
<fixed_ip>
<subnet_id>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet_id>
<ip_address>10.0.0.1</ip_address>
</fixed_ip>
</fixed_ips>
<id>d7815f5b-a228-47bb-a5e5-f139c4e476f6</id>
<device_id>0dc517bf-9169-4aa6-88b7-569219962881</device_id>
</port>
<port>
<status>ACTIVE</status>
<name />
<admin_state_up quantum:type="bool">True</admin_state_up>
<network_id>9d83c053-b0a4-4682-ae80-c00df269ce0a</network_id>
<tenant_id>625887121e364204873d362b553ab171</tenant_id>
<binding:vif_type>ovs</binding:vif_type>
<device_owner>network:dhcp</device_owner>
<binding:capabilities>
<port_filter quantum:type="bool">False</port_filter>
</binding:capabilities>
<mac_address>fa:16:3e:73:6d:1c</mac_address>
<fixed_ips>
<fixed_ip>
<subnet_id>a318fcb4-9ff0-4485-b78c-9e6738c21b26</subnet_id>
<ip_address>10.0.0.2</ip_address>
</fixed_ip>
</fixed_ips>
<id>f8639521-fab2-4879-94b2-83a47bee8a26</id>
<device_id>dhcpe1b8334f-9be9-5e49-aeee-b31e6df6c847-9d83c053-b0a4-4682-ae80-c00df269ce0a</device_id>
</port>
</ports>

View File

@ -0,0 +1,14 @@
{
"ports":[
{
"name":"sample_port_1",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce"
},
{
"name":"sample_port_2",
"admin_state_up":false,
"network_id":"a3775a7d-9f8b-4148-be81-c84bbd0837ce"
}
]
}

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<ports>
<port>
<name>test_port_1</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
</port>
<port>
<name>test_port_2</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
</port>
</ports>

View File

@ -0,0 +1,28 @@
{
"subnets": [
{
"name": "sample_subnet_1",
"enable_dhcp": true,
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"dns_nameservers": [],
"allocation_pools":[{"start": "10.100.0.2", "end": "10.100.255.254"}],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "10.100.0.1",
"cidr": "10.100.0.0/16",
"id": "70ffbaeb-4b43-4605-abe6-4c5bdbb8236b"
},
{
"name": "sample_subnet_2",
"enable_dhcp": true,
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"tenant_id": "60cd4f6dbc2f491982a284e7b83b5be3",
"dns_nameservers": [],
"allocation_pools": [{"start": "172.16.0.2", "end": "172.31.255.254"}],
"host_routes": [],
"ip_version": 4,
"gateway_ip": "172.16.0.1",
"cidr": "172.16.0.0/12",
"id": "d849e3fc-557d-4b27-8f1c-aceca1daa410"}]
}

View File

@ -0,0 +1,41 @@
<?xml version='1.0' encoding='UTF-8'?>
<subnets xmlns="http://openstack.org/quantum/api/v2.0"
xmlns:quantum="http://openstack.org/quantum/api/v2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<subnet>
<name>test_subnet_1</name>
<enable_dhcp quantum:type="bool">True</enable_dhcp>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<dns_nameservers quantum:type="list" />
<allocation_pools>
<allocation_pool>
<start>10.0.0.2</start>
<end>10.255.255.254</end>
</allocation_pool>
</allocation_pools>
<host_routes quantum:type="list" />
<ip_version quantum:type="int">4</ip_version>
<gateway_ip>10.0.0.1</gateway_ip>
<cidr>10.0.0.0/8</cidr>
<id>bd3fd365-fe19-431a-be63-07017a09316c</id>
</subnet>
<subnet>
<name>test_subnet_2</name>
<enable_dhcp quantum:type="bool">True</enable_dhcp>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<tenant_id>60cd4f6dbc2f491982a284e7b83b5be3</tenant_id>
<dns_nameservers quantum:type="list" />
<allocation_pools>
<allocation_pool>
<start>192.168.0.2</start>
<end>192.168.255.254</end>
</allocation_pool>
</allocation_pools>
<host_routes quantum:type="list" />
<ip_version quantum:type="int">4</ip_version>
<gateway_ip>192.168.0.1</gateway_ip>
<cidr>192.168.0.0/16</cidr>
<id>86e7c838-fb75-402b-9dbf-d68166e3f5fe</id>
</subnet>
</subnets>

View File

@ -0,0 +1,40 @@
{
"subnets": [
{
"allocation_pools": [
{
"end": "10.0.3.254",
"start": "10.0.3.2"
}
],
"cidr": "10.0.3.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.3.1",
"host_routes": [],
"id": "91e47a57-7508-46fe-afc9-fc454e8580e1",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
},
{
"allocation_pools": [
{
"end": "10.0.2.254",
"start": "10.0.2.2"
}
],
"cidr": "10.0.2.0/24",
"dns_nameservers": [],
"enable_dhcp": true,
"gateway_ip": "10.0.2.1",
"host_routes": [],
"id": "e3c3620c-9d24-4470-b226-739da2f617c0",
"ip_version": 4,
"name": "",
"network_id": "1a6f6006-9e0b-4f99-984c-96787ae66363",
"tenant_id": "f667b69e4d6749749ef3bcba7251d9ce"
}
]
}

View File

@ -0,0 +1,14 @@
{
"subnets": [
{"name": "sample_subnet_1",
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"cidr": "10.100.0.0/16",
"ip_version": 4
},
{
"name": "sample_subnet_2",
"network_id": "a3775a7d-9f8b-4148-be81-c84bbd0837ce",
"cidr": "172.16.0.0/12",
"ip_version": 4
}]
}

View File

@ -0,0 +1,14 @@
<subnets>
<subnet>
<name>test_subnet_1</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<cidr>10.0.0.0/8</cidr>
<ip_version>4</ip_version>
</subnet>
<subnet>
<name>test_subnet_2</name>
<network_id>a3775a7d-9f8b-4148-be81-c84bbd0837ce</network_id>
<cidr>192.168.0.0/16</cidr>
<ip_version>4</ip_version>
</subnet>
</subnets>

View File

@ -35,17 +35,23 @@
</inlinemediaobject>'> </inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'> <!ENTITY APIv2 'Networking API v2.0'>
]> ]>
<section xml:id="allowed_address_pair_ext" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"> <section xml:id="allowed_address_pair_ext"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>The Allowed Address Pair Extension</title> <title>The Allowed Address Pair Extension</title>
<para>The Allowed Address Pair extension extends the port attribute to <para>The Allowed Address Pair extension extends the port
allow one to specify arbitrary mac_address/ip_address(cidr) pairs attribute to allow one to specify arbitrary
that are allowed to pass through a port regardness of the subnet mac_address/ip_address(cidr) pairs that are allowed to pass
associated with the network. </para> through a port regardness of the subnet associated with the
network. </para>
<?hard-pagebreak?> <?hard-pagebreak?>
<section xml:id="allowed_address_pair_ext_ops"> <section xml:id="allowed_address_pair_ext_ops">
<title>Port API operations with allowed address pair extension</title> <title>Port API operations with allowed address pair
<para>This section discusses operations for setting and retrieving the allowed address pair extension</title>
extension attributes for port objects.</para> <para>This section discusses operations for setting and
retrieving the allowed address pair extension attributes
for port objects.</para>
<section xml:id="allowed_address_pair_ext_port_list"> <section xml:id="allowed_address_pair_ext_port_list">
<title>List Ports</title> <title>List Ports</title>
<para> <para>
@ -64,22 +70,25 @@
<tr> <tr>
<td>&GET;</td> <td>&GET;</td>
<td>/ports</td> <td>/ports</td>
<td>Returns a list of ports with their allowed address pair <td>Returns a list of ports with their
attributes.</td> allowed address pair attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Codes: 401 Unauthorized</para> <para>Error Response Codes: 401 Unauthorized</para>
<para>This operation returns, for each port, its allowed address pair attributes as well as <para>This operation returns, for each port, its allowed
all the attributes normally returned by the list port operation.</para> address pair attributes as well as all the attributes
normally returned by the list port operation.</para>
<example> <example>
<title>List Ports with allowed address pair attributes: JSON Response</title> <title>List Ports with allowed address pair
attributes: JSON Response</title>
<programlisting language="json"><xi:include href="samples/ports-get-res-addr-pairs.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-get-res-addr-pairs.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>List Ports with allowed address pair attributes: XML Response</title> <title>List Ports with allowed address pair
attributes: XML Response</title>
<programlisting language="json"><xi:include href="samples/ports-get-res-addr-pairs.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-get-res-addr-pairs.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>
@ -101,20 +110,24 @@
<tr> <tr>
<td>&GET;</td> <td>&GET;</td>
<td>/ports/<parameter>port_id</parameter></td> <td>/ports/<parameter>port_id</parameter></td>
<td>Returns details about a specific port, including allowed address <td>Returns details about a specific port,
pair attributes.</td> including allowed address pair
attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 401 Unauthorized, 404 Not Found</para> <para>Error Response Code: 401 Unauthorized, 404 Not
Found</para>
<example> <example>
<title>Show port with allowed address pair atributes: JSON Response</title> <title>Show port with allowed address pair attributes:
JSON Response</title>
<programlisting language="json"><xi:include href="samples/ports-show-addr-pair.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-show-addr-pair.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>Show port with allowed address pair attributes: XML Response</title> <title>Show port with allowed address pair attributes:
XML Response</title>
<programlisting language="json"><xi:include href="samples/ports-show-addr-pair.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-show-addr-pair.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>
@ -136,17 +149,24 @@
<tr> <tr>
<td>&POST;</td> <td>&POST;</td>
<td>/ports</td> <td>/ports</td>
<td>Creates a new port and explicitly specify the allowed address pair attributes.</td> <td>Creates a new port and explicitly
specify the allowed address pair
attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 400 Bad Request, 401 Unauthorized, 403 Forbidden</para> <para>Error Response Code: 400 Bad Request, 401
<para>Bad request is returned if an allowed address pair matches the mac_address and ip_address on port.</para> Unauthorized, 403 Forbidden</para>
<para>Note: If the mac_address field is left out of the body of the request the mac_address assigned to the port will be used.</para> <para>Bad request is returned if an allowed address pair
matches the mac_address and ip_address on port.</para>
<para>Note: If the mac_address field is left out of the
body of the request the mac_address assigned to the
port will be used.</para>
<example> <example>
<title>Create Port with allowed address pair attributes: JSON Request</title> <title>Create Port with allowed address pair
attributes: JSON Request</title>
<programlisting language="json"><xi:include href="samples/ports-post-req-addr-pairs.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-post-req-addr-pairs.json" parse="text"/></programlisting>
</example> </example>
</section> </section>
@ -168,16 +188,18 @@
<tr> <tr>
<td>&PUT;</td> <td>&PUT;</td>
<td>/ports/<parameter>port_id</parameter></td> <td>/ports/<parameter>port_id</parameter></td>
<td>Updates a port, with new allowed address pair values.</td> <td>Updates a port, with new allowed
address pair values.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 400 Bad Request, 401 Unauthorized, 404 Not Found, 403 <para>Error Response Code: 400 Bad Request, 401
Forbidden</para> Unauthorized, 404 Not Found, 403 Forbidden</para>
<example> <example>
<title>Update allowed address pair attributes for a port: JSON Request</title> <title>Update allowed address pair attributes for a
port: JSON Request</title>
<programlisting language="json"><xi:include href="samples/ports-put-req-addr-pair.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/ports-put-req-addr-pair.json" parse="text"/></programlisting>
</example> </example>
</section> </section>

View File

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
]>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
status="final" xml:id="extgwmodes-ext">
<title>Configurable external gateway modes extension</title>
<para>By default, when a gateway is attached to a router using the
Neutron L3 extension, Network Address Translation (NAT) is
enabled for traffic generated by subnets attached to the
router. With this extension, the user will have the option of
choosing whether SNAT should be enabled or not on a router
basis.</para>
<para>This is achieved simply by specifying a boolean attribute,
<literal>enable_snat</literal>, in the
<literal>external_gateway_info</literal> attribute of the
<literal>router</literal> resource. </para>
<para>This extension redefines the external_gateway_info attribute
as depicted in the following table. </para>
<table rules="all">
<caption>external_gateway_info attributes</caption>
<col width="20%"/>
<col width="8%"/>
<col width="10%"/>
<col width="15%"/>
<col width="15%"/>
<col width="32%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>Default Value </th>
<th>Validation Constraints </th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>network_id</td>
<td>UUID</td>
<td>Yes</td>
<td>N/A</td>
<td>Must be a valid uuid representative of an external
network.</td>
<td/>
</tr>
<tr>
<td>enable_snat</td>
<td>Boolean</td>
<td>No</td>
<td>True</td>
<td>{True|False}</td>
<td>The default setting is <literal>True</literal> to
ensure backward compatibility for plugins
supporting this extension.</td>
</tr>
</tbody>
</table>
<para>SNAT can be enabled or disabled at any time on a Neutron
router regardless of the current status of floating IPs.
Floating IPs will continue working even when SNAT is
disabled.</para>
<section xml:id="list_routers_extgwmodes">
<title>List Routers</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/routers</td>
<td>Retrieve Neutron routers</td>
</tr>
</tbody>
</informaltable>
</para>
<simpara>Success and error response codes are not changed with
regards to the operation as introduced by the L3 API
extension.</simpara>
<simpara>When this extension is enabled, this operation will
also return the current Source NAT status for configured
routers, as shown in the sample below.</simpara>
<simpara>The response for the <emphasis>show router</emphasis>
operation is the same, with the obvious exception that a
single router is returned.</simpara>
<example>
<title>Router list with configurable external gateway
modes enabled</title>
<programlisting language="json"><xi:include href="samples/routers-get-enablesnat-res.json" parse="text"/></programlisting>
</example>
</section>
<section xml:id="create_router_extgwmodes">
<title>Create Router with external gateway</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&POST;</td>
<td>/routers</td>
<td>Create a new Neutron router</td>
</tr>
</tbody>
</informaltable>
</para>
<para>Success and error response codes are not changed with
regards to the operation as introduced by the L3 API
extension.</para>
<para>Neutron API users can specify whether SNAT should be
performed on the network specified as the router's
external gateway by setting <literal>enable_snat</literal>
in <literal>external_gateway_info</literal> to either
<literal>True</literal> or <literal>False</literal>;
the default value is <literal>True</literal>.</para>
<example>
<title>Create router with SNAT disabled</title>
<programlisting><xi:include href="samples/router-create-enablesnat.sample" parse="text"/></programlisting>
</example>
</section>
<section xml:id="update_router_extgwmodes">
<title>Update Router's external gateway info</title>
<para>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&PUT;</td>
<td>/routers/<literal>router_id</literal></td>
<td>Create a new Neutron router</td>
</tr>
</tbody>
</informaltable>
</para>
<para>Success and error response codes are not changed with
regards to the operation as introduced by the L3 API
extension.</para>
<para>Neutron API users can enable or disable SNAT on a router
specifying the <literal>enable_snat</literal> attribute in
the <literal>external_gateway_info</literal> attribute for
the router resource. This operation can be either used for
updating the SNAT status only, the external network, or
both attributes at the same time. In any case, if the
<literal>enable_snat</literal> attribute is not
specified, it will default to <literal>True</literal>. For
instance, if the current SNAT status is disabled, and the
router's gateway is updated to a different external
network without specifying <literal>enable_snat</literal>,
SNAT will be enabled for the new network.</para>
<para>It is important to note that whenever updating a
router's external gateway information, the
<literal>network_id </literal>parameter must be
specified always, even if the final goal is just to enable
or disable SNAT for the router on the same external
network.</para>
<para>The rest of this section provides some samples for
updating a router's external gateway info with SNAT
mode.</para>
<para>
<example>
<title>Disable SNAT for the current external
network</title>
<programlisting><xi:include href="samples/router-update-enablesnat-1.sample" parse="text"/></programlisting>
</example>
<example>
<title>Change external network and enable SNAT</title>
<programlisting><xi:include href="samples/router-update-enablesnat-2.sample" parse="text"/></programlisting>
</example>
<example>
<title>Change external network and keep SNAT
disabled</title>
<programlisting><xi:include href="samples/router-update-enablesnat-3.sample" parse="text"/></programlisting>
</example>
</para>
</section>
<?hard-pagebreak?>
</section>

View File

@ -35,67 +35,98 @@
</inlinemediaobject>'> </inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'> <!ENTITY APIv2 'Networking API v2.0'>
]> ]>
<section xml:id="provider_ext" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"> <section xml:id="provider_ext" xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>The Provider Networks Extension <title>The Provider Networks Extension
(<literal>provider</literal>)</title> (<literal>provider</literal>)</title>
<para>The provider networks extension allows OpenStack Networking API users with the appropriate rights, to <para>The provider networks extension allows OpenStack Networking
specify how an OpenStack Networking network object is mapped to the underlying networking infrastructure. API users with the appropriate rights, to specify how an
It also allows users with the appropriate rights to view such attributes when networks are OpenStack Networking network object is mapped to the
queried.</para> underlying networking infrastructure. It also allows users
<para>To this aim, it extends the <emphasis role="bold">network</emphasis> resource by defining with the appropriate rights to view such attributes when
a set of attributes prependend by the <emphasis role="italic">provider</emphasis> prefix, networks are queried.</para>
which specify these attributes. </para> <para>To this aim, it extends the <emphasis role="bold"
>network</emphasis> resource by defining a set of
attributes prefixed with the <emphasis role="italic"
>provider</emphasis> prefix, which specify these
attributes.</para>
<?hard-pagebreak?> <?hard-pagebreak?>
<section xml:id="provider_ext_concepts"> <section xml:id="provider_ext_concepts">
<title>Concepts</title> <title>Concepts</title>
<para>The provider networks extension is an attribute extension which adds the following set <para>The provider networks extension is an attribute
of attributes to the <emphasis role="bold">network</emphasis> resource:</para> extension which adds the following set of attributes to
the <emphasis role="bold">network</emphasis>
resource:</para>
<para> <para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><emphasis role="italic"> provider:network_type</emphasis> - Specifies the <para><emphasis role="italic">
nature of the physical network mapped to this network resource. Examples are provider:network_type</emphasis> -
<literal>flat</literal>, <literal>vlan</literal>, or Specifies the nature of the physical network
mapped to this network resource. Examples are
<literal>flat</literal>,
<literal>vlan</literal>, or
<literal>gre</literal>.</para> <literal>gre</literal>.</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="italic"> provider:physical_network</emphasis> - Identifies <para><emphasis role="italic">
the physical network on top of which this network object is being provider:physical_network</emphasis> -
implemented. The OpenStack Networking API does not expose any facility for retrieving the Identifies the physical network on top of
list of available physical networks. As an example, in the Open vSwitch which this network object is being
plug-in this is a symbolic name which is then mapped to specific bridges on implemented. The OpenStack Networking API does
each compute host through the Open vSwitch plug-in configuration file.</para> not expose any facility for retrieving the
list of available physical networks. As an
example, in the Open vSwitch plug-in this is a
symbolic name which is then mapped to specific
bridges on each compute host through the Open
vSwitch plug-in configuration file.</para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="italic"> provider:segmentation_id</emphasis> - Identifies <para><emphasis role="italic">
an isolated segment on the physical network; the nature of the segment provider:segmentation_id</emphasis> -
depends on the segmentation model defined by Identifies an isolated segment on the physical
<literal>network_type</literal>. For instance, if network; the nature of the segment depends on
<literal>network_type</literal> is <literal>vlan</literal>, then this is the segmentation model defined by
a <literal>vlan</literal> identifier; otherwise, if <literal>network_type</literal>. For
<literal>network_type</literal> is <literal>gre</literal>, then this instance, if <literal>network_type</literal>
will be a <literal>gre</literal> key. </para> is <literal>vlan</literal>, then this is a
<literal>vlan</literal> identifier;
otherwise, if <literal>network_type</literal>
is <literal>gre</literal>, then this will be a
<literal>gre</literal> key.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
<para>The actual semantics of these attributes depend on the technology back end of the <para>The actual semantics of these attributes depend on the
particular plug-in. See the plug-in documentation and the technology back end of the particular plug-in. See the
<citetitle>OpenStack Cloud Administrator Guide</citetitle> to understand which values should be specific for plug-in documentation and the <citetitle>OpenStack Cloud
each of these attributes when OpenStack Networking is deployed with a particular plug-in. The examples Administrator Guide</citetitle> to understand which
shown in this chapter refer to the Open vSwitch plug-in.</para> values should be specific for each of these attributes
<para>It is also worth noting that the default policy settings allow only users with when OpenStack Networking is deployed with a particular
administrative rights to specify these parameters in requests, and to see their values plug-in. The examples shown in this chapter refer to the
in responses. By default, the provider network extension attributes are completely Open vSwitch plug-in.</para>
hidden from regular tenants. As a rule of thumb, if these attributes are not visible in <para>It is also worth noting that the default policy settings
a <emphasis role="italic">GET /networks/&lt;network-id></emphasis> operation, this allow only users with administrative rights to specify
implies the user submitting the request is not authorized to view or manipulate provider these parameters in requests, and to see their values in
network attributes.</para> responses. By default, the provider network extension
attributes are completely hidden from regular tenants. As
a rule of thumb, if these attributes are not visible in a
<emphasis role="italic">GET
/networks/&lt;network-id></emphasis> operation, this
implies the user submitting the request is not authorized
to view or manipulate provider network attributes.</para>
</section> </section>
<?hard-pagebreak?> <?hard-pagebreak?>
<section xml:id="provider_ext_ops"> <section xml:id="provider_ext_ops">
<title>Network API operations with provider network extension</title> <title>Network API operations with provider network
<para>This section discusses operations for setting and retrieving the provider networks extension</title>
extension attributes for network objects.</para> <para>This section discusses operations for setting and
retrieving the provider networks extension attributes for
network objects.</para>
<!-- <wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-networks-provider-ext.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/> -->
<section xml:id="provider_network_list"> <section xml:id="provider_network_list">
<title>List Networks</title> <title>List Networks</title>
<para> <para>
@ -114,24 +145,28 @@
<tr> <tr>
<td>&GET;</td> <td>&GET;</td>
<td>/networks</td> <td>/networks</td>
<td>Returns a list of networks with their provider networks <td>Returns a list of networks with their
attributes.</td> provider networks attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Codes: 401 Unauthorized</para> <para>Error Response Codes: 401 Unauthorized</para>
<para>This operation returns, for each network, its provider network attributes as well as <para>This operation returns, for each network, its
all the attributes normally returned by the list networks operation. Please note provider network attributes as well as all the
that provider networks attribute are returned only if the user is authorized to view attributes normally returned by the list networks
them.</para> operation. Provider networks
attribute are returned only if the user is authorized
to view them.</para>
<example> <example>
<title>List Networks with provider attributes: JSON Response</title> <title>List Networks with provider attributes: JSON
Response</title>
<programlisting language="json"><xi:include href="samples/networks-get-res-prov.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-get-res-prov.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>List Networks with provider attributes: XML Response</title> <title>List Networks with provider attributes: XML
Response</title>
<programlisting language="json"><xi:include href="samples/networks-get-res-prov.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-get-res-prov.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>
@ -153,24 +188,31 @@
<tr> <tr>
<td>&GET;</td> <td>&GET;</td>
<td>/networks/<parameter>network_id</parameter></td> <td>/networks/<parameter>network_id</parameter></td>
<td>Returns details about a specific network, including provider <td>Returns details about a specific
networks attributes.</td> network, including provider networks
attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 401 Unauthorized, 404 Not Found</para> <para>Error Response Code: 401 Unauthorized, 404 Not
<para>When the provider networks extension is enabled, and the user submitting the Found</para>
request is authorized to see provider networks mapping, this operation returns, for <para>When the provider networks extension is enabled, and
the network specified in the request URI, its provider network attributes, as well as the user submitting the request is authorized to see
all the attributes normally retuned by the show networks operation.</para> provider networks mapping, this operation returns, for
the network specified in the request URI, its provider
network attributes, as well as all the attributes
normally retuned by the show networks
operation.</para>
<example> <example>
<title>Show network with provider attributes: JSON Response</title> <title>Show network with provider attributes: JSON
Response</title>
<programlisting language="json"><xi:include href="samples/networks-show-res-prov.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-show-res-prov.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>Show network with provider attributes: XML Response</title> <title>Show network with provider attributes: XML
Response</title>
<programlisting language="json"><xi:include href="samples/networks-show-res-prov.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-show-res-prov.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>
@ -192,37 +234,45 @@
<tr> <tr>
<td>&POST;</td> <td>&POST;</td>
<td>/networks</td> <td>/networks</td>
<td>Creates a new network and explicitly specify attributes with the <td>Creates a new network and explicitly
underlying infrastructure using the provider network extension specify attributes with the underlying
attributes.</td> infrastructure using the provider
network extension attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para> </para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 400 Bad Request, 401 Unauthorized, 403 Forbidden</para> <para>Error Response Code: 400 Bad Request, 401
<para>When the provider networks extension is enabled, and the user submitting the Unauthorized, 403 Forbidden</para>
request is authorized to set provider networks mapping, this operation allows for <para>When the provider networks extension is enabled, and
specifying how a new network should be mapped on the underlying network the user submitting the request is authorized to set
infrastructure.</para> provider networks mapping, this operation allows for
<para>If the user submitting the request is not allowed to set provider networks specifying how a new network should be mapped on the
attributes, a 403 Forbidden response will be returned.</para> underlying network infrastructure.</para>
<para>As stated earlier in this chapter, the semantics of the various provider networks <para>If the user submitting the request is not allowed to
attribute vary with the particular plug-in employed. The following example shows how set provider networks attributes, a 403 Forbidden
to create a network mapped to a specific vlan tag (the example refers to an OpenStack Networking response will be returned.</para>
deployment which uses the Open vSwitch plug-in).</para> <para>As stated earlier in this chapter, the semantics of
the various provider networks attribute vary with the
particular plug-in employed. The following example
shows how to create a network mapped to a specific
vlan tag (the example refers to an OpenStack
Networking deployment which uses the Open vSwitch
plug-in).</para>
<example> <example>
<title>Create Network with provider attributes: JSON Request</title> <title>Create Network with provider attributes: JSON
Request</title>
<programlisting language="json"><xi:include href="samples/networks-post-req-prov.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-post-req-prov.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>Create Network with provider attributes: XML Request</title> <title>Create Network with provider attributes: XML
Request</title>
<programlisting language="json"><xi:include href="samples/networks-post-req-prov.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-post-req-prov.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>
<section xml:id="provider_network_update"> <section xml:id="provider_network_update">
<title>Update Network</title> <title>Update Network</title>
<para>
<informaltable rules="all" width="100%"> <informaltable rules="all" width="100%">
<col width="10%"/> <col width="10%"/>
<col width="30%"/> <col width="30%"/>
@ -238,31 +288,39 @@
<tr> <tr>
<td>&PUT;</td> <td>&PUT;</td>
<td>/networks/<parameter>network_id</parameter></td> <td>/networks/<parameter>network_id</parameter></td>
<td>Updates a network, including its mapping with the underlying <td>Updates a network, including its mapping
infrastructure using the provider network extension attributes.</td> with the underlying infrastructure using
the provider network extension
attributes.</td>
</tr> </tr>
</tbody> </tbody>
</informaltable> </informaltable>
</para>
<para>Normal Response Code: 200 OK</para> <para>Normal Response Code: 200 OK</para>
<para>Error Response Code: 400 Bad Request, 401 Unauthorized, 404 Not Found, 403 <para>Error Response Code: 400 Bad Request, 401
Forbidden</para> Unauthorized, 404 Not Found, 403 Forbidden</para>
<para>When the provider networks extension is enabled, and the user submitting the <para>When the provider networks extension is enabled, and
request is authorized to see provider networks mapping, this operation allows for the user submitting the request is authorized to see
specifying how an existing network should be mapped on the underlying network provider networks mapping, this operation allows for
infrastructure. </para> specifying how an existing network should be mapped on
<para>If the user submitting the request is not allowed to set provider networks the underlying network infrastructure.</para>
attributes, a 403 Forbidden response will be returned.</para> <para>If the user submitting the request is not allowed to
<para>As stated earlier in this chapter, the semantics of the various provider networks set provider networks attributes, a 403 Forbidden
attribute vary with the particular plug-in employed. The following example shows how response will be returned.</para>
to update a network in order to map it to a flat network (such as, no vlan tag); the <para>As stated earlier in this chapter, the semantics of
example refers to an OpenStack Networking deployment that uses the Open vSwitch plug-in.</para> the various provider networks attribute vary with the
particular plug-in employed. The following example
shows how to update a network in order to map it to a
flat network (such as, no vlan tag); the example
refers to an OpenStack Networking deployment that uses
the Open vSwitch plug-in.</para>
<example> <example>
<title>Update provider attributes for a network: JSON Request</title> <title>Update provider attributes for a network: JSON
Request</title>
<programlisting language="json"><xi:include href="samples/networks-put-req-prov.json" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-put-req-prov.json" parse="text"/></programlisting>
</example> </example>
<example> <example>
<title>Update provider attributes for a network: XML Request</title> <title>Update provider attributes for a network: XML
Request</title>
<programlisting language="json"><xi:include href="samples/networks-put-req-prov.xml" parse="text"/></programlisting> <programlisting language="json"><xi:include href="samples/networks-put-req-prov.xml" parse="text"/></programlisting>
</example> </example>
</section> </section>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section [
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
status="final" xml:id="quotas_ext">
<title>Quotas</title>
<para>The <filename>neutron.conf</filename> configuration file
defines default quota values that are applied to all tenants.
This extension enables an administrative user to define quotas
values on a per-tenant basis. For example, an administrative
user can permit tenant A to create at most X networks and
tenant B to create at most Y networks.</para>
<wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-quotas.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/>
</section>

View File

@ -40,5 +40,5 @@
<title>Security Groups and Rules</title> <title>Security Groups and Rules</title>
<para>Creates, modifies, and deletes OpenStack Networking security groups and <para>Creates, modifies, and deletes OpenStack Networking security groups and
rules. </para> rules. </para>
<wadl:resources href="wadl/security-groups.wadl"/> <wadl:resources href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/security-groups.wadl"/>
</section> </section>

View File

@ -0,0 +1,469 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject role="fo">
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/Check_mark_23x20_02.png"
format="PNG" />
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject role="fo">
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/Arrow_east.png"
format="PNG" />
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<section xml:id="binding_ext_ports"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>The <literal>binding</literal> Extended Attributes for
Ports</title>
<para>Use the &APIv2; with the <parameter>binding</parameter>
extended attributes to get information about, create, and
update port objects.</para>
<para>The <parameter>binding</parameter>-prefixed extended
attributes for ports are:</para>
<table rules="all" width="95%">
<caption><parameter>binding</parameter> Extended Attributes
for Ports</caption>
<col width="30%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="20%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>CRUD<footnote xml:id="crud_network">
<para><itemizedlist>
<listitem>
<para><emphasis role="bold"
>C</emphasis>. Use the attribute in
create operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>R</emphasis>. This attribute is
returned in response to show and
list operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>U</emphasis>. You can update the
value of this attribute.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>D</emphasis>. You can delete the
value of this attribute.</para>
</listitem>
</itemizedlist></para>
</footnote></th>
<th>Default Value</th>
<th>Validation Constraints</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><para><parameter>binding:vif_type</parameter></para></td>
<td><para>String</para></td>
<td><para>N/A</para></td>
<td><para>R</para></td>
<td><para>None</para></td>
<td><para>N/A</para></td>
<td><para>Read-only. The vif type for the specified
port.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:host_id</parameter></para></td>
<td><para>uuid-str</para></td>
<td><para>N/A</para></td>
<td><para>CRU</para></td>
<td><para>None</para></td>
<td><para>N/A</para></td>
<td><para>The ID of the host where the port is
allocated. In some cases different
implementations can run on different
hosts.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:profile</parameter></para></td>
<td>list(dict)</td>
<td>N/A</td>
<td>CRU</td>
<td>None</td>
<td>N/A</td>
<td><para>A dictionary that enables the application
running on the specified host to pass and
receive vif port-specific information to the
plug-in.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:capabilities</parameter></para></td>
<td>list(dict)</td>
<td>N/A</td>
<td>R</td>
<td>None</td>
<td>N/A</td>
<td><para>Read-only. A dictionary that enables the
application to pass information about
functions that &APIv2; provides. Specify the
following value: port_filter : Boolean to
define whether &APIv2; provides port filtering
features such as security group and
anti-MAC/IP spoofing.</para></td>
</tr>
</tbody>
</table>
<!-- <wadl:resources
href="http://git.openstack.org/cgit/openstack/api-site/plain/api-ref/src/wadls/netconn-api/src/os-ports-binding-ext.wadl"
xmlns:wadl="http://wadl.dev.java.net/2009/02"/>-->
<section xml:id="List_Ports_binding">
<title>List Ports</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/ports</td>
<td>Lists ports to which the tenant has access.
The <parameter>binding</parameter> extended
attributes are visible to only administrative
users.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>)</simpara>
<para>This operation lists ports to which the tenant has
access.</para>
<para>This operation does not require a request body.</para>
<para>This operation returns a response body.</para>
<para>In addition to any other fields returned in the list
port response, the following
<parameter>binding</parameter>-prefixed fields are
visible to administrative users:</para>
<informaltable rules="all">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><para><parameter>binding:vif_type</parameter></para></td>
<td><para>Read-only. The vif type for the
specified port.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:host_id</parameter></para></td>
<td><para>The ID of the host where the port is
allocated. In some cases different
implementations can run on different
hosts.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:profile</parameter></para></td>
<td><para>A dictionary that enables the
application running on the specified host
to pass and receive vif port-specific
information to the plug-in.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:capabilities</parameter></para></td>
<td><para>Read-only. A dictionary that enables the
application to pass information about
functions that &APIv2; provides. Specify
the following value: port_filter : Boolean
to define whether &APIv2; provides port
filtering features such as security group
and anti-MAC/IP spoofing.</para>
</td>
</tr>
</tbody>
</informaltable>
</section>
<?hard-pagebreak?>
<section xml:id="Show_port_binding">
<title>Show Port</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&GET;</td>
<td>/ports/<parameter>port-id</parameter></td>
<td>Shows information for a specified port. The
<parameter>binding</parameter> extended
attributes are visible to only administrative
users.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Unauthorized
(<errorcode>401</errorcode>), Not Found
(<errorcode>404</errorcode>)</simpara>
<para>This operation returns information for the port
specified in the request URI. </para>
<para>This operation does not require a request body.</para>
<para>This operation returns a response body.</para>
<para>In addition to any fields returned in the show port
response, the following
<parameter>binding</parameter>-prefixed extended
attributes are visible to administrative users:</para>
<informaltable rules="all">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><para><parameter>binding:vif_type</parameter></para></td>
<td><para>Read-only. The vif type for the
specified port.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:host_id</parameter></para></td>
<td><para>The ID of the host where the port is
allocated. In some cases different
implementations can run on different
hosts.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:profile</parameter></para></td>
<td><para>A dictionary that enables the
application running on the specified host
to pass and receive vif port-specific
information to the plug-in.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:capabilities</parameter></para></td>
<td><para>Read-only. A dictionary that enables the
application to pass information about
functions that &APIv2; provides. Specify
the following value: port_filter : Boolean
to define whether &APIv2; provides port
filtering features such as security group
and anti-MAC/IP spoofing.</para>
</td>
</tr>
</tbody>
</informaltable>
</section>
<section xml:id="Create_Port_binding">
<title>Create Port</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&POST;</td>
<td>/ports</td>
<td>Creates a port on a specified network. Only
administrative users can add the
<parameter>binding</parameter> extended
attributes.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>201</returnvalue>
</simpara>
<simpara>Error Response Codes: Bad Request
(<errorcode>400</errorcode>), Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>), Not Found
(<errorcode>404</errorcode>), Conflict
(<errorcode>409</errorcode>), MAC generation failure
(<errorcode>503</errorcode>) </simpara>
<para>This operation creates an OpenStack Networking port. You
must specify the network where the port is to created on
the <parameter>network_id</parameter> attribute in the
request body.</para>
<para>This operation requires a request body.</para>
<para>This operation returns a response body.</para>
<para>In addition to any attributes that can be set in a
create port operation, administrative users can also set
the following <parameter>binding</parameter>-prefixed
extended attributes:</para>
<informaltable rules="all">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<para><parameter>binding:host_id</parameter></para></td>
<td><para>The ID of the host where the port is
allocated. In some cases different
implementations can run on different
hosts.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:profile</parameter></para></td>
<td><para>A dictionary that enables the
application running on the specified host
to pass and receive vif port-specific
information to the plug-in.</para>
</td>
</tr>
</tbody>
</informaltable>
</section>
<section xml:id="Update_Port_binding">
<title>Update Port</title>
<informaltable rules="all" width="100%">
<col width="20%"/>
<col width="20%"/>
<col width="60%"/>
<thead>
<tr>
<td>Verb</td>
<td>URI</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&PUT;</td>
<td>/ports/<parameter>port-id</parameter></td>
<td>Updates a specified port. Only administrative
users can update the
<parameter>binding</parameter> extended
attributes.</td>
</tr>
</tbody>
</informaltable>
<simpara>Normal Response Code: <returnvalue>200</returnvalue>
</simpara>
<simpara>Error Response Codes: Bad Request
(<errorcode>400</errorcode>), Unauthorized
(<errorcode>401</errorcode>), Forbidden
(<errorcode>403</errorcode>), Not Found
(<errorcode>404</errorcode>), Conflict
(<errorcode>409</errorcode>) </simpara>
<para>Use this operation to update information for a
port.</para>
<para>This operation requires a request body.</para>
<para>This operation returns a response body.</para>
<para>In addition to any attributes that can be updated in the
update port operation, administrative users can also
update the following
<parameter>binding</parameter>-prefixed extended
attributes:</para>
<informaltable rules="all">
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<para><parameter>binding:host_id</parameter></para></td>
<td><para>The ID of the host where the port is
allocated. In some cases different
implementations can run on different
hosts.</para>
</td>
</tr>
<tr>
<td>
<para><parameter>binding:profile</parameter></para></td>
<td><para>A dictionary that enables the
application running on the specified host
to pass and receive vif port-specific
information to the plug-in.</para>
</td>
</tr>
</tbody>
</informaltable>
</section>
</section>

View File

@ -0,0 +1,594 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="Concepts-d1e369">
<?dbhtml stop-chunking?>
<title>Concepts</title>
<para>Use the &APIv2; to manage the following entities:<itemizedlist>
<listitem>
<para><emphasis role="bold">Network</emphasis>. An
isolated virtual layer-2 domain. A network can
also be a virtual, or logical, switch. See <xref
linkend="Network"/>.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Subnet</emphasis>. An IP
version 4 or version 6 address block from which IP
addresses that are assigned to VMs on a specified
network are selected. See <xref linkend="subnet"
/>.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Port</emphasis>. A
virtual, or logical, switch port on a specified
network. See <xref linkend="Port"/>.</para>
</listitem>
</itemizedlist></para>
<para>These entities have auto-generated unique identifiers and
support basic create, read, update, and delete (CRUD)
functions with the &POST;, &GET;, &PUT;, and &DELETE;
verbs.</para>
<?hard-pagebreak?>
<section xml:id="Network">
<title>Network</title>
<para>A network is an isolated virtual layer-2 broadcast
domain that is typically reserved for the tenant who
created it unless you configure the network to be shared.
Tenants can create multiple networks until the thresholds
per-tenant quota is reached.</para>
<para>In the &APIv2;, the network is the main entity. Ports
and subnets are always associated with a network.</para>
<?hard-pagebreak?>
<para>The following table describes the attributes for network
objects:</para>
<table rules="all" width="95%">
<caption>Network Attributes</caption>
<col width="20%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="15%"/>
<col width="17%"/>
<col width="20%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>CRUD<footnote xml:id="crud">
<para><itemizedlist>
<listitem>
<para><emphasis role="bold"
>C</emphasis>. Use the attribute in
create operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>R</emphasis>. This attribute is
returned in response to show and
list operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>U</emphasis>. You can update the
value of this attribute.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>D</emphasis>. You can delete the
value of this attribute.</para>
</listitem>
</itemizedlist></para>
</footnote></th>
<th>Default Value </th>
<th>Validation Constraints </th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>uuid-str</td>
<td>N/A</td>
<td>R</td>
<td>generated</td>
<td>N/A</td>
<td>UUID for the network.</td>
</tr>
<tr>
<td>name</td>
<td>String</td>
<td>No</td>
<td>CRU</td>
<td>None</td>
<td>N/A</td>
<td>Human-readable name for the network. Might not
be unique.</td>
</tr>
<tr>
<td>admin_state_up</td>
<td>Bool</td>
<td>No</td>
<td>CRU</td>
<td>true</td>
<td>{true|false}</td>
<td>The administrative state of network. If false
(down), the network does not forward
packets.</td>
</tr>
<tr>
<td>status</td>
<td>String</td>
<td>N/A</td>
<td>R</td>
<td>N/A</td>
<td>N/A</td>
<td><para>Indicates whether network is currently
operational. Possible values include: <itemizedlist>
<listitem>
<para>ACTIVE</para>
</listitem>
<listitem>
<para>DOWN</para>
</listitem>
<listitem>
<para>BUILD</para>
</listitem>
<listitem>
<para>ERROR</para>
</listitem>
</itemizedlist>
</para><para>Plug-ins might define additional
values.</para></td>
</tr>
<tr>
<td>subnets</td>
<td>list(uuid-str)</td>
<td>No</td>
<td>R</td>
<td>Empty List</td>
<td>N/A</td>
<td>subnets associated with this network. </td>
</tr>
<tr>
<td>shared</td>
<td>Bool</td>
<td>No</td>
<td>CRU</td>
<td>False</td>
<td>{ True | False }</td>
<td>Specifies whether the network resource can be
accessed by any tenant or not.</td>
</tr>
<tr>
<td>tenant_id</td>
<td>uuid-str</td>
<td>No<footnote xml:id="tenant">
<para>If OpenStack Networking is not
running with the Keystone Identity
service, the
<literal>tenant_id</literal>
attribute is required.</para>
</footnote>
</td>
<td>CR</td>
<td>N/A</td>
<td>No constraint</td>
<td>Owner of network. Only admin users can specify
a tenant_id other than its own. </td>
</tr>
</tbody>
</table>
</section>
<?hard-pagebreak?>
<section xml:id="subnet">
<title>Subnet</title>
<para>A subnet represents an IP address block that can be used
to assign IP addresses to virtual instances. Each subnet
must have a CIDR and must be associated with a network.
IPs can be either selected from the whole subnet CIDR or
from allocation pools that can be specified by the
user.</para>
<para>A subnet can also optionally have a gateway, a list of
dns name servers, and host routes. This information is
pushed to instances whose interfaces are associated with
the subnet.</para>
<?hard-pagebreak?>
<table rules="all" width="95%">
<caption>Subnet Attributes</caption>
<col width="20%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="15%"/>
<col width="17%"/>
<col width="20%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>CRUD<footnote xml:id="crud2">
<para><itemizedlist>
<listitem>
<para><emphasis role="bold"
>C</emphasis>. Use the attribute in
create operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>R</emphasis>. This attribute is
returned in response to show and
list operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>U</emphasis>. You can update the
value of this attribute.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>D</emphasis>. You can delete the
value of this attribute.</para>
</listitem>
</itemizedlist></para>
</footnote>
</th>
<th>Default Value </th>
<th>Validation Constraints </th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>uuid-str</td>
<td>N/A</td>
<td>R</td>
<td>generated</td>
<td>N/A</td>
<td>UUID representing the subnet</td>
</tr>
<tr>
<td>network_id</td>
<td>uuid-str</td>
<td>Yes</td>
<td>CR</td>
<td>N/A</td>
<td>network this subnet is associated with.</td>
<td/>
</tr>
<tr>
<td>name</td>
<td>String</td>
<td>No</td>
<td>CRU</td>
<td>None</td>
<td>N/A</td>
<td>Human-readable name for the subnet. Might not
be unique.</td>
</tr>
<tr>
<td>ip_version</td>
<td>int</td>
<td>Yes</td>
<td>CR</td>
<td>4</td>
<td>{ 4 | 6 }</td>
<td>IP version</td>
</tr>
<tr>
<td>cidr</td>
<td>string</td>
<td>Yes</td>
<td>CR</td>
<td>N/A</td>
<td>valid cidr in the form
&lt;network_address&gt;/&lt;prefix&gt;</td>
<td>cidr representing IP range for this subnet,
based on IP version</td>
</tr>
<tr>
<td>gateway_ip</td>
<td>string</td>
<td>No</td>
<td>CRUD</td>
<td>first address in <emphasis role="italic"
>cidr</emphasis>
</td>
<td>Valid IP address or null</td>
<td>default gateway used by devices in this
subnet</td>
</tr>
<tr>
<td>dns_nameservers</td>
<td>list(str)</td>
<td>No</td>
<td>CRU</td>
<td>Empty list</td>
<td>No constraint</td>
<td>DNS name servers used by hosts in this
subnet.</td>
</tr>
<tr>
<td>allocation_pools</td>
<td>list(dict)</td>
<td>No</td>
<td>CR</td>
<td>Every address in <emphasis role="italic"
>cidr</emphasis>, excluding <emphasis
role="italic">gateway_ip</emphasis> if
configured</td>
<td>star/end of range must be valid ip</td>
<td>Sub-ranges of cidr available for dynamic
allocation to ports [ { "start": "10.0.0.2",
"end": "10.0.0.254"} ]</td>
</tr>
<tr>
<td>host_routes</td>
<td>list(dict)</td>
<td>No</td>
<td>CRU</td>
<td>Empty List</td>
<td>
<emphasis role="italic">[]</emphasis>
</td>
<td>Routes that should be used by devices with IPs
from this subnet (not including local subnet
route).</td>
</tr>
<tr>
<td>enable_dhcp</td>
<td>Bool</td>
<td>No</td>
<td>CRU</td>
<td>True</td>
<td>{ True | False }</td>
<td>Specifies whether DHCP is enabled for this
subnet or not.</td>
</tr>
<tr>
<td>tenant_id</td>
<td>uuid-str</td>
<td>No<footnote xml:id="tenant2">
<para>If OpenStack Networking is not
running with the Keystone Identity
service, the
<literal>tenant_id</literal>
attribute is required.</para>
</footnote></td>
<td>CR</td>
<td>N/A</td>
<td>No constraint</td>
<td>Owner of network. Only admin users can specify
a tenant_id other than its own. </td>
</tr>
</tbody>
</table>
</section>
<?hard-pagebreak?>
<section xml:id="Port">
<title>Port</title>
<para>A port represents a virtual switch port on a logical
network switch. Virtual instances attach their interfaces
into ports. The logical port also defines the MAC address
and the IP address(es) to be assigned to the interfaces
plugged into them. When IP addresses are associated to a
port, this also implies the port is associated with a
subnet, as the IP address was taken from the allocation
pool for a specific subnet.</para>
<?hard-pagebreak?>
<table rules="all" width="95%">
<caption>Port Attributes</caption>
<col width="20%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="15%"/>
<col width="17%"/>
<col width="20%"/>
<thead>
<tr>
<th>Attribute </th>
<th>Type </th>
<th>Required </th>
<th>CRUD<footnote xml:id="crud3">
<para><itemizedlist>
<listitem>
<para><emphasis role="bold"
>C</emphasis>. Use the attribute in
create operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>R</emphasis>. This attribute is
returned in response to show and
list operations.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>U</emphasis>. You can update the
value of this attribute.</para>
</listitem>
<listitem>
<para><emphasis role="bold"
>D</emphasis>. You can delete the
value of this attribute.</para>
</listitem>
</itemizedlist></para>
</footnote>
</th>
<th>Default Value </th>
<th>Validation Constraints </th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>uuid-str</td>
<td>N/A</td>
<td>R</td>
<td>generated</td>
<td>N/A</td>
<td>UUID for the port.</td>
</tr>
<tr>
<td>network_id</td>
<td>uuid-str</td>
<td>Yes</td>
<td>CR</td>
<td>N/A</td>
<td>existing network identifier</td>
<td>Network that this port is associated with.
</td>
</tr>
<tr>
<td>name</td>
<td>String</td>
<td>No</td>
<td>CRU</td>
<td>None</td>
<td>N/A</td>
<td>Human-readable name for the port. Might not be
unique.</td>
</tr>
<tr>
<td>admin_state_up</td>
<td>bool</td>
<td>No</td>
<td>CRU</td>
<td>true</td>
<td>{true|false}</td>
<td>Administrative state of port. If false (down),
port does not forward packets. </td>
</tr>
<tr>
<td>status</td>
<td>string</td>
<td>N/A</td>
<td>R</td>
<td>N/A</td>
<td>N/A</td>
<td><para>Indicates whether network is currently
operational. Possible values include: <itemizedlist>
<listitem>
<para>ACTIVE</para>
</listitem>
<listitem>
<para>DOWN</para>
</listitem>
<listitem>
<para>BUILD</para>
</listitem>
<listitem>
<para>ERROR</para>
</listitem>
</itemizedlist>
</para><para>Plug-ins might define additional
values.</para></td>
</tr>
<tr>
<td>mac_address</td>
<td>string</td>
<td>No</td>
<td>CR</td>
<td>generated</td>
<td>valid MAC in 6-octet form separated by
colons</td>
<td>Mac address to use on this port.</td>
</tr>
<tr>
<td>fixed_ips</td>
<td>list(dict)</td>
<td>No</td>
<td>CRU</td>
<td>automatically allocated from pool</td>
<td>Valid IP address and existing subnet
identifier</td>
<td>Specifies IP addresses for the port thus
associating the port itself with the subnets
where the IP addresses are picked from</td>
</tr>
<tr>
<td>device_id</td>
<td>str</td>
<td>No</td>
<td>CRUD</td>
<td>None</td>
<td>No constraint</td>
<td>identifies the device (e.g., virtual server)
using this port.</td>
</tr>
<tr>
<td>device_owner</td>
<td>str</td>
<td>No</td>
<td>CRUD</td>
<td>None</td>
<td>No constraint</td>
<td>Identifies the entity (e.g.: dhcp agent) using
this port.</td>
</tr>
<tr>
<td>tenant_id</td>
<td>uuid-str</td>
<td>No<footnote xml:id="tenant3">
<para>If OpenStack Networking is not
running with the Keystone Identity
service, the
<literal>tenant_id</literal>
attribute is required.</para>
</footnote>
</td>
<td>CR</td>
<td>N/A</td>
<td>No constraint</td>
<td>Owner of network. Only admin users can specify
a tenant_id other than its own. </td>
</tr>
<tr>
<td>security_groups</td>
<td>list(dict)</td>
<td>No</td>
<td>CRUD</td>
<td>None</td>
<td>Existing security group IDs</td>
<td>Specifies the IDs of any security groups
associated with a port.</td>
</tr>
</tbody>
</table>
</section>
</section>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section[
<!-- Some useful entities borrowed from HTML -->
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY hellip "&#x2026;">
<!ENTITY plusmn "&#xB1;">
<!-- Useful for describing APIs -->
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Check_mark_23x20_02.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
<imageobject>
<imagedata fileref="figures/Arrow_east.svg"
format="SVG" scale="60"/>
</imageobject>
</inlinemediaobject>'>
<!ENTITY APIv2 'Networking API v2.0'>
]>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
xml:id="retrieve_extensions">
<title>List Available Extensions</title>
<para>You can list available extensions through the <filename
role="bold">/v2.0/extensions</filename> URI.</para>
<note>
<para>You must authenticate these requests just like any other
API request.</para>
</note>
<para>The following example response shows a list of
extensions:</para>
<literallayout class="monospaced">Status Code: 200 OK
Connection: keep-alive
Content-Length: 654
Content-Type: application/xml; charset=UTF-8
Date: Wed, 12 Sep 2012 11:32:56 GMT</literallayout>
<programlisting language="xml"><xi:include href="samples/extensionsv2.xml" parse="text"/></programlisting>
<para>Also, you can query for specific extension using the
extension alias. For instance, querying
<literal>/v2.0/extensions/router</literal>, results in the
following response:</para>
<literallayout class="monospaced">Status Code: 200 OK
Connection: keep-alive
Content-Length: 350
Content-Type: application/xml; charset=UTF-8
Date: Wed, 12 Sep 2012 11:36:20 GMT</literallayout>
<programlisting language="xml"><xi:include href="samples/extension.xml" parse="text"/></programlisting>
</section>

View File

@ -0,0 +1,256 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2013 OpenStack Foundation, All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent os-networks-provider-ext.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [<!ENTITY % common SYSTEM "common.ent">
%common;]>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wadl="http://wadl.dev.java.net/2009/02"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns="http://wadl.dev.java.net/2009/02"
xmlns:common="http://docs.openstack.org/common/api/v1.0"
xmlns:csapi="http://docs.openstack.org/compute/api/v2"
xmlns:atom="http://www.w3.org/2005/Atom"
xsi:schemaLocation="http://docs.openstack.org/compute/api/v1.1
xsd/api.xsd
http://docs.openstack.org/common/api/v1.0
xsd/api-common.xsd
http://wadl.dev.java.net/2009/02
http://www.w3.org/Submission/wadl/wadl.xsd">
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<resources base="https://neutron.example.com/">
<resource id="version" type="#VersionDetails" path="v2.0">
<resource id="Networks" type="#NetworkList"
path="networks">
<method href="#listNetworks"/>
<param name="name" style="plain" type="xsd:string">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">The
network name.</p>
</doc>
</param>
<param name="admin_state_up" style="plain"
type="xsd:bool">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml"
>Indicates the administrative status of
the network.</p>
</doc>
</param>
<param name="shared" style="plain" type="xsd:bool">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml"
>Indicates whether this network is shared
across all tenants. By default, only
administrative users can change this
value.</p>
</doc>
</param>
<param name="tenant_id" style="plain"
type="csapi:uuid">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">The ID
of the tenant that owns the network. Only
administrative users can set the tenant
ID. You cannot change this value through
authorization policies.</p>
</doc>
</param>
<param name="provider:network_type" style="plain"
type="xsd:string">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">The
type of physical network that maps to this
networks resource. Examples are flat,
vlan, and gre.</p>
</doc>
</param>
<param name="provider:physical_network" style="plain"
type="xsd:string">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">The
physical network on which this network
object is implemented. The Networking API
v2.0 does not provide a way to list
available physical networks. For example,
the Open vSwitch plug-in configuration
file defines a symbolic name that maps to
specific bridges on each Compute host.</p>
</doc>
</param>
<param name="provider:segmentation_id" style="plain"
type="csapi:uuid">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">An
isolated segment on the physical network.
The network_type attribute defines the
segmentation model. For example, if
network_type is vlan, this ID is a vlan
identifier. If network_type is gre, this
ID is a gre key.</p>
</doc>
</param>
<method href="#createNetwork"/>
<resource path="{network_id}">
<param name="network_id" style="template"
type="csapi:UUID">
<wadl:doc xmlns="http://www.w3.org/1999/xhtml"
xml:lang="EN" title="Network ID">
<p>The UUID for the network of interest to
you.</p>
</wadl:doc>
</param>
<method href="#showNetwork"/>
<method href="#updateNetwork"/>
<method href="#deleteNetwork"/>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<method name="GET" id="listNetworks">
<wadl:doc xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN"
title="List Networks">
<p xmlns="http://www.w3.org/1999/xhtml">Lists networks
that are accessible to the tenant who submits the
request.</p>
</wadl:doc>
<response status="200"> &networkListParameters;
&networkProviderParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/networks-get-detail-resp.json"
/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/networks-get-detail-resp.xml"
/>
</doc>
</representation>
</response>
</method>
<method name="POST" id="createNetwork">
<wadl:doc xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN"
title="Create Network">
<p xmlns="http://www.w3.org/1999/xhtml">Creates a
network.</p>
</wadl:doc>
<request> &networkCreateParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-post-req.json"/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-post-req.xml"/>
</doc>
</representation>
</request>
<response status="201"> &networkListParameters;
&networkProviderParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-post-resp.json"/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-post-resp.xml"/>
</doc>
</representation>
</response>
</method>
<method name="GET" id="showNetwork">
<wadl:doc xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN"
title="Show Networks">
<p xmlns="http://www.w3.org/1999/xhtml">Shows information
for the specified network.</p>
</wadl:doc>
<response status="200"> &networkListParameters;
&networkProviderParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/networks-get-detail-resp.json"
/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/networks-get-detail-resp.xml"
/>
</doc>
</representation>
</response>
</method>
<method name="PUT" id="updateNetwork">
<wadl:doc xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN"
title="Update Network">
<p xmlns="http://www.w3.org/1999/xhtml">Updates the
specified network.</p>
</wadl:doc>
<request> &networkCreateParameters;
&networkProviderParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-put-update.req.json"
/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-put-update.req.xml"
/>
</doc>
</representation>
</request>
<response status="201"> &networkListParameters;
&networkProviderParameters; <representation
mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-put-update-resp.json"
/>
</doc>
</representation>
<representation mediaType="application/xml">
<doc xml:lang="EN">
<xsdxt:code
href="api_samples/network-put-update-resp.xml"
/>
</doc>
</representation>
</response>
</method>
</application>

Some files were not shown because too many files have changed in this diff Show More