Skip to content

Commit

Permalink
discovery: Make Link a class
Browse files Browse the repository at this point in the history
This used to be a plain namedtuple, but now it extends namedtuple.
  • Loading branch information
MurphyMc committed Jul 24, 2013
1 parent 361aa59 commit bda02f2
Showing 1 changed file with 28 additions and 7 deletions.
35 changes: 28 additions & 7 deletions pox/openflow/discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,31 @@ def port_for_dpid (self, dpid):
return None


class Link (namedtuple("LinkBase",("dpid1","port1","dpid2","port2"))):
@property
def uni (self):
"""
Returns a "unidirectional" version of this link
The unidirectional versions of symmetric keys will be equal
"""
pairs = list(self.end)
pairs.sort()
return Link(pairs[0][0],pairs[0][1],pairs[1][0],pairs[1][1])

@property
def end (self):
return ((self[0],self[1]),(self[2],self[3]))

def __str__ (self):
return "%s.%s -> %s.%s" % (dpid_to_str(self[0]),self[1],
dpid_to_str(self[2]),self[3])

def __repr__ (self):
return "Link(dpid1=%s,port1=%s, dpid2=%s,port2=%s)" % (self.dpid1,
self.port1, self.dpid2, self.port2)


class Discovery (EventMixin):
"""
Component that attempts to discover network toplogy.
Expand All @@ -206,7 +231,7 @@ class Discovery (EventMixin):

_core_name = "openflow_discovery" # we want to be core.openflow_discovery

Link = namedtuple("Link",("dpid1","port1","dpid2","port2"))
Link = Link

def __init__ (self, install_flow = True, explicit_drop = True,
link_timeout = None, eat_early_packets = False):
Expand Down Expand Up @@ -270,9 +295,7 @@ def _expire_links (self):
if timestamp + self._link_timeout < now]
if expired:
for link in expired:
log.info('link timeout: %s.%i -> %s.%i' %
(dpid_to_str(link.dpid1), link.port1,
dpid_to_str(link.dpid2), link.port2))
log.info('link timeout: %s', link)

self._delete_links(expired)

Expand Down Expand Up @@ -395,9 +418,7 @@ def lookInSysDesc ():

if link not in self.adjacency:
self.adjacency[link] = time.time()
log.info('link detected: %s.%i -> %s.%i' %
(dpid_to_str(link.dpid1), link.port1,
dpid_to_str(link.dpid2), link.port2))
log.info('link detected: %s', link)
self.raiseEventNoErrors(LinkEvent, True, link)
else:
# Just update timestamp
Expand Down

0 comments on commit bda02f2

Please sign in to comment.