Skip to content

Commit

Permalink
Adds the ability to build container ids for pieces for the centralise…
Browse files Browse the repository at this point in the history
…d galaxy containers class and takes into account the default and override modes, suggested by jmchilton.
  • Loading branch information
pcm32 committed May 20, 2016
1 parent a54a2e0 commit 46fb489
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions lib/galaxy/tools/deps/containers.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,25 @@ def __destination_container(container_description=None, container_id=None, conta
def __overridden_container_id(self, container_type, destination_info):
if not self.__container_type_enabled(container_type, destination_info):
return None
return destination_info.get("%s_container_id_override" % container_type)
if "%s_container_id_override" % container_type in destination_info:
return destination_info.get("%s_container_id_override" % container_type)
if "%s_image_override" % container_type in destination_info:
return self.__build_container_id_from_parts(container_type, destination_info, mode="override")

def __build_container_id_from_parts(self, container_type, destination_info, mode):
repo = ""
owner = ""
repo_key = "%s_repo_%s" % container_type, mode
owner_key = "%s_owner_%s" % container_type, mode
if repo_key in destination_info:
repo = destination_info[repo_key] + "/"
if owner_key in destination_info:
owner = destination_info[owner_key] + "/"
cont_id = repo + owner + destination_info["%s_image_%s" % container_type, mode]
tag_key = "%s_tag_%s" % container_type, mode
if tag_key in destination_info:
cont_id += ":" + destination_info[tag_key]
return cont_id

def __default_container_id(self, container_type, destination_info):
if not self.__container_type_enabled(container_type, destination_info):
Expand All @@ -111,7 +129,11 @@ def __default_container_id(self, container_type, destination_info):
# Also allow docker_image...
if key not in destination_info:
key = "%s_image" % container_type
return destination_info.get(key)
if key in destination_info:
return destination_info.get(key)
elif "%s_image_default" in destination_info:
return self.__build_container_id_from_parts(container_type, destination_info, mode="default")
return None

def __destination_container(self, container_id, container_type, tool_info, destination_info, job_info):
# TODO: ensure destination_info is dict-like
Expand Down

0 comments on commit 46fb489

Please sign in to comment.