class OVSControllerPatchPanel(ControllerPatchPanel): ''' Uses OVS to route between controllers. ''' of_port = 8765 messenger_port = 9876 def __init__(self, create_io_worker): super(OVSControllerPatchPanel, self).__init__(create_io_worker) # Boot up POX. args = str("""./pox.py openflow.of_01 --address=127.0.0.1 --port=%d""" """ messenger.messenger --tcp_address=127.0.0.1 --tcp_port=%d """ """ sts_of_forwarder.sts_of_forwarder """ % (self.of_port, self.messenger_port)).split() self.pox = subprocess.Popen(args, cwd="./pox/", preexec_fn=lambda: os.setsid()) # Establish connection with POX messenger component. true_socket = connect_socket_with_backoff(address="127.0.0.1", port=self.messenger_port) self.json_worker = JSONIOWorker(create_io_worker(true_socket)) # Send the handshake. self.json_worker.send({"sts_connection": ""}) self._initialize_switch() def _send_command(self, command): b64_pkt = base64_encode(command) self.json_worker.send(b64_pkt) def _create_port_for_controller(self, guest_eth_addr, host_device): raise NotImplementedError("") def clean_up(self): self.json_worker.close() self.pox.kill()
class OVSControllerPatchPanel(ControllerPatchPanel): ''' Uses OVS to route between controllers. ''' of_port = 8765 messenger_port = 9876 def __init__(self, create_io_worker): super(OVSControllerPatchPanel, self).__init__(create_io_worker) # Boot up POX. args = str( """./pox.py openflow.of_01 --address=127.0.0.1 --port=%d""" """ messenger.messenger --tcp_address=127.0.0.1 --tcp_port=%d """ """ sts_of_forwarder.sts_of_forwarder """ % (self.of_port, self.messenger_port)).split() self.pox = subprocess.Popen(args, cwd="./pox/", preexec_fn=lambda: os.setsid()) # Establish connection with POX messenger component. true_socket = connect_socket_with_backoff(address="127.0.0.1", port=self.messenger_port) self.json_worker = JSONIOWorker(create_io_worker(true_socket)) # Send the handshake. self.json_worker.send({"sts_connection": ""}) self._initialize_switch() def _send_command(self, command): b64_pkt = base64_encode(command) self.json_worker.send(b64_pkt) def _create_port_for_controller(self, guest_eth_addr, host_device): raise NotImplementedError("") def clean_up(self): self.json_worker.close() self.pox.kill()
class SyncIODelegate(object): def __init__(self, io_master, socket): self.io_master = io_master self.io_worker = JSONIOWorker(self.io_master.create_worker_for_socket(socket)) def wait_for_message(self): self.io_master.select(None) def send(self, msg): self.io_worker.send(msg) def get_on_message_received(self): return self.io_worker.on_json_received def set_on_message_received(self, f): self.io_worker.on_json_received = lambda io_worker, msg: f(msg) on_message_received = property(get_on_message_received, set_on_message_received)
class SyncIODelegate(object): def __init__(self, io_master, socket): self.io_master = io_master self.io_worker = JSONIOWorker( self.io_master.create_worker_for_socket(socket)) def wait_for_message(self): self.io_master.select(None) def send(self, msg): self.io_worker.send(msg) def get_on_message_received(self): return self.io_worker.on_json_received def set_on_message_received(self, f): self.io_worker.on_json_received = lambda io_worker, msg: f(msg) on_message_received = property(get_on_message_received, set_on_message_received)