X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=tools%2Fupdate_server.erl;h=10b899b46be7bda73a0ecef59a448dc293c1d473;hp=72686b1f4686581fc1be4e94580cac6f0192e044;hb=HEAD;hpb=0fd41878c239877c274bd2bf58caf65b24977e52 diff --git a/tools/update_server.erl b/tools/update_server.erl index 72686b1..10b899b 100755 --- a/tools/update_server.erl +++ b/tools/update_server.erl @@ -1,9 +1,8 @@ #!/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'. @@ -11,27 +10,42 @@ hote() -> % 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 "), + io:format("Usage: update_server.erl "), 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]). +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]).