diff --git a/neutron/agent/common/ovs_lib.py b/neutron/agent/common/ovs_lib.py index 20b8468167a..010644f01b4 100644 --- a/neutron/agent/common/ovs_lib.py +++ b/neutron/agent/common/ovs_lib.py @@ -343,6 +343,8 @@ class OVSBridge(BaseOVS): check_error=True, log_errors=True, if_exists=False): port_names = ports or self.get_port_name_list() + if not port_names: + return [] return (self.ovsdb.db_list(table, port_names, columns=columns, if_exists=if_exists). execute(check_error=check_error, log_errors=log_errors)) diff --git a/neutron/tests/functional/agent/test_ovs_lib.py b/neutron/tests/functional/agent/test_ovs_lib.py index 3562722ea7c..b6ed9618dc1 100644 --- a/neutron/tests/functional/agent/test_ovs_lib.py +++ b/neutron/tests/functional/agent/test_ovs_lib.py @@ -232,6 +232,17 @@ class OVSBridgeTestCase(OVSBridgeTestBase): expected = set([vif_ports[0].vif_id]) self.assertEqual(expected, ports) + def test_get_vif_port_set_on_empty_bridge_returns_empty_set(self): + # Create a port on self.br + self.create_ovs_vif_port() + + # Create another, empty bridge + br_2 = self.useFixture(net_helpers.OVSBridgeFixture()).bridge + + # Assert that get_vif_port_set on an empty bridge returns an empty set, + # and does not return the other bridge's ports. + self.assertEqual(set(), br_2.get_vif_port_set()) + def test_get_ports_attributes(self): port_names = [self.create_ovs_port()[0], self.create_ovs_port()[0]] db_ports = self.br.get_ports_attributes('Interface', columns=['name'])