1 |
|
-module(mongoose_cets_discovery). |
2 |
|
-export([start_link/1]). |
3 |
|
-export([supervisor_specs/0]). |
4 |
|
|
5 |
|
-ignore_xref([start_link/1]). |
6 |
|
|
7 |
|
start_link(DiscoOpts) -> |
8 |
6 |
Res = cets_discovery:start_link(DiscoOpts), |
9 |
|
%% Ensure metrics are added after the disco start |
10 |
6 |
mongoose_metrics_probe_cets:start(), |
11 |
6 |
Res. |
12 |
|
|
13 |
|
-include("mongoose_logger.hrl"). |
14 |
|
|
15 |
|
supervisor_specs() -> |
16 |
55 |
supervisor_specs(mongoose_config:get_opt([internal_databases, cets], disabled)). |
17 |
|
|
18 |
|
supervisor_specs(disabled) -> |
19 |
55 |
[]; |
20 |
|
supervisor_specs(#{backend := DiscoBackend, cluster_name := ClusterName} = Opts) -> |
21 |
:-( |
DiscoFile = |
22 |
|
case {DiscoBackend, Opts} of |
23 |
|
{file, #{node_list_file := NodeFile}} -> |
24 |
:-( |
NodeFile; |
25 |
|
{file, _} -> |
26 |
:-( |
?LOG_CRITICAL(#{what => node_list_file_option_is_required, |
27 |
:-( |
text => <<"Specify internal_databases.cets.node_list_file option">>}), |
28 |
:-( |
error(node_list_file_option_is_required); |
29 |
|
_ -> |
30 |
:-( |
undefined |
31 |
|
end, |
32 |
:-( |
DiscoOpts = #{ |
33 |
|
backend_module => disco_backend_to_module(DiscoBackend), |
34 |
|
cluster_name => atom_to_binary(ClusterName), |
35 |
|
node_name_to_insert => atom_to_binary(node(), latin1), |
36 |
|
node_ip_binary => get_node_ip_binary(), |
37 |
|
name => mongoose_cets_discovery, disco_file => DiscoFile}, |
38 |
:-( |
CetsDisco = #{ |
39 |
|
id => cets_discovery, |
40 |
|
start => {?MODULE, start_link, [DiscoOpts]}, |
41 |
|
restart => permanent, |
42 |
|
type => worker, |
43 |
|
shutdown => infinity, |
44 |
|
modules => [cets_discovery]}, |
45 |
:-( |
[CetsDisco]. |
46 |
|
|
47 |
:-( |
disco_backend_to_module(rdbms) -> mongoose_cets_discovery_rdbms; |
48 |
:-( |
disco_backend_to_module(file) -> cets_discovery_file. |
49 |
|
|
50 |
|
get_node_ip_binary() -> |
51 |
:-( |
list_to_binary(os:getenv("MIM_NODE_IP", "")). |