summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2019-06-13 03:10:08 +0200
committerDaniil Baturin <daniil@baturin.org>2019-06-13 03:10:08 +0200
commit29df430906c830146e6cc9b7edda9be836a01837 (patch)
treea19cbab57765967717c4a9df97984f12a696f333 /python
parent6f42122bc4b8ae8a287f0350eba4d8cd2f5f9649 (diff)
downloadvyos-1x-29df430906c830146e6cc9b7edda9be836a01837.tar.gz
vyos-1x-29df430906c830146e6cc9b7edda9be836a01837.zip
T1431: make it possible to obtain session environment and run vyos.config functions under it.
This is required for programs running outside a CLI session, like the future API daemon.
Diffstat (limited to 'python')
-rw-r--r--python/vyos/config.py11
-rw-r--r--python/vyos/configsession.py3
2 files changed, 12 insertions, 2 deletions
diff --git a/python/vyos/config.py b/python/vyos/config.py
index 9a5125eb9..96e9631e0 100644
--- a/python/vyos/config.py
+++ b/python/vyos/config.py
@@ -87,9 +87,13 @@ class Config(object):
the only state it keeps is relative *config path* for convenient access to config
subtrees.
"""
- def __init__(self):
+ def __init__(self, session_env=None):
self._cli_shell_api = "/bin/cli-shell-api"
self._level = ""
+ if session_env:
+ self.__session_env = session_env
+ else:
+ self.__session_env = None
def _make_command(self, op, path):
args = path.split()
@@ -97,7 +101,10 @@ class Config(object):
return cmd
def _run(self, cmd):
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ if self.__session_env:
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=self.__session_env)
+ else:
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
out = p.stdout.read()
p.wait()
if p.returncode != 0:
diff --git a/python/vyos/configsession.py b/python/vyos/configsession.py
index b989d3be5..c84d80a77 100644
--- a/python/vyos/configsession.py
+++ b/python/vyos/configsession.py
@@ -69,6 +69,9 @@ class ConfigSession(object):
if result != 0:
raise ConfigSessionError(output)
+ def get_session_env(self):
+ return self.__session_env
+
def set(self, path, value=None):
if not value:
value = []