Merge "Allow usage of legacy 3rd-party interface drivers"
This commit is contained in:
commit
418d09f687
@ -264,8 +264,9 @@ class LinuxInterfaceDriver(object):
|
|||||||
bridge=None, namespace=None, prefix=None, mtu=None, link_up=True):
|
bridge=None, namespace=None, prefix=None, mtu=None, link_up=True):
|
||||||
if not ip_lib.device_exists(device_name,
|
if not ip_lib.device_exists(device_name,
|
||||||
namespace=namespace):
|
namespace=namespace):
|
||||||
self.plug_new(network_id, port_id, device_name, mac_address,
|
self._safe_plug_new(
|
||||||
bridge, namespace, prefix, mtu, link_up)
|
network_id, port_id, device_name, mac_address, bridge,
|
||||||
|
namespace, prefix, mtu, link_up)
|
||||||
else:
|
else:
|
||||||
LOG.info("Device %s already exists", device_name)
|
LOG.info("Device %s already exists", device_name)
|
||||||
if mtu:
|
if mtu:
|
||||||
@ -274,6 +275,22 @@ class LinuxInterfaceDriver(object):
|
|||||||
else:
|
else:
|
||||||
LOG.warning("No MTU configured for port %s", port_id)
|
LOG.warning("No MTU configured for port %s", port_id)
|
||||||
|
|
||||||
|
def _safe_plug_new(self, network_id, port_id, device_name, mac_address,
|
||||||
|
bridge=None, namespace=None, prefix=None, mtu=None, link_up=True):
|
||||||
|
try:
|
||||||
|
self.plug_new(
|
||||||
|
network_id, port_id, device_name, mac_address, bridge,
|
||||||
|
namespace, prefix, mtu, link_up)
|
||||||
|
except TypeError:
|
||||||
|
LOG.warning("Interface driver's plug_new() method should now "
|
||||||
|
"accept additional optional parameter 'link_up'. "
|
||||||
|
"Usage of plug_new() method which takes from 5 to 9 "
|
||||||
|
"positional arguments is now deprecated and will not "
|
||||||
|
"be possible in W release.")
|
||||||
|
self.plug_new(
|
||||||
|
network_id, port_id, device_name, mac_address, bridge,
|
||||||
|
namespace, prefix, mtu)
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
|
def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
|
||||||
"""Unplug the interface."""
|
"""Unplug the interface."""
|
||||||
|
@ -58,6 +58,17 @@ class FakePort(object):
|
|||||||
network_id = network.id
|
network_id = network.id
|
||||||
|
|
||||||
|
|
||||||
|
class FakeLegacyInterfaceDriver(interface.LinuxInterfaceDriver):
|
||||||
|
|
||||||
|
def plug_new(self, network_id, port_id, device_name, mac_address,
|
||||||
|
bridge=None, namespace=None, prefix=None, mtu=None):
|
||||||
|
"""This is legacy method which don't accepts link_up argument."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TestBase(base.BaseTestCase):
|
class TestBase(base.BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestBase, self).setUp()
|
super(TestBase, self).setUp()
|
||||||
@ -661,3 +672,20 @@ class TestBridgeInterfaceDriver(TestBase):
|
|||||||
|
|
||||||
self.ip_dev.assert_has_calls([mock.call('tap0', namespace=None),
|
self.ip_dev.assert_has_calls([mock.call('tap0', namespace=None),
|
||||||
mock.call().link.delete()])
|
mock.call().link.delete()])
|
||||||
|
|
||||||
|
|
||||||
|
class TestLegacyDriver(TestBase):
|
||||||
|
|
||||||
|
def test_plug(self):
|
||||||
|
self.device_exists.return_value = False
|
||||||
|
with mock.patch('neutron.agent.linux.interface.LOG.warning') as log:
|
||||||
|
driver = FakeLegacyInterfaceDriver(self.conf)
|
||||||
|
try:
|
||||||
|
driver.plug(
|
||||||
|
'01234567-1234-1234-99', 'port-1234', 'tap0',
|
||||||
|
'aa:bb:cc:dd:ee:ff')
|
||||||
|
except TypeError:
|
||||||
|
self.fail("LinuxInterfaceDriver class can not call properly "
|
||||||
|
"plug_new method from the legacy drivers that "
|
||||||
|
"do not accept 'link_up' parameter.")
|
||||||
|
log.assert_called_once()
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
Abstract method ``plug_new`` from the
|
||||||
|
neutron.agent.linux.interface.LinuxInterfaceDriver class now accepts
|
||||||
|
an optional parameter ``link_up``.
|
||||||
|
Usage of this method, which takes from 5 to 9 positional arguments, without
|
||||||
|
``link_up`` is now deprecated and will not be possible starting in the W
|
||||||
|
release. Third-party drivers which inherit from this base class should update
|
||||||
|
the implementation of their ``plug_new`` method.
|
Loading…
Reference in New Issue
Block a user