summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2021-11-08 14:56:01 +0100
committerJose M. Guisado <jguisado@soleta.eu>2021-11-15 13:37:40 +0100
commit2d3d31bf61a8a0a1499ff2fe002019bdfc1241ec (patch)
tree39aaf4f33d4f80c2c54ddf6e1d7f6808dc680a41
parente549bd819ead5e66b3b0f86592b41399c62460eb (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__.py1
-rw-r--r--src/linux/ogOperations.py46
-rw-r--r--src/ogClient.py2
-rw-r--r--src/ogRest.py3
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.')