Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add etcd create/update op for config management #4

Merged
merged 4 commits into from
Mar 21, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 56 additions & 0 deletions common/etcd_config_get.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

%%%
% feature: get configure info from etcd server
% params : Prefix, Appname, Key(option)
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret common/etcd_config_get.erl "/imstest/vip1/msync/workerconfig/all" "msync" "httpc_timeout"
% ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret common/etcd_config_get.erl "/imstest/vip1/msync/workerconfig/all" "msync"
% note : 在某一台msync/ejabberd 节点上执行即可
%%%

echo(off),

FparseKey =
fun(Key) ->
erlang:binary_to_atom(filename:basename(Key), latin1)
end,
Fparsevalue =
fun(Value) ->
case erl_scan:string(Value ++ ".") of
{ok, Tokens, _} ->
case erl_parse:parse_term(Tokens) of
{ok, Term} -> Term;
_Err -> undefined
end;
_Error ->
undefined
end
end,

EtcdKey0 =
case Args of
[Prefix, AppName, Par] ->
{ok, filename:join([Prefix, AppName, Par])};
[Prefix, AppName] ->
{ok, filename:join([Prefix, AppName])};
_ ->
{error, args_error}
end,
Res =
case EtcdKey0 of
{ok, EtcdKey} ->
etcdc:get(EtcdKey, [recursive]);
{error, Reason} ->
{error, Reason}
end,
case Res of
{error, _Reason} ->
io:format("~p~n", [Res]);
#{<<"node">> := #{<<"key">> := SingleKey, <<"value">> := SingleValue}} ->
io:format("{~p,~p}~n", [FparseKey(SingleKey), Fparsevalue(erlang:binary_to_list(SingleValue))]);
#{<<"node">> := #{<<"nodes">> := NodeList}} ->
[begin
#{<<"key">> := Keyx, <<"value">> := Valuex} = Node,
io:format("{~p,~p}~n", [FparseKey(Keyx), Fparsevalue(erlang:binary_to_list(Valuex))])
end || Node <- NodeList]
end,
ok.
19 changes: 19 additions & 0 deletions common/etcd_config_set.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

%%%
% feature: set configure info into etcd server
% params : Prefix, Appname, Key, value
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/etcd_config_get.erl "/imstest/vip1/msync/workerconfig/all" "msync" "httpc_timeout" "30000"
% ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/etcd_config_get.erl "/imstest/vip1/msync/workerconfig/all" "message_store" "log" "[{host, \"redis\"},{port, 6379},{db, 0},{pool_size, 1}]"
% note : 在某一台msync/ejabberd 节点上执行即可
%%%


echo(off),

case Args of
[Prefix, AppName, Key, Value] ->
io:format("~p~n", [etcdc:set(filename:join([Prefix, AppName, Key]), Value)]);
_ ->
io:format("~p~n", [{error, args_error}])
end,
ok.
10 changes: 10 additions & 0 deletions ejabberd/ejabberd_disable_etcd_config.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

%%%
% feature: disable etcd configure management feature on ejabberd
% params :
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/ejabberd_disable_etcd_config.erl
%%%

echo(off),
ok = ejabberd_etcd_config:disable_etcd_config(),
ok.
7 changes: 7 additions & 0 deletions ejabberd/ejabberd_disable_etcd_service_discovery.erl
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@

%%%
% feature: disable etcd service discovery feature on ejabberd
% params :
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/ejabberd_disable_etcd_service_discovery.erl
%%%

echo(off),
ejabberd_etcd_register:disable_etcd_service_disc(),
ok.
34 changes: 34 additions & 0 deletions ejabberd/ejabberd_enable_etcd_config.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

%%%
% feature: enable etcd configure management feature on ejabberd
% params :
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/ejabberd_enable_etcd_config.erl
%%%

echo(off),
EtcdClient =
{ejabberd_etcd_client,
{ejabberd_etcd_client, start_link, []},
permanent,
brutal_kill,
worker,
[ejabberd_etcd_client]},
case erlang:whereis(ejabberd_etcd_client) of
Pid when erlang:is_pid(Pid) ->
ok;
_ ->
case supervisor:start_child(ejabberd_sup, EtcdClient) of
{error, already_present} ->
supervisor:restart_child(ejabberd_sup, ejabberd_etcd_client),
ok;
{error, {already_started, _}} ->
ok;
{ok, _, _} ->
ok;
{ok, _} ->
ok
end
end,
true = erlang:is_pid(erlang:whereis(ejabberd_etcd_client)),
ok = ejabberd_etcd_config:enable_etcd_config(),
ok.
7 changes: 7 additions & 0 deletions ejabberd/ejabberd_enable_etcd_service_discovery.erl
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@

%%%
% feature: enable etcd service discovery feature on ejabberd
% params :
% example: ./erl_expect -sname ejabberd@ebs-ali-beijing-88 -setcookie secret ejabberd/ejabberd_enable_etcd_service_discovery.erl
%%%

echo(off),
EtcdClient =
{ejabberd_etcd_client,
Expand Down
10 changes: 10 additions & 0 deletions msync/msync_disable_etcd_config.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

%%%
% feature: disable etcd configure management feature on msync
% params :
% example: ./erl_expect -sname msync@ebs-ali-beijing-88 -setcookie secret msync/msync_disable_etcd_config.erl
%%%

echo(off),
ok = msync_etcd_config:disable_etcd_config(),
ok.
7 changes: 7 additions & 0 deletions msync/msync_disable_etcd_service_discovery.erl
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@

%%%
% feature: disable etcd service discovery feature on msync
% params :
% example: ./erl_expect -sname msync@ebs-ali-beijing-88 -setcookie secret msync/msync_disable_etcd_service_discovery.erl
%%%

echo(off),
msync_etcd_register:disable_etcd_service_disc(),
ok.
35 changes: 35 additions & 0 deletions msync/msync_enable_etcd_config.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

%%%
% feature: enable etcd configure management feature on msync
% params :
% example: ./erl_expect -sname msync@ebs-ali-beijing-88 -setcookie secret msync/msync_enable_etcd_config.erl
%%%


echo(off),
EtcdClient =
{msync_etcd_client,
{msync_etcd_client, start_link, []},
permanent,
brutal_kill,
worker,
[msync_etcd_client]},
case erlang:whereis(msync_etcd_client) of
Pid when erlang:is_pid(Pid) ->
ok;
_ ->
case supervisor:start_child(msync_sup, EtcdClient) of
{error, already_present} ->
supervisor:restart_child(msync_sup, msync_etcd_client),
ok;
{error, {already_started, _}} ->
ok;
{ok, _, _} ->
ok;
{ok, _} ->
ok
end
end,
true = erlang:is_pid(erlang:whereis(msync_etcd_client)),
ok = msync_etcd_config:enable_etcd_config(),
ok.
8 changes: 8 additions & 0 deletions msync/msync_enable_etcd_service_discovery.erl
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@

%%%
% feature: enable etcd service discovery feature on msync
% params :
% example: ./erl_expect -sname msync@ebs-ali-beijing-88 -setcookie secret msync/msync_enable_etcd_service_discovery.erl
%%%


echo(off),
EtcdClient =
{msync_etcd_client,
Expand Down