diff --git a/neutron/agent/linux/ip_lib.py b/neutron/agent/linux/ip_lib.py index 62ba2a7bb2..9b7f2c8615 100644 --- a/neutron/agent/linux/ip_lib.py +++ b/neutron/agent/linux/ip_lib.py @@ -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(): diff --git a/neutron/tests/unit/test_linux_ip_lib.py b/neutron/tests/unit/test_linux_ip_lib.py index 74f47ccf67..ea23c85497 100644 --- a/neutron/tests/unit/test_linux_ip_lib.py +++ b/neutron/tests/unit/test_linux_ip_lib.py @@ -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'