feat: add eval-erl command to `bin/emqx`

This allows Erlang expressions to be evaluated easily even on nodes
running Elixir.
This commit is contained in:
Thales Macedo Garitezi 2022-02-04 16:53:27 -03:00
parent e4b14a34b2
commit 1b3b2c0d03
No known key found for this signature in database
GPG Key ID: DD279F8152A9B6DD
2 changed files with 12 additions and 9 deletions

View File

@ -20,14 +20,8 @@ fi
is_node_up() {
local node="$1"
if [ "${IS_ELIXIR:-no}" = "yes" ]
then
docker exec -i "$node" \
bash -c "emqx eval \"[:\\\"emqx@node1.emqx.io\\\", :\\\"emqx@node2.emqx.io\\\"] = :ekka_cluster.info()[:running_nodes]\""
else
docker exec -i "$node" \
bash -c "emqx eval \"['emqx@node1.emqx.io','emqx@node2.emqx.io'] = maps:get(running_nodes, ekka_cluster:info()).\"" > /dev/null 2>&1
fi
docker exec -i "$node" \
bash -c "emqx eval-erl \"['emqx@node1.emqx.io','emqx@node2.emqx.io'] = maps:get(running_nodes, ekka_cluster:info()).\"" > /dev/null 2>&1
}
is_node_listening() {

View File

@ -140,6 +140,9 @@ usage() {
eval)
echo "Evaluate an Erlang or Elxir expression in the EMQ X node"
;;
eval-erl)
echo "Evaluate an Erlang expression in the EMQ X node, even on Elixir node"
;;
versions)
echo "List installed EMQ X versions and their status"
;;
@ -200,7 +203,7 @@ usage() {
echo " Up/Down-grade: upgrade | downgrade | install | uninstall"
echo " Install info: ertspath | root_dir | versions | root_dir"
echo " Runtime info: pid | ping | versions"
echo " Advanced: console_clean | escript | rpc | rpcterms | eval"
echo " Advanced: console_clean | escript | rpc | rpcterms | eval | eval-erl"
echo ''
echo "Execute '$REL_NAME COMMAND help' for more information"
;;
@ -875,6 +878,12 @@ case "${COMMAND}" in
relx_nodetool "eval" "$@"
fi
;;
eval-erl)
assert_node_alive
shift
relx_nodetool "eval" "$@"
;;
*)
usage "$COMMAND"
exit 1