Introduce noop interface driver

In a Manila deployment using the Generic driver, it is possible
that the administrator has deployed manila-share on a machine that
already has access to the admin network used by Manila by being on
the same VLAN for example.

This means that it's not necessary for it to attempt to plug the ports
and do all the wiring due to the fact that it's already reachable,
therefore this patch introduces a new `interface_driver` which is
does nothing in order to avoid plugging/unplugging ports and avoiding
the requirement of running neutron-(openvswitch|linuxbridge)-agent
on the same node as manila-share.

The tests are pretty trivial because there's not much logic, but we
at least make sure that we don't call any ip_lib functions which means
we're not touching anything in host networking.

Change-Id: I2c3d6e4234bf7185b8da3c8e1701069c3a165ffc
This commit is contained in:
Mohammed Naser 2020-01-29 15:02:26 +01:00
parent e7858ad084
commit 6aec28f11f
2 changed files with 29 additions and 0 deletions

View File

@ -144,6 +144,20 @@ class LinuxInterfaceDriver(object):
"""Unplug the interface."""
class NoopInterfaceDriver(LinuxInterfaceDriver):
"""Noop driver when manila-share is already connected to admin network"""
def init_l3(self, device_name, ip_cidrs, namespace=None, clear_cidrs=[]):
pass
def plug(self, device_name, port_id, mac_address,
bridge=None, namespace=None, prefix=None):
pass
def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
pass
class OVSInterfaceDriver(LinuxInterfaceDriver):
"""Driver for creating an internal interface on an OVS bridge."""

View File

@ -141,6 +141,21 @@ class TestABCDriver(TestBase):
self.assertEqual(set(), result)
class TestNoopInterfaceDriver(TestBase):
def test_init_l3(self):
self.ip.assert_not_called()
self.ip_dev.assert_not_called()
def test_plug(self):
self.ip.assert_not_called()
self.ip_dev.assert_not_called()
def test_unplug(self):
self.ip.assert_not_called()
self.ip_dev.assert_not_called()
class TestOVSInterfaceDriver(TestBase):
def test_get_device_name(self):