Skip to content

Latest commit

 

History

History
120 lines (78 loc) · 3.5 KB

plugins.rst

File metadata and controls

120 lines (78 loc) · 3.5 KB

Plugin Support

Renku has several plugin hooks that can be used to add additional metadata and commands to the Renku CLI.

The following hooks are currently available:

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.plugin import hookimpl

@hookimpl
def plugin_hook_implementation(param1, param2):
    ...

renku run hooks

renku.core.plugin.run

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.domain_model.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>

renku.domain_model.workflow.converters.IWorkflowConverter

We created a dummy implementation of such a converter plugin.

Workflow Provider Plugins

Additional workflow providers can be implemented by extending renku.domain_model.workflow.provider.IWorkflowProvider. See implementing_a_provider for more information.

renku.domain_model.workflow.provider.IWorkflowProvider