You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
3.5 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.itemId = sys.argv[3] # Input Data Item
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.itemId, self.tempFolderItemId)
dEngine.execute()
self.downloadResults()
def executeOnSwarm(self):
print("Execute On Swarm")
sEngine = SwarmEngine(self.gcubeToken, self.storageHubUrl,
self.softwareImage, self.softwareExecuteCommandName, self.itemId, self.tempFolderItemId)
sEngine.execute()
self.downloadResults()
def __str__(self):
return 'DockerImageExecutor'
def main():
print('docker_image_executor')
dockerImageExecutor = DockerImageExecutor()
dockerImageExecutor.main()
main()