summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvaro Neira Ayuso <aneira@soleta.eu>2020-01-02 21:37:01 +0100
committerAlvaro Neira Ayuso <alvaroneay@gmail.com>2020-01-19 19:50:44 +0100
commitefbe8a7960f5a6f92134fc8b0f4c946a7664a5f0 (patch)
tree4c3f8148315c97979a4f91e6bce792fc0eab3caa
parent9fd8f2dbd0bf1edd05eaf94d6a067f5709cfb573 (diff)
Add setup command for configuring the machine
ogAdmClient has a support to configure the machines. This new command allows the new ogClient to execute the same script to configure the machine. The json format sent from the server must be: { "disk" : "1", "cache" : "0", "cache_size" : "70000000",\ "partition_setup": [{"partition": "1", "code": "NTFS", "filesystem": "NTFS",\ "size": "11000000", "format": "0"}]}
-rw-r--r--src/HTTPParser.py24
-rw-r--r--src/linux/ogOperations.py5
-rw-r--r--src/ogRest.py10
3 files changed, 38 insertions, 1 deletions
diff --git a/src/HTTPParser.py b/src/HTTPParser.py
index 1a3d7be..7ee8972 100644
--- a/src/HTTPParser.py
+++ b/src/HTTPParser.py
@@ -15,6 +15,9 @@ class HTTPParser:
self.cmd = None
self.partition = None
self.disk = None
+ self.cache = None
+ self.cache_size = None
+ self.partition_setup = None
def parser(self,data):
self.requestLine, self.headersAlone = data.split('\n', 1)
@@ -49,7 +52,17 @@ class HTTPParser:
self.disk = jsoncmd["disk"]
if "partition" in cmd:
- self.partition = jsoncmd["partition"]
+ if not "partition_setup" in cmd:
+ self.partition = jsoncmd["partition"]
+
+ if "cache" in cmd:
+ self.cache = jsoncmd["cache"]
+
+ if "cache_size" in cmd:
+ self.cache_size = jsoncmd["cache_size"]
+
+ if "partition_setup" in cmd:
+ self.partition_setup = jsoncmd["partition_setup"]
def getHeaderLine(self):
return self.headersAlone
@@ -83,3 +96,12 @@ class HTTPParser:
def getPartition(self):
return self.partition
+
+ def getCache(self):
+ return self.cache
+
+ def getCacheSize(self):
+ return self.cache_size
+
+ def getPartitionSetup(self):
+ return self.partition_setup
diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py
index 85c8c0a..bbc3b1a 100644
--- a/src/linux/ogOperations.py
+++ b/src/linux/ogOperations.py
@@ -35,3 +35,8 @@ def procsoftware(disk, partition, path):
def prochardware(path):
result = subprocess.check_output([OG_PATH + 'interfaceAdm/InventarioHardware', path], shell=True)
return result.decode('utf-8')
+
+def procsetup(disk, cache, cachesize, partlist):
+ for part in partlist:
+ cfg = 'dis=' + disk + '*che=' + cache + '*tch=' + cachesize + '!par=' + part["partition"] + '*cpt='+part["code"] + '*sfi=' + part['filesystem'] + '*tam=' + part['size'] + '*ope=' + part['format'] + '%'
+ subprocess.check_output([OG_PATH + 'interfaceAdm/Configurar', disk, cfg], shell=True)
diff --git a/src/ogRest.py b/src/ogRest.py
index ddedf16..43e3920 100644
--- a/src/ogRest.py
+++ b/src/ogRest.py
@@ -50,6 +50,10 @@ class ogThread():
msgqueue.queue.clear()
msgqueue.put(ogOperations.prochardware(path))
+ # Process setup
+ def procsetup(msgqueue, disk, cache, cachesize, partlist):
+ ogOperations.procsetup(disk, cache, cachesize, partlist)
+
class ogResponses(Enum):
BAD_REQUEST=0
IN_PROGRESS=1
@@ -103,6 +107,8 @@ class ogRest():
self.process_session(client, httpparser.getDisk(), httpparser.getPartition())
elif ("software" in URI):
self.process_software(client, httpparser.getDisk(), httpparser.getPartition())
+ elif ("setup" in URI):
+ self.process_setup(client, httpparser.getDisk(), httpparser.getCache(), httpparser.getCacheSize(), httpparser.getPartitionSetup())
else:
client.send(self.getResponse(ogResponses.BAD_REQUEST))
else:
@@ -162,3 +168,7 @@ class ogRest():
def process_schedule(self, client):
client.send(self.getResponse(ogResponses.OK))
+
+ def process_setup(self, client, disk, cache, cachesize, partlist):
+ threading.Thread(target=ogThread.procsetup, args=(self.msgqueue, disk, cache, cachesize, partlist,)).start()
+ client.send(self.getResponse(ogResponses.OK))