runner: factorizes code from runSoftwareWithLock and runInstanceWithLock
Showing
... | @@ -278,35 +278,56 @@ def waitProcess(config, process, step): | ... | @@ -278,35 +278,56 @@ def waitProcess(config, process, step): |
date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") | date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") | ||
slapgridResultToFile(config, step, process.returncode, date) | slapgridResultToFile(config, step, process.returncode, date) | ||
def runSlapgridWithLock(config, step, process_name, lock=False): | |||
def runSoftwareWithLock(config, lock=False): | |||
""" | """ | ||
Use Slapgrid to compile current Software Release and wait until | * process_name is the name of the process given to supervisord, which will | ||
compilation is done | run the software or the instance | ||
* step is one of ('software', 'instance') | |||
* lock allows to make this function asynchronous or not | |||
""" | """ | ||
if sup_process.isRunning(config, 'slapgrid-sr'): | if sup_process.isRunning(config, process_name): | ||
return 1 | return 1 | ||
if not os.path.exists(config['software_root']): | root_folder = config["%s_root" % step] | ||
os.mkdir(config['software_root']) | log_file = config["%s_log" % step] | ||
if not os.path.exists(root_folder): | |||
os.mkdir(root_folder) | |||
stopProxy(config) | stopProxy(config) | ||
startProxy(config) | startProxy(config) | ||
# XXX Hackish and unreliable | # XXX Hackish and unreliable | ||
if os.path.exists(config['software_log']): | if os.path.exists(log_file): | ||
os.remove(config['software_log']) | os.remove(config[log_file]) | ||
if not updateProxy(config): | if not updateProxy(config): | ||
return 1 | return 1 | ||
try: | try: | ||
sup_process.runProcess(config, "slapgrid-sr") | sup_process.runProcess(config, process_name) | ||
if lock: | if lock: | ||
sup_process.waitForProcessEnd(config, "slapgrid-sr") | sup_process.waitForProcessEnd(config, process_name) | ||
#Saves the current compile software for re-use | #Saves the current compile software for re-use | ||
config_SR_folder(config) | if step == 'software': | ||
return sup_process.returnCode(config, "slapgrid-sr") | config_SR_folder(config) | ||
return sup_process.returnCode(config, process_name) | |||
except xmlrpclib.Fault: | except xmlrpclib.Fault: | ||
return 1 | return 1 | ||
def runSoftwareWithLock(config, lock=False): | |||
""" | |||
Use Slapgrid to compile current Software Release and wait until | |||
compilation is done | |||
""" | |||
return runSlapgridWithLock(config, 'software', 'slapgrid-sr', lock) | |||
def runInstanceWithLock(config, lock=False): | |||
""" | |||
Use Slapgrid to deploy current Software Release and wait until | |||
deployment is done. | |||
""" | |||
return runSlapgridWithLock(config, 'instance', 'slapgrid-cp', lock) | |||
|
|||
def config_SR_folder(config): | def config_SR_folder(config): | ||
"""Create a symbolik link for each folder in software folder. That allows | """Create a symbolik link for each folder in software folder. That allows | ||
the user to customize software release folder""" | the user to customize software release folder""" | ||
... | @@ -375,29 +396,6 @@ def isInstanceRunning(config): | ... | @@ -375,29 +396,6 @@ def isInstanceRunning(config): |
return sup_process.isRunning(config, 'slapgrid-cp') | return sup_process.isRunning(config, 'slapgrid-cp') | ||
def runInstanceWithLock(config, lock=False): | |||
""" | |||
Use Slapgrid to deploy current Software Release and wait until | |||
deployment is done. | |||
""" | |||
if sup_process.isRunning(config, 'slapgrid-cp'): | |||
return 1 | |||
startProxy(config) | |||
# XXX Hackish and unreliable | |||
if os.path.exists(config['instance_log']): | |||
os.remove(config['instance_log']) | |||
if not (updateProxy(config) and requestInstance(config)): | |||
return 1 | |||
try: | |||
sup_process.runProcess(config, "slapgrid-cp") | |||
if lock: | |||
sup_process.waitForProcessEnd(config, "slapgrid-cp") | |||
return sup_process.returnCode(config, "slapgrid-cp") | |||
except xmlrpclib.Fault: | |||
return 1 | |||
def getProfilePath(projectDir, profile): | def getProfilePath(projectDir, profile): | ||
""" | """ | ||
Return the path of the current Software Release `profile` | Return the path of the current Software Release `profile` | ||
... | ... |