Skip to content

Commit 1134dd7

Browse files
committed
multi-area/level fix plus sid fix
1 parent 6d6bef5 commit 1134dd7

1 file changed

Lines changed: 27 additions & 9 deletions

File tree

pathman_sr.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
20160912, Niklas - ver 5.9c - Fixed Boron version check from false positives
4848
20160919, Niklas - ver 5.9d - getTopo reply format changed
4949
20160924, Niklas - ver 5.9e - Updated metrics selection
50+
20161226, Niklas - ver 5.9f - Updates from branches; multi-area/level and sid fix
5051
"""
5152
__author__ = 'niklas'
5253

@@ -63,7 +64,7 @@
6364

6465

6566
#==============================================================
66-
version = '5.9e'
67+
version = '5.9f'
6768
# Defaults overridden by pathman_ini.py
6869
odl_ip = '127.0.0.1'
6970
odl_port = '8181'
@@ -372,13 +373,13 @@ def get_config(url_list, match):
372373
if sid != -1:
373374
node_configs.update({node:sid})
374375
logging.info("got netconf data for: %s" % node)
376+
if rid != -1:
377+
rid_dict.update({rid:sid})
378+
logging.info("router-id: %s" % rid)
379+
else:
380+
logging.error("No rid for: %s" % node)
375381
else:
376382
logging.info("No sid for: %s" % node)
377-
if rid != -1:
378-
rid_dict.update({rid:sid})
379-
logging.info("router-id: %s" % rid)
380-
else:
381-
logging.error("No rid for: %s" % node)
382383
except:
383384
logging.error("failure to get netconf data for: %s" % node)
384385
return node_configs, rid_dict
@@ -576,6 +577,22 @@ def find_link2(local, remote, address):
576577
return -1
577578
return(-1)
578579

580+
def add_node(node_list, name, id, loopback, portlist, pcc, pcep_type, prefix, sid):
581+
id_list = [node.id for node in node_list]
582+
if id in id_list:
583+
index = id_list.index(id)
584+
node = node_list[index]
585+
if name != node.name:
586+
logging.error('Name does not match for same ID: {} was {}'.format(name, node.name))
587+
if portlist != node.portlist or prefix != node.prefix:
588+
node = node._replace(portlist=sorted(list(set(node.portlist+portlist))), prefix=sorted(list(set(node.prefix+prefix))))
589+
node_list[index] = node
590+
logging.info("Updated node: %s" % str(node))
591+
else:
592+
node = Node(name, id, loopback, sorted(portlist), pcc, pcep_type, sorted(prefix), sid)
593+
logging.info("New node: %s" % str(node))
594+
node_list.append(node)
595+
579596
def node_structure(my_topology, debug = 2):
580597
""" learn (print out) the topology structure """
581598

@@ -634,9 +651,10 @@ def node_structure(my_topology, debug = 2):
634651
success, hname = name_check(nodes['l3-unicast-igp-topology:igp-node-attributes']['router-id'][0])
635652
if success:
636653
name = hname
637-
node = Node(name,node_dict['router'],router_id,node_ports,pcc, pcep_type, prefix_array, sid)
638-
logging.info("New node: %s" % str(node))
639-
node_list.append(node)
654+
add_node(node_list, name, node_dict['router'], router_id, node_ports, pcc, pcep_type, prefix_array, sid)
655+
# node = Node(name,node_dict['router'],router_id,node_ports,pcc, pcep_type, prefix_array, sid)
656+
# logging.info("New node: %s" % str(node))
657+
# node_list.append(node)
640658
logging.info(node_list)
641659
return node_list
642660

0 commit comments

Comments
 (0)