Sha256: be94ccf28d2906bd06991fbdaf5972f3ea3b16e7861e49620a571d58e103d523

Contents?: true

Size: 1.5 KB

Versions: 61

Compression:

Stored size: 1.5 KB

Contents

-module(pm_cluster).

-ifdef(EUNIT).
-include_lib("eunit/include/eunit.hrl").
-endif.

-include_lib("../include/defines.hrl").

-export ([slaves/1, slaves/0]).
-export ([get_live_nodes/0]).
-export ([send_call/2, master/0]).

-export ([any_new_servers/0]).

% gen_server:call(?MASTER_SERVER, {Type, Args}).
send_call(Type, Args) ->
	Nodes = get_live_nodes(),
	rpc:multicall(Nodes, pm_node, Type, [Args]).

master() ->
	{erlang:node()}.

slaves([]) ->
	ok;

slaves([Host|Hosts]) ->
	Args = erl_system_args(),
	NodeName = "pp",
	{ok, Node} = slave:start_link(Host, NodeName, Args),
	io:format("Erlang node started = [~p]~n", [Node]),
	slaves(Hosts).

slaves() ->	get_live_nodes().

erl_system_args()->
	Shared = case init:get_argument(shared) of
		error -> " ";
		{ok,[[]]} -> " -shared "
	end,
	lists:append(
		["-rsh ssh -setcookie", 
		atom_to_list(erlang:get_cookie()),
		Shared, " +Mea r10b "
	]).

any_new_servers() ->
	String = ". /etc/profile && server-list-active -c name",
	NodesFromActive = lists:map(fun
		(No) ->
			erlang:list_to_atom(lists:append([No, "@", No]))
	end,string:tokens(os:cmd(String), "\n\t")),
	% Nodes -- get_live_nodes(),
	NewServers = [X || X <- NodesFromActive, (lists:member(X, get_live_nodes()) /= true) ],
	NewServers.
	
% Get the live nodes that are NOT client nodes
get_live_nodes() ->
	ClientString = "client",
	[X || X <- nodes(), (erlang:is_atom(regexp:first_match(erlang:atom_to_list(X), ClientString))) ].
%% Do not forget to start erlang with a command like:
%% erl -rsh ssh -sname clustmaster

Version data entries

61 entries across 61 versions & 3 rubygems

Version Path
auser-poolparty-0.2.36 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.37 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.38 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.39 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.40 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.41 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.42 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.44 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.45 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.46 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.47 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.48 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.49 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.50 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.51 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.52 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.53 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.54 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.55 lib/erlang/messenger/src/pm_cluster.erl
auser-poolparty-0.2.56 lib/erlang/messenger/src/pm_cluster.erl