diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-07-04 13:33:29 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-04 13:33:29 +0300 |
commit | 1e768a5393e523867730e6b1f660e9a15f0d5fa0 (patch) | |
tree | e1645943d06b5ac01015f36b8ff7c5ba866ca596 /python | |
parent | 036f08f14a029b64366eff61e30a2de49e591759 (diff) | |
parent | 67f8a713c862d200a4c69b18fed81cadeee8c4bf (diff) | |
download | vyos-1x-1e768a5393e523867730e6b1f660e9a15f0d5fa0.tar.gz vyos-1x-1e768a5393e523867730e6b1f660e9a15f0d5fa0.zip |
Merge pull request #4591 from jestabro/async-config
T7588: Call libvyosconfig functions from main thread under http-api
Diffstat (limited to 'python')
-rw-r--r-- | python/vyos/config_mgmt.py | 13 | ||||
-rw-r--r-- | python/vyos/configsession.py | 2 | ||||
-rw-r--r-- | python/vyos/utils/backend.py | 6 |
3 files changed, 18 insertions, 3 deletions
diff --git a/python/vyos/config_mgmt.py b/python/vyos/config_mgmt.py index 67d03e76c..51c6f2241 100644 --- a/python/vyos/config_mgmt.py +++ b/python/vyos/config_mgmt.py @@ -25,10 +25,12 @@ from filecmp import cmp from datetime import datetime from textwrap import dedent from pathlib import Path -from tabulate import tabulate from shutil import copy, chown +from subprocess import Popen +from subprocess import DEVNULL from urllib.parse import urlsplit from urllib.parse import urlunsplit +from tabulate import tabulate from vyos.config import Config from vyos.configtree import ConfigTree @@ -231,7 +233,14 @@ Proceed ?""" else: cmd = f'sudo -b /usr/libexec/vyos/commit-confirm-notify.py {minutes}' - os.system(cmd) + Popen( + cmd.split(), + stdout=DEVNULL, + stderr=DEVNULL, + stdin=DEVNULL, + close_fds=True, + preexec_fn=os.setsid, + ) if self.reboot_unconfirmed: msg = f'Initialized commit-confirm; {minutes} minutes to confirm before reboot' diff --git a/python/vyos/configsession.py b/python/vyos/configsession.py index af87d83a0..216069992 100644 --- a/python/vyos/configsession.py +++ b/python/vyos/configsession.py @@ -333,7 +333,7 @@ class ConfigSession(object): if self._vyconf_session is None: config_data = self.__run_command(SHOW_CONFIG + path) else: - config_data, _ = self._vyconf_session.show_config() + config_data, _ = self._vyconf_session.show_config(path) if format == 'raw': return config_data diff --git a/python/vyos/utils/backend.py b/python/vyos/utils/backend.py index 1234e9aa4..d302a2efd 100644 --- a/python/vyos/utils/backend.py +++ b/python/vyos/utils/backend.py @@ -22,6 +22,7 @@ from pathlib import Path from vyos.utils.io import ask_yes_no from vyos.utils.process import call +from vyos.utils.process import is_systemd_service_active VYCONF_SENTINEL = '/run/vyconf_backend' @@ -69,6 +70,8 @@ def vyconf_backend() -> bool: def set_vyconf_backend(value: bool, no_prompt: bool = False): vyconfd_service = 'vyconfd.service' + commitd_service = 'vyos-commitd.service' + http_api_service = 'vyos-http-api.service' match value: case True: if vyconf_backend(): @@ -78,6 +81,9 @@ def set_vyconf_backend(value: bool, no_prompt: bool = False): Path(VYCONF_SENTINEL).touch() chattri(VYCONF_SENTINEL, True) call(f'systemctl restart {vyconfd_service}') + call(f'systemctl restart {commitd_service}') + if is_systemd_service_active(http_api_service): + call(f'systemctl restart {http_api_service}') case False: if not vyconf_backend(): return |