summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-02-08 12:33:43 +0000
committerDaniil Fedotov <dfedotov@pivotal.io>2016-02-08 12:33:43 +0000
commitd7ae42db7c3741c5a93da596ac0bd7efccd58985 (patch)
treede5a2ae2c0909293cfd0a57f69697a788338aeae /src
parent266f37db4b4bbf23c9559b10d7d716bfc66b6652 (diff)
downloadrabbitmq-server-git-d7ae42db7c3741c5a93da596ac0bd7efccd58985.tar.gz
Scripts to start erlang node with .conf file to generate config
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl20
-rw-r--r--src/rabbit_config.erl34
-rw-r--r--src/rabbit_prelaunch.erl16
3 files changed, 52 insertions, 18 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 23f5fa77b3..f2f08ff495 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -272,14 +272,16 @@ start() ->
boot() ->
start_it(fun() ->
- % case rabbit_config:prepare_config() of
- % ok -> ok;
- % {error, Reason} ->
- % log_boot_error_and_exit(
- % generate_config_file,
- % "~nConfig file generation failed ~p",
- % [Reason])
- % end,
+ case rabbit_config:prepare_config() of
+ {ok, ConfigFile} ->
+ rabbit_config:update_app_config(ConfigFile);
+ {error, Reason} ->
+ log_boot_error_and_exit(
+ generate_config_file,
+ "~nConfig file generation failed ~p",
+ [Reason]);
+ ok -> ok
+ end,
ok = ensure_application_loaded(),
HipeResult = rabbit_hipe:maybe_hipe_compile(),
ok = start_logger(),
@@ -817,7 +819,7 @@ config_files() ->
config_setting() ->
case application:get_env(rabbit, windows_service_config) of
{ok, File1} -> File1;
- undefined -> case os:getenv("RABBITMQ_CONFIG_FILE_ACTUAL") of
+ undefined -> case os:getenv("RABBITMQ_CONFIG_FILE") of
false -> none;
File2 -> File2
end
diff --git a/src/rabbit_config.erl b/src/rabbit_config.erl
index 5e75223f63..2ceb11a27d 100644
--- a/src/rabbit_config.erl
+++ b/src/rabbit_config.erl
@@ -1,10 +1,16 @@
-module(rabbit_config).
--export([generate_config_file/3, prepare_config/0]).
+-export([generate_config_file/3, prepare_config/0, prepare_config/1, update_app_config/1]).
prepare_config() ->
- case {init:get_argument(conf), init:get_argument(conf_dir), init:get_argument(conf_gen_script)} of
- {{ok, Configs}, {ok, ConfDir}, {ok, ConfScript}} ->
+ case init:get_argument(conf) of
+ {ok, Configs} -> prepare_config(Configs);
+ _ -> ok
+ end.
+
+prepare_config(Configs) ->
+ case {init:get_argument(conf_dir), init:get_argument(conf_gen_script)} of
+ {{ok, ConfDir}, {ok, ConfScript}} ->
ConfFiles = [Config++".conf" || [Config] <- Configs,
rabbit_file:is_file(Config ++
".conf")],
@@ -13,8 +19,7 @@ prepare_config() ->
_ ->
case generate_config_file(ConfFiles, ConfDir, ConfScript) of
{ok, GeneratedConfigFile} ->
- ok = application_controller:change_application_data(
- [], [GeneratedConfigFile]);
+ {ok, GeneratedConfigFile};
{error, Reason} ->
{error, Reason}
end
@@ -22,12 +27,25 @@ prepare_config() ->
_ -> ok
end.
+update_app_config(ConfigFile) ->
+ ok = application_controller:change_application_data([], [ConfigFile]).
+
generate_config_file(ConfFiles, ConfDir, ConfScript) ->
- rabbit_file:recursive_delete(filename:join([ConfDir, "generated"])),
- Command = [ ConfScript, " -e ", ConfDir, [[" -c ", ConfFile] || ConfFile <- ConfFiles]],
+ SchemaFile = filename:join([filename:dirname(ConfScript), "rabbitmq.schema"]),
+ GeneratedDir = filename:join([ConfDir, "generated"]),
+ rabbit_file:recursive_delete([GeneratedDir]),
+ Command = lists:concat(["escript ", ConfScript,
+ " -f rabbitmq -i ", SchemaFile,
+ " -e ", ConfDir,
+ [[" -c ", ConfFile] || ConfFile <- ConfFiles]]),
Result = rabbit_misc:os_cmd(Command),
case string:str(Result, " -config ") of
0 -> {error, {generaion_error, Result}};
- _ -> {ok, filename:join([ConfDir, "generated", "rabbitmq.config"])}
+ _ ->
+ [OutFile] = rabbit_file:wildcard("rabbitmq.*.config", GeneratedDir),
+ ResultFile = filename:join([GeneratedDir, "rabbitmq.config"]),
+ Ren = rabbit_file:rename(filename:join([GeneratedDir, OutFile]),
+ ResultFile),
+ {ok, ResultFile}
end.
\ No newline at end of file
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl
index 5ecdd75acc..9fb7e8b16c 100644
--- a/src/rabbit_prelaunch.erl
+++ b/src/rabbit_prelaunch.erl
@@ -83,7 +83,7 @@ dist_port_set_check() ->
false ->
ok;
File ->
- case file:consult(File ++ ".config") of
+ case get_config(File) of
{ok, [Config]} ->
Kernel = pget(kernel, Config, []),
case {pget(inet_dist_listen_min, Kernel, none),
@@ -98,6 +98,20 @@ dist_port_set_check() ->
end
end.
+get_config(File) ->
+ case rabbit_file:is_file(File ++ ".config") of
+ true -> file:consult(File ++ ".config");
+ false ->
+ case rabbit_file:is_file(File ++ ".conf") of
+ true ->
+ case rabbit_config:prepare_config([[File]]) of
+ {ok, ConfigFile} -> file:consult(ConfigFile);
+ Other -> {error, generation_error}
+ end;
+ false -> {error, enoent}
+ end
+ end.
+
dist_port_range_check() ->
case os:getenv("RABBITMQ_DIST_PORT") of
false -> ok;