Files
plane/monitor
Nikhil 4b31dd0c01 dev: new license activation workflow for one and pro users (#739)
* feat: added feature flag package for decrypting and refreshing the feature flags value

* feat: added feature flagging route for route handlers

* feat: added feature flag worker for managing and distributing feature flags

* feat: implemented feature flag api implementation inside ff handler

* feat: added exponential retry interval inside feature flagging

* fix: route pattern of feature flag endpoint from monitor

* feat: created endpoint to activate workspace from monitor

* feat: made changes to accomodate db and activate endpoint

* dev: update multi tenant environment settings

* dev: workspace license activation flow

* dev: update license activate endpoint

* dev: update workspace license activate endpoint

* feat: added feature flag user sync logic

* feat: added constants and sync logic with private key inside

* feat: added port as env variable

* feat: added modification for removing license key in healthcheck

* feat: example env pushed

* fix: update monitor endpoints and license activation function

* dev: initiate free workspace only for self hosted instances

* dev: self hosting license endpoint updates

* dev: remove monitor db

* dev: update handlers

* dev: self hosted license subscription web

* dev: removed computed in self hosted subscription

* fix: prime server url and delete old license while creating new license in sqlite

* chore: subscription activation alert after successfull activation.

* dev: update feature flag endpoints

* fix: handled several cases of feature flags

* fix: linting errors

* dev: update monitor to handle workspace activation

* dev: update decryption algorithm

* feat: separated activation payload with the sync payload

* dev: update feature flags endpoint

* dev: change type for workspace sync

* feat: added isActive flag for user activation

* feat: removed creation of free users in monitor

* feat: added method for workspace product

* dev: add user email in types

* feat: added method for workspace product

* fix: uer license feature flag fetch

* fix: handler fixed for feature key

* chore: self managed license activation

* chore: update validation license flow.

* chore: license activation success.

* dev: resync workspace license on activation

* chore: plane one success modal.

* feat: added constructs to inject private key build time

* feat: updated the docker file with private key build argument

* feat: added consumption od DEFAULT_PRIVATE_KEY when building monitor

* dev: update private key

---------

Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
2024-08-22 17:39:19 +05:30
..

Monitor

Monitor a package written in go, aims to provide services responsible for healthcheck, feature flagging and validation of entities with respect to deployments. The services of Monitor are encapsulated in a command line interface inside the ./cli folder and all the features are encapsulated inside packages inside the lib folder ./lib folder.

Convention and Adding New Features

  • Each feature lies on a seprate module, and for every module, there must be it's individual tests and readme associated with it, with the function signatures associated with it.
  • Examples must be provided for each of the functions that are present inside the package that, it can be used as a reference manual.
  • Every function should be written in such a way such that it can be consumed by any external host, maybe used with cron, http, cli or a seprate package on itself. Passing callback functions are sometimes best for such scenarios.

Running and Usage of Monitor

Monitor relies on 4 different environment variables of execution, which are listed below,

  • PRIME_HOST : The host for the prime service, defaults to https://prime.plane.so.
  • LICENSE_KEY: The client's license key, required for validation purposes of the api requests to the prime server.
  • LICENSE_VERSION: The currently used version by the client, it's generally the plane app version, but it's required and needed to be passed.
  • MACHINE_SIGNATURE: Machine signature field indicates the machine signature of the host machine. Say you're using monitor as a docker image on a mac, then we would require the MACHINE_SIGNATURE of mac, assuming mac's machine signature is associated with the license.

You can build monitor, with make build and test it with make test. Monitor can be run with --help command, to check the capabilites of it.