summaryrefslogtreecommitdiff
path: root/python/vyos/ifconfig/control.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/vyos/ifconfig/control.py')
-rw-r--r--python/vyos/ifconfig/control.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/python/vyos/ifconfig/control.py b/python/vyos/ifconfig/control.py
index 4c614c94f..39b6945c8 100644
--- a/python/vyos/ifconfig/control.py
+++ b/python/vyos/ifconfig/control.py
@@ -28,15 +28,20 @@ class Control(Register):
if os.path.isfile('/tmp/vyos.ifconfig.debug'):
print('DEBUG/{:<6} {}'.format(self.config['ifname'], msg))
- def _cmd(self, command):
+ def _popen(self, command):
p = Popen(command, stdout=PIPE, stderr=STDOUT, shell=True)
tmp = p.communicate()[0].strip()
self._debug_msg(f"cmd '{command}'")
decoded = tmp.decode()
if decoded:
self._debug_msg(f"returned:\n{decoded}")
- if p.returncode != 0:
- raise RuntimeError(f'{command}\nreturned: {decoded}')
+ return decoded, p.returncode
+
+ def _cmd(self, command):
+ decoded, code = self._popen(command)
+ if code != 0:
+ # error code can be recovered with .errno
+ raise OSError(code, f'{command}\nreturned: {decoded}')
return decoded
def _get_command(self, config, name):