Fix dcmanager add subcloud exception
The sysinv API for retrieving the network interfaces has been changed. This update makes changes in dcmanager to adapt the sysinv changes. Story: 2004766 Task: 35672 Change-Id: Ifaa510726c5029738e6b02f468a3a38f0682a351 Signed-off-by: Tao Liu <tao.liu@windriver.com>
This commit is contained in:
parent
fd498c843c
commit
def5da6342
|
@ -62,10 +62,12 @@ class SysinvClient(base.DriverBase):
|
||||||
def get_management_interface(self, hostname):
|
def get_management_interface(self, hostname):
|
||||||
"""Get the management interface for a host."""
|
"""Get the management interface for a host."""
|
||||||
interfaces = self.sysinv_client.iinterface.list(hostname)
|
interfaces = self.sysinv_client.iinterface.list(hostname)
|
||||||
|
|
||||||
for interface in interfaces:
|
for interface in interfaces:
|
||||||
if interface.networktype == sysinv_constants.NETWORK_TYPE_MGMT:
|
interface_networks = self.sysinv_client.interface_network.\
|
||||||
return interface
|
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
|
# This can happen if the host is still being installed and has not
|
||||||
# yet created its management interface.
|
# yet created its management interface.
|
||||||
|
|
|
@ -29,9 +29,15 @@ from ddt import file_data
|
||||||
|
|
||||||
|
|
||||||
class FakeInterface(object):
|
class FakeInterface(object):
|
||||||
def __init__(self, ifname, networktype):
|
def __init__(self, ifname, uuid):
|
||||||
self.ifname = ifname
|
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):
|
class FakeNetwork(object):
|
||||||
|
@ -75,13 +81,16 @@ class TestSysinvClient(base.DCManagerTestCase):
|
||||||
|
|
||||||
@mock.patch.object(sysinv_v1.SysinvClient, '__init__')
|
@mock.patch.object(sysinv_v1.SysinvClient, '__init__')
|
||||||
def test_get_management_interface(self, mock_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
|
mock_sysinvclient_init.return_value = None
|
||||||
sysinv_client = sysinv_v1.SysinvClient(consts.DEFAULT_REGION_NAME,
|
sysinv_client = sysinv_v1.SysinvClient(consts.DEFAULT_REGION_NAME,
|
||||||
None)
|
None)
|
||||||
sysinv_client.sysinv_client = mock.MagicMock()
|
sysinv_client.sysinv_client = mock.MagicMock()
|
||||||
sysinv_client.sysinv_client.iinterface.list = mock.MagicMock()
|
sysinv_client.sysinv_client.iinterface.list = mock.MagicMock()
|
||||||
sysinv_client.sysinv_client.iinterface.list.return_value = [interface]
|
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(
|
management_interface = sysinv_client.get_management_interface(
|
||||||
'hostname')
|
'hostname')
|
||||||
self.assertEqual(interface, management_interface)
|
self.assertEqual(interface, management_interface)
|
||||||
|
|
Loading…
Reference in New Issue