################### Plugin Installation ################### Installing custom plugins ------------------------- As an authorative user perform the commands below to install a plugin: .. code-block:: console $ # copy the plugin to the user plugin directory $ cp myplugin.py /opt/arcapix/usr/share/apsearch/plugins/available/user $ # make sure the 'apsearch' user has permissions to use it $ chown apsearch:apsearch /opt/arcapix/usr/share/apsearch/plugins/available/user/myplugin.py $ chmod 755 /opt/arcapix/usr/share/apsearch/plugins/available/user/myplugin.py $ # create a symlink to the plugin in 'enabled' to use it in ingest $ ln -s /opt/arcapix/usr/share/apsearch/plugins/available/user/myplugin.py /opt/arcapix/usr/share/apsearch/plugins/enabled/myplugin.py This process will need to be repeated for all nodes which will participate in ingest. .. important:: Whenever a new plugin is installed, the environment **MUST** be reloaded on all nodes, as described below To uninstall a plugin, simply delete its symlink from the ``enabled`` directory. Available plugins ----------------- Some plugins may be pre-provided in the ``/opt/arcapix/usr/share/apsearch/plugins/available`` directory. These might include ArcaPix developed plugins, or community developed plugins, such as those available in the `public github repo `_ The typical directory layout is .. code-block:: console /opt/arcapix/usr/share/apsearch/plugins/ ├── enabled └── available ├── arcapix-core ├── arcapix-supported-extras ├── arcapix-community-extras └── user As with custom plugins, these can be activated by creating symlinks in the ``enabled`` directory. Configuring the plugin path --------------------------- The plugin path should have been set to the default ``/opt/arcapix/usr/share/apsearch/plugins/enabled`` during PixStor Search install. You can verify the configured plugin path with .. code-block:: console $ python -m arcapix.config --get arcapix.search.metadata.plugins.path If the path hasn't been configured, or if you want to change the plugin path, use .. code-block:: console $ python -m arcapix.config --set arcapix.search.metadata.plugins.path If you set/change the plugin path, you will need to restart PixStor Search (see below) PixStor Search will only use custom plugins installed in the configured plugin path, or sub-directories of that path Reloading the Environment ------------------------- Instruct PixStor Search to register the new plugin via the following command line: .. code-block:: console $ systemctl restart apsearch-middleware This must be done on all ingest nodes. Validating Plugins ------------------ It is recommended that you use the plugin validation tool on any custom plugins. .. code-block:: console $ searchctl plugins validate /path/to/plugin.py::PluginName example_file.ext This tool will identify common issues with plugins, and will offer advice for how to fix them. See ``man searchctl-plugins-check`` for more details.