summaryrefslogtreecommitdiff
path: root/python/vyos/migrator.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-11-23 20:54:46 +0100
committerChristian Poessinger <christian@poessinger.com>2019-11-23 20:54:46 +0100
commit24b23d41146eddd8fb0609ad4ae85d27e7c6ec6a (patch)
treee703aab15145f877f23c6dde064f86de5585e96f /python/vyos/migrator.py
parentd3b689ecb951c49dddf0402f36f51a2e0d8216b3 (diff)
parent9ab56f29f07a3c94a92bb7e1ffa54fcb4762a8fb (diff)
downloadvyos-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.py36
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):