Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion rfproxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,16 @@ def process(self, from_, to, channel, msg):
msg.get_id())
if type_ == DATA_PLANE_MAP:
table.update_dp_port(msg.get_dp_id(), msg.get_dp_port(),
msg.get_vs_id(), msg.get_vs_port())
msg.get_vs_id(), msg.get_vs_port())
if type_ == ELECT_MASTER:
host = msg.get_ct_addr()
port = msg.get_ct_port()
if (CONF.ofp_listen_host == host and
CONF.ofp_tcp_listen_port == port):
CONF.ofp_role = 'master'
for dp in datapaths.dps.values():
ofp_role = parse_role_request('master', dp)
send_role_request(ofp_role, dp)
return True


Expand All @@ -134,14 +143,25 @@ def __init__(self, *args, **kwargs):

ID = 0
self.role = CONF.ofp_role
if not CONF.ofp_listen_host:
CONF.ofp_listen_host = '127.0.0.1'
self.ipc = MongoIPC.MongoIPCMessageService(MONGO_ADDRESS,
MONGO_DB_NAME, str(ID),
hub_thread_wrapper,
hub.sleep)
self.ipc.listen(RFSERVER_RFPROXY_CHANNEL, RFProtocolFactory(),
RFProcessor(), False)
self.ipc.listen(RFMONITOR_RFPROXY_CHANNEL, RFProtocolFactory(),
RFProcessor(), False)
log.info("RFProxy running.")

def register_controller(self):
'''Register controller with RFMonitor'''
msg = ControllerRegister(ct_addr=CONF.ofp_listen_host,
ct_port=CONF.ofp_tcp_listen_port,
ct_role=self.role)
self.ipc.send(RFMONITOR_RFPROXY_CHANNEL, RFMONITOR_ID, msg)

#Event handlers
@set_ev_cls(dpset.EventDP, dpset.DPSET_EV_DISPATCHER)
def handler_datapath(self, ev):
Expand All @@ -151,6 +171,7 @@ def handler_datapath(self, ev):
ofp_role = parse_role_request(self.role, dp)
send_role_request(ofp_role, dp)
if ev.enter:
self.register_controller()
log.info("Datapath is up (dp_id=%s)", dpid_to_str(dpid))
datapaths.register(dp)
for port in ports:
Expand Down