diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2021-11-08 14:56:01 +0100 |
---|---|---|
committer | Jose M. Guisado <jguisado@soleta.eu> | 2021-11-15 13:37:40 +0100 |
commit | 2d3d31bf61a8a0a1499ff2fe002019bdfc1241ec (patch) | |
tree | 39aaf4f33d4f80c2c54ddf6e1d7f6808dc680a41 | |
parent | e549bd819ead5e66b3b0f86592b41399c62460eb (diff) |
#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",
...
}
-rw-r--r-- | src/linux/__init__.py | 1 | ||||
-rw-r--r-- | src/linux/ogOperations.py | 46 | ||||
-rw-r--r-- | src/ogClient.py | 2 | ||||
-rw-r--r-- | src/ogRest.py | 3 |
4 files changed, 51 insertions, 1 deletions
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 <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'} 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.') |