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 a Activity.

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 a WorkflowTool.

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 by renku run.

renku.core.plugins.run.process_run_annotations(run)[source]

Plugin Hook to add Annotation entry list to a Activity.

Parameters

run – A Activity object to get annotations for.

Returns

A list of renku.core.models.provenance.annotation.Annotation objects.

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():
    ...

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.

class renku.core.models.workflow.provider.IWorkflowProvider[source]

Abstract class for executing Plan.

abstract workflow_execute(dag, basedir, config)[source]

Executes a given AbstractPlan using the provider.

Returns

a list of output paths that were generated by this workflow.

abstract workflow_provider()[source]

Supported workflow description formats.

Returns

a tuple of self and format.