def execute(job_id): """Executes a job through the plugin system Parameters ---------- job_id : str The id of the job to execute """ # Create the new job job = ProcessingJob(job_id) job_dir = join(get_work_base_dir(), job.id) software = job.command.software plugin_start_script = software.start_script plugin_env_script = software.environment_script # Get the command to start the plugin cmd = '%s "%s" "%s" "%s" "%s" "%s"' % ( qiita_config.plugin_launcher, plugin_env_script, plugin_start_script, qiita_config.base_url, job.id, job_dir) # Start the plugin std_out, std_err, return_value = system_call(cmd) if return_value != 0: # Something wrong happened during the plugin start procedure job.status = 'error' log = LogEntry.create( 'Runtime', "Error starting plugin '%s':\nStd output:%s\nStd error:%s" % (software.name, std_out, std_err)) job.log = log