Fix namespace exist() method
Fix namespace exist() method for it shall not be called with a root. Also, don't run it under the namespace so garbage_collect_namespace method can run without rootwrap and not withi a ns. As a result of fixing namespace listing the patch also fixes the regression introduced (bug/1294603) to loadbalancer agent respawning haproxy due to inability to list namespaces properly. Change-Id: I0dc4d01b0c1c04887ec6ad5766ec7c6c96903faa Closes-Bug: #1297594 Closes-Bug: #1294603
This commit is contained in:
parent
15c16ddd8a
commit
2d5faa1d5c
@ -466,7 +466,7 @@ class IpNetnsCommand(IpCommandBase):
|
||||
check_exit_code=check_exit_code)
|
||||
|
||||
def exists(self, name):
|
||||
output = self._run('list', options='o')
|
||||
output = self._parent._execute('o', 'netns', ['list'])
|
||||
|
||||
for line in output.split('\n'):
|
||||
if name == line.strip():
|
||||
|
@ -713,17 +713,25 @@ class TestIpNetnsCommand(TestIPCmdBase):
|
||||
|
||||
def test_namespace_exists(self):
|
||||
retval = '\n'.join(NETNS_SAMPLE)
|
||||
self.parent._run.return_value = retval
|
||||
self.assertTrue(
|
||||
self.netns_cmd.exists('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'))
|
||||
self._assert_call('o', ('list',))
|
||||
# need another instance to avoid mocking
|
||||
netns_cmd = ip_lib.IpNetnsCommand(ip_lib.SubProcessBase())
|
||||
with mock.patch('neutron.agent.linux.utils.execute') as execute:
|
||||
execute.return_value = retval
|
||||
self.assertTrue(
|
||||
netns_cmd.exists('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'))
|
||||
execute.assert_called_once_with(['ip', '-o', 'netns', 'list'],
|
||||
root_helper=None)
|
||||
|
||||
def test_namespace_doest_not_exist(self):
|
||||
retval = '\n'.join(NETNS_SAMPLE)
|
||||
self.parent._run.return_value = retval
|
||||
self.assertFalse(
|
||||
self.netns_cmd.exists('bbbbbbbb-1111-2222-3333-bbbbbbbbbbbb'))
|
||||
self._assert_call('o', ('list',))
|
||||
# need another instance to avoid mocking
|
||||
netns_cmd = ip_lib.IpNetnsCommand(ip_lib.SubProcessBase())
|
||||
with mock.patch('neutron.agent.linux.utils.execute') as execute:
|
||||
execute.return_value = retval
|
||||
self.assertFalse(
|
||||
netns_cmd.exists('bbbbbbbb-1111-2222-3333-bbbbbbbbbbbb'))
|
||||
execute.assert_called_once_with(['ip', '-o', 'netns', 'list'],
|
||||
root_helper=None)
|
||||
|
||||
def test_execute(self):
|
||||
self.parent.namespace = 'ns'
|
||||
|
Loading…
Reference in New Issue
Block a user