Architecture¶
Microservices¶
REST API
Plugins and Sensors¶
Sensors must be groupped in plugins: the idea is that each plugin gives
access to one or (typically) more sensors. Plugins are intended to be used
by stevedore as extensions, i.e. stevedore.extension.Extension,
such that the plugins are automatically found and loaded.
The plugin implementation is, of course, stevedore-agnostic and they
are just expected to behave as limonada.plugin.PluginBase although for
now nothing is enforced, from the typing point of view, and all the
mechanism of loading plugins is purely based on duck typing and on the
stevedore machinery of defining extensions.
A plugin must have an entry point in the pyptoject.toml file, or
similar, and it should belong to the limonada.plugins namespace.
One example of plugin is psutil. It provides 22 sensors, such as
CPUTimesSensor, BatterySensor etc.
Note
The plan is to have builtin plugins, optional plugins and third party plugins, each offering different sensors. Some sensor names could be masked by others! A mechanism to select which one to use in such situations must be still devised.