diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/config_mgmt.py | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/python/vyos/config_mgmt.py b/python/vyos/config_mgmt.py index 996475eb8..9fad000e8 100644 --- a/python/vyos/config_mgmt.py +++ b/python/vyos/config_mgmt.py @@ -31,6 +31,7 @@ from vyos.configtree import ConfigTree, ConfigTreeError, show_diff  from vyos.defaults import directories  from vyos.version import get_full_version_data  from vyos.utils.io import ask_yes_no +from vyos.utils.boot import boot_configuration_complete  from vyos.utils.process import is_systemd_service_active  from vyos.utils.process import rc_cmd @@ -474,22 +475,26 @@ Proceed ?'''          conf_file.chmod(0o644)      def _archive_active_config(self) -> bool: +        use_tmp = (boot_configuration_complete() or not +                   os.path.isfile(archive_config_file))          mask = os.umask(0o113) -        ext = os.getpid() -        tmp_save = f'/tmp/config.boot.{ext}' -        save_config(tmp_save) +        if use_tmp: +            ext = os.getpid() +            cmp_saved = f'/tmp/config.boot.{ext}' +            save_config(cmp_saved) +        else: +            cmp_saved = config_file          try: -            if cmp(tmp_save, archive_config_file, shallow=False): -                # this will be the case on boot, as well as certain -                # re-initialiation instances after delete/set -                os.unlink(tmp_save) +            if cmp(cmp_saved, archive_config_file, shallow=False): +                if use_tmp: os.unlink(cmp_saved) +                os.umask(mask)                  return False          except FileNotFoundError:              pass -        rc, out = rc_cmd(f'sudo mv {tmp_save} {archive_config_file}') +        rc, out = rc_cmd(f'sudo mv {cmp_saved} {archive_config_file}')          os.umask(mask)          if rc != 0: | 
