summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Lanoux <joseph.lanoux@hp.com>2014-09-18 14:25:46 +0000
committerJoseph Lanoux <joseph.lanoux@hp.com>2014-10-14 09:14:04 +0000
commit38edc05036e6129eefbfbe1e0193e45803fe7b83 (patch)
tree22ae4cec5dac29faadd6ce8da85f7d17455a89f0
parent41d6aa233bf9c76734d443e023bb88a448f6ed59 (diff)
downloadtempest-38edc05036e6129eefbfbe1e0193e45803fe7b83.tar.gz
Verify network interfaces are in requested order
There is no Tempest test verifying that the order of multiple networks passed to an instance during its creation is preserved within the instance (https://review.openstack.org/#/c/85711/). This change introduces a new test in test_create_server to verify this feature. Change-Id: I3622b9e8dfbbf73eb9a0a69d2094b75e4934fe17
-rw-r--r--tempest/api/compute/servers/test_create_server.py35
-rw-r--r--tempest/services/compute/xml/servers_client.py7
2 files changed, 40 insertions, 2 deletions
diff --git a/tempest/api/compute/servers/test_create_server.py b/tempest/api/compute/servers/test_create_server.py
index 5df8d8263..25dc87d00 100644
--- a/tempest/api/compute/servers/test_create_server.py
+++ b/tempest/api/compute/servers/test_create_server.py
@@ -42,6 +42,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
personality = [{'path': '/test.txt',
'contents': base64.b64encode(file_contents)}]
cls.client = cls.servers_client
+ cls.network_client = cls.os.network_client
cli_resp = cls.create_test_server(name=cls.name,
meta=cls.meta,
accessIPv4=cls.accessIPv4,
@@ -124,6 +125,40 @@ class ServersTestJSON(base.BaseV2ComputeTest):
self.assertEqual(200, resp.status)
self.assertIn(server['id'], server_group['members'])
+ @testtools.skipUnless(CONF.service_available.neutron,
+ 'Neutron service must be available.')
+ def test_verify_multiple_nics_order(self):
+ # Verify that the networks order given at the server creation is
+ # preserved within the server.
+ name_net1 = data_utils.rand_name(self.__class__.__name__)
+ _, net1 = self.network_client.create_network(name=name_net1)
+ name_net2 = data_utils.rand_name(self.__class__.__name__)
+ _, net2 = self.network_client.create_network(name=name_net2)
+
+ _, subnet1 = self.network_client.create_subnet(
+ network_id=net1['network']['id'],
+ cidr='19.80.0.0/24',
+ ip_version=4)
+ _, subnet2 = self.network_client.create_subnet(
+ network_id=net2['network']['id'],
+ cidr='19.86.0.0/24',
+ ip_version=4)
+
+ networks = [{'uuid': net1['network']['id']},
+ {'uuid': net2['network']['id']}]
+
+ _, server_multi_nics = self.create_test_server(
+ networks=networks, wait_until='ACTIVE')
+
+ _, addresses = self.client.list_addresses(server_multi_nics['id'])
+
+ expected_addr = ['19.80.0.2', '19.86.0.2']
+
+ addr = [addresses[name_net1][0]['addr'],
+ addresses[name_net2][0]['addr']]
+
+ self.assertEqual(expected_addr, addr)
+
class ServersWithSpecificFlavorTestJSON(base.BaseV2ComputeAdminTest):
disk_config = 'AUTO'
diff --git a/tempest/services/compute/xml/servers_client.py b/tempest/services/compute/xml/servers_client.py
index 156d889e0..06f1b8301 100644
--- a/tempest/services/compute/xml/servers_client.py
+++ b/tempest/services/compute/xml/servers_client.py
@@ -349,8 +349,11 @@ class ServersClientXML(rest_client.RestClient):
networks = xml_utils.Element("networks")
server.append(networks)
for network in kwargs['networks']:
- s = xml_utils.Element("network", uuid=network['uuid'],
- fixed_ip=network['fixed_ip'])
+ if 'fixed_ip' in network:
+ s = xml_utils.Element("network", uuid=network['uuid'],
+ fixed_ip=network['fixed_ip'])
+ else:
+ s = xml_utils.Element("network", uuid=network['uuid'])
networks.append(s)
if 'meta' in kwargs: