mirror of https://git.48k.eu/ogclient
ogClient: add supported events to live mode
Live mode supports poweroff, reboot and boot events. This events serve to send out-of-band requests to ogClient in order to run any of the supported processes. Live mode does not support any event datagram related to user session notification. XXX: Check if client is busy before processing the event.more_events
parent
1e92aa4262
commit
fc2b4b145f
|
@ -60,21 +60,47 @@ class ogClient:
|
||||||
|
|
||||||
def send_event_hint(self, message):
|
def send_event_hint(self, message):
|
||||||
try:
|
try:
|
||||||
event, action, user = message.split(" ")
|
event = message.split(' ', 1)[0]
|
||||||
logging.debug('Sending event: %s, %s, %s', event, action, user)
|
|
||||||
except:
|
except:
|
||||||
logging.warning('Error parsing session datagram')
|
logging.exception('Error parsing event from datagram')
|
||||||
return
|
return
|
||||||
|
|
||||||
if (event != "session" or
|
if (self.mode == 'live' and
|
||||||
action not in ['start', 'stop'] or
|
event not in ['boot', 'poweroff', 'reboot']):
|
||||||
not user):
|
logging.warning('Unsupported event for live mode')
|
||||||
logging.warning('Invalid value in session datagram: %s', message)
|
logging.warning(f'Parsed event: {event}')
|
||||||
|
logging.warning(f'Received message: {message}')
|
||||||
|
return
|
||||||
|
elif (self.mode in ['windows', 'linux'] and
|
||||||
|
event != 'session'):
|
||||||
|
logging.warning('Unsupported event for windows/linux mode')
|
||||||
|
logging.warning(f'Received event: {message}')
|
||||||
|
return
|
||||||
|
|
||||||
|
payload = jsonBody({'event': event})
|
||||||
|
|
||||||
|
if event == 'session':
|
||||||
|
try:
|
||||||
|
_, action, user = message.split(' ')
|
||||||
|
except:
|
||||||
|
logging.exception('Error parsing rest of session event datagram')
|
||||||
|
return
|
||||||
payload = jsonBody({'event': event, 'action': action, 'user': user})
|
payload = jsonBody({'event': event, 'action': action, 'user': user})
|
||||||
response = restResponse(ogResponses.EARLY_HINTS, payload)
|
response = restResponse(ogResponses.EARLY_HINTS, payload)
|
||||||
self.send(response.get())
|
self.send(response.get())
|
||||||
logging.debug('Sending event OK')
|
elif event == 'boot':
|
||||||
|
request = restRequest()
|
||||||
|
try:
|
||||||
|
_, disk, partition = message.split(' ')
|
||||||
|
request.disk = disk
|
||||||
|
request.partition = partition
|
||||||
|
self.ogrest.operations.session(request, self.ogrest)
|
||||||
|
except:
|
||||||
|
logging.exception('Error parsing rest of boot event datagram')
|
||||||
|
elif event == 'poweroff':
|
||||||
|
self.ogrest.operations.poweroff()
|
||||||
|
elif event == 'reboot':
|
||||||
|
self.ogrest.operations.reboot()
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.data = ""
|
self.data = ""
|
||||||
|
|
Loading…
Reference in New Issue