Overview

This sections provides and overview on the fink plugin system. It covers everything necessary to understand how it works at a high level.

Plugin system key functions

Main functionality of the fink plugin system is to provide means so fink can be customized and extended without changing the core functionality. This is necessary for example in case not everybody uses slack or datadog. In this situation one can just not use the plugin or use a plugin which supports an alternate service.

Plugins are added to fink via python packages. The following section covers how to do that.

The fink plugin mechanism also encapsulates the plugin code in a way that it is separated from fink core. This enables us to change and test a plugin as a component independent from fink core. More details about the plugin mechanism are covered in the next chapter.

Plugin installation

Plugins are maintained as standard python packages. Just install plugins you want via pip install <plugin_name>. Same idea applies to removing plugins from a project setup. Using pip uninstall <plugin_name> removes the plugin.

A more sophisticated way of doing that which goes well with CI/CD is to simply add your fink plugins to your projects requirements_fink.txt file. Especially if you need more tools and plugins this makes setting up your CI environment easy and reproducible. pip install -r requirements.txt -r requirments_dev.txt installs all the packages you need for your service and for developing it.

Plugin configuration

Configuration for a plugin are specific for that plugin so please consult the plugins documentation for specific configuration options. General mechanism is that you add the configuration for the plugin to your fink_<env>.json file. Add a section with the plugin name like in the following snippet:

    ...
    'plugins': {
        ...
        'fink.slack_integration': {
            'slack_webhook': 'lookup:secret:slack.webhook:CONTINUE_IF_NOT_FOUND'
        },
        ...
    }

Plugin descriptions

The following table lists the plugins and gives a brief overview what each plugin is used for.

Plugin | Description —— | ———– fink.config_reader | read configuration files in json, python, or yaml format fink.lookup | lookup information related to your AWS account fink.bundler | create code bundles for code and lambda. fink.say_hello | simple plugin to demonstrate how plugins work / are developed fink.slack_integration | send deployment status information to slack

Please refer to detailed plugin’s documentation later in this document folder for detailed information about that plugin.

Later we are going to put plugins in separate repositories so they can have independent owners and development / release cycles. With that we move the detailed plugin documentation to the plugin README and documentation.