summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvaro Neira Ayuso <aneira@soleta.eu>2020-01-16 20:14:40 +0100
committerAlvaro Neira Ayuso <alvaroneay@gmail.com>2020-01-19 19:50:44 +0100
commitb5e182f7dd6e99b68de268e52cdc1395d82932ee (patch)
tree2cea53b17d9558dbde34cb34a3d7510bb9198ddf
parentb2fd0b5fffbd60e986eebc03c3a24f06194b4368 (diff)
Add Refresh command
This patch allows us to execute refresh command using ogClient. This command gets all the configuration in our machine and send this information to the server. The format of the message that ogClient will send to the server will be: {"disk": "1", "partition_setup": [{"partition": "1", "code": "LINUX", "filesystem": "NTFS", "size": "498688", "format": "0"}, {"partition": "2", "code": "LINUX", "filesystem": "NTFS", "size": "498688", "format": "0"}, {"partition": "3", "code": "LINUX", "filesystem": "NTFS", "size": "498688", "format": "0"}]}
-rw-r--r--src/linux/ogOperations.py54
-rw-r--r--src/ogRest.py19
2 files changed, 57 insertions, 16 deletions
diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py
index 1788b1a..119db4e 100644
--- a/src/linux/ogOperations.py
+++ b/src/linux/ogOperations.py
@@ -11,6 +11,30 @@ import subprocess
OG_PATH = '/opt/opengnsys/'
+def parseGetConf(out):
+ listConfigs = []
+ disk = -1;
+
+ configs = out.split('\n')
+ configs = filter(None, configs)
+ for item in configs:
+ i = 0
+ json = {}
+ val = item.rstrip().split('\t')
+ while i < len(val):
+ val[i] = val[i].split('=')[1]
+ i += 1
+
+ json['partition'] = val[1]
+ json['code'] = val[4]
+ json['filesystem'] = val[2]
+ json['size'] = val[5]
+ json['format'] = val[6]
+ disk = val[0]
+ listConfigs.append(json)
+
+ return [disk, listConfigs]
+
def poweroff():
if os.path.exists('/scripts/oginit'):
subprocess.call('source ' + OG_SCRIPT_PATH + 'etc/preinit/loadenviron.sh; ' + OG_SCRIPT_PATH + 'scripts/poweroff', shell=True)
@@ -75,8 +99,6 @@ def procsetup(httpparser, ogRest):
listConfigs = []
for part in partlist:
- i = 0
- json = {}
cfg = 'dis=' + disk + '*che=' + cache + '*tch=' + cachesize + '!par=' + part["partition"] + '*cpt='+part["code"] + '*sfi=' + part['filesystem'] + '*tam=' + part['size'] + '*ope=' + part['format'] + '%'
if ogRest.terminated:
break
@@ -87,20 +109,8 @@ def procsetup(httpparser, ogRest):
except:
continue
- result = subprocess.check_output([OG_PATH + 'interfaceAdm/getConfiguration'], shell=True)
- val = result.decode('utf-8').rstrip().split('\t')
- while i < len(val):
- val[i] = val[i].split('=')[1]
- i += 1
-
- json['partition'] = val[1]
- json['code'] = val[4]
- json['filesystem'] = val[2]
- json['size'] = val[5]
- json['format'] = val[6]
- listConfigs.append(json)
-
- return listConfigs
+ result = subprocess.check_output([OG_PATH + 'interfaceAdm/getConfiguration'], shell=True)
+ return parseGetConf(result.decode('utf-8'))[1]
def procirestore(httpparser, ogRest):
disk = httpparser.getDisk()
@@ -141,3 +151,15 @@ def procicreate(path, httpparser, ogRest):
raise ValueError('Error: Incorrect command value')
return output.decode('utf-8')
+
+def procrefresh(ogRest):
+ listConfigs = []
+ disk = -1;
+
+ try:
+ ogRest.proc = subprocess.Popen([OG_PATH + 'interfaceAdm/getConfiguration'], stdout=subprocess.PIPE, shell=True)
+ (output, error) = ogRest.proc.communicate()
+ except:
+ raise ValueError('Error: Incorrect command value')
+
+ return parseGetConf(output.decode('utf-8'))
diff --git a/src/ogRest.py b/src/ogRest.py
index 011f77e..dfd2930 100644
--- a/src/ogRest.py
+++ b/src/ogRest.py
@@ -165,6 +165,20 @@ class ogThread():
jsonResp.addElement('software', lines[0])
client.send(restResponse.getResponse(ogResponses.OK, jsonResp))
+ # Process refresh
+ def procrefresh(client, ogRest):
+ try:
+ out = ogOperations.procrefresh(ogRest)
+ except ValueError as err:
+ client.send(restResponse.getResponse(ogResponses.INTERNAL_ERR))
+ return
+
+ jsonResp = jsonResponse()
+ jsonResp.addElement('disk', out[0])
+ jsonResp.addElement('partition_setup', out[1])
+
+ client.send(restResponse.getResponse(ogResponses.OK, jsonResp))
+
class ogResponses(Enum):
BAD_REQUEST=0
IN_PROGRESS=1
@@ -213,6 +227,8 @@ class ogRest():
self.process_stop(client)
elif ("image/create" in URI):
self.process_icreate(client, httpparser)
+ elif ("refresh" in URI):
+ self.process_refresh(client)
else:
client.send(restResponse.getResponse(ogResponses.BAD_REQUEST))
else:
@@ -271,3 +287,6 @@ class ogRest():
def process_icreate(self, client, httpparser):
path = '/tmp/CSft-' + client.ip + '-' + httpparser.getPartition()
threading.Thread(target=ogThread.procicreate, args=(client, path, httpparser, self,)).start()
+
+ def process_refresh(self, client):
+ threading.Thread(target=ogThread.procrefresh, args=(client, self,)).start()