diff --git a/lib/galaxy/jobs/runners/__init__.py b/lib/galaxy/jobs/runners/__init__.py index 512c93f3682..6ec8c9bc956 100644 --- a/lib/galaxy/jobs/runners/__init__.py +++ b/lib/galaxy/jobs/runners/__init__.py @@ -35,6 +35,8 @@ JOB_RUNNER_PARAMETER_UNKNOWN_MESSAGE = "Invalid job runner parameter for this pl JOB_RUNNER_PARAMETER_MAP_PROBLEM_MESSAGE = "Job runner parameter '%s' value '%s' could not be converted to the correct type" JOB_RUNNER_PARAMETER_VALIDATION_FAILED_MESSAGE = "Job runner parameter %s failed validation" +GALAXY_LIB_ADJUST_TEMPLATE = """GALAXY_LIB="%s"; if [ "$GALAXY_LIB" != "None" ]; then if [ -n "$PYTHONPATH" ]; then PYTHONPATH="$GALAXY_LIB:$PYTHONPATH"; else PYTHONPATH="$GALAXY_LIB"; fi; export PYTHONPATH; fi;""" + class RunnerParams( ParamsWithSpecs ): @@ -253,11 +255,13 @@ class BaseJobRunner( object ): #this is terminate-able when output dataset/job is deleted #so that long running set_meta()s can be canceled without having to reboot the server if job_wrapper.get_state() not in [ model.Job.states.ERROR, model.Job.states.DELETED ] and job_wrapper.output_paths: + lib_adjust = GALAXY_LIB_ADJUST_TEMPLATE % job_wrapper.galaxy_lib_dir external_metadata_script = job_wrapper.setup_external_metadata( output_fnames=job_wrapper.get_output_fnames(), set_extension=True, tmp_dir=job_wrapper.working_directory, #we don't want to overwrite metadata that was copied over in init_meta(), as per established behavior kwds={ 'overwrite' : False } ) + external_metadata_script = "%s %s" % (lib_adjust, external_metadata_script) if resolve_requirements: dependency_shell_commands = self.app.datatypes_registry.set_external_metadata_tool.build_dependency_shell_commands() if dependency_shell_commands: diff --git a/lib/galaxy/jobs/runners/tasks.py b/lib/galaxy/jobs/runners/tasks.py index 3d000dc8d36..cab93909483 100644 --- a/lib/galaxy/jobs/runners/tasks.py +++ b/lib/galaxy/jobs/runners/tasks.py @@ -124,19 +124,7 @@ class TaskedJobRunner( BaseJobRunner ): #run the metadata setting script here #this is terminate-able when output dataset/job is deleted #so that long running set_meta()s can be canceled without having to reboot the server - if job_wrapper.get_state() not in [ model.Job.states.ERROR, model.Job.states.DELETED ] and job_wrapper.output_paths: - external_metadata_script = job_wrapper.setup_external_metadata( output_fnames=job_wrapper.get_output_fnames(), - set_extension=True, - kwds={ 'overwrite' : False } ) # we don't want to overwrite metadata that was copied over in init_meta(), as per established behavior - log.debug( 'executing external set_meta script for job %d: %s' % ( job_wrapper.job_id, external_metadata_script ) ) - external_metadata_proc = subprocess.Popen( args=external_metadata_script, - shell=True, - env=os.environ, - preexec_fn=os.setpgrp ) - job_wrapper.external_output_metadata.set_job_runner_external_pid( external_metadata_proc.pid, self.sa_session ) - external_metadata_proc.wait() - log.debug( 'execution of external set_meta finished for job %d' % job_wrapper.job_id ) - + self._handle_metadata_externally(job_wrapper, resolve_requirements=True ) # Finish the job try: job_wrapper.finish( stdout, stderr, job_exit_code ) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index 8760c96f225..ee70e2b97f3 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -2456,7 +2456,8 @@ class Tool( object, Dictifiable ): elif input.type == 'conditional': if 'test_param' in tool_dict: test_param = tool_dict['test_param'] - test_param['value'] = jsonify(group_state.get(test_param['name'], None)) + test_param['default_value'] = jsonify(input.test_param.get_initial_value(trans, other_values)) + test_param['value'] = jsonify(group_state.get(test_param['name'], test_param['default_value'])) for i in range (len ( tool_dict['cases'] ) ): current_state = {} if i == group_state.get('__current_case__', None): diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 76e613c5090..c689005ec22 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -696,7 +696,7 @@ class BaseURLToolParameter( ToolParameter ): return form_builder.HiddenField( self.name, self.get_value( trans ) ) def get_initial_value( self, trans, context, history=None ): - return self.value + return self.get_value( trans ) def get_label( self ): # BaseURLToolParameters are ultimately "hidden" parameters