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):
|
||||
if not ip_lib.device_exists(device_name,
|
||||
namespace=namespace):
|
||||
self.plug_new(network_id, port_id, device_name, mac_address,
|
||||
bridge, namespace, prefix, mtu, link_up)
|
||||
self._safe_plug_new(
|
||||
network_id, port_id, device_name, mac_address, bridge,
|
||||
namespace, prefix, mtu, link_up)
|
||||
else:
|
||||
LOG.info("Device %s already exists", device_name)
|
||||
if mtu:
|
||||
@ -274,6 +275,22 @@ class LinuxInterfaceDriver(object):
|
||||
else:
|
||||
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
|
||||
def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
|
||||
"""Unplug the interface."""
|
||||
|
@ -58,6 +58,17 @@ class FakePort(object):
|
||||
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):
|
||||
def setUp(self):
|
||||
super(TestBase, self).setUp()
|
||||
@ -661,3 +672,20 @@ class TestBridgeInterfaceDriver(TestBase):
|
||||
|
||||
self.ip_dev.assert_has_calls([mock.call('tap0', namespace=None),
|
||||
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