summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-01-26 12:20:39 +0100
committerChristian Poessinger <christian@poessinger.com>2020-01-26 12:55:11 +0100
commit66f8be0757f27ab77abde070644a7b4310a799a2 (patch)
treee0e85de5256bc7aee433425e881f9bbdc1dc90ea /src
parent07d002e3be03babf1c3faaee43a90fe513969134 (diff)
downloadvyos-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-xsrc/conf_mode/lldp.py42
-rwxr-xr-xsrc/migration-scripts/lldp/0-to-135
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)