summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/HTTPParser.py35
-rw-r--r--src/linux/ogOperations.py4
-rw-r--r--src/ogRest.py14
3 files changed, 53 insertions, 0 deletions
diff --git a/src/HTTPParser.py b/src/HTTPParser.py
index 7ee8972..819cd74 100644
--- a/src/HTTPParser.py
+++ b/src/HTTPParser.py
@@ -18,6 +18,11 @@ class HTTPParser:
self.cache = None
self.cache_size = None
self.partition_setup = None
+ self.name = None
+ self.repo = None
+ self.type = None
+ self.profile = None
+ self.id = None
def parser(self,data):
self.requestLine, self.headersAlone = data.split('\n', 1)
@@ -64,6 +69,21 @@ class HTTPParser:
if "partition_setup" in cmd:
self.partition_setup = jsoncmd["partition_setup"]
+ if "name" in cmd:
+ self.name = jsoncmd["name"]
+
+ if "repository" in cmd:
+ self.repo = jsoncmd["repository"]
+
+ if "type" in cmd:
+ self.type = jsoncmd["type"]
+
+ if "profile" in cmd:
+ self.profile = jsoncmd["profile"]
+
+ if "id" in cmd:
+ self.id = jsoncmd["id"]
+
def getHeaderLine(self):
return self.headersAlone
@@ -105,3 +125,18 @@ class HTTPParser:
def getPartitionSetup(self):
return self.partition_setup
+
+ def getName(self):
+ return self.name
+
+ def getRepo(self):
+ return self.repo
+
+ def getType(self):
+ return self.type
+
+ def getProfile(self):
+ return self.profile
+
+ def getId(self):
+ return self.id
diff --git a/src/linux/ogOperations.py b/src/linux/ogOperations.py
index bbc3b1a..bbdfa3d 100644
--- a/src/linux/ogOperations.py
+++ b/src/linux/ogOperations.py
@@ -40,3 +40,7 @@ def procsetup(disk, cache, cachesize, partlist):
for part in partlist:
cfg = 'dis=' + disk + '*che=' + cache + '*tch=' + cachesize + '!par=' + part["partition"] + '*cpt='+part["code"] + '*sfi=' + part['filesystem'] + '*tam=' + part['size'] + '*ope=' + part['format'] + '%'
subprocess.check_output([OG_PATH + 'interfaceAdm/Configurar', disk, cfg], shell=True)
+
+def procirestore(disk, partition, name, repo, ctype, profile, cid):
+ result = subprocess.check_output([OG_PATH + 'interfaceAdm/RestaurarImagen', disk, partition, name, repo, ctype], shell=True)
+ return result.decode('utf-8')
diff --git a/src/ogRest.py b/src/ogRest.py
index 43e3920..7efd7ea 100644
--- a/src/ogRest.py
+++ b/src/ogRest.py
@@ -54,6 +54,11 @@ class ogThread():
def procsetup(msgqueue, disk, cache, cachesize, partlist):
ogOperations.procsetup(disk, cache, cachesize, partlist)
+ # Process image restore
+ def procirestore(msgqueue, disk, partition, name, repo, ctype, profile, cid):
+ msgqueue.queue.clear()
+ msgqueue.put(ogOperations.procirestore(disk, partition, name, repo, ctype, profile, cid))
+
class ogResponses(Enum):
BAD_REQUEST=0
IN_PROGRESS=1
@@ -109,6 +114,11 @@ class ogRest():
self.process_software(client, httpparser.getDisk(), httpparser.getPartition())
elif ("setup" in URI):
self.process_setup(client, httpparser.getDisk(), httpparser.getCache(), httpparser.getCacheSize(), httpparser.getPartitionSetup())
+ elif ("image/restore" in URI):
+ self.process_irestore(client, httpparser.getDisk(),
+ httpparser.getPartition(), httpparser.getName(),
+ httpparser.getRepo(), httpparser.getType(),
+ httpparser.getProfile(), httpparser.getId())
else:
client.send(self.getResponse(ogResponses.BAD_REQUEST))
else:
@@ -172,3 +182,7 @@ class ogRest():
def process_setup(self, client, disk, cache, cachesize, partlist):
threading.Thread(target=ogThread.procsetup, args=(self.msgqueue, disk, cache, cachesize, partlist,)).start()
client.send(self.getResponse(ogResponses.OK))
+
+ def process_irestore(self, client, disk, partition, name, repo, ctype, profile, cid):
+ threading.Thread(target=ogThread.procirestore, args=(self.msgqueue, disk, partition, name, repo, ctype, profile, cid,)).start()
+ client.send(self.getResponse(ogResponses.OK))