diff options
author | Daniil Baturin <daniil@baturin.org> | 2019-06-13 03:10:08 +0200 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2019-06-13 03:10:08 +0200 |
commit | 29df430906c830146e6cc9b7edda9be836a01837 (patch) | |
tree | a19cbab57765967717c4a9df97984f12a696f333 /python | |
parent | 6f42122bc4b8ae8a287f0350eba4d8cd2f5f9649 (diff) | |
download | vyos-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.py | 11 | ||||
-rw-r--r-- | python/vyos/configsession.py | 3 |
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 = [] |