summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvaro Neira Ayuso <aneira@soleta.eu>2020-01-13 19:01:34 +0100
committerAlvaro Neira Ayuso <alvaroneay@gmail.com>2020-01-19 19:50:44 +0100
commit683afa64657bf661f719e4e646457353199f38ec (patch)
treed15096be3c950b8f754630b3c6554dd8f7eaed81
parent0f32b9ca88d0870e717549ffe14d9717a1b034e4 (diff)
Improve software command response behavior
During our tests, we found some limitation during the execution of the software command. We don't manage errors during the execution of this command. Moreover, the server needs some information in case that everything is OK. This patch modified the code for controlling the errors during the execution, returning an "Internal Error" http message (500). Moreover, in case that everything is OK, ogClient sends a message with this json body: { "disk" : "0", "partition" : "1", "software" : "xyz" } "xyz" will be the output saved during the execution of InventarioSoftware in a specific path.
-rw-r--r--src/linux/ogOperations.py6
-rw-r--r--src/ogRest.py25
2 files changed, 24 insertions, 7 deletions
diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py
index e3dea5a..0034fd7 100644
--- a/src/linux/ogOperations.py
+++ b/src/linux/ogOperations.py
@@ -40,7 +40,11 @@ def procsoftware(httpparser, path):
disk = httpparser.getDisk()
partition = httpparser.getPartition()
- result = subprocess.check_output([OG_PATH + 'interfaceAdm/InventarioSoftware', disk, partition, path], shell=True)
+ try:
+ result = subprocess.check_output([OG_PATH + 'interfaceAdm/InventarioSoftware', disk, partition, path], shell=True)
+ except:
+ raise ValueError('Error: Incorrect command value')
+
return result.decode('utf-8')
def prochardware(path):
diff --git a/src/ogRest.py b/src/ogRest.py
index 08cdf35..90f58e7 100644
--- a/src/ogRest.py
+++ b/src/ogRest.py
@@ -68,9 +68,23 @@ class ogThread():
client.send(restResponse.getResponse(ogResponses.OK))
# Process software
- def procsoftware(msgqueue, httpparser, path):
- msgqueue.queue.clear()
- msgqueue.put(ogOperations.procsoftware(httpparser, path))
+ def procsoftware(client, httpparser, path):
+ try:
+ ogOperations.procsoftware(httpparser, path)
+ except ValueError as err:
+ client.send(restResponse.getResponse(ogResponses.INTERNAL_ERR))
+ return
+
+ jsonResp = jsonResponse()
+ jsonResp.addElement('disk', httpparser.getDisk())
+ jsonResp.addElement('partition', httpparser.getPartition())
+
+ f = open(path, "r")
+ lines = f.readlines()
+ f.close()
+ jsonResp.addElement('software', lines[0])
+
+ client.send(restResponse.getResponse(ogResponses.OK, jsonResp))
# Process hardware
def prochardware(msgqueue, path):
@@ -172,9 +186,8 @@ class ogRest():
threading.Thread(target=ogThread.procsession, args=(client, httpparser,)).start()
def process_software(self, client, httpparser):
- path = '/tmp/CSft-' + client.ip + '-' + partition
- threading.Thread(target=ogThread.procsoftware, args=(self.msgqueue, httpparser, path,)).start()
- client.send(restResponse.getResponse(ogResponses.OK))
+ path = '/tmp/CSft-' + client.ip + '-' + httpparser.getPartition()
+ threading.Thread(target=ogThread.procsoftware, args=(client, httpparser, path,)).start()
def process_hardware(self, client):
path = '/tmp/Chrd-' + client.ip