gravitee-io / issues

Gravitee.io - API Platform - Issues
64 stars 26 forks source link

[plugin] Should be able to specify a custom folder for custom plugins #585

Closed blackfich closed 7 years ago

blackfich commented 7 years ago

It should be possible to define a custom folder for custom plugins.

Expected Behavior

It should be possible to define a custom folder for custom plugins (for instance /var/gravitee.io/custom-plugins). The idea is that it would simplify deployment of new versions of gravitee without the need to redeploy all custom plugins (when installing new version after deleting previous one) and avoid potential duplicates (is installing over an existing version). This could also allow to avoid having to deploy custom plugins on both the gateway and the management-api by use of a shared folder.

Current Behavior

Currently custom plugins have to be deployed in the {gravitee-home}/plugins folder. When deploying a new version of gravitee.io, all custom plugins need to be redeployed

Possible Solution

The plugin managers should scan both the standard {gravitee-home}/plugins folder and the custom one for plugins. This custom folder should be configurable via the gravitee.yml file with a default value to {gravitee-home}/plugins to allow backward compatibility.

Context

We want to script deployment of gravitee with ansible scripts. We want to avoid having to redeploy all custom plugins in case of an upgrade on gravitee, since our custom plugins are less likely to evolve than the gateway itself.

Your Environment

NicolasGeraud commented 7 years ago

hi,

how do you package gravitee.io when you want to update it?

blackfich commented 7 years ago

Hi,

this is a good question, and we actually wondering how we should/would do it

ideally we unzip the various graviteeio-xxx-nnn on applicable machines (for instance the management API and management UI are on a single machine not accessible from outside our internal network, wheareas the gateway itself is deployed on a machine accessible from the ouside). The way we've proceeded during our tests was to erase the existing version and deploy the new one. This can be automated easely. Our concern is that we would prefer not to have to redeploy the custom plugins (we plan to have about 6 or so) to avoid missing some. Also they will have a different lifecycle from the gateway itself, hence the need for a custom folder to store them. Of course we could script a copy from this dedicated folder into the gravitee one.

Right now we are considering how we will handle upgrade scripts and such that are to be ran before installling the new version

NicolasGeraud commented 7 years ago

Hi, I think you should create your own gravitee distribution (and separate official plugins and your custom plugins).

Do you download our distribution with mongo repository, es reporter and all policies ?