diff --git a/slapos/runner/sup_process.py b/slapos/runner/sup_process.py new file mode 100644 index 0000000000000000000000000000000000000000..9b7d0a081d656fc8c3043e7fbe046b0ba3fe1576 --- /dev/null +++ b/slapos/runner/sup_process.py @@ -0,0 +1,40 @@ +import time +import xmlrpclib + +from supervisor import childutils + +# This mini-library is used to communicate with supervisord process +# It aims to replace the file "process.py" +# For the moment, we keep both for compatibility + +def isRunning(config, process): + server = xmlrpclib.Server(config['supervisord_server']) + state = server.supervisor.getProcessInfo(process)['state'] + return (True if state == 20 else False) + + +def returnCode(config, process): + server = xmlrpclib.Server(config['supervisord_server']) + code = server.supervisor.getProcessInfo(process)['exitstatus'] + return code + + +def runProcess(config, process): + server = xmlrpclib.Server(config['supervisord_server']) + server.supervisor.startProcess(process) + + +def runProcesses(config, processes): + server = xmlrpclib.Server(config['supervisord_server']) + for proc in processes: + server.supervisor.startProcess(proc) + waitForProcessEnd(proc) + + +def waitForProcessEnd(config, process): + server = xmlrpclib.Server(config['supervisord_server']) + while True: + state = server.supervisor.getProcessInfo(process)['state'] + if state == 20: + time.sleep(5) + return False