Fix operator cloud get_nic_by_mac

Apparently, this method either never worked or was silently
broken at some point in the past, since we didn't have tests.

Added two tests and got the method back into working shape.

Change-Id: I26591549c082a2cd206f20fbcb7f1e3a1dde91c7
This commit is contained in:
Julia Kreger 2017-11-29 15:43:45 -05:00
parent f9465f5abe
commit bd38f39243
2 changed files with 30 additions and 2 deletions

View File

@ -56,8 +56,9 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
def get_nic_by_mac(self, mac):
# TODO(TheJulia): Query /ports?address=mac when converting
try:
return self.manager.submit_task(
_tasks.MachineNodePortGet(port_id=mac))
return self._normalize_machine(
self.manager.submit_task(
_tasks.MachinePortGetByAddress(address=mac)))
except ironic_exceptions.ClientException:
return None

View File

@ -92,3 +92,30 @@ class TestBaremetalPort(base.IronicTestCase):
self.op_cloud.list_nics_for_machine,
self.fake_baremetal_node['uuid'])
self.assert_calls()
def test_get_nic_by_mac(self):
mac = self.fake_baremetal_port['address']
query = 'detail?address=%s' % mac
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(resource='ports', append=[query]),
json={'ports': [self.fake_baremetal_port]}),
])
return_value = self.op_cloud.get_nic_by_mac(mac)
self.assertEqual(self.fake_baremetal_port, return_value)
self.assert_calls()
def test_get_nic_by_mac_failure(self):
mac = self.fake_baremetal_port['address']
query = 'detail?address=%s' % mac
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(resource='ports', append=[query]),
json={'ports': []}),
])
self.assertIsNone(self.op_cloud.get_nic_by_mac(mac))
self.assert_calls()