Skip to content

gravitee-io/gravitee-plugin

Repository files navigation

Gravitee-io - Plugin system

License Releases CircleCI Join the community forum

Description

The Gravitee.io plugin project contains a set of classes that are used in Gravitee.io products (APIM, AM, …​) to load and manage plugins. Several type of plugins are supported:

  • Repositories

  • Services

  • Policies

  • Identity Providers

  • Notifiers

  • Reporters

  • …​

Additionally, the plugin project offer handy annotation processors that are helpful when developing policies.

Modules

Alert

The Gravitee Plugin Alert module provides a plugin handler that detects and loads the alert plugin. It also regroups all the interfaces needed for declaring alert triggers (kind of alert definition) and sending alert event. It allows working seamlessly with Alert Engine but can be used for any custom external system.

Annotation Processors

The Gravitee Plugin Annotation Processors module aims to provide useful set of annotations that can be used when developing new plugins such as policies. For now, it provides a @ConfigurationEvaluator that is useful for any plugin that needs to support dynamic configuration based on context attributes and wants to do it in a conventional ways. See the dedicated README for details.

Api

The Gravitee Plugin Api module exposes some handy interfaces that can be implemented to influence the plugin deployments.

Cockpit

The Gravitee Plugin Cockpit module provides a plugin handler capable to load and start a Cockpit Connector plugin.

Connector (deprecated)

The Gravitee Plugin Connector module provides a specific plugin handler that loads Gravitee APIM v3 connector plugins. This module is now deprecated in favor of new Entrypoint and Endpoint Connector concept that are specific to Gravitee APIM and offer support for Event Native capabilities.

These new concepts come with new plugin handlers. The specific Entrypoint plugin handler and Endpoint plugin handler are now located in the APIM repository.

Here are some concrete examples of the kind of plugins that can be loaded by the new plugin endpoint and entrypoint handlers:

Core

The Gravitee Plugin Core module offers all the core capabilities needed to load and register the plugins.

Fetcher

The Gravitee Plugin Fetcher module provides a plugin handler capable to load and start a fetcher plugin. A fetcher allows retrieving content from an external source. It is mainly intended for use on management side and is not supposed to be used by gateways.

Here are some examples of concrete fetcher plugins the plugin handler can load:

Note
A concrete example on how fetchers are used in Gravitee API Management is accessible in the online documentation.

Identity Provider

The Gravitee Plugin Identity Provider module brings the ability to load identity provider plugins that can be used to implement authentication.

Notifier

The Gravitee Plugin Notifier module provides a handler to load notifier plugins. Notifier are used to send notification to a remote system.

Here are some examples of notifier plugins that can be loaded by the notifier plugin handler:

Note
You can find how to use notifiers with Gravitee APIM in the online documentation.

Policy

The Gravitee Plugin Policy module provides a specific handler capable of loading all the policy plugin that are detected.

There a many policy plugins that are implemented and can be loaded by the policy plugin handler.

Note
You can find a list of all the policies available for APIM in the online documentation.

Repository

The Gravitee Plugin Repository module implement a plugin handler that aims to detect and load repository plugins.

Gravitee products rely on a repository layer to store all the necessary data. They are implemented as repository plugin that allows for implementing support for different database technologies such as MongoDB or JDBC.

Resource

The Gravitee Plugin Resource module provides a resource plugin handler in charge of detecting and loading all the resource plugins.

A resource plugin is a generic concept that can be implemented by each product. For example, APIM makes use of cache resources or oauth2 resources. There can be several implementations for each type of resource. For example, oauth2 resource can have a generic implementation as well as a Gravitee AM implementation or a KeyCloack implementation.

Service Discovery

The Gravitee Plugin Service Discovery module allows for loading service discovery plugin by providing a specific plugin handler.

Service discovery plugins are useful to dynamically register or deregister endpoints. There is currently one implementation supporting Consul.