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