Fix IpNetnsCommand to execute without root_wrapper when no netns
IpNetnsCommand accept execution with a network namespace, and that requires root privileges and a root_wrapper. IpNetnsCommand does accept no namespace too, in that case, the root_wrapper doesn't have to be present necessarily, unless the command we're executing requires root privileges itself. This patch fixes the check condition on IpNetnsCommand execute method. Change-Id: I5ab2f3f1daf4a5a080611dbcd3dbd43292f6766a Closes-Bug: #1358196
This commit is contained in:
parent
f99b591157
commit
95b62b9491
@ -524,10 +524,10 @@ class IpNetnsCommand(IpCommandBase):
|
|||||||
self._as_root('delete', name, use_root_namespace=True)
|
self._as_root('delete', name, use_root_namespace=True)
|
||||||
|
|
||||||
def execute(self, cmds, addl_env={}, check_exit_code=True):
|
def execute(self, cmds, addl_env={}, check_exit_code=True):
|
||||||
if not self._parent.root_helper:
|
|
||||||
raise exceptions.SudoRequired()
|
|
||||||
ns_params = []
|
ns_params = []
|
||||||
if self._parent.namespace:
|
if self._parent.namespace:
|
||||||
|
if not self._parent.root_helper:
|
||||||
|
raise exceptions.SudoRequired()
|
||||||
ns_params = ['ip', 'netns', 'exec', self._parent.namespace]
|
ns_params = ['ip', 'netns', 'exec', self._parent.namespace]
|
||||||
|
|
||||||
env_params = []
|
env_params = []
|
||||||
|
@ -826,6 +826,15 @@ class TestIpNetnsCommand(TestIPCmdBase):
|
|||||||
'ip', 'link', 'list'],
|
'ip', 'link', 'list'],
|
||||||
root_helper='sudo', check_exit_code=True)
|
root_helper='sudo', check_exit_code=True)
|
||||||
|
|
||||||
|
def test_execute_nosudo_with_no_namespace(self):
|
||||||
|
with mock.patch('neutron.agent.linux.utils.execute') as execute:
|
||||||
|
self.parent.namespace = None
|
||||||
|
self.parent.root_helper = None
|
||||||
|
self.netns_cmd.execute(['test'])
|
||||||
|
execute.assert_called_once_with(['test'],
|
||||||
|
root_helper=None,
|
||||||
|
check_exit_code=True)
|
||||||
|
|
||||||
|
|
||||||
class TestDeviceExists(base.BaseTestCase):
|
class TestDeviceExists(base.BaseTestCase):
|
||||||
def test_device_exists(self):
|
def test_device_exists(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user