Add image/create command for creating a new image

This patch allows us to use a new support for creating images using ogClient.
ogClient receives from the server a message which json body must be:

{"disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test",
"repository" : "192.168.2.4" }

ogClient returns to the server the software inventory executed before
create the image. The message for the server is:

{ "disk" : "0", "partition" : "1", "software" : "xyz" }

    "xyz" will be the output saved during the execution of InventarioSoftware in
    a specific path.
more_events
Alvaro Neira Ayuso 2020-01-16 19:59:23 +01:00 committed by Alvaro Neira Ayuso
parent fdd4ba59c7
commit b2fd0b5fff
2 changed files with 43 additions and 0 deletions

View File

@ -118,3 +118,26 @@ def procirestore(httpparser, ogRest):
raise ValueError('Error: Incorrect command value')
return output.decode('utf-8')
def procicreate(path, httpparser, ogRest):
disk = httpparser.getDisk()
partition = httpparser.getPartition()
name = httpparser.getName()
repo = httpparser.getRepo()
try:
ogRest.proc = subprocess.Popen([OG_PATH + 'interfaceAdm/InventarioSoftware', disk, partition, path], stdout=subprocess.PIPE, shell=True)
(output, error) = ogRest.proc.communicate()
except:
raise ValueError('Error: Incorrect command value')
if ogRest.terminated:
return
try:
ogRest.proc = subprocess.Popen([OG_PATH + 'interfaceAdm/CrearImagen', disk, partition, name, repo], stdout=subprocess.PIPE, shell=True)
ogRest.proc.communicate()
except:
raise ValueError('Error: Incorrect command value')
return output.decode('utf-8')

View File

@ -151,6 +151,20 @@ class ogThread():
client.send(restResponse.getResponse(ogResponses.OK))
# Process image create
def procicreate(client, path, httpparser, ogRest):
try:
ogOperations.procicreate(path, httpparser, ogRest)
except ValueError as err:
client.send(restResponse.getResponse(ogResponses.INTERNAL_ERR))
return
f = open(path, "r")
lines = f.readlines()
f.close()
jsonResp.addElement('software', lines[0])
client.send(restResponse.getResponse(ogResponses.OK, jsonResp))
class ogResponses(Enum):
BAD_REQUEST=0
IN_PROGRESS=1
@ -197,6 +211,8 @@ class ogRest():
self.process_irestore(client, httpparser)
elif ("stop" in URI):
self.process_stop(client)
elif ("image/create" in URI):
self.process_icreate(client, httpparser)
else:
client.send(restResponse.getResponse(ogResponses.BAD_REQUEST))
else:
@ -251,3 +267,7 @@ class ogRest():
os.killpg(os.getpgid(self.proc.pid), signal.SIGTERM)
self.terminated = True
sys.exit(0)
def process_icreate(self, client, httpparser):
path = '/tmp/CSft-' + client.ip + '-' + httpparser.getPartition()
threading.Thread(target=ogThread.procicreate, args=(client, path, httpparser, self,)).start()