#!/usr/bin/env escript % 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([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("reloading modules...~n"), rpc:call(Node, euphorik_daemon, reload_euphorik, []), if Node_name =:= "yaws_dev" -> copy_database(Node); true -> true end, io:format("updating database...~n"), rpc:call(Node, euphorik_bd_admin, update, []); main(_) -> io:format("Usage: update_server.erl "), halt(1). 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]).