From b5e182f7dd6e99b68de268e52cdc1395d82932ee Mon Sep 17 00:00:00 2001 From: Alvaro Neira Ayuso Date: Thu, 16 Jan 2020 20:14:40 +0100 Subject: 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"}]} --- src/linux/ogOperations.py | 54 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) (limited to 'src/linux/ogOperations.py') 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')) -- cgit v1.2.3-18-g5258