Skip to content

Commit 57c952b

Browse files
authored
Changes for working (not enabled) session server. (#846)
1 parent 5a02f67 commit 57c952b

8 files changed

Lines changed: 433 additions & 53 deletions

File tree

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ output-format=parseable
44
disable=F0401,R0201,R0902,W0703,I0011,W0403,E1102,R0903,E0611,W0511,W0613,E1601,C0302
55
max-line-length=100
66
ignored-classes=
7-
OrchestrationConfig, DevicesState, PortBehavior
7+
OrchestrationConfig, DevicesState, PortBehavior, SessionResult

daq/proto/session_server_pb2.py

Lines changed: 171 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

daq/runner.py

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,19 @@ def _init_device_result_handler(self):
225225
server_port=server_port, rpc_timeout_sec=timeout)
226226
else:
227227
# TODO: Make this all configured form run_trigger not device_reporting
228-
handler = SessionServer(server_port=server_port)
229-
handler.start()
228+
handler = SessionServer(on_session=self._on_session,
229+
server_port=server_port)
230230
return handler
231231
return None
232232

233+
def _on_session(self, request):
234+
with self._event_lock:
235+
LOGGER.info('New session started for %s %s/%s',
236+
request.device_mac, request.device_vlan, request.assigned_vlan)
237+
device = self._devices.create_if_absent(request.device_mac)
238+
device.dhcp_mode = DhcpMode.EXTERNAL
239+
self._remote_trigger(device, request.device_vlan, request.assigned_vlan)
240+
233241
def _send_heartbeat(self):
234242
message = {
235243
'name': 'status',
@@ -270,6 +278,9 @@ def initialize(self):
270278
LOGGER.info('Waiting for system to settle...')
271279
time.sleep(3)
272280

281+
if self._device_result_handler:
282+
self._device_result_handler.start()
283+
273284
LOGGER.debug('Done with initialization')
274285

275286
def cleanup(self):
@@ -394,10 +405,7 @@ def _handle_port_learn(self, dpid, port, target_mac):
394405

395406
def _handle_device_learn(self, target_mac, vid):
396407
LOGGER.info('Learned %s on vid %s', target_mac, vid)
397-
if not self._devices.get(target_mac):
398-
device = self._devices.new_device(target_mac, vlan=vid)
399-
else:
400-
device = self._devices.get(target_mac)
408+
device = self._devices.create_if_absent(target_mac, vlan=vid)
401409
device.dhcp_mode = DhcpMode.EXTERNAL
402410

403411
# For keeping track of remote port events
@@ -420,17 +428,20 @@ def _handle_remote_port_state(self, device, port_event):
420428
device.port.active = False
421429
return
422430

423-
device.port.flapping_start = 0
424-
device.port.active = True
431+
self._remote_trigger(device, port_event.device_vlan, port_event.assigned_vlan)
432+
433+
def _remote_trigger(self, device, device_vlan, assigned_vlan):
434+
device.port.flapping_start = 0
435+
device.port.active = True
425436

426-
device.vlan = port_event.device_vlan
427-
device.assigned = port_event.assigned_vlan
437+
device.vlan = device_vlan
438+
device.assigned = assigned_vlan
428439

429-
LOGGER.info('Processing remote state %s %s/%s', device,
430-
device.vlan, device.assigned)
431-
self._target_set_trigger(device, remote_trigger=True)
432-
if device.gateway:
433-
self._direct_device_traffic(device, device.gateway.port_set)
440+
LOGGER.info('Processing remote state %s %s/%s', device,
441+
device.vlan, device.assigned)
442+
self._target_set_trigger(device, remote_trigger=True)
443+
if device.gateway:
444+
self._direct_device_traffic(device, device.gateway.port_set)
434445

435446
def _queue_callback(self, callback):
436447
with self._event_lock:
@@ -507,7 +518,7 @@ def _terminate(self):
507518
for device in self._devices.get_triggered_devices():
508519
self.target_set_error(device, DaqException('terminated'))
509520
if self._device_result_handler:
510-
self._device_result_handler.terminate()
521+
self._device_result_handler.stop()
511522

512523
def _module_heartbeat(self):
513524
# Should probably be converted to a separate thread to timeout any blocking fn calls

0 commit comments

Comments
 (0)