]> granicus.if.org Git - ejabberd/commitdiff
* src/mod_configure.erl: Unknown tables or tables from now
authorMickaël Rémond <mickael.remond@process-one.net>
Sun, 7 May 2006 16:52:21 +0000 (16:52 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Sun, 7 May 2006 16:52:21 +0000 (16:52 +0000)
unused modules are ignored during restore. The restore can now be
performed in such case (EJAB-80).
* src/web/ejabberd_web_admin.er: Likewise.
* src/ejabberd_admin.erl: Likewise. Code refactoring. Common Mnesia
database restore function.

SVN Revision: 562

ChangeLog
src/ejabberd_ctl.erl
src/mod_configure.erl
src/web/ejabberd_web_admin.erl

index dc3dfebc64ca4654a0f019f886ecef1a6f3a2a6e..5e09f916e7211340b06c5cce8ae490732c40b523 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-05-07  Mickael Remond  <mickael.remond@process-one.net>
+
+       * src/mod_configure.erl: Unknown tables or tables from now unused
+       modules are ignored during restore. The restore can now be performed in
+        such case.
+       * src/web/ejabberd_web_admin.er: Likewise.
+       * src/ejabberd_admin.erl: Code refactoring. Common Mnesia database
+       restore function.
+
 2006-05-01  Mickael Remond  <mickael.remond@process-one.net>
 
        * src/ejabberd_ctl.erl: Unknown tables or tables from now unused
index e1bafa2c0066c92da1d5a4e867fb49a9fde2f83c..80d66f4cc9fd7dbc835fcb5a22766a938897ee6c 100644 (file)
@@ -8,6 +8,7 @@
 
 -module(ejabberd_ctl).
 -author('alexey@sevcom.net').
+-vsn('$Revision$ ').
 
 -export([start/0,
         init/0,
@@ -123,8 +124,7 @@ process(["load", Path]) ->
     end;
 
 process(["restore", Path]) ->
-    case mnesia:restore(Path, [{keep_tables,keep_tables()},
-                              {default_op, skip_tables}]) of
+    case ejabberd_admin:restore(Path) of 
        {atomic, _} ->
            ?STATUS_SUCCESS;
        {error, Reason} ->
@@ -328,35 +328,3 @@ dump_tab(F, T) ->
                     fun() -> mnesia:match_object(T, W, read) end),
     lists:foreach(
       fun(Term) -> io:format(F,"~p.~n", [setelement(1, Term, T)]) end, All).
-
-%% This function return a list of tables that should be kept from a previous
-%% version backup.
-%% Obsolete tables or tables created by module who are no longer used are not
-%% restored and are ignored.
-keep_tables() ->
-    lists:flatten([acl, passwd, config, local_config, disco_publish,
-                  keep_modules_tables()]).
-
-%% Return the list of modules tables in use, according to the list of actually
-%% loaded modules
-keep_modules_tables() ->                     
-    lists:map(fun(Module) ->
-                     module_tables(Module)
-             end,
-             gen_mod:loaded_modules(?MYNAME)).
-
-%% TODO: This mapping should probably be moved to a callback function in each
-%% module.
-%% Mapping between modules and their tables
-module_tables(mod_announce) -> [motd, motd_users];
-module_tables(mod_irc) -> [irc_custom];
-module_tables(mod_last) -> [last_activity];
-module_tables(mod_muc) -> [muc_room, muc_registered];
-module_tables(mod_offline) -> [offline_msg];
-module_tables(mod_privacy) -> [privacy];
-module_tables(mod_private) -> [private_storage];
-module_tables(mod_pubsub) -> [pubsub_node];
-module_tables(mod_roster) -> [roster];
-module_tables(mod_shared_roster) -> [sr_group, sr_user];
-module_tables(mod_vcard) -> [vcard, vcard_search];
-module_tables(_Other) -> [].
index da2b82cfee37906afbc3dbec6c1e1fc2b1f7ed73..541b5031879568da733795d97434005eb30e54ab 100644 (file)
@@ -1126,8 +1126,7 @@ set_form(_Host, ["running nodes", ENode, "backup", "restore"], _Lang, XData) ->
                false ->
                    {error, ?ERR_BAD_REQUEST};
                {value, {_, [String]}} ->
-                   case rpc:call(Node, mnesia, restore,
-                                 [String, [{default_op, keep_tables}]]) of
+                    case rpc:call(Node, ejabberd_admin, restore, [String]) of
                        {badrpc, _Reason} ->
                            {error, ?ERR_INTERNAL_SERVER_ERROR};
                        {error, _Reason} ->
index fc3f2bff64e4e9a2e95a64b897013cf72c341564..da04d20c07ca2b444d58cb2460727c5d9efaa589 100644 (file)
@@ -5,8 +5,8 @@
 %%% Created :  9 Apr 2004 by Alexey Shchepin <alexey@sevcom.net>
 %%% Id      : $Id$
 %%%----------------------------------------------------------------------
-%%% Copyright (c) 2004-2005 Alexey Shchepin
-%%% Copyright (c) 2004-2005 Process One
+%%% Copyright (c) 2004-2006 Alexey Shchepin
+%%% Copyright (c) 2004-2006 Process One
 %%%----------------------------------------------------------------------
 
 -module(ejabberd_web_admin).
@@ -2179,10 +2179,8 @@ node_backup_parse_query(Node, Query) ->
                                          rpc:call(Node, mnesia,
                                                   backup, [Path]);
                                      "restore" ->
-                                         rpc:call(Node, mnesia,
-                                                  restore,
-                                                  [Path, [{default_op,
-                                                           keep_tables}]]);
+                                         rpc:call(Node, ejabberd_admin,
+                                                  restore, [Path]);
                                      "fallback" ->
                                          rpc:call(Node, mnesia,
                                                   install_fallback, [Path]);