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
self._as_root('delete', name, use_root_namespace=True)
def execute(self, cmds, addl_env={}, check_exit_code=True):
- if not self._parent.root_helper:
- raise exceptions.SudoRequired()
ns_params = []
if self._parent.namespace:
+ if not self._parent.root_helper:
+ raise exceptions.SudoRequired()
ns_params = ['ip', 'netns', 'exec', self._parent.namespace]
env_params = []
'ip', 'link', 'list'],
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):
def test_device_exists(self):