summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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()