mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
In downstream work this is used for subworkflows and nested tools. Not sure which of these would potentially hit main line Galaxy first so setting this all up in its own commit.
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
import abc
|
|
import json
|
|
|
|
import bioblend
|
|
import six
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class ImporterGalaxyInterface(object):
|
|
""" An abstract interface describing the interaction between
|
|
Galaxy and the workflow import code.
|
|
"""
|
|
|
|
@abc.abstractmethod
|
|
def import_workflow(self, workflow):
|
|
""" Import a workflow via POST /api/workflows or
|
|
comparable interface into Galaxy.
|
|
"""
|
|
pass
|
|
|
|
|
|
class BioBlendImporterGalaxyInterface(object):
|
|
|
|
def __init__(self, **kwds):
|
|
"""
|
|
"""
|
|
url = None
|
|
|
|
admin_key = None
|
|
admin_gi = None
|
|
if "admin_gi" in kwds:
|
|
admin_gi = kwds["admin_gi"]
|
|
elif "gi" in kwds:
|
|
admin_gi = kwds["gi"]
|
|
elif "url" in kwds and "admin_key" in kwds:
|
|
url = kwds["url"]
|
|
admin_key = kwds["admin_key"]
|
|
|
|
if admin_gi is None:
|
|
assert url is not None
|
|
assert admin_key is not None
|
|
admin_gi = bioblend.GalaxyInstance(url=url, key=admin_key)
|
|
|
|
user_key = None
|
|
user_gi = None
|
|
if "user_gi" in kwds:
|
|
user_gi = kwds["user_gi"]
|
|
elif "gi" in kwds:
|
|
user_gi = kwds["gi"]
|
|
elif "url" in kwds and "user_key" in kwds:
|
|
url = kwds["url"]
|
|
user_key = kwds["user_key"]
|
|
|
|
if user_gi is None:
|
|
assert url is not None
|
|
assert user_key is not None
|
|
user_gi = bioblend.GalaxyInstance(url=url, key=user_key)
|
|
|
|
self._admin_gi = admin_gi
|
|
self._user_gi = user_gi
|
|
|
|
def import_workflow(self, workflow):
|
|
workflow_str = json.dumps(workflow, indent=4)
|
|
return self._user_gi.workflows.import_workflow_json(
|
|
workflow_str
|
|
)
|
|
|
|
def import_tool(self, tool_representation):
|
|
pass
|