diff options
| author | Dave Smith <dizzyd@dizzyd.com> | 2013-06-12 08:05:53 -0700 | 
|---|---|---|
| committer | Dave Smith <dizzyd@dizzyd.com> | 2013-06-12 08:05:53 -0700 | 
| commit | a94c96895148bd89049eee24ce83d6af882173d4 (patch) | |
| tree | 6eca77e494842088c3e601f6ebd0d21d73438582 /test/upgrade_project/rel/files/nodetool | |
| parent | ef0fd4089fd2efd4ba8941de73ce6932e47e3a7e (diff) | |
| parent | 500b62a890db84b233e8277e63a634bf2b157523 (diff) | |
Merge pull request #97 from tuncer/simplenode-sync
Sync test/upgrade_project/rel/files with priv/templates
Diffstat (limited to 'test/upgrade_project/rel/files/nodetool')
| -rw-r--r-- | test/upgrade_project/rel/files/nodetool | 58 | 
1 files changed, 51 insertions, 7 deletions
| diff --git a/test/upgrade_project/rel/files/nodetool b/test/upgrade_project/rel/files/nodetool index eb08fa4..ce06c6a 100644 --- a/test/upgrade_project/rel/files/nodetool +++ b/test/upgrade_project/rel/files/nodetool @@ -1,3 +1,4 @@ +#!/usr/bin/env escript  %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-  %% ex: ft=erlang ts=4 sw=4 et  %% ------------------------------------------------------------------- @@ -5,25 +6,51 @@  %% nodetool: Helper Script for interacting with live nodes  %%  %% ------------------------------------------------------------------- -  main(Args) ->      ok = start_epmd(),      %% Extract the args      {RestArgs, TargetNode} = process_args(Args, [], undefined), +    %% any commands that don't need a running node +    case RestArgs of +        ["chkconfig", File] -> +            case file:consult(File) of +                {ok, _} -> +                    io:format("ok\n"), +                    halt(0); +                {error, {Line, Mod, Term}} -> +                    io:format(standard_error, ["Error on line ", +                              file:format_error({Line, Mod, Term}), "\n"], []), +                    halt(1); +                {error, R} -> +                    io:format(standard_error, ["Error reading config file: ", +                              file:format_error(R), "\n"], []), +                    halt(1) +            end; +        _ -> +            ok +    end, +      %% See if the node is currently running  -- if it's not, we'll bail -    case {net_kernel:hidden_connect_node(TargetNode), net_adm:ping(TargetNode)} of +    case {net_kernel:hidden_connect_node(TargetNode), +          net_adm:ping(TargetNode)} of          {true, pong} ->              ok; +        {false,pong} -> +            io:format("Failed to connect to node ~p .\n", [TargetNode]), +            halt(1);          {_, pang} ->              io:format("Node ~p not responding to pings.\n", [TargetNode]),              halt(1)      end,      case RestArgs of +        ["getpid"] -> +            io:format("~p\n", +                      [list_to_integer(rpc:call(TargetNode, os, getpid, []))]);          ["ping"] -> -            %% If we got this far, the node already responsed to a ping, so just dump -            %% a "pong" +            %% If we got this far, the node already responsed to a +            %% ping, so just dump a "pong"              io:format("pong\n");          ["stop"] ->              io:format("~p\n", [rpc:call(TargetNode, init, stop, [], 60000)]); @@ -32,7 +59,9 @@ main(Args) ->          ["reboot"] ->              io:format("~p\n", [rpc:call(TargetNode, init, reboot, [], 60000)]);          ["rpc", Module, Function | RpcArgs] -> -            case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function), +            case rpc:call(TargetNode, +                          list_to_atom(Module), +                          list_to_atom(Function),                            [RpcArgs], 60000) of                  ok ->                      ok; @@ -42,8 +71,23 @@ main(Args) ->                  _ ->                      halt(1)              end; +        ["rpc_infinity", Module, Function | RpcArgs] -> +            case rpc:call(TargetNode, +                          list_to_atom(Module), +                          list_to_atom(Function), +                          [RpcArgs], infinity) of +                ok -> +                    ok; +                {badrpc, Reason} -> +                    io:format("RPC to ~p failed: ~p\n", [TargetNode, Reason]), +                    halt(1); +                _ -> +                    halt(1) +            end;          ["rpcterms", Module, Function, ArgsAsString] -> -            case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function), +            case rpc:call(TargetNode, +                          list_to_atom(Module), +                          list_to_atom(Function),                            consult(ArgsAsString), 60000) of                  {badrpc, Reason} ->                      io:format("RPC to ~p failed: ~p\n", [TargetNode, Reason]), @@ -53,7 +97,7 @@ main(Args) ->              end;          Other ->              io:format("Other: ~p\n", [Other]), -            io:format("Usage: nodetool {ping|stop|restart|reboot}\n") +            io:format("Usage: nodetool {chkconfig|getpid|ping|stop|restart|reboot|rpc|rpc_infinity|rpcterms}\n")      end,      net_kernel:stop(). | 
