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

View File

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