diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-11-23 20:54:46 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-11-23 20:54:46 +0100 |
commit | 24b23d41146eddd8fb0609ad4ae85d27e7c6ec6a (patch) | |
tree | e703aab15145f877f23c6dde064f86de5585e96f /python/vyos/migrator.py | |
parent | d3b689ecb951c49dddf0402f36f51a2e0d8216b3 (diff) | |
parent | 9ab56f29f07a3c94a92bb7e1ffa54fcb4762a8fb (diff) | |
download | vyos-1x-24b23d41146eddd8fb0609ad4ae85d27e7c6ec6a.tar.gz vyos-1x-24b23d41146eddd8fb0609ad4ae85d27e7c6ec6a.zip |
Merge branch 'current' into equuleus
* current:
wireless: T1627: support station mode
wireless: T1627: support DHCP(v6) addresses
wireless: T1627: add support for RADIUS source-address
wireless: T1627: RADIUS servers must have a key specified
wireless: T1627: change RADIUS CLI syntax
l2tp: harmonize RADIUS wording
wireless: T1627: re-order WPA key in hostapd config
wireless: T1627: change priority from 318 to 400
wireless: T1627: fix generated ht_capab and vht_capab
wireless: T1627: fix regex for 'ht channel-set-width'
wireless: T1627: config migrator does not support camel casing
wireless: T1627: initial rewrite of show-wireless.pl in Python
wireless: T1627: add op-mode commands
wireless: T1627: initial rewrite in XML/Python style
pppoe-server: T1821: Set radius module priority
T1818: Print name of migration script on failure
T1814: Add log of migration scripts run during config migration
vyos-hostsd: T1812: run increment first
[vyos-hostsd] T1812: Reload pdns on dhcp client update
migration-scripts: l2tp: T1811: add missing check on server existence
Diffstat (limited to 'python/vyos/migrator.py')
-rw-r--r-- | python/vyos/migrator.py | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/python/vyos/migrator.py b/python/vyos/migrator.py index 59d68f0f7..86e1af183 100644 --- a/python/vyos/migrator.py +++ b/python/vyos/migrator.py @@ -30,6 +30,7 @@ class Migrator(object): self._force = force self._set_vintage = set_vintage self._config_file_vintage = None + self._log_file = None self._changed = False def read_config_file_versions(self): @@ -71,11 +72,30 @@ class Migrator(object): else: return True + def open_log_file(self): + """ + Open log file for migration, catching any error. + Note that, on boot, migration takes place before the canonical log + directory is created, hence write to the config file directory. + """ + self._log_file = os.path.join(vyos.defaults.directories['config'], + 'vyos-migrate.log') + try: + log = open('{0}'.format(self._log_file), 'w') + log.write("List of executed migration scripts:\n") + except Exception as e: + print("Logging error: {0}".format(e)) + return None + + return log + def run_migration_scripts(self, config_file_versions, system_versions): """ Run migration scripts iteratively, until config file version equals system component version. """ + log = self.open_log_file() + cfg_versions = config_file_versions sys_versions = system_versions @@ -101,18 +121,28 @@ class Migrator(object): '{}-to-{}'.format(cfg_ver, next_ver)) try: - subprocess.check_output([migrate_script, + subprocess.check_call([migrate_script, self._config_file]) except FileNotFoundError: pass - except subprocess.CalledProcessError as err: - print("Called process error: {}.".format(err)) + except Exception as err: + print("\nMigration script error: {0}: {1}." + "".format(migrate_script, err)) sys.exit(1) + if log: + try: + log.write('{0}\n'.format(migrate_script)) + except Exception as e: + print("Error writing log: {0}".format(e)) + cfg_ver = next_ver rev_versions[key] = cfg_ver + if log: + log.close() + return rev_versions def write_config_file_versions(self, cfg_versions): |