'Interface', columns=['name', 'external_ids', 'ofport'])
by_name = {x['name']: x for x in port_info}
for name in port_names:
+ if not by_name.get(name):
+ #NOTE(dprince): some ports (like bonds) won't have all
+ # these attributes so we skip them entirely
+ continue
external_ids = by_name[name]['external_ids']
ofport = by_name[name]['ofport']
if "iface-id" in external_ids and "attached-mac" in external_ids:
def test_get_vif_ports_xen(self):
self._test_get_vif_ports(is_xen=True)
+ def test_get_vif_ports_with_bond(self):
+ pname = "bond0"
+ #NOTE(dprince): bond ports don't have records in the Interface table
+ external_ids = ('{"data":[], "headings":[]}')
+
+ # Each element is a tuple of (expected mock call, return_value)
+ expected_calls_and_values = [
+ (self._vsctl_mock("list-ports", self.BR_NAME), "%s\n" % pname),
+ (self._vsctl_mock("--columns=name,external_ids,ofport", "list",
+ "Interface"), external_ids),
+ ]
+ tools.setup_mock_calls(self.execute, expected_calls_and_values)
+
+ ports = self.br.get_vif_ports()
+ self.assertEqual(0, len(ports))
+ tools.verify_mock_calls(self.execute, expected_calls_and_values)
+
def test_get_vif_port_set_nonxen(self):
self._test_get_vif_port_set(False)