#1065 src: add linux mode

ogClient can run in "linux" mode. In addition to live or virtual.
Serves as a substitute to the legacy ogagent, which has not received any
updates since 2020/07/23.

Linux mode initially supports remote reboot and poweroff. Requires
updated ogServer with the Linux ogclient state.

ogClient can be set up to run in linux mode by specifying it in
ogclient.json:

{
	"opengnsys": {
		"ip": "192.168.56.10",
		"port": 8889,
		"log": "DEBUG",
		"mode": "linux",
	...
}
more_events
Jose M. Guisado 2021-11-08 14:56:01 +01:00
parent e549bd819e
commit 2d3d31bf61
4 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,46 @@
#
# Copyright (C) 2021 Soleta Networks <info@soleta.eu>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
import os
from src.ogRest import ThreadState
class OgLinuxOperations:
def _restartBrowser(self, url):
raise NotImplementedError
def poweroff(self):
os.system('systemctl poweroff')
def reboot(self):
os.system('systemctl reboot')
def shellrun(self, request, ogRest):
raise NotImplementedError
def session(self, request, ogRest):
raise NotImplementedError
def hardware(self, path, ogRest):
raise NotImplementedError
def setup(self, request, ogRest):
raise NotImplementedError
def image_restore(self, request, ogRest):
raise NotImplementedError
def image_create(self, path, request, ogRest):
raise NotImplementedError
def refresh(self, ogRest):
return {"status": "LINUX"}
def probe(self, ogRest):
return {'status': 'LINUX' if ogRest.state != ThreadState.BUSY else 'BSY'}

View File

@ -30,7 +30,7 @@ class ogClient:
self.CONFIG = config
self.mode = self.CONFIG['opengnsys']['mode']
if self.mode not in {'virtual', 'live'}:
if self.mode not in {'virtual', 'live', 'linux'}:
raise ValueError('Mode not supported.')
if self.CONFIG['samba']['activate']:

View File

@ -264,6 +264,9 @@ class ogRest():
self.operations = OgVirtualOperations()
threading.Thread(target=self.operations.check_vm_state_loop,
args=(self,)).start()
elif self.mode == 'linux':
from src.linux.ogOperations import OgLinuxOperations
self.operations = OgLinuxOperations()
else:
raise ValueError('Mode not supported.')