Skip to content
Snippets Groups Projects
Commit 864e0f16 authored by Erik Reid's avatar Erik Reid
Browse files

always return a skeleton structure for any interface name

parent ac824d4a
No related branches found
Tags 0.19
No related merge requests found
...@@ -209,6 +209,8 @@ def list_interfaces(netconf_config): ...@@ -209,6 +209,8 @@ def list_interfaces(netconf_config):
""" """
def _ifc_info(e): def _ifc_info(e):
# warning: this structure should match the default
# returned from routes.classifier.juniper_link_info
name = e.find('name') name = e.find('name')
assert name is not None, "expected interface 'name' child element" assert name is not None, "expected interface 'name' child element"
ifc = { ifc = {
......
...@@ -107,6 +107,16 @@ def get_juniper_link_info(source_equipment, interface): ...@@ -107,6 +107,16 @@ def get_juniper_link_info(source_equipment, interface):
'netconf-interfaces:%s:%s' % (source_equipment, interface)) 'netconf-interfaces:%s:%s' % (source_equipment, interface))
if ifc_info: if ifc_info:
result['interface'] = json.loads(ifc_info.decode('utf-8')) result['interface'] = json.loads(ifc_info.decode('utf-8'))
else:
# warning: this should match the structure returned by
# juniper:list_interfaces:_ifc_info
result['interface'] = {
'name': interface,
'description': '',
'bundle': [],
'ipv4': [],
'ipv6': []
}
def _related_services(): def _related_services():
for related in related_interfaces(source_equipment, interface): for related in related_interfaces(source_equipment, interface):
...@@ -123,12 +133,14 @@ def get_juniper_link_info(source_equipment, interface): ...@@ -123,12 +133,14 @@ def get_juniper_link_info(source_equipment, interface):
related_services.extend(top_level_services) related_services.extend(top_level_services)
result['related-services'] = related_services result['related-services'] = related_services
if not result: # no longer possible, now that at least 'interface' is
return Response( # returned for unknown interfaces
response="no available info for {} {}".format( # if not result:
source_equipment, interface), # return Response(
status=404, # response="no available info for {} {}".format(
mimetype="text/html") # source_equipment, interface),
# status=404,
# mimetype="text/html")
result = json.dumps(result) result = json.dumps(result)
# cache this data for the next call # cache this data for the next call
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment