Scanner Manager

All events collected by elos are collected through scanners. The scanners are provided as elos-plugins. The Scanner Manager is responsible for loading all plugins via the generic Plugin Manager Plugin Manager, starting, stopping and unloading them. The scanner Manager also determine the configuration which is used to search for plugins.

Static structure

The Scanner Manager is a typical elos component (elosd). It uses the PluginManager to run scanner plugins.

PluginManager

Detailed documentation about PluginManager is here Plugin Manager

Dynamic behavior

See below the lifecycle and control flow of the Scanner Manager.

== Initialization ==
-> ScannerManager: elosScannerManagerInitialize()
ScannerManager -[#red]> ElosConfig: fetch Scanner plugin configurations

== Start ==
-> ScannerManager: elosScannerManagerStart()
ScannerManager -[#red]> PluginManager: elosPluginManagerLoad()
ScannerManager <[#blue]-- PluginManager: Return plugin loaded and started
ScannerManager -[#red]> "Scanner Plugin": load and set client event filters

== Stop ==
-> ScannerManager: elosScannerManagerStop()
ScannerManager -[#red]> "Scanner Plugin": cleanup client event filters
ScannerManager -[#red]> PluginManager: elosPluginManagerUnload()
ScannerManager <[#blue]-- PluginManager: Returns result

== Cleanup ==
-> ScannerManager: elosScannerManagerDeleteMembers()
ScannerManager -[#red]> ScannerManager: free resources

The lifecycle of the Scanner Manager

Data

The scanner manager expects a configuration object under the path /root/elos/Scanner. The object must follow the specification required by the PluginManager.

{
    "root": {
        "elos": {
            "Scanner": {
                "PluginSearchPath": "/usr/local/lib/elos/scanner",
                "Plugins": {
                    "a Plugin name": {
                        "File": "scanner_dummy.so",
                        "Run": "always",
                    }
                }
            }
        }
    }
}

Error

If the configuration for scanner Plugins is not found or invalid the initialization of the ScannerManager will fail. The ScannerManager will fail to start if the PluginManager reports error on loading plugins. But will continue to start if some clients have no or broken filter rules. In that case errors are reported but elos continues operation. Events generated by this plugins might not be properly stored as intended by the plugin. On errors during stopping and freeing memory the ScannerManager try to cleanup as far as possible. A ScannerManager instance that has failed to stop or to delete its members shall not be restarted or reinitialized.