From 2d3d31bf61a8a0a1499ff2fe002019bdfc1241ec Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Mon, 8 Nov 2021 14:56:01 +0100 Subject: #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", ... } --- src/linux/__init__.py | 1 + src/linux/ogOperations.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/ogClient.py | 2 +- src/ogRest.py | 3 +++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/linux/__init__.py create mode 100644 src/linux/ogOperations.py diff --git a/src/linux/__init__.py b/src/linux/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/linux/__init__.py @@ -0,0 +1 @@ + diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py new file mode 100644 index 0000000..0d70f76 --- /dev/null +++ b/src/linux/ogOperations.py @@ -0,0 +1,46 @@ +# +# Copyright (C) 2021 Soleta Networks +# +# 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'} diff --git a/src/ogClient.py b/src/ogClient.py index 78130fb..d842ee5 100644 --- a/src/ogClient.py +++ b/src/ogClient.py @@ -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']: diff --git a/src/ogRest.py b/src/ogRest.py index 855179e..0d8ff87 100644 --- a/src/ogRest.py +++ b/src/ogRest.py @@ -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.') -- cgit v1.2.3-18-g5258