Skip to content

Commit c4dfd55

Browse files
committed
Revise job conf handling.
- Tell Galaxy that the webapp's server_name is ``main`` regardless - so that handler's can have fixed ``job_conf.xml`` files. - Provide a ``job_conf.xml`` if it isn't specified some other way. This prevents ``galaxy_root`` configuration (this should fix galaxyproject/planemo-machine#61). - Add Docker options to Galaxy target commands so job_conf.xml can be configured with Docker options appropriately - enable docker for Galaxy tools with ``--docker``.
1 parent 1dcbfec commit c4dfd55

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

planemo/galaxy/config.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from six.moves.urllib.request import urlretrieve
1515

1616
import click
17+
from galaxy.tools.deps import docker_util
1718

1819
from .run import (
1920
setup_common_startup_args,
@@ -100,6 +101,26 @@
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.
104125
STOCK_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+
880924
def _handle_dependency_resolution(config_directory, kwds):
881925
resolutions_strategies = [
882926
"brew_dependency_resolution",

planemo/options.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,14 @@ def no_cleanup_option():
550550
)
551551

552552

553+
def docker_enable_option():
554+
return planemo_option(
555+
"--docker/--no_docker",
556+
default=False,
557+
help=("Run Galaxy tools in Docker if enabled.")
558+
)
559+
560+
553561
def docker_cmd_option():
554562
return planemo_option(
555563
"--docker_cmd",
@@ -586,6 +594,22 @@ def docker_host_option():
586594
)
587595

588596

597+
def docker_config_options():
598+
return _compose(
599+
docker_cmd_option(),
600+
docker_sudo_option(),
601+
docker_host_option(),
602+
docker_sudo_cmd_option(),
603+
)
604+
605+
606+
def galaxy_docker_options():
607+
return _compose(
608+
docker_enable_option(),
609+
docker_config_options(),
610+
)
611+
612+
589613
def shed_owner_option():
590614
return planemo_option(
591615
"--owner",
@@ -808,6 +832,7 @@ def galaxy_target_options():
808832
no_cache_galaxy_option(),
809833
no_cleanup_option(),
810834
galaxy_email_option(),
835+
galaxy_docker_options(),
811836
# Profile options...
812837
job_config_option(),
813838
tool_dependency_dir_option(),

0 commit comments

Comments
 (0)