summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivan-zhu <bozhu@linux.vnet.ibm.com>2012-12-29 16:34:27 +0800
committerivan-zhu <bozhu@linux.vnet.ibm.com>2012-12-29 16:39:53 +0800
commitabba5574ca219ea3180edfa018ef36d98015394a (patch)
treef6e9a6c717a2e6614f5fff2705303fa605e55412
parent72d69a6c690f82655d735f7e3cb76aaaac61077c (diff)
downloadnova-abba5574ca219ea3180edfa018ef36d98015394a.tar.gz
nova-abba5574ca219ea3180edfa018ef36d98015394a.tar.xz
nova-abba5574ca219ea3180edfa018ef36d98015394a.zip
Add API sample tests to FixedIPs extension
Partially implements blueprint nova-api-samples Bug 1091739 Change-Id: Ie10fd85199ec10de29e99338c748f34cc04aeeb6
-rw-r--r--doc/api_samples/os-fixed-ips/fixedip-post-req.json3
-rw-r--r--doc/api_samples/os-fixed-ips/fixedip-post-req.xml2
-rw-r--r--doc/api_samples/os-fixed-ips/fixedips-get-resp.json8
-rw-r--r--doc/api_samples/os-fixed-ips/fixedips-get-resp.xml7
-rw-r--r--nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl8
-rw-r--r--nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl7
-rw-r--r--nova/tests/integrated/test_api_samples.py86
9 files changed, 125 insertions, 1 deletions
diff --git a/doc/api_samples/os-fixed-ips/fixedip-post-req.json b/doc/api_samples/os-fixed-ips/fixedip-post-req.json
new file mode 100644
index 000000000..cf8ba0e0b
--- /dev/null
+++ b/doc/api_samples/os-fixed-ips/fixedip-post-req.json
@@ -0,0 +1,3 @@
+{
+ "reserve": "None"
+} \ No newline at end of file
diff --git a/doc/api_samples/os-fixed-ips/fixedip-post-req.xml b/doc/api_samples/os-fixed-ips/fixedip-post-req.xml
new file mode 100644
index 000000000..e29b685be
--- /dev/null
+++ b/doc/api_samples/os-fixed-ips/fixedip-post-req.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<reserve>None</reserve> \ No newline at end of file
diff --git a/doc/api_samples/os-fixed-ips/fixedips-get-resp.json b/doc/api_samples/os-fixed-ips/fixedips-get-resp.json
new file mode 100644
index 000000000..d63c91559
--- /dev/null
+++ b/doc/api_samples/os-fixed-ips/fixedips-get-resp.json
@@ -0,0 +1,8 @@
+{
+ "fixed_ip": {
+ "address": "192.168.1.1",
+ "cidr": "192.168.1.0/24",
+ "host": "host",
+ "hostname": "openstack"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-fixed-ips/fixedips-get-resp.xml b/doc/api_samples/os-fixed-ips/fixedips-get-resp.xml
new file mode 100644
index 000000000..a9676721f
--- /dev/null
+++ b/doc/api_samples/os-fixed-ips/fixedips-get-resp.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<fixed_ip>
+ <cidr>192.168.1.0/24</cidr>
+ <hostname>openstack</hostname>
+ <host>host</host>
+ <address>192.168.1.1</address>
+</fixed_ip> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl b/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl
new file mode 100644
index 000000000..85ae4890a
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.json.tpl
@@ -0,0 +1,3 @@
+{
+ "reserve": "%(reserve)s"
+}
diff --git a/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl
new file mode 100644
index 000000000..3896b24eb
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-fixed-ips/fixedip-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<reserve>%(reserve)s</reserve>
diff --git a/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl
new file mode 100644
index 000000000..a3d11475b
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.json.tpl
@@ -0,0 +1,8 @@
+{
+ "fixed_ip": {
+ "cidr": "%(cidr)s",
+ "hostname": "%(hostname)s",
+ "host": "%(host)s",
+ "address": "%(address)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl
new file mode 100644
index 000000000..3e9598f34
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-fixed-ips/fixedips-get-resp.xml.tpl
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<fixed_ip>
+ <cidr>%(cidr)s</cidr>
+ <hostname>%(hostname)s</hostname>
+ <host>%(host)s</host>
+ <address>%(address)s</address>
+</fixed_ip>
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index a33b39da4..bfa5a7b14 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -30,6 +30,7 @@ from nova.compute import api
from nova import context
from nova import db
from nova.db.sqlalchemy import models
+from nova import exception
from nova.network import api
from nova.network.manager import NetworkManager
from nova.openstack.common import cfg
@@ -355,7 +356,6 @@ class ApiSamplesTrap(ApiSampleTestBase):
do_not_approve_additions.append('os-config-drive')
do_not_approve_additions.append('os-coverage')
do_not_approve_additions.append('os-create-server-ext')
- do_not_approve_additions.append('os-fixed-ips')
do_not_approve_additions.append('os-flavor-access')
do_not_approve_additions.append('os-flavor-extra-specs')
do_not_approve_additions.append('os-flavor-rxtx')
@@ -1490,6 +1490,90 @@ class AgentsXmlTest(AgentsJsonTest):
ctype = "xml"
+class FixedIpJsonTest(ApiSampleTestBase):
+ extension_name = "nova.api.openstack.compute.contrib.fixed_ips.Fixed_ips"
+
+ def _get_flags(self):
+ f = super(FixedIpJsonTest, self)._get_flags()
+ f['osapi_compute_extension'] = CONF.osapi_compute_extension[:]
+ return f
+
+ def setUp(self):
+ super(FixedIpJsonTest, self).setUp()
+
+ fake_fixed_ips = [{'id': 1,
+ 'address': '192.168.1.1',
+ 'network_id': 1,
+ 'virtual_interface_id': 1,
+ 'instance_uuid': '1',
+ 'allocated': False,
+ 'leased': False,
+ 'reserved': False,
+ 'host': None},
+ {'id': 2,
+ 'address': '192.168.1.2',
+ 'network_id': 1,
+ 'virtual_interface_id': 2,
+ 'instance_uuid': '2',
+ 'allocated': False,
+ 'leased': False,
+ 'reserved': False,
+ 'host': None},
+ ]
+
+ def fake_fixed_ip_get_by_address(context, address):
+ for fixed_ip in fake_fixed_ips:
+ if fixed_ip['address'] == address:
+ return fixed_ip
+ raise exception.FixedIpNotFoundForAddress(address=address)
+
+ def fake_fixed_ip_get_by_address_detailed(context, address):
+ network = {'id': 1,
+ 'cidr': "192.168.1.0/24"}
+ host = {'host': "host",
+ 'hostname': 'openstack'}
+ for fixed_ip in fake_fixed_ips:
+ if fixed_ip['address'] == address:
+ return (fixed_ip, network, host)
+ raise exception.FixedIpNotFoundForAddress(address=address)
+
+ def fake_fixed_ip_update(context, address, values):
+ fixed_ip = fake_fixed_ip_get_by_address(context, address)
+ if fixed_ip is None:
+ raise exception.FixedIpNotFoundForAddress(address=address)
+ else:
+ for key in values:
+ fixed_ip[key] = values[key]
+
+ self.stubs.Set(db, "fixed_ip_get_by_address",
+ fake_fixed_ip_get_by_address)
+ self.stubs.Set(db, "fixed_ip_get_by_address_detailed",
+ fake_fixed_ip_get_by_address_detailed)
+ self.stubs.Set(db, "fixed_ip_update", fake_fixed_ip_update)
+
+ def test_fixed_ip_reserve(self):
+ """Reserve a Fixed IP"""
+ project = {'reserve': None}
+ response = self._do_post('os-fixed-ips/192.168.1.1/action',
+ 'fixedip-post-req',
+ project)
+ self.assertEqual(response.status, 202)
+
+ def test_get_fixed_ip(self):
+ """Return data about the given fixed ip."""
+ response = self._do_get('os-fixed-ips/192.168.1.1')
+ self.assertEqual(response.status, 200)
+ project = {'cidr': '192.168.1.0/24',
+ 'hostname': 'openstack',
+ 'host': 'host',
+ 'address': '192.168.1.1'}
+ return self._verify_response('fixedips-get-resp', project, response)
+
+
+class FixedIpXmlTest(FixedIpJsonTest):
+ ctype = "xml"
+
+
class AggregatesSampleJsonTest(ServersSampleBase):
extension_name = "nova.api.openstack.compute.contrib" + \
".aggregates.Aggregates"