Plugin Support¶
Runtime Plugins¶
Runtime plugins are supported using the pluggy library.
Runtime plugins can be created as Python packages that contain the respective entry point definition in their setup.py file, like so:
from setuptools import setup
setup(
...
entry_points={"renku": ["name_of_plugin = myproject.pluginmodule"]},
...
)
where myproject.pluginmodule points to a Renku hookimpl e.g.:
from renku.core.plugins import hookimpl
@hookimpl
def plugin_hook_implementation(param1, param2):
...
renku run
hooks¶
Plugin hooks for renku run customization.
- renku.core.plugins.run.activity_annotations(activity)[source]¶
Plugin Hook to add
Annotation
entry list to aActivity
.- Parameters
activity – An
Activity
object to get annotations for.- Returns
A list of
renku.core.models.provenance.annotation.Annotation
objects.
- renku.core.plugins.run.cmdline_tool_annotations(tool)[source]¶
Plugin Hook to add
Annotation
entry list to aWorkflowTool
.- Parameters
run – A
WorkflowTool
object to get annotations for.- Returns
A list of
renku.core.models.provenance.annotation.Annotation
objects.
- renku.core.plugins.run.pre_run(tool)[source]¶
Plugin Hook that gets called at the start of a
renku run
call.Can be used to setup plugins that get executed during the run.
- Parameters
run – A
WorkflowTool
object that will get executed byrenku run
.
- renku.core.plugins.run.process_run_annotations(run)[source]¶
Plugin Hook to add
Annotation
entry list to aActivity
.- Parameters
run – A
Activity
object to get annotations for.- Returns
A list of
renku.core.models.provenance.annotation.Annotation
objects.
This repository contains an implementation of an activity annotation plugin.
CLI Plugins¶
Command-line interface plugins are supported using the click-plugins <https://github.com/click-contrib/click-plugins> library.
As in case the runtime plugins, command-line plugins can be created as Python packages that contain the respective entry point definition in their setup.py file, like so:
from setuptools import setup
setup(
...
entry_points={"renku.cli_plugins": ["mycmd = myproject.pluginmodule:mycmd"]},
...
)
where myproject.pluginmodule:mycmd points to a click command e.g.:
import click
@click.command()
def mycmd():
...
An example implementation of such plugin is available here.
Workflow Converter Plugins¶
Additional workflow converters can be implemented by extending
renku.core.models.workflow.converters.IWorkflowConverter
. By default renku
provides a CWL converter plugins that is used when exporting a workflow:
$ renku workflow export --format cwl <my_workflow>
- class renku.core.models.workflow.converters.IWorkflowConverter[source]¶
Abstract class for converting
Plan
to a workflow format.
We created a dummy implementation of such a converter plugin.
Workflow Provider Plugins¶
Additional workflow providers can be implemented by extending
renku.core.models.workflow.provider.IWorkflowProvider
. See
Implementing a workflow provider for more information.