def __init__(self, controller='localhost', port=6633): self.controller = controller self.port = port self.received_packet_count = 0 self.topology_real = StanfordTopo() self.topology_discovered = StanfordTopo() self.pinpointer = Pinpointer() # Content: String! self.queue_GUI_to_OF = Queue.Queue() # Contnet: OF message! self.queue_OF_to_GUI = Queue.Queue() self.running = True # Thread 1: OF thread self.thread1 = threading.Thread(target=self.connectToController) #self.thread1.start() # Thread 2: Connect to run pinpointer self.errors = [] self.test_packets = [] self.queue_pinpoint_to_GUI = Queue.Queue() self.thread2 = None # Thread 3: WebServer DemoHTTPHandler.do_inject_external = self.do_inject DemoHTTPHandler.do_reset_external = self.do_reset DemoHTTPHandler.do_detect_external = self.do_detect self.httpd = TCPServer(("", 8000), DemoHTTPHandler) self.thread3 = threading.Thread(target=self.httpd.serve_forever) self.thread3.start() self.draw_callback(None)
def __init__(self, controller='localhost', port=6633): self.controller = controller self.port = port self.received_packet_count = 0 self.topology_real = StanfordTopo() self.topology_discovered = StanfordTopo() self.pinpointer = Pinpointer() # Content: String! self.queue_GUI_to_OF = Queue.Queue() # Contnet: OF message! self.queue_OF_to_GUI = Queue.Queue() # Set up the thread to do asynchronous I/O # For GTK, # http://faq.pygtk.org/index.py?req=show&file=faq20.006.htp gobject.threads_init() self.running = True self.thread1 = threading.Thread(target=self.connectToController) self.thread1.start() # Thread to run pinpointer self.queue_pinpoint_to_GUI = Queue.Queue() self.thread2 = None # Show GUI self.createWidgets() # Start the periodic call in the GUI to check if the queue contains # anything gobject.timeout_add(100, self.processOF) gobject.timeout_add(100, self.processError)
def inject_errors(self, error_rules): # error_rules is a set of error rule ids p = Pinpointer() for rule in error_rules: tokens = rule.split("_") if rule not in self.switch_name_to_errors["_".join(tokens[0:2])]: self.switch_name_to_errors["_".join(tokens[0:2])].extend( p.get_config_lines(rule))
def remove_errors(self, error_rules): p = Pinpointer() for rule in error_rules: tokens = rule.split("_") lines = p.get_config_lines(rule) for line in lines: try: self.switch_name_to_errors["_".join( tokens[0:2])].remove(line) except: pass