- Create a
live-clientlibrary and use it as a dependency for the agent - Split the requirements list for the base project and for each of the modules
- Create some support tools for the developer
- Create a command which bootstraps an agent (
create-agent), adding the following:README.mdsettings.jsonwith the basic structuretoolsfolder (same aslive-agent's)modulesfolder (containing only an__init__.py)
- Create a command which bootstraps a new module (
add-agent-module), asking for a name and adding a folder using the chosen name containing the default structure for a module:__init__.pycontaining empty definitions forPROCESSESandREQUIREMENTSlogic_adaptersfoldermonitorsfolderdatasourcesfolder
- Add a section to
live-agent's README with usage instructions for the scripts above
- Create a command which bootstraps an agent (
- Define how users of this library should work with it, including the processes for development, test, build and deploy of a module:
- create the project's folder, virtualenv and repository
- add
live-agentto the requirements - install requirements
- run
create-agent - for each of the desired modules
- go to the
modulesfolder and runadd-agent-module - implement the module(s)
- update the settings
- validate the settings with
check_live_features(fromlive-client)
- go to the
- build a release rpm
- deploy to the server
- Implement an example module to be added by
create-agent. It should have at least one example ofmonitor,logic_adapteranddatasource - Create a mechanism (similar to/an extension of
live-client'scheck_live_features) which validates which features are available for a given settings file - Make
Remote loggera managed process, so it can be restarted when needed. Maybe make it a dda module - Create some mechanism for defining the settings format for each of the modules (maybe
jsonschemaordataclasses) - Create some mechanism for validating the settings for each process, based on their process_type. Examples:
- chatbot
logic_adapters - output settings
- chatbot
- Create a module which reads the stats from the system hosting the agent and sends it to live (use psutil or proc
- Create a module which provides a management web UI for controlling the agent's settings (including the list of enabled modules)
- Implemented in flask
- Default settings exposing only the management UI
- Credentials defined during the build process
- question: How to control (start/stop/restart/add/remove/enable/disable) the processes managed by the agent? Always stop and restart everything?
- maybe: Add the possibility to upload a zipped module to the management web UI
- Create a command for packaging a module as a zipped python module (
build-module) - question: Do we need a sandbox or can we trust the developer? If we need a sandbox this requirement kills this feature.
- Create a command for packaging a module as a zipped python module (
- maybe: Provide a web UI for the user to define new monitors and logic adapters, using predefined features exposed by the agent (similar to jupyterhub)
- Create a logic adapter type which delegates the execution of
processandexecute_actionto an external webservice (using ReST) - maybe: Create a slack integration module. slack-tangerine and slack-machine might be useful.