Merge "Fix dcmanager add subcloud exception"
This commit is contained in:
commit
a3f595fe18
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue