diff options
author | John Estabrook <jestabro@vyos.io> | 2023-06-07 09:19:01 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-07 09:19:01 -0500 |
commit | bcbce9265b43745a9da76d7cff685c0f01a5098e (patch) | |
tree | 301b1cf1b1fe1a55ade664669685785e940fb5f2 | |
parent | 4d029a3d0b23a8b11ffd18da9cb4e9c543e70d06 (diff) | |
parent | ef3a9babe6e07d93773d71d00e8f4849876938ed (diff) | |
download | vyos-1x-bcbce9265b43745a9da76d7cff685c0f01a5098e.tar.gz vyos-1x-bcbce9265b43745a9da76d7cff685c0f01a5098e.zip |
Merge pull request #2031 from jestabro/unsaved-commits
op-mode: T5262: move 'unsaved_commits' to module scope and correct false positive
-rw-r--r-- | python/vyos/config_mgmt.py | 34 | ||||
-rwxr-xr-x | src/op_mode/powerctrl.py | 5 |
2 files changed, 20 insertions, 19 deletions
diff --git a/python/vyos/config_mgmt.py b/python/vyos/config_mgmt.py index fade3081c..57563a9c1 100644 --- a/python/vyos/config_mgmt.py +++ b/python/vyos/config_mgmt.py @@ -26,6 +26,7 @@ from tabulate import tabulate from vyos.config import Config from vyos.configtree import ConfigTree, ConfigTreeError, show_diff from vyos.defaults import directories +from vyos.version import get_full_version_data from vyos.util import is_systemd_service_active, ask_yes_no, rc_cmd SAVE_CONFIG = '/opt/vyatta/sbin/vyatta-save-config.pl' @@ -56,6 +57,21 @@ formatter = logging.Formatter('%(funcName)s: %(levelname)s:%(message)s') ch.setFormatter(formatter) logger.addHandler(ch) +def save_config(target): + cmd = f'{SAVE_CONFIG} {target}' + rc, out = rc_cmd(cmd) + if rc != 0: + logger.critical(f'save config failed: {out}') + +def unsaved_commits() -> bool: + if get_full_version_data()['boot_via'] == 'livecd': + return False + tmp_save = '/tmp/config.running' + save_config(tmp_save) + ret = not cmp(tmp_save, config_file, shallow=False) + os.unlink(tmp_save) + return ret + class ConfigMgmtError(Exception): pass @@ -98,20 +114,6 @@ class ConfigMgmt: self.active_config = config._running_config self.working_config = config._session_config - @staticmethod - def save_config(target): - cmd = f'{SAVE_CONFIG} {target}' - rc, out = rc_cmd(cmd) - if rc != 0: - logger.critical(f'save config failed: {out}') - - def _unsaved_commits(self) -> bool: - tmp_save = '/tmp/config.boot.check-save' - self.save_config(tmp_save) - ret = not cmp(tmp_save, config_file, shallow=False) - os.unlink(tmp_save) - return ret - # Console script functions # def commit_confirm(self, minutes: int=DEFAULT_TIME_MINUTES, @@ -123,7 +125,7 @@ class ConfigMgmt: msg = 'Another confirm is pending' return msg, 1 - if self._unsaved_commits(): + if unsaved_commits(): W = '\nYou should save previous commits before commit-confirm !\n' else: W = '' @@ -450,7 +452,7 @@ Proceed ?''' ext = os.getpid() tmp_save = f'/tmp/config.boot.{ext}' - self.save_config(tmp_save) + save_config(tmp_save) try: if cmp(tmp_save, archive_config_file, shallow=False): diff --git a/src/op_mode/powerctrl.py b/src/op_mode/powerctrl.py index b517527bb..239f766fd 100755 --- a/src/op_mode/powerctrl.py +++ b/src/op_mode/powerctrl.py @@ -103,10 +103,9 @@ def cancel_shutdown(): print("Reboot or poweroff is not scheduled") def check_unsaved_config(): - from vyos.config_mgmt import ConfigMgmt + from vyos.config_mgmt import unsaved_commits - c = ConfigMgmt() - if c._unsaved_commits(): + if unsaved_commits(): print("Warning: there are unsaved configuration changes!") print("Run 'save' command if you do not want to lose those changes after reboot/shutdown.") else: |