Merge "Fix dcmanager add subcloud exception"

This commit is contained in:
Zuul 2019-07-04 14:57:36 +00:00 committed by Gerrit Code Review
commit a3f595fe18
2 changed files with 17 additions and 6 deletions

View File

@ -62,10 +62,12 @@ class SysinvClient(base.DriverBase):
def get_management_interface(self, hostname):
"""Get the management interface for a host."""
interfaces = self.sysinv_client.iinterface.list(hostname)
for interface in interfaces:
if interface.networktype == sysinv_constants.NETWORK_TYPE_MGMT:
return interface
interface_networks = self.sysinv_client.interface_network.\
list_by_interface(interface.uuid)
for if_net in interface_networks:
if if_net.network_type == sysinv_constants.NETWORK_TYPE_MGMT:
return interface
# This can happen if the host is still being installed and has not
# yet created its management interface.

View File

@ -29,9 +29,15 @@ from ddt import file_data
class FakeInterface(object):
def __init__(self, ifname, networktype):
def __init__(self, ifname, uuid):
self.ifname = ifname
self.networktype = networktype
self.uuid = uuid
class FakeInterfaceNetwork(object):
def __init__(self, network_type, interface):
self.network_type = network_type
self.interface = interface
class FakeNetwork(object):
@ -75,13 +81,16 @@ class TestSysinvClient(base.DCManagerTestCase):
@mock.patch.object(sysinv_v1.SysinvClient, '__init__')
def test_get_management_interface(self, mock_sysinvclient_init):
interface = FakeInterface('interface', 'mgmt')
interface = FakeInterface('interface', 'uuid')
interface_network = FakeInterfaceNetwork('mgmt', 'interface')
mock_sysinvclient_init.return_value = None
sysinv_client = sysinv_v1.SysinvClient(consts.DEFAULT_REGION_NAME,
None)
sysinv_client.sysinv_client = mock.MagicMock()
sysinv_client.sysinv_client.iinterface.list = mock.MagicMock()
sysinv_client.sysinv_client.iinterface.list.return_value = [interface]
sysinv_client.sysinv_client.interface_network.list_by_interface.\
return_value = [interface_network]
management_interface = sysinv_client.get_management_interface(
'hostname')
self.assertEqual(interface, management_interface)