topogen: implement __str__ for TopoGear objects

Print TopoGear name, links and type (currently TopoRouter and Switch
don't have any other useful attributes).
This commit is contained in:
Rafael Zalamena 2017-06-22 17:51:32 -03:00 committed by Donald Sharp
parent 240e334fca
commit 7326ea11c0

View File

@ -224,6 +224,16 @@ class TopoGear(object):
self.links = {}
self.linkn = 0
def __str__(self):
links = ''
for myif, dest in self.links.iteritems():
_, destif = dest
if links != '':
links += ','
links += '"{}"<->"{}"'.format(myif, destif)
return 'TopoGear<name="{}",links=[{}]>'.format(self.name, links)
def run(self, command):
"""
Runs the provided command string in the router and returns a string
@ -307,7 +317,7 @@ class TopoRouter(TopoGear):
]
# Router Daemon enumeration definition.
RD_ZEBRA = 1,
RD_ZEBRA = 1
RD_RIP = 2
RD_RIPNG = 3
RD_OSPF = 4
@ -346,6 +356,11 @@ class TopoRouter(TopoGear):
params['privateDirs'] = self.PRIVATE_DIRS
self.tgen.topo.addNode(self.name, cls=self.cls, **params)
def __str__(self):
gear = super(TopoRouter, self).__str__()
gear += ' TopoRouter<>'
return gear
def load_config(self, daemon, source=None):
"""
Loads daemon configuration from the specified source
@ -442,3 +457,8 @@ class TopoSwitch(TopoGear):
self.name = name
self.cls = cls
self.tgen.topo.addSwitch(name, cls=self.cls)
def __str__(self):
gear = super(TopoSwitch, self).__str__()
gear += ' TopoSwitch<>'
return gear