ソースを参照

fix(script): nodetool use remsh prefixed node name

Zaiming Shi 5 年 前
コミット
6476a5ea92
3 ファイル変更12 行追加13 行削除
  1. 4 2
      bin/emqx
  2. 3 2
      bin/emqx_ctl
  3. 5 9
      bin/nodetool

+ 4 - 2
bin/emqx

@@ -280,12 +280,13 @@ if [ -z "$NAME_ARG" ]; then
     [ -z "$NODENAME" ] && [ -n "$EMQX_NAME" ] && [ -n "$EMQX_HOST" ] && NODENAME="${EMQX_NAME}@${EMQX_HOST}"
     if [ -z "$NODENAME" ] && [ "$IS_BOOT_COMMAND" = 'no' ]; then
         # for non-boot commands, inspect vm.<time>.args for node name
+        # shellcheck disable=SC2012,SC2086
         LATEST_VM_ARGS="$(ls -t $RUNNER_DATA_DIR/configs/vm.*.args | head -1)"
         if [ -z "$LATEST_VM_ARGS" ]; then
             echo "For command $1, there is no vm.*.args config file found in $RUNNER_DATA_DIR/configs/"
             exit 1
         fi
-        NODENAME="$(grep -E '^-name' $LATEST_VM_ARGS | awk '{print $2}')"
+        NODENAME="$(grep -E '^-name' "$LATEST_VM_ARGS" | awk '{print $2}')"
     else
         # for boot commands, inspect emqx.conf for node name
         NODENAME=$(grep -E '^[ \t]*node.name[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | cut -d = -f 2-)
@@ -316,12 +317,13 @@ PIPE_DIR="${PIPE_DIR:-/$RUNNER_DATA_DIR/${WHOAMI}_erl_pipes/$NAME/}"
 # or inspect vm.<time>.args
 COOKIE="${EMQX_NODE_COOKIE:-}"
 if [ -z "$COOKIE" ] && [ "$IS_BOOT_COMMAND" = 'no' ]; then
+    # shellcheck disable=SC2012,SC2086
     LATEST_VM_ARGS="$(ls -t $RUNNER_DATA_DIR/configs/vm.*.args | head -1)"
     if [ -z "$LATEST_VM_ARGS" ]; then
         echo "For command $1, there is no vm.*.args config file found in $RUNNER_DATA_DIR/configs/"
         exit 1
     fi
-    COOKIE="$(grep -E '^-setcookie' $LATEST_VM_ARGS | awk '{print $2}')"
+    COOKIE="$(grep -E '^-setcookie' "$LATEST_VM_ARGS" | awk '{print $2}')"
     if [ -z "$COOKIE" ]; then
         echoerr "Please set node.cookie in $RUNNER_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE_COOKIE"
         exit 1

+ 3 - 2
bin/emqx_ctl

@@ -8,6 +8,7 @@ ROOT_DIR="$(cd "$(dirname "$(readlink "$0" || echo "$0")")"/..; pwd -P)"
 # shellcheck disable=SC1090
 . "$ROOT_DIR"/releases/emqx_vars
 
+# shellcheck disable=SC2012,SC2086
 LATEST_VM_ARGS="$(ls -t $RUNNER_DATA_DIR/configs/vm.*.args | head -1)"
 if [ -z "$LATEST_VM_ARGS" ]; then
     echo "No vm.*.args config file found in $RUNNER_DATA_DIR/configs/"
@@ -41,7 +42,7 @@ relx_nodetool() {
 if [ -z "$NAME_ARG" ]; then
     NODENAME="${EMQX_NODE_NAME:-}"
     [ -z "$NODENAME" ] && [ -n "$EMQX_NAME" ] && [ -n "$EMQX_HOST" ] && NODENAME="${EMQX_NAME}@${EMQX_HOST}"
-    [ -z "$NODENAME" ] && NODENAME="$(grep -E '^-name' $LATEST_VM_ARGS | awk '{print $2}')"
+    [ -z "$NODENAME" ] && NODENAME="$(grep -E '^-name' "$LATEST_VM_ARGS" | awk '{print $2}')"
     if [ -z "$NODENAME" ]; then
         echoerr "vm.args needs to have a -name parameter."
         echoerr "  -sname is not supported."
@@ -57,7 +58,7 @@ NAME_TYPE="$(echo "$NAME_ARG" | awk '{print $1}')"
 NAME="$(echo "$NAME_ARG" | awk '{print $2}')"
 
 COOKIE="${EMQX_NODE_COOKIE:-}"
-[ -z "$COOKIE" ] && COOKIE="$(grep -E '^-setcookie' $LATEST_VM_ARGS | awk '{print $2}')"
+[ -z "$COOKIE" ] && COOKIE="$(grep -E '^-setcookie' "$LATEST_VM_ARGS" | awk '{print $2}')"
 if [ -z "$COOKIE" ]; then
     echoerr "Please set node.cookie in $RUNNER_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE_COOKIE"
     exit 1

+ 5 - 9
bin/nodetool

@@ -24,13 +24,13 @@ main(Args) ->
     ok = do_with_halt(Args, "chkconfig", fun chkconfig/1),
     Args1 = do_with_ret(Args, "-name",
                         fun(TargetName) ->
-                                ThisNode = append_node_suffix(TargetName, "_maint_"),
+                                ThisNode = this_node_name(TargetName),
                                 {ok, _} = net_kernel:start([ThisNode, longnames]),
                                 put(target_node, nodename(TargetName))
                         end),
     Args2 = do_with_ret(Args1, "-sname",
                         fun(TargetName) ->
-                                ThisNode = append_node_suffix(TargetName, "_maint_"),
+                                ThisNode = this_node_name(TargetName),
                                 {ok, _} = net_kernel:start([ThisNode, shortnames]),
                                 put(target_node, nodename(TargetName))
                         end),
@@ -200,13 +200,9 @@ nodename(Name) ->
             list_to_atom(lists:concat([Node, "@", Host]))
     end.
 
-append_node_suffix(Name, Suffix) ->
-    case re:split(Name, "@", [{return, list}, unicode]) of
-        [Node, Host] ->
-            list_to_atom(lists:concat([Node, Suffix, os:getpid(), "@", Host]));
-        [Node] ->
-            list_to_atom(lists:concat([Node, Suffix, os:getpid()]))
-    end.
+this_node_name(Name) ->
+    [Node, Host] = re:split(Name, "@", [{return, list}, unicode]),
+    list_to_atom(lists:concat(["remsh_maint_", Node, os:getpid(), "@", Host])).
 
 %% For windows???
 create_mnesia_dir(DataDir, NodeName) ->