#!/usr/bin/env escript
-% coding: utf-8
-% Executé sur le serveur après la copie des fichiers lors de la mise en production.
-% Recharge les modules de euphorik et met à jour la BD.
-% TODO : construire le nom du noeud en fonction du nom de l'host
+% Execute remotly after the files has been copied.
+% Reload all modules et update the database.
+% TODO: build the node name from the host name.
hote() ->
'@overnux'.
% le premier argument est le nom du noeud est peut valoir :
% - yaws : noeud de production
% - yaws_dev : noeud de pre-production
-main([Nom_node]) when Nom_node =:= "yaws"; Nom_node =:= "yaws_dev" ->
- Node = list_to_atom(Nom_node ++ atom_to_list(hote())),
+main([Node_name]) when Node_name =:= "yaws"; Node_name =:= "yaws_dev" ->
+ Node = list_to_atom(Node_name ++ atom_to_list(hote())),
net_kernel:start([flynux, shortnames]),
- io:format("rechargement des modules..~n"),
+ io:format("reloading modules...~n"),
rpc:call(Node, euphorik_daemon, reload_euphorik, []),
- if Nom_node =:= "yaws_dev" -> copier_bd(Node);
+ if Node_name =:= "yaws_dev" -> copy_database(Node);
true -> true
end,
- io:format("mise à jour de la BD..~n"),
+ io:format("updating database...~n"),
rpc:call(Node, euphorik_bd_admin, update, []);
main(_) ->
- io:format("Usage : mise_en_prod.erl <node>"),
+ io:format("Usage: update_server.erl <node-name>"),
halt(1).
-% Copie la bd du noeud de production
-copier_bd(Node) ->
- io:format("Copie de la BD de production vers le noeude pre-production~n"),
- Fichier = "/tmp/backup_ek_tmp",
- Fichier2 = "/tmp/backup_ek_tmp2",
- rpc:call(yaws@overnux, mnesia, backup, [Fichier]),
- rpc:call(Node, euphorik_bd_admin, change_node_name, [yaws@overnux, yaws_dev@overnux, Fichier, Fichier2]),
- rpc:call(Node, mnesia, restore, [Fichier2, [{default_op, recreate_tables}]]),
- rpc:call(yaws@overnux, file, delete, [Fichier]),
- rpc:call(Node, file, delete, [Fichier2]).
-
\ No newline at end of file
+create_database_directory() ->
+ % Create the directory "var/database" if it doesn't exist.
+ {ok, Files_in_root} = file:list_dir("."),
+ Var_exists = lists:any(fun(Name) -> Name =:= "var" end, Files_in_root),
+ if not Var_exists ->
+ file:make_dir("var");
+ true -> ok
+ end,
+ {ok, Files_in_var} = file:list_dir("var"),
+ Database_exists = lists:any(fun(Name) -> Name =:= "database" end, Files_in_var),
+ if not Database_exists ->
+ file:make_dir("var/database");
+ true -> ok
+ end.
+
+% Copy the datbase from the production to pre production.
+copy_database(Node) ->
+ io:format("Copying production database to pre-production node~n"),
+ File = "/tmp/backup_ek_tmp",
+ File2 = "/tmp/backup_ek_tmp2",
+ rpc:call(yaws@overnux, mnesia, backup, [File]),
+ rpc:call(Node, euphorik_bd_admin, change_node_name, [yaws@overnux, yaws_dev@overnux, File, File2]),
+ rpc:call(Node, mnesia, restore, [File2, [{default_op, recreate_tables}]]),
+ rpc:call(yaws@overnux, file, delete, [File]),
+ rpc:call(Node, file, delete, [File2]).