Managing plugins at runtime

AIBench allows you to enable/disable plugins, as well as to give updates to your application remotely via the Plugin Manager plugin. Basically, you have to provide HTTP access to updated versions of the plugins your application is composed of.

First of all, the src/main/resources/conf/plugins.conf file, all The file is used, by now, to enable/disable plugins

myplugin.active=false

The PluginManager plugin

This plugin adds a new panel in the Workbench’s bottom zone to bring an Plugin Information Panel which:

  • Shows the current available plugins, their version, and their state (disabled/enabled).

  • Allows the user to enable/disable current installed plugins, by changing their option in the plugins.conf. Changes only will take effect after AIBench restarts.

  • Allows a quick plugin update and missing dependency plugins install.

  • Allows the user to manage a plugin repository to download. The user can change the repository url and can view the plugins stored through a Plugin Repository Dialog. The Plugin Repository Dialog informs about which plugins can be installed or updated. When the plugin is downloaded/updated, AIBench should be restarted. When the user searches for a new plugin, AIBench connects and lists the available plugins from the repository showing something like:

    Plugin name/Dependency Installed Version Repository Version Required Version Download
    New plugin 1.5 2.0   [Update - Version 2.0]
    aplugin(1.1+) 1.4 none 1.4  
    bplugin(1.2) none 1.2 1.2 [Install - Version 1.2]
    New plugin 2 none 1.0   [Install - Version 1.0]
  • The PluginManager checks the dependencies between the plugins to warn the user about inconsistencies or incompatibilities when a plugin is disabled or when a plugins is updated/installed.

Setting up and configure your remote plugin repository

You will be able to create a web server with new or updated plugins (repository). A repository should:

  • Be available via HTTP. The URL of the store and the repository metadata file can be configured in the src/main/resources/conf/pluginmanager.conf.

    # URL of the repository.
    pluginrepository.host=http://my.software.org/plugins
    
    # File containing the repository metadata.
    pluginrepository.infofile=plugins.dat
    
    # Directory where the plugins are downloaded before being installed.
    plugininstaller.dir=plugins_install
    
  • The server should declare a metadata file with available plugins information, i.e.: http://my.software.org/plugins/plugins.dat

    # The plugin UID.
    plugin1.uid=myplugin
    
    # The name of the plugin.
    plugin1.name=My plugin
    
    # The version of the plugin stored in the repository.
    plugin1.version=1.1
    
    # The plugins needed by the plugin (dependencies). - Optional
    plugin1.needs=pluginA[1.5+];pluginB[1.7]
    
    # The file containing the plugin files.
    # May be in .zip, .jar, .tar or .tar.gz format.
    plugin1.file=plugin1.zip
    
    # The md5 of the file. Allows client-side validation of the downloaded
    # files. - Optional
    plugin1.md5=1a2b3c4d5e6f7890
    
    plugin2.uid=myotherplugin
    plugin2.name=My other plugin
    plugin2.version=1.5
    plugin2.file=plugin2.zip
    
  • The client is responsible to check the current AIBench meets the dependencies.