diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-01-26 12:20:39 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-01-26 12:55:11 +0100 |
commit | 66f8be0757f27ab77abde070644a7b4310a799a2 (patch) | |
tree | e0e85de5256bc7aee433425e881f9bbdc1dc90ea /src | |
parent | 07d002e3be03babf1c3faaee43a90fe513969134 (diff) | |
download | vyos-1x-66f8be0757f27ab77abde070644a7b4310a799a2.tar.gz vyos-1x-66f8be0757f27ab77abde070644a7b4310a799a2.zip |
lldp: T1896: remove MED civic based location information
Civic based location information was not working for quiet some time and
as an unused feature we should drop it to keep the codebase more simple
and maintainable.
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/lldp.py | 42 | ||||
-rwxr-xr-x | src/migration-scripts/lldp/0-to-1 | 35 |
2 files changed, 35 insertions, 42 deletions
diff --git a/src/conf_mode/lldp.py b/src/conf_mode/lldp.py index 51425aaaf..978297b56 100755 --- a/src/conf_mode/lldp.py +++ b/src/conf_mode/lldp.py @@ -121,23 +121,9 @@ def get_location_intf(config, name): config.set_level(path) config.set_level('{} location'.format(path)) - civic_based = {} elin = '' coordinate_based = {} - if config.exists('civic-based'): - config.set_level('{} location civic-based'.format(path)) - civic_based['country_code'] = config.return_value('country-code') - civic_based['ca_type'] = [] - for ca_types_name in config.list_nodes('ca-type'): - config.set_level('{} location civic-based ca-type {}'.format(path, ca_types_name)) - ca_val = config.return_value('ca-value') - ca_type = { - 'name': ca_types_name, - 'ca_val': ca_val - } - civic_based['ca_type'].append(ca_type) - if config.exists('elin'): elin = config.return_value('elin') @@ -157,7 +143,6 @@ def get_location_intf(config, name): intf = { 'name': name, - 'civic_based': civic_based, 'elin': elin, 'coordinate_based': coordinate_based @@ -202,33 +187,6 @@ def verify(lldp): # check location for location in lldp['location']: - # check civic-based - if len(location['civic_based']) > 0: - if len(location['coordinate_based']) > 0 or location['elin']: - raise ConfigError('Can only configure 1 location type for interface {0}'.format(location['name'])) - - # check country-code - if not location['civic_based']['country_code']: - raise ConfigError('Invalid location for interface {0}:\n' \ - 'must configure the country code'.format(location['name'])) - - if not re.match(r'^[a-zA-Z]{2}$', location['civic_based']['country_code']): - raise ConfigError('Invalid location for interface {0}:\n' \ - 'country-code must be 2 characters'.format(location['name'])) - # check ca-type - if len(location['civic_based']['ca_type']) < 0: - raise ConfigError('Invalid location for interface {0}:\n' \ - 'must define at least 1 ca-type'.format(location['name'])) - - for ca_type in location['civic_based']['ca_type']: - if not int(ca_type['name']) in range(0, 129): - raise ConfigError('Invalid location for interface {0}:\n' \ - 'ca-type must between 0-128'.format(location['name'])) - - if not ca_type['ca_val']: - raise ConfigError('Invalid location for interface {0}:\n' \ - 'must configure the ca-value for ca-type {1}'.format(location["name"],ca_type['name'])) - # check coordinate-based elif len(location['coordinate_based']) > 0: # check longitude and latitude diff --git a/src/migration-scripts/lldp/0-to-1 b/src/migration-scripts/lldp/0-to-1 new file mode 100755 index 000000000..5f66570e7 --- /dev/null +++ b/src/migration-scripts/lldp/0-to-1 @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +# Delete "set service lldp interface <interface> location civic-based" option +# as it was broken most of the time anyways + +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 = ['service', 'lldp', 'interface'] +if not config.exists(base): + # Nothing to do + sys.exit(0) +else: + # Delete nodes with abandoned CLI syntax + for interface in config.list_nodes(base): + if config.exists(base + [interface, 'location', 'civic-based']): + config.delete(base + [interface, 'location', 'civic-based']) + + 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) |