Skip to content

Latest commit

 

History

History
57 lines (49 loc) · 3.66 KB

File metadata and controls

57 lines (49 loc) · 3.66 KB

Pending tasks

Architecture and usage

  • Create a live-client library 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.md
      • settings.json with the basic structure
      • tools folder (same as live-agent's)
      • modules folder (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__.py containing empty definitions for PROCESSES and REQUIREMENTS
      • logic_adapters folder
      • monitors folder
      • datasources folder
    • Add a section to live-agent's README with usage instructions for the scripts above
  • Define how users of this library should work with it, including the processes for development, test, build and deploy of a module:
    1. create the project's folder, virtualenv and repository
    2. add live-agent to the requirements
    3. install requirements
    4. run create-agent
    5. for each of the desired modules
      1. go to the modules folder and run add-agent-module
      2. implement the module(s)
      3. update the settings
      4. validate the settings with check_live_features (from live-client)
    6. build a release rpm
    7. deploy to the server
  • Implement an example module to be added by create-agent. It should have at least one example of monitor, logic_adapter and datasource
  • Create a mechanism (similar to/an extension of live-client's check_live_features) which validates which features are available for a given settings file
  • Make Remote logger a 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 jsonschema or dataclasses)
  • Create some mechanism for validating the settings for each process, based on their process_type. Examples:
    • chatbot logic_adapters
    • output settings
  • Create a module which reads the stats from the system hosting the agent and sends it to live (use psutil or proc

User interface

  • 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.
  • 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)

Features