summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2023-06-07 09:19:01 -0500
committerGitHub <noreply@github.com>2023-06-07 09:19:01 -0500
commitbcbce9265b43745a9da76d7cff685c0f01a5098e (patch)
tree301b1cf1b1fe1a55ade664669685785e940fb5f2
parent4d029a3d0b23a8b11ffd18da9cb4e9c543e70d06 (diff)
parentef3a9babe6e07d93773d71d00e8f4849876938ed (diff)
downloadvyos-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.py34
-rwxr-xr-xsrc/op_mode/powerctrl.py5
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: