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'])