예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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))
예제 #4
0
 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