Fix scenario test fails when port_vnic_type is set
The commit 0a03b7a37a20c206932206eea8602d9f4b009ae9 broke a working external CI
which tests SRIOV. This is a fix for this.
The main issue is that TestNetworkAdvancedServerOps object doesn't have
network attribute while TestNetworkBasicOps has. This patch set a common
attribute ports for all of them because ports are only created in
create_server method of manager.py when port_vnic_type is set.
Change-Id: Ib6c3081638bde05e56a40b70e2dda9677b43e04e
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 60bf7cb..2e38e49 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -1080,14 +1080,10 @@
port = self._create_port(network_id=net_id,
client=net_client,
**create_port_body)
- # if port_vnic_type is set, ports in the passing
- # create_kwargs will be override, which cause the
- # inconsistence. Set the port_id according to network id
- if net_id == self.network['id']:
- self.port_id = port.id
ports.append({'port': port.id})
if ports:
create_kwargs['networks'] = ports
+ self.ports = ports
return super(NetworkScenarioTest, self).create_server(
name=name, image=image, flavor=flavor,
diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index b31ba69..d04bfae 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -108,12 +108,14 @@
self.network, self.subnet, self.router = self.create_networks(**kwargs)
self.check_networks()
+ self.ports = []
self.port_id = None
# when vnic_type is set, ports will be created in create_server.
# So no need to create a port here in this case.
if boot_with_port and not vnic_type:
# create a port on the network and boot with that
self.port_id = self._create_port(self.network['id']).id
+ self.ports.append({'port': self.port_id})
name = data_utils.rand_name('server-smoke')
server = self._create_server(name, self.network, self.port_id)
@@ -634,7 +636,11 @@
# Setup the network, create a port and boot the server from that port.
self._setup_network_and_servers(boot_with_port=True)
_, server = self.floating_ip_tuple
- self.assertIsNotNone(self.port_id,
+ self.assertEqual(1, len(self.ports),
+ 'There should only be one port created for '
+ 'server %s.' % server['id'])
+ port_id = self.ports[0]['port']
+ self.assertIsNotNone(port_id,
'Server should have been created from a '
'pre-existing port.')
# Assert the port is bound to the server.
@@ -643,13 +649,13 @@
self.assertEqual(1, len(port_list),
'There should only be one port created for '
'server %s.' % server['id'])
- self.assertEqual(self.port_id, port_list[0]['id'])
+ self.assertEqual(port_id, port_list[0]['id'])
# Delete the server.
self.servers_client.delete_server(server['id'])
self.servers_client.wait_for_server_termination(server['id'])
# Assert the port still exists on the network but is unbound from
# the deleted server.
- port = self.network_client.show_port(self.port_id)['port']
+ port = self.network_client.show_port(port_id)['port']
self.assertEqual(self.network['id'], port['network_id'])
self.assertEqual('', port['device_id'])
self.assertEqual('', port['device_owner'])