99 lines
3.6 KiB
Python
99 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# @author: Giancarlo Panichi
|
|
#
|
|
# Created on 2020/06/12
|
|
#
|
|
import os
|
|
import sys
|
|
|
|
from issupport import ISSupport
|
|
from engine.dockerengine import DockerEngine
|
|
from engine.swarmengine import SwarmEngine
|
|
from storagehub.storagehubcommanditemdownload import StorageHubCommandItemDownload
|
|
from storagehub.storagehubcommandcreatetempfolder import StorageHubCommandCreateTempFolder
|
|
from storagehub.storagehubcommanditemdelete import StorageHubCommandItemDelete
|
|
|
|
|
|
class DockerImageExecutor:
|
|
|
|
def __init__(self):
|
|
self.resultFile = "result.zip"
|
|
self.globalVariablesFile = "globalvariables.csv"
|
|
self.gcubeToken = None
|
|
self.storageHubUrl = None
|
|
self.softwareImage = sys.argv[1] # Software Image
|
|
self.softwareExecuteCommandName = sys.argv[2] # Command to Run
|
|
self.fileItemId = sys.argv[3] # Input Data File
|
|
self.tempFolderItemId = None # '32c0422f-a777-4452-adea-007347ec4484'
|
|
|
|
def main(self):
|
|
print(self)
|
|
self.retrieveToken()
|
|
issup = ISSupport()
|
|
self.storageHubUrl = issup.discoverStorageHub(self.gcubeToken)
|
|
self.createTempFolder()
|
|
# self.executeOnDocker()
|
|
self.executeOnSwarm()
|
|
|
|
def retrieveToken(self):
|
|
print("Retrieve gcubeToken")
|
|
if not os.path.isfile(self.globalVariablesFile):
|
|
print("File does not exist: " + self.globalVariablesFile)
|
|
raise Exception("File does not exist: " + self.globalVariablesFile)
|
|
with open(self.globalVariablesFile) as fp:
|
|
for line in fp:
|
|
if line.find("gcube_token") != -1:
|
|
tk = line[14:]
|
|
self.gcubeToken = tk.replace('"', '').strip()
|
|
print("Found gcube_token")
|
|
break
|
|
if self.gcubeToken == None:
|
|
print('Error gcube_token not found!')
|
|
raise Exception('Error gcube_token not found!')
|
|
|
|
def createTempFolder(self):
|
|
print("Create Temp Folder")
|
|
cmdCreateTempFolder = StorageHubCommandCreateTempFolder(self.gcubeToken, self.storageHubUrl)
|
|
self.tempFolderItemId = cmdCreateTempFolder.execute()
|
|
|
|
def deleteTempFolder(self):
|
|
print("Delete Temp Folder")
|
|
cmdDeleteTempFolder = StorageHubCommandItemDelete(self.gcubeToken, self.storageHubUrl, self.tempFolderItemId)
|
|
cmdDeleteTempFolder.execute()
|
|
|
|
def downloadResults(self):
|
|
print("Get Results")
|
|
cmdItemDownload = StorageHubCommandItemDownload(self.gcubeToken, self.storageHubUrl,
|
|
self.tempFolderItemId, self.resultFile)
|
|
cmdItemDownload.execute()
|
|
self.deleteTempFolder()
|
|
|
|
def executeOnDocker(self):
|
|
print("Execute On Docker")
|
|
dEngine = DockerEngine(self.gcubeToken, self.storageHubUrl,
|
|
self.softwareImage, self.softwareExecuteCommandName, self.fileItemId, self.tempFolderItemId)
|
|
dEngine.execute()
|
|
self.downloadResults()
|
|
|
|
def executeOnSwarm(self):
|
|
print("Execute On Swarm")
|
|
sEngine = SwarmEngine(self.gcubeToken, self.storageHubUrl,
|
|
self.softwareImage, self.softwareExecuteCommandName, self.fileItemId, self.tempFolderItemId)
|
|
sEngine.execute()
|
|
self.downloadResults()
|
|
|
|
def __str__(self):
|
|
return 'DockerImageExecutor'
|
|
|
|
|
|
def main():
|
|
print('docker_image_executor')
|
|
dockerImageExecutor = DockerImageExecutor()
|
|
dockerImageExecutor.main()
|
|
|
|
|
|
main()
|
|
|