summaryrefslogtreecommitdiff
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
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.
-rw-r--r--interface-definitions/lldp.xml.in128
-rwxr-xr-xsrc/conf_mode/lldp.py42
-rwxr-xr-xsrc/migration-scripts/lldp/0-to-135
3 files changed, 35 insertions, 170 deletions
diff --git a/interface-definitions/lldp.xml.in b/interface-definitions/lldp.xml.in
index f95ffb4df..3a2899b57 100644
--- a/interface-definitions/lldp.xml.in
+++ b/interface-definitions/lldp.xml.in
@@ -35,134 +35,6 @@
<help>LLDP-MED location data [REQUIRED]</help>
</properties>
<children>
- <node name="civic-based">
- <properties>
- <help>Civic-based location data</help>
- </properties>
- <children>
- <tagNode name="ca-type">
- <properties>
- <help>LLDP-MED Civic Address type [REQUIRED]</help>
- <valueHelp>
- <format>0</format>
- <description>Language</description>
- </valueHelp>
- <valueHelp>
- <format>1</format>
- <description>National subdivisions</description>
- </valueHelp>
- <valueHelp>
- <format>2</format>
- <description>County, parish, district</description>
- </valueHelp>
- <valueHelp>
- <format>3</format>
- <description>City, township</description>
- </valueHelp>
- <valueHelp>
- <format>4</format>
- <description>City division, borough, ward</description>
- </valueHelp>
- <valueHelp>
- <format>5</format>
- <description>Neighborhood, block</description>
- </valueHelp>
- <valueHelp>
- <format>6</format>
- <description>Street</description>
- </valueHelp>
- <valueHelp>
- <format>16</format>
- <description>Leading street direction</description>
- </valueHelp>
- <valueHelp>
- <format>17</format>
- <description>Trailing street suffix</description>
- </valueHelp>
- <valueHelp>
- <format>18</format>
- <description>Street suffix</description>
- </valueHelp>
- <valueHelp>
- <format>19</format>
- <description>House number</description>
- </valueHelp>
- <valueHelp>
- <format>20</format>
- <description>House number suffix</description>
- </valueHelp>
- <valueHelp>
- <format>21</format>
- <description>Landmark or vanity address</description>
- </valueHelp>
- <valueHelp>
- <format>22</format>
- <description>Additional location info</description>
- </valueHelp>
- <valueHelp>
- <format>23</format>
- <description>Name</description>
- </valueHelp>
- <valueHelp>
- <format>24</format>
- <description>Postal/ZIP code</description>
- </valueHelp>
- <valueHelp>
- <format>25</format>
- <description>Building</description>
- </valueHelp>
- <valueHelp>
- <format>26</format>
- <description>Unit</description>
- </valueHelp>
- <valueHelp>
- <format>27</format>
- <description>Floor</description>
- </valueHelp>
- <valueHelp>
- <format>28</format>
- <description>Room number</description>
- </valueHelp>
- <valueHelp>
- <format>29</format>
- <description>Place type</description>
- </valueHelp>
- <valueHelp>
- <format>128</format>
- <description>Script</description>
- </valueHelp>
- <constraintErrorMessage>ca-type must between 0-128</constraintErrorMessage>
- <constraint>
- <validator name="numeric" argument="--range 0-128"/>
- </constraint>
- </properties>
- <children>
- <leafNode name="ca-value">
- <properties>
- <help>Civic address value for ca-type [REQUIRED]</help>
- <constraintErrorMessage>ca-value must be less than 256 characters</constraintErrorMessage>
- <constraint>
- <regex>[A-Za-z0-9\ \-\_\.\,]{0,255}$</regex>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- <leafNode name="country-code">
- <properties>
- <help>Country code [REQUIRED]</help>
- <valueHelp>
- <format>&lt;AA&gt;</format>
- <description>Two letter ISO 3166 country code</description>
- </valueHelp>
- <constraintErrorMessage>country-code must be 2 characters</constraintErrorMessage>
- <constraint>
- <regex>[a-zA-Z]{2}$</regex>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </node>
<node name="coordinate-based">
<properties>
<help>Coordinate based location</help>
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)