summaryrefslogtreecommitdiff
path: root/src/migration-scripts/system/16-to-17
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-06-11 14:49:04 +0200
committerChristian Poessinger <christian@poessinger.com>2020-06-11 14:49:04 +0200
commit5c94168a7fa6dc7a82e307240bf7fde8bbece82c (patch)
tree3b78f3a3f5936b8e7051f7ce1c9f12ec38b65db1 /src/migration-scripts/system/16-to-17
parentf812c5d1ce01efa8323bfb797c57f68f474665bb (diff)
parentef6f5d8054bb4e6a35260b86ebd845c8289fbaca (diff)
downloadvyos-1x-5c94168a7fa6dc7a82e307240bf7fde8bbece82c.tar.gz
vyos-1x-5c94168a7fa6dc7a82e307240bf7fde8bbece82c.zip
Merge branch 'serial-console' of github.com:c-po/vyos-1x into current
* 'serial-console' of github.com:c-po/vyos-1x: console: T2569: run VGA console powersave on tty1 console: T2569: replicate console settings to grub.cfg Debian: fix warning about undefined substitution variables console: T2569: only start serial console if device exists console: T2529: migrate from ttyUSB device to new device in /dev/serial/by-bus console: T2570: remove support for Hayes Modems netconsole: T2561: use migrator to delete config nodes console: T2569: initial implementation with XML and Python
Diffstat (limited to 'src/migration-scripts/system/16-to-17')
-rwxr-xr-xsrc/migration-scripts/system/16-to-1775
1 files changed, 75 insertions, 0 deletions
diff --git a/src/migration-scripts/system/16-to-17 b/src/migration-scripts/system/16-to-17
new file mode 100755
index 000000000..981149d1b
--- /dev/null
+++ b/src/migration-scripts/system/16-to-17
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# remove "system console netconsole"
+# remove "system console device <device> modem"
+
+import os
+import sys
+
+from vyos.configtree import ConfigTree
+
+if (len(sys.argv) < 1):
+ print("Must specify file name!")
+ sys.exit(1)
+
+file_name = sys.argv[1]
+
+with open(file_name, 'r') as f:
+ config_file = f.read()
+
+config = ConfigTree(config_file)
+base = ['system', 'console']
+if not config.exists(base):
+ # Nothing to do
+ sys.exit(0)
+else:
+ # remove "system console netconsole" (T2561)
+ if config.exists(base + ['netconsole']):
+ config.delete(base + ['netconsole'])
+
+ for device in config.list_nodes(base + ['device']):
+ dev_path = base + ['device', device]
+ # remove "system console device <device> modem" (T2570)
+ if config.exists(dev_path + ['modem']):
+ config.delete(dev_path + ['modem'])
+
+ # Only continue on USB based serial consoles
+ if not 'ttyUSB' in device:
+ continue
+
+ # A serial console has been configured but it does no longer
+ # exist on the system - cleanup
+ if not os.path.exists(f'/dev/{device}'):
+ config.delete(dev_path)
+ continue
+
+ # migrate from ttyUSB device to new device in /dev/serial/by-bus
+ for root, dirs, files in os.walk('/dev/serial/by-bus'):
+ for usb_device in files:
+ device_file = os.path.realpath(os.path.join(root, usb_device))
+ # migrate to new USB device names (T2529)
+ if os.path.basename(device_file) == device:
+ config.copy(dev_path, base + ['device', usb_device])
+ # Delete old USB node from config
+ config.delete(dev_path)
+
+ try:
+ with open(file_name, 'w') as f:
+ f.write(config.to_string())
+ except OSError as e:
+ print("Failed to save the modified config: {}".format(e))
+ sys.exit(1)