From a39c0bdd9a7bbceefad71edc14a87a1dd90ffb7a Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Sun, 21 Jun 2020 11:28:03 +0200 Subject: console: T2624: fix migration script for configured powersave and no console When the 'powersave' option under 'system console' was defined but no actual serial console device this cause the following error during migration: Loading configuration from 'config.boot' Traceback (most recent call last): File "/opt/vyatta/etc/config-migrate/migrate/system/16-to-17", line 45, in for device in config.list_nodes(base + ['device']): File "/usr/lib/python3/dist-packages/vyos/configtree.py", line 236, in list_nodes raise ConfigTreeError("Path [{}] doesn't exist".format(path_str)) vyos.configtree.ConfigTreeError: Path [b'system console device'] doesn't exist --- src/migration-scripts/system/16-to-17 | 45 ++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/migration-scripts/system/16-to-17 b/src/migration-scripts/system/16-to-17 index 981149d1b..8f762c0e2 100755 --- a/src/migration-scripts/system/16-to-17 +++ b/src/migration-scripts/system/16-to-17 @@ -41,31 +41,32 @@ else: 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 modem" (T2570) - if config.exists(dev_path + ['modem']): - config.delete(dev_path + ['modem']) + if config.exists(base + ['device']): + for device in config.list_nodes(base + ['device']): + dev_path = base + ['device', device] + # remove "system console 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 + # 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 + # 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) + # 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: -- cgit v1.2.3