[Container] Fix deletion of veths
In '_teardown_server' method driver was searching for all matches of 'veth' prefix and looping them for deletion. But using Xenial host it finds each such veth name twice and tries to delete the same veth twice too getting following error: ovs-vsctl: no row "veth7ac5738" in table Interface So, fix it by translating 'list' of veths to 'set' that will have only unique names. Change-Id: I819a885547f9fc595b15f98e4c94de21e33914ac Closes-Bug: #1630512
This commit is contained in:
parent
92d054658b
commit
8401c150f3
manila
@ -248,7 +248,7 @@ class ContainerShareDriver(driver.ShareDriver, driver.ExecuteMixin):
|
||||
self.container.stop_container(server_id)
|
||||
interfaces = self._execute("ovs-vsctl", "list", "interface",
|
||||
run_as_root=True)[0]
|
||||
veths = re.findall("veth[0-9a-zA-Z]{7}", interfaces)
|
||||
veths = set(re.findall("veth[0-9a-zA-Z]{7}", interfaces))
|
||||
manila_re = ("manila_[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_"
|
||||
"[0-9a-f]{12}")
|
||||
for veth in veths:
|
||||
|
@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
"""Unit tests for the Container driver module."""
|
||||
|
||||
import ddt
|
||||
import functools
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
@ -33,6 +34,7 @@ CONF = cfg.CONF
|
||||
CONF.import_opt('lvm_share_export_ip', 'manila.share.drivers.lvm')
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class ContainerShareDriverTestCase(test.TestCase):
|
||||
"""Tests ContainerShareDriver"""
|
||||
|
||||
@ -212,11 +214,12 @@ class ContainerShareDriverTestCase(test.TestCase):
|
||||
self._driver._connect_to_network("fake-server", network_info,
|
||||
"fake-veth")
|
||||
|
||||
def test__teardown_server(self):
|
||||
@ddt.data(['veth0000000'], ['veth0000000' * 2])
|
||||
def test__teardown_server(self, list_of_veths):
|
||||
def fake_ovs_execute(*args, **kwargs):
|
||||
kwargs['arguments'].append(args)
|
||||
if len(args) == 3:
|
||||
return ['veth0000000']
|
||||
return list_of_veths
|
||||
elif len(args) == 4:
|
||||
return ('fake:manila_b5afb5c1_6011_43c4_8a37_29820e6951a7', '')
|
||||
else:
|
||||
@ -236,11 +239,12 @@ class ContainerShareDriverTestCase(test.TestCase):
|
||||
|
||||
self.assertEqual(expected_arguments.sort(), actual_arguments.sort())
|
||||
|
||||
def test__teardown_server_check_continuation(self):
|
||||
@ddt.data(['veth0000000'], ['veth0000000' * 2])
|
||||
def test__teardown_server_check_continuation(self, list_of_veths):
|
||||
def fake_ovs_execute(*args, **kwargs):
|
||||
kwargs['arguments'].append(args)
|
||||
if len(args) == 3:
|
||||
return ['veth0000000']
|
||||
return list_of_veths
|
||||
elif len(args) == 4:
|
||||
return ('fake:', '')
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user