Skip to content

Commit

Permalink
Revise job conf handling.
Browse files Browse the repository at this point in the history
 - 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``.
  • Loading branch information
jmchilton committed May 20, 2016
1 parent 1dcbfec commit 8121af5
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
45 changes: 44 additions & 1 deletion planemo/galaxy/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,26 @@
</tool_sheds>
"""

JOB_CONFIG_LOCAL = """<job_conf>
<plugins>
<plugin id="planemo_runner" type="runner" load="galaxy.jobs.runners.local:LocalJobRunner" workers="4"/>
</plugins>
<handlers>
<handler id="main"/>
</handlers>
<destinations default="planemo_dest">
<destination id="planemo_dest" runner="planemo_runner">
<param id="docker_enable">${docker_enable}</param>
<param id="docker_sudo">${docker_sudo}</param>
<param id="docker_sudo_cmd">${docker_sudo_cmd}</param>
<param id="docker_cmd">${docker_cmd}</param>
<param id="docker_host">${docker_host}</param>
</destination>
</destinations>
</job_conf>
"""


# Provide some shortcuts for simple/common dependency resolutions strategies.
STOCK_DEPENDENCY_RESOLUTION_STRATEGIES = {
"brew_dependency_resolution": BREW_DEPENDENCY_RESOLUTION_CONF,
Expand Down Expand Up @@ -182,7 +202,9 @@ def config_join(*args):
latest_galaxy = True
galaxy_root = config_join("galaxy-dev")

server_name = "planemo%d" % random.randint(0, 100000)
_handle_dependency_resolution(config_directory, kwds)
_handle_job_config_file(config_directory, server_name, kwds)
_handle_job_metrics(config_directory, kwds)
file_path = kwds.get("file_path") or config_join("files")
_ensure_directory(file_path)
Expand Down Expand Up @@ -213,7 +235,6 @@ def config_join(*args):
**kwds
)
_ensure_directory(shed_tool_path)
server_name = "planemo%d" % random.randint(0, 100000)
port = _get_port(kwds)
template_args = dict(
port=port,
Expand All @@ -234,6 +255,7 @@ def config_join(*args):
# as admins for command_line, etc...
properties = _shared_galaxy_properties(kwds)
properties.update(dict(
server_name="main",
ftp_upload_dir_template="${ftp_upload_dir}",
ftp_upload_purge="False",
ftp_upload_dir=test_data_dir or os.path.abspath('.'),
Expand Down Expand Up @@ -864,6 +886,7 @@ def _build_test_env(properties, env):
# many are probably not needed as of the following commit.
# https://bitbucket.org/galaxy/galaxy-central/commits/d7dd1f9
test_property_variants = {
'GALAXY_TEST_JOB_CONFIG_FILE': 'job_config_file',
'GALAXY_TEST_MIGRATED_TOOL_CONF': 'migrated_tools_config',
'GALAXY_TEST_TOOL_CONF': 'tool_config_file',
'GALAXY_TEST_FILE_DIR': 'test_data_dir',
Expand All @@ -877,6 +900,26 @@ def _build_test_env(properties, env):
env[test_key] = value


def _handle_job_config_file(config_directory, server_name, kwds):
job_config_file = kwds.get("job_config_file", None)
if not job_config_file:
template_str = JOB_CONFIG_LOCAL
job_config_file = os.path.join(
config_directory,
"job_conf.xml",
)
conf_contents = Template(template_str).safe_substitute({
"server_name": server_name,
"docker_enable": str(kwds["docker"]),
"docker_sudo": str(kwds["docker_sudo"]),
"docker_sudo_cmd": str(kwds["docker_sudo_cmd"]),
"docker_cmd": str(kwds["docker_cmd"]),
"docker_host": str(kwds["docker_host"]),
})
write_file(job_config_file, conf_contents)
kwds["job_config_file"] = job_config_file


def _handle_dependency_resolution(config_directory, kwds):
resolutions_strategies = [
"brew_dependency_resolution",
Expand Down
25 changes: 25 additions & 0 deletions planemo/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,14 @@ def no_cleanup_option():
)


def docker_enable_option():
return planemo_option(
"--docker/--no_docker",
default=False,
help=("Run Galaxy tools in Docker if enabled.")
)


def docker_cmd_option():
return planemo_option(
"--docker_cmd",
Expand Down Expand Up @@ -586,6 +594,22 @@ def docker_host_option():
)


def docker_config_options():
return _compose(
docker_cmd_option(),
docker_sudo_option(),
docker_host_option(),
docker_sudo_cmd_option(),
)


def galaxy_docker_options():
return _compose(
docker_enable_option(),
docker_config_options(),
)


def shed_owner_option():
return planemo_option(
"--owner",
Expand Down Expand Up @@ -808,6 +832,7 @@ def galaxy_target_options():
no_cache_galaxy_option(),
no_cleanup_option(),
galaxy_email_option(),
galaxy_docker_options(),
# Profile options...
job_config_option(),
tool_dependency_dir_option(),
Expand Down

0 comments on commit 8121af5

Please sign in to comment.