From a306b8b9d8cc3248f05dd4b5971a6ddd97ab1cde Mon Sep 17 00:00:00 2001 From: Alvaro Neira Ayuso Date: Mon, 13 Jan 2020 19:31:51 +0100 Subject: Catch execution errors during restore image command This patch allows us to send feedback to the server in case of error during the execution of the command. In case of error, ogClient will send an "Internal Error" http message. --- src/linux/ogOperations.py | 6 +++++- src/ogRest.py | 14 +++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py index 447f188..1aa454f 100644 --- a/src/linux/ogOperations.py +++ b/src/linux/ogOperations.py @@ -74,5 +74,9 @@ def procirestore(httpparser): profile = httpparser.getProfile() cid = httpparser.getId() - result = subprocess.check_output([OG_PATH + 'interfaceAdm/RestaurarImagen', disk, partition, name, repo, ctype], shell=True) + try: + result = subprocess.check_output([OG_PATH + 'interfaceAdm/RestaurarImagen', disk, partition, name, repo, ctype], shell=True) + except: + raise ValueError('Error: Incorrect command value') + return result.decode('utf-8') diff --git a/src/ogRest.py b/src/ogRest.py index 99ecdbc..5119eea 100644 --- a/src/ogRest.py +++ b/src/ogRest.py @@ -106,9 +106,14 @@ class ogThread(): ogOperations.procsetup(httpparser) # Process image restore - def procirestore(msgqueue, httpparser): - msgqueue.queue.clear() - msgqueue.put(ogOperations.procirestore(httpparser)) + def procirestore(httpparser): + try: + ogOperations.procirestore(httpparser) + except ValueError as err: + client.send(restResponse.getResponse(ogResponses.INTERNAL_ERR)) + return + + client.send(restResponse.getResponse(ogResponses.OK)) class ogResponses(Enum): BAD_REQUEST=0 @@ -211,5 +216,4 @@ class ogRest(): client.send(restResponse.getResponse(ogResponses.OK)) def process_irestore(self, client, httpparser): - threading.Thread(target=ogThread.procirestore, args=(self.msgqueue, httpparser,)).start() - client.send(restResponse.getResponse(ogResponses.OK)) + threading.Thread(target=ogThread.procirestore, args=(client, httpparser,)).start() -- cgit v1.2.3-18-g5258