diff --git a/doc/api_samples/os-networks/network-add-req.json b/doc/api_samples/os-networks/network-add-req.json new file mode 100644 index 000000000000..eca9c65b8bc1 --- /dev/null +++ b/doc/api_samples/os-networks/network-add-req.json @@ -0,0 +1 @@ +{"id": "1"} \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-add-req.xml b/doc/api_samples/os-networks/network-add-req.xml new file mode 100644 index 000000000000..3ba873da3667 --- /dev/null +++ b/doc/api_samples/os-networks/network-add-req.xml @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-create-req.json b/doc/api_samples/os-networks/network-create-req.json new file mode 100644 index 000000000000..422e772345fd --- /dev/null +++ b/doc/api_samples/os-networks/network-create-req.json @@ -0,0 +1,6 @@ +{ + "network": { + "label": "new net 111", + "cidr": "10.20.105.0/24" + } +} \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-create-req.xml b/doc/api_samples/os-networks/network-create-req.xml new file mode 100644 index 000000000000..890d7bf3a1e5 --- /dev/null +++ b/doc/api_samples/os-networks/network-create-req.xml @@ -0,0 +1,4 @@ + + + 10.20.105.0/24 + \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-create-resp.json b/doc/api_samples/os-networks/network-create-resp.json new file mode 100644 index 000000000000..194694a77f7b --- /dev/null +++ b/doc/api_samples/os-networks/network-create-resp.json @@ -0,0 +1,32 @@ +{ + "network": { + "bridge": null, + "bridge_interface": null, + "broadcast": "10.20.105.255", + "cidr": "10.20.105.0/24", + "cidr_v6": null, + "created_at": null, + "deleted": null, + "deleted_at": null, + "dhcp_start": "10.20.105.2", + "dns1": null, + "dns2": null, + "gateway": "10.20.105.1", + "gateway_v6": null, + "host": null, + "id": "668687f9-d724-4976-a6f4-a6fd3ad83da3", + "injected": null, + "label": "new net 111", + "multi_host": null, + "netmask": "255.255.255.0", + "netmask_v6": null, + "priority": null, + "project_id": null, + "rxtx_base": null, + "updated_at": null, + "vlan": null, + "vpn_private_address": null, + "vpn_public_address": null, + "vpn_public_port": null + } +} \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-create-resp.xml b/doc/api_samples/os-networks/network-create-resp.xml new file mode 100644 index 000000000000..f638228ef50d --- /dev/null +++ b/doc/api_samples/os-networks/network-create-resp.xml @@ -0,0 +1,31 @@ + + + None + None + 10.20.105.2 + None + None + 1bbbed2b-0daa-47a1-b869-1981c29150b1 + None + None + 10.20.105.1 + None + + None + None + None + False + None + 10.20.105.255 + 255.255.255.0 + None + 10.20.105.0/24 + None + None + None + None + None + None + None + None + \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-show-resp.json b/doc/api_samples/os-networks/network-show-resp.json new file mode 100644 index 000000000000..f3d7a18ce84b --- /dev/null +++ b/doc/api_samples/os-networks/network-show-resp.json @@ -0,0 +1,32 @@ +{ + "network": { + "bridge": "br100", + "bridge_interface": "eth0", + "broadcast": "10.0.0.7", + "cidr": "10.0.0.0/29", + "cidr_v6": null, + "created_at": "2011-08-15 06:19:19.387525", + "deleted": false, + "deleted_at": null, + "dhcp_start": "10.0.0.3", + "dns1": null, + "dns2": null, + "gateway": "10.0.0.1", + "gateway_v6": null, + "host": "nsokolov-desktop", + "id": "20c8acc0-f747-4d71-a389-46d078ebf047", + "injected": false, + "label": "mynet_0", + "multi_host": false, + "netmask": "255.255.255.248", + "netmask_v6": null, + "priority": null, + "project_id": "1234", + "rxtx_base": null, + "updated_at": "2011-08-16 09:26:13.048257", + "vlan": 100, + "vpn_private_address": "10.0.0.2", + "vpn_public_address": "127.0.0.1", + "vpn_public_port": 1000 + } +} \ No newline at end of file diff --git a/doc/api_samples/os-networks/network-show-resp.xml b/doc/api_samples/os-networks/network-show-resp.xml new file mode 100644 index 000000000000..2faed7a286c2 --- /dev/null +++ b/doc/api_samples/os-networks/network-show-resp.xml @@ -0,0 +1,31 @@ + + + br100 + 1000 + 10.0.0.3 + eth0 + 2011-08-16 09:26:13.048257 + 20c8acc0-f747-4d71-a389-46d078ebf047 + None + None + 10.0.0.1 + None + + None + 1234 + 10.0.0.2 + False + 100 + 10.0.0.7 + 255.255.255.248 + False + 10.0.0.0/29 + 127.0.0.1 + False + None + 2011-08-15 06:19:19.387525 + nsokolov-desktop + None + None + None + \ No newline at end of file diff --git a/doc/api_samples/os-networks/networks-disassociate-req.json b/doc/api_samples/os-networks/networks-disassociate-req.json new file mode 100644 index 000000000000..81e17d8095f6 --- /dev/null +++ b/doc/api_samples/os-networks/networks-disassociate-req.json @@ -0,0 +1 @@ +{"disassociate": null} \ No newline at end of file diff --git a/doc/api_samples/os-networks/networks-disassociate-req.xml b/doc/api_samples/os-networks/networks-disassociate-req.xml new file mode 100644 index 000000000000..85762fd0dfc9 --- /dev/null +++ b/doc/api_samples/os-networks/networks-disassociate-req.xml @@ -0,0 +1 @@ +None \ No newline at end of file diff --git a/doc/api_samples/os-networks/networks-list-resp.json b/doc/api_samples/os-networks/networks-list-resp.json new file mode 100644 index 000000000000..90da7c15d458 --- /dev/null +++ b/doc/api_samples/os-networks/networks-list-resp.json @@ -0,0 +1,64 @@ +{ + "networks": [ + { + "bridge": "br100", + "bridge_interface": "eth0", + "broadcast": "10.0.0.7", + "cidr": "10.0.0.0/29", + "cidr_v6": null, + "created_at": "2011-08-15 06:19:19.387525", + "deleted": false, + "deleted_at": null, + "dhcp_start": "10.0.0.3", + "dns1": null, + "dns2": null, + "gateway": "10.0.0.1", + "gateway_v6": null, + "host": "nsokolov-desktop", + "id": "20c8acc0-f747-4d71-a389-46d078ebf047", + "injected": false, + "label": "mynet_0", + "multi_host": false, + "netmask": "255.255.255.248", + "netmask_v6": null, + "priority": null, + "project_id": "1234", + "rxtx_base": null, + "updated_at": "2011-08-16 09:26:13.048257", + "vlan": 100, + "vpn_private_address": "10.0.0.2", + "vpn_public_address": "127.0.0.1", + "vpn_public_port": 1000 + }, + { + "bridge": "br101", + "bridge_interface": "eth0", + "broadcast": "10.0.0.15", + "cidr": "10.0.0.10/29", + "cidr_v6": null, + "created_at": "2011-08-15 06:19:19.885495", + "deleted": false, + "deleted_at": null, + "dhcp_start": "10.0.0.11", + "dns1": null, + "dns2": null, + "gateway": "10.0.0.9", + "gateway_v6": null, + "host": null, + "id": "20c8acc0-f747-4d71-a389-46d078ebf000", + "injected": false, + "label": "mynet_1", + "multi_host": false, + "netmask": "255.255.255.248", + "netmask_v6": null, + "priority": null, + "project_id": null, + "rxtx_base": null, + "updated_at": null, + "vlan": 101, + "vpn_private_address": "10.0.0.10", + "vpn_public_address": null, + "vpn_public_port": 1001 + } + ] +} \ No newline at end of file diff --git a/doc/api_samples/os-networks/networks-list-resp.xml b/doc/api_samples/os-networks/networks-list-resp.xml new file mode 100644 index 000000000000..59620c228b17 --- /dev/null +++ b/doc/api_samples/os-networks/networks-list-resp.xml @@ -0,0 +1,63 @@ + + + + br100 + 1000 + 10.0.0.3 + eth0 + 2011-08-16 09:26:13.048257 + 20c8acc0-f747-4d71-a389-46d078ebf047 + None + None + 10.0.0.1 + None + + None + 1234 + 10.0.0.2 + False + 100 + 10.0.0.7 + 255.255.255.248 + False + 10.0.0.0/29 + 127.0.0.1 + False + None + 2011-08-15 06:19:19.387525 + nsokolov-desktop + None + None + None + + + br101 + 1001 + 10.0.0.11 + eth0 + None + 20c8acc0-f747-4d71-a389-46d078ebf000 + None + None + 10.0.0.9 + None + + None + None + 10.0.0.10 + False + 101 + 10.0.0.15 + 255.255.255.248 + False + 10.0.0.10/29 + None + False + None + 2011-08-15 06:19:19.885495 + None + None + None + None + + \ No newline at end of file diff --git a/nova/tests/integrated/api_samples/os-networks/network-add-req.json.tpl b/nova/tests/integrated/api_samples/os-networks/network-add-req.json.tpl new file mode 100644 index 000000000000..6489f6e1b5ad --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-add-req.json.tpl @@ -0,0 +1 @@ +{"id": "1"} diff --git a/nova/tests/integrated/api_samples/os-networks/network-add-req.xml.tpl b/nova/tests/integrated/api_samples/os-networks/network-add-req.xml.tpl new file mode 100644 index 000000000000..9e5822a9e851 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-add-req.xml.tpl @@ -0,0 +1 @@ +1 diff --git a/nova/tests/integrated/api_samples/os-networks/network-create-req.json.tpl b/nova/tests/integrated/api_samples/os-networks/network-create-req.json.tpl new file mode 100644 index 000000000000..5e2be031cbd9 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-create-req.json.tpl @@ -0,0 +1,6 @@ +{ + "network": { + "label": "new net 111", + "cidr": "10.20.105.0/24" + } +} diff --git a/nova/tests/integrated/api_samples/os-networks/network-create-req.xml.tpl b/nova/tests/integrated/api_samples/os-networks/network-create-req.xml.tpl new file mode 100644 index 000000000000..d5222f9e8fe1 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-create-req.xml.tpl @@ -0,0 +1,4 @@ + + + 10.20.105.0/24 + diff --git a/nova/tests/integrated/api_samples/os-networks/network-create-resp.json.tpl b/nova/tests/integrated/api_samples/os-networks/network-create-resp.json.tpl new file mode 100644 index 000000000000..e178ab50cb9b --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-create-resp.json.tpl @@ -0,0 +1,32 @@ +{ + "network": { + "bridge": null, + "vpn_public_port": null, + "dhcp_start": "%(ip)s", + "bridge_interface": null, + "updated_at": null, + "id": "%(id)s", + "cidr_v6": null, + "deleted_at": null, + "gateway": "%(ip)s", + "rxtx_base": null, + "label": "new net 111", + "priority": null, + "project_id": null, + "vpn_private_address": null, + "deleted": null, + "vlan": null, + "broadcast": "%(ip)s", + "netmask": "%(ip)s", + "injected": null, + "cidr": "10.20.105.0/24", + "vpn_public_address": null, + "multi_host": null, + "dns2": null, + "created_at": null, + "host": null, + "gateway_v6": null, + "netmask_v6": null, + "dns1": null + } +} diff --git a/nova/tests/integrated/api_samples/os-networks/network-create-resp.xml.tpl b/nova/tests/integrated/api_samples/os-networks/network-create-resp.xml.tpl new file mode 100644 index 000000000000..d709952cda26 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-create-resp.xml.tpl @@ -0,0 +1,30 @@ + + None + None + %(ip)s + None + None + %(id)s + None + None + %(ip)s + None + + None + None + None + False + None + %(ip)s + %(ip)s + None + 10.20.105.0/24 + None + None + None + None + None + None + None + None + diff --git a/nova/tests/integrated/api_samples/os-networks/network-show-resp.json.tpl b/nova/tests/integrated/api_samples/os-networks/network-show-resp.json.tpl new file mode 100644 index 000000000000..5c3630c5d593 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-show-resp.json.tpl @@ -0,0 +1,33 @@ +{ + "network": + { + "bridge": "br100", + "bridge_interface": "eth0", + "broadcast": "%(ip)s", + "cidr": "10.0.0.0/29", + "cidr_v6": null, + "created_at": "%(timestamp)s", + "deleted": false, + "deleted_at": null, + "dhcp_start": "%(ip)s", + "dns1": null, + "dns2": null, + "gateway": "%(ip)s", + "gateway_v6": null, + "host": "nsokolov-desktop", + "id": "%(id)s", + "injected": false, + "label": "mynet_0", + "multi_host": false, + "netmask": "%(ip)s", + "netmask_v6": null, + "priority": null, + "project_id": "1234", + "rxtx_base": null, + "updated_at": "%(timestamp)s", + "vlan": 100, + "vpn_private_address": "%(ip)s", + "vpn_public_address": "%(ip)s", + "vpn_public_port": 1000 + } +} diff --git a/nova/tests/integrated/api_samples/os-networks/network-show-resp.xml.tpl b/nova/tests/integrated/api_samples/os-networks/network-show-resp.xml.tpl new file mode 100644 index 000000000000..7989f47e4bea --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/network-show-resp.xml.tpl @@ -0,0 +1,31 @@ + + + br100 + 1000 + %(ip)s + eth0 + %(timestamp)s + %(id)s + None + None + %(ip)s + None + + None + 1234 + %(ip)s + False + 100 + %(ip)s + %(ip)s + False + 10.0.0.0/29 + %(ip)s + False + None + %(timestamp)s + nsokolov-desktop + None + None + None + diff --git a/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.json.tpl b/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.json.tpl new file mode 100644 index 000000000000..df99b889c408 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.json.tpl @@ -0,0 +1 @@ +{"disassociate": null} diff --git a/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.xml.tpl b/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.xml.tpl new file mode 100644 index 000000000000..63c0300904b3 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/networks-disassociate-req.xml.tpl @@ -0,0 +1 @@ +None diff --git a/nova/tests/integrated/api_samples/os-networks/networks-list-resp.json.tpl b/nova/tests/integrated/api_samples/os-networks/networks-list-resp.json.tpl new file mode 100644 index 000000000000..6da3fb2e2b0e --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/networks-list-resp.json.tpl @@ -0,0 +1,64 @@ +{ + "networks": [ + { + "bridge": "br100", + "bridge_interface": "eth0", + "broadcast": "%(ip)s", + "cidr": "10.0.0.0/29", + "cidr_v6": null, + "created_at": "%(timestamp)s", + "deleted": false, + "deleted_at": null, + "dhcp_start": "%(ip)s", + "dns1": null, + "dns2": null, + "gateway": "%(ip)s", + "gateway_v6": null, + "host": "nsokolov-desktop", + "id": "%(id)s", + "injected": false, + "label": "mynet_0", + "multi_host": false, + "netmask": "%(ip)s", + "netmask_v6": null, + "priority": null, + "project_id": "1234", + "rxtx_base": null, + "updated_at": "%(timestamp)s", + "vlan": 100, + "vpn_private_address": "%(ip)s", + "vpn_public_address": "%(ip)s", + "vpn_public_port": 1000 + }, + { + "bridge": "br101", + "bridge_interface": "eth0", + "broadcast": "%(ip)s", + "cidr": "10.0.0.10/29", + "cidr_v6": null, + "created_at": "%(timestamp)s", + "deleted": false, + "deleted_at": null, + "dhcp_start": "%(ip)s", + "dns1": null, + "dns2": null, + "gateway": "%(ip)s", + "gateway_v6": null, + "host": null, + "id": "%(id)s", + "injected": false, + "label": "mynet_1", + "multi_host": false, + "netmask": "%(ip)s", + "netmask_v6": null, + "priority": null, + "project_id": null, + "rxtx_base": null, + "updated_at": null, + "vlan": 101, + "vpn_private_address": "%(ip)s", + "vpn_public_address": null, + "vpn_public_port": 1001 + } + ] +} diff --git a/nova/tests/integrated/api_samples/os-networks/networks-list-resp.xml.tpl b/nova/tests/integrated/api_samples/os-networks/networks-list-resp.xml.tpl new file mode 100644 index 000000000000..c01c08337864 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-networks/networks-list-resp.xml.tpl @@ -0,0 +1,63 @@ + + + + br100 + 1000 + %(ip)s + eth0 + %(timestamp)s + %(id)s + None + None + %(ip)s + None + + None + 1234 + %(ip)s + False + 100 + %(ip)s + %(ip)s + False + 10.0.0.0/29 + %(ip)s + False + None + %(timestamp)s + nsokolov-desktop + None + None + None + + + br101 + 1001 + %(ip)s + eth0 + None + %(id)s + None + None + %(ip)s + None + + None + None + %(ip)s + False + 101 + %(ip)s + %(ip)s + False + 10.0.0.10/29 + None + False + None + %(timestamp)s + None + None + None + None + + diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index f1f86d21b94c..d688d900df73 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -44,6 +44,7 @@ import nova.quota from nova.scheduler import driver from nova import test from nova.tests.api.openstack.compute.contrib import test_fping +from nova.tests.api.openstack.compute.contrib import test_networks from nova.tests.baremetal.db import base as bm_db_base from nova.tests import fake_network from nova.tests.image import fake @@ -381,7 +382,6 @@ class ApiSamplesTrap(ApiSampleTestBase): do_not_approve_additions.append('os-flavor-access') do_not_approve_additions.append('os-floating-ip-dns') do_not_approve_additions.append('os-hypervisors') - do_not_approve_additions.append('os-networks') do_not_approve_additions.append('os-services') do_not_approve_additions.append('os-volumes') @@ -2423,6 +2423,62 @@ class OsNetworksJsonTests(ApiSampleTestBase): self.assertEqual(response.status, 202) +class NetworksJsonTests(ApiSampleTestBase): + extension_name = ("nova.api.openstack.compute.contrib" + ".os_networks.Os_networks") + + def setUp(self): + super(NetworksJsonTests, self).setUp() + fake_network_api = test_networks.FakeNetworkAPI() + self.stubs.Set(network_api.API, "get_all", + fake_network_api.get_all) + self.stubs.Set(network_api.API, "get", + fake_network_api.get) + self.stubs.Set(network_api.API, "associate", + fake_network_api.associate) + self.stubs.Set(network_api.API, "delete", + fake_network_api.delete) + self.stubs.Set(network_api.API, "create", + fake_network_api.create) + self.stubs.Set(network_api.API, "add_network_to_project", + fake_network_api.add_network_to_project) + + def test_network_list(self): + response = self._do_get('os-networks') + self.assertEqual(response.status, 200) + subs = self._get_regexes() + self._verify_response('networks-list-resp', subs, response) + + def test_network_disassociate(self): + uuid = test_networks.FAKE_NETWORKS[0]['uuid'] + response = self._do_post('os-networks/%s/action' % uuid, + 'networks-disassociate-req', {}) + self.assertEqual(response.status, 202) + + def test_network_show(self): + uuid = test_networks.FAKE_NETWORKS[0]['uuid'] + response = self._do_get('os-networks/%s' % uuid) + self.assertEqual(response.status, 200) + subs = self._get_regexes() + self._verify_response('network-show-resp', subs, response) + + def test_network_create(self): + response = self._do_post("os-networks", + 'network-create-req', {}) + self.assertEqual(response.status, 200) + subs = self._get_regexes() + self._verify_response('network-create-resp', subs, response) + + def test_network_add(self): + response = self._do_post("os-networks/add", + 'network-add-req', {}) + self.assertEqual(response.status, 202) + + +class NetworksXmlTests(NetworksJsonTests): + ctype = 'xml' + + class NetworksAssociateJsonTests(ApiSampleTestBase): extension_name = ("nova.api.openstack.compute.contrib" ".networks_associate.Networks_associate")