Просмотр исходного кода

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

This allows Erlang expressions to be evaluated easily even on nodes
running Elixir.
Thales Macedo Garitezi 4 лет назад
Родитель
Сommit
1b3b2c0d03
2 измененных файлов с 12 добавлено и 9 удалено
  1. 2 8
      .ci/docker-compose-file/scripts/run-emqx.sh
  2. 10 1
      bin/emqx

+ 2 - 8
.ci/docker-compose-file/scripts/run-emqx.sh

@@ -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() {

+ 10 - 1
bin/emqx

@@ -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