class discovery(Component): def __init__(self, ctxt): Component.__init__(self, ctxt) self._bindings = self.resolve(pybindings_storage) self._user_event_log = self.resolve(pyuser_event_log) self.dps = {} self.lldp_packets = {} self.adjacency_list = {} def configure(self, configuration): arg_len = len(configuration['arguments']) self.lldp_send_period = LLDP_SEND_PERIOD if arg_len == 1: try: val = float(configuration['arguments'][0]) self.lldp_send_period = val lg.debug("Setting LLDP send timer to " + str(val)) except Exception, e: lg.error("unable to convert arg to float " + configuration['arguments'][0]) self.register_event(Link_event.static_get_name()) Link_event.register_event_converter(self.ctxt)
def configure(self, configuration): #self.register_event(Link_event.static_get_name()) Link_event.register_event_converter(self.ctxt)
elif arg_len == 2: try: val = float(configuration['arguments'][0]) self.lldp_send_period = val; lg.debug("Setting LLDP send timer to " + str(val)) val = int(configuration['arguments'][1]) self.vlan_id = val; lg.debug("Setting LLDP VLAN to " + str(val)) except Exception, e: lg.error("unable to convert arg to integer " + configuration['arguments'][0]) self.register_event(Link_event.static_get_name()) Link_event.register_event_converter(self.ctxt) def install(self): self.register_for_datapath_join ( lambda dp,stats : discovery.dp_join(self, dp, stats) ) self.register_for_datapath_leave( lambda dp : discovery.dp_leave(self, dp) ) self.register_for_port_status( lambda dp, reason, port : discovery.port_status_change(self, dp, reason, port) ) # register handler for all LLDP packets if(self.vlan_id != None): match = { DL_DST : array_to_octstr(array.array('B',NDP_MULTICAST)),DL_TYPE: ethernet.LLDP_TYPE, DL_VLAN: self.vlan_id} else: match = { DL_DST: array_to_octstr(array.array('B',NDP_MULTICAST)),DL_TYPE: ethernet.LLDP_TYPE } self.register_for_packet_match(lambda dp,inport,reason,len,bid,packet :