1414from six .moves .urllib .request import urlretrieve
1515
1616import click
17+ from galaxy .tools .deps import docker_util
1718
1819from .run import (
1920 setup_common_startup_args ,
100101</tool_sheds>
101102"""
102103
104+ JOB_CONFIG_LOCAL = """<job_conf>
105+ <plugins>
106+ <plugin id="planemo_runner" type="runner" load="galaxy.jobs.runners.local:LocalJobRunner" workers="4"/>
107+ </plugins>
108+ <handlers>
109+ <handler id="main"/>
110+ </handlers>
111+ <destinations default="planemo_dest">
112+ <destination id="planemo_dest" runner="planemo_runner">
113+ <param id="docker_enable">${docker_enable}</param>
114+ <param id="docker_sudo">${docker_sudo}</param>
115+ <param id="docker_sudo_cmd">${docker_sudo_cmd}</param>
116+ <param id="docker_cmd">${docker_cmd}</param>
117+ <param id="docker_host">${docker_host}</param>
118+ </destination>
119+ </destinations>
120+ </job_conf>
121+ """
122+
123+
103124# Provide some shortcuts for simple/common dependency resolutions strategies.
104125STOCK_DEPENDENCY_RESOLUTION_STRATEGIES = {
105126 "brew_dependency_resolution" : BREW_DEPENDENCY_RESOLUTION_CONF ,
@@ -182,7 +203,9 @@ def config_join(*args):
182203 latest_galaxy = True
183204 galaxy_root = config_join ("galaxy-dev" )
184205
206+ server_name = "planemo%d" % random .randint (0 , 100000 )
185207 _handle_dependency_resolution (config_directory , kwds )
208+ _handle_job_config_file (config_directory , server_name , kwds )
186209 _handle_job_metrics (config_directory , kwds )
187210 file_path = kwds .get ("file_path" ) or config_join ("files" )
188211 _ensure_directory (file_path )
@@ -213,7 +236,6 @@ def config_join(*args):
213236 ** kwds
214237 )
215238 _ensure_directory (shed_tool_path )
216- server_name = "planemo%d" % random .randint (0 , 100000 )
217239 port = _get_port (kwds )
218240 template_args = dict (
219241 port = port ,
@@ -234,6 +256,7 @@ def config_join(*args):
234256 # as admins for command_line, etc...
235257 properties = _shared_galaxy_properties (kwds )
236258 properties .update (dict (
259+ server_name = "main" ,
237260 ftp_upload_dir_template = "${ftp_upload_dir}" ,
238261 ftp_upload_purge = "False" ,
239262 ftp_upload_dir = test_data_dir or os .path .abspath ('.' ),
@@ -864,6 +887,7 @@ def _build_test_env(properties, env):
864887 # many are probably not needed as of the following commit.
865888 # https://bitbucket.org/galaxy/galaxy-central/commits/d7dd1f9
866889 test_property_variants = {
890+ 'GALAXY_TEST_JOB_CONFIG_FILE' : 'job_config_file' ,
867891 'GALAXY_TEST_MIGRATED_TOOL_CONF' : 'migrated_tools_config' ,
868892 'GALAXY_TEST_TOOL_CONF' : 'tool_config_file' ,
869893 'GALAXY_TEST_FILE_DIR' : 'test_data_dir' ,
@@ -877,6 +901,26 @@ def _build_test_env(properties, env):
877901 env [test_key ] = value
878902
879903
904+ def _handle_job_config_file (config_directory , server_name , kwds ):
905+ job_config_file = kwds .get ("job_config_file" , None )
906+ if not job_config_file :
907+ template_str = JOB_CONFIG_LOCAL
908+ job_config_file = os .path .join (
909+ config_directory ,
910+ "job_conf.xml" ,
911+ )
912+ conf_contents = Template (template_str ).safe_substitute ({
913+ "server_name" : server_name ,
914+ "docker_enable" : str (kwds .get ("docker" , False )),
915+ "docker_sudo" : str (kwds .get ("docker_sudo" , False )),
916+ "docker_sudo_cmd" : str (kwds .get ("docker_sudo_cmd" , docker_util .DEFAULT_SUDO_COMMAND )),
917+ "docker_cmd" : str (kwds .get ("docker_cmd" , docker_util .DEFAULT_DOCKER_COMMAND )),
918+ "docker_host" : str (kwds .get ("docker_host" , docker_util .DEFAULT_HOST )),
919+ })
920+ write_file (job_config_file , conf_contents )
921+ kwds ["job_config_file" ] = job_config_file
922+
923+
880924def _handle_dependency_resolution (config_directory , kwds ):
881925 resolutions_strategies = [
882926 "brew_dependency_resolution" ,
0 commit comments