emqx/apps/emqx_resource
Thales Macedo Garitezi 917575de5a
chore(mix): minimal elixir mix release build
This commit enables a minimal working build of EMQX release using
Mix.  However, to properly start the release, several configuration
steps are still missing.  A `mix_release.sh` script does a few hacks
to get the release built with Mix to start properly, by first assuming
that `make emqx` has been run prior to the release, ran once to
generate the `app.*.config` files, and then it copies that and some
other files to the expected places.

Also, `emqx_telemetry` hangs the start procedure because it thinks
it's in an official release and tries to make a request.  We disable
it temporarily via config just to get a working build for now.
2021-12-21 13:51:22 -03:00
..
include feat(resource): add option 'force_create' to emqx_resource:create/4 2021-12-20 10:26:27 +08:00
src chore(mix): minimal elixir mix release build 2021-12-21 13:51:22 -03:00
test feat(resource): add option 'force_create' to emqx_resource:create/4 2021-12-20 10:26:27 +08:00
mix.exs chore(mix): minimal elixir mix release build 2021-12-21 13:51:22 -03:00
README.md refactor(authn resources): add emqx_resource and emqx_authn tests 2021-11-22 21:08:04 +03:00
rebar.config fix(emqx_resource): disable the debug print for parse-transformed code 2021-06-07 22:11:05 +08:00

emqx_resource

The emqx_resource is a behavior that manages configuration specs and runtime states for resources like mysql or redis backends.

It is intended to be used by the emqx_bridges and all other resources that need CRUD operations to their configs, and need to initialize the states when creating.

There can be foreign references between resource instances via resource-id. So they may find each other via this Id.

The main idea of the emqx resource is to put all the general code in a common lib, including the config operations (like config validation, config dump back to files), and the state management. And we put all the specific codes to the callback modules.

See

  • test/emqx_test_resource.erl for a minimal emqx_resource implementation;
  • test/emqx_resource_SUITE.erl for examples of emqx_resource usage.