summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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)