Hello community,

here is the log from the commit of package yast2-snapper for openSUSE:Factory
checked in at Wed May 18 09:22:39 CEST 2011.



--------
--- yast2-snapper/yast2-snapper.changes 2011-04-18 09:20:39.000000000 +0200
+++ /mounts/work_src_done/STABLE/yast2-snapper/yast2-snapper.changes    
2011-05-11 11:27:09.000000000 +0200
@@ -1,0 +2,7 @@
+Wed May 11 10:41:42 CEST 2011 - [email protected]
+
+- added initialization code to agent, check for exceptions
+- updated agent documentation
+- 2.21.5 
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  _cvsignore
  yast2-snapper-2.21.4.tar.bz2

New:
----
  yast2-snapper-2.21.5.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-snapper.spec ++++++
--- /var/tmp/diff_new_pack.WnyffJ/_old  2011-05-18 09:17:57.000000000 +0200
+++ /var/tmp/diff_new_pack.WnyffJ/_new  2011-05-18 09:17:57.000000000 +0200
@@ -19,18 +19,18 @@
 
 
 Name:           yast2-snapper
-Version:        2.21.4
+Version:        2.21.5
 Release:        1
 
 Group:          System/YaST
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Source0:        yast2-snapper-2.21.4.tar.bz2
+Source0:        yast2-snapper-2.21.5.tar.bz2
 
 Prefix:         /usr
 
-Requires:       yast2 libsnapper
-License:        GPLv2+
-BuildRequires:  doxygen gcc-c++ libsnapper libsnapper-devel perl-XML-Writer 
update-desktop-files yast2 yast2-core-devel yast2-devtools yast2-testsuite
+Requires:       yast2
+License:        GPL v2 or later
+BuildRequires:  doxygen gcc-c++ libsnapper-devel perl-XML-Writer 
update-desktop-files yast2 yast2-core-devel yast2-devtools yast2-testsuite
 
 Summary:        YaST - file system snapshots review
 
@@ -38,7 +38,7 @@
 YaST module for accessing and managing btrfs system snapshots
 
 %prep
-%setup -n yast2-snapper-2.21.4
+%setup -n yast2-snapper-2.21.5
 
 %build
 %{prefix}/bin/y2tool y2autoconf

++++++ yast2-snapper-2.21.4.tar.bz2 -> yast2-snapper-2.21.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-snapper-2.21.4/VERSION 
new/yast2-snapper-2.21.5/VERSION
--- old/yast2-snapper-2.21.4/VERSION    2011-04-18 09:18:55.000000000 +0200
+++ new/yast2-snapper-2.21.5/VERSION    2011-05-11 10:42:39.000000000 +0200
@@ -1 +1 @@
-2.21.4
+2.21.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-snapper-2.21.4/agent-snapper/doc/snapper.html 
new/yast2-snapper-2.21.5/agent-snapper/doc/snapper.html
--- old/yast2-snapper-2.21.4/agent-snapper/doc/snapper.html     2011-03-24 
13:15:50.000000000 +0100
+++ new/yast2-snapper-2.21.5/agent-snapper/doc/snapper.html     2011-05-11 
11:24:58.000000000 +0200
@@ -32,6 +32,8 @@
 
 <ul><tt>.snapper</tt></ul>
 
+The initialization call of Execute (.snapper) must be done before any other 
calls.
+
 <P>
 <h2>Complete Read paths table</h2>
 
@@ -43,7 +45,18 @@
        <th align="left">Result</th>
     </tr>
 
-       <tr><td><tt>.snapper.snapshots</td><td></td><td 
align="left">YCPList</td>
+       <tr><td><tt>.snapper.error</td><td>(none)</td><td 
align="left">YCPMap</td>
+       <td>Return information about last error.<br>
+       <b>Example of result</b>:
+       <pre>
+           $[
+               "type"          : "config_not_found"
+           ]
+       </pre>
+       </td>
+       </tr>
+
+       <tr><td><tt>.snapper.snapshots</td><td>(none)</td><td 
align="left">YCPList</td>
        <td>Return list of current snapshot maps.<br>
        <b>Example of result</b>:
        <pre>
@@ -75,7 +88,7 @@
        </td>
        </tr>
 
-       <tr><td><tt>.snapper.diff</td><td>YCPMap</td><td 
align="left">YCPList</td>
+       <tr><td><tt>.snapper.diff_list</td><td>YCPMap</td><td 
align="left">YCPList</td>
        <td>Returns the list of files modified between given snapshots.
        Each file is described by YCPMap which contains file path and type of 
the change.
        Argument map contains 2 integers, identifying the snapshots.<br>
@@ -100,6 +113,93 @@
          ]
        </pre>
        </td></tr>
+
+       <tr><td><tt>.snapper.diff_index</td><td>YCPMap</td><td 
align="left">YCPMap</td>
+       <td>Returns the differences between snapnots num1 and num2 as one-level 
map
+       (mapping each file to its changes).<br>
+       <b>Example of argument map</b>:
+           <pre>
+           $[
+               "from"  : 1,
+               "to"    : 2
+           $]
+           </pre>
+       <b>Example of result</b>:
+       <pre>
+         $[
+               "/etc/group"            : "c...",
+               "/etc/group.YaST2save"  : "c..."
+         ]
+       </pre>
+       </td></tr>
+
+       <tr><td><tt>.snapper.diff_tree</td><td>YCPMap</td><td 
align="left">YCPMap</td>
+       <td>Returns the differences between snapnots num1 and num2 as a tree.
+       Map is recursively describing the filesystem structure; it is used to 
build Tree widget contents
+       in yast2-snapper UI.
+       <br>
+       <b>Example of argument map</b>:
+           <pre>
+           $[
+               "from"  : 1,
+               "to"    : 2
+           $]
+           </pre>
+       <b>Example of result</b>:
+       <pre>
+           $[
+               "etc"   : $[
+                   "group"             : $[],
+                   "group.YaST2save"   : $[],
+                   "passwd"            : $[],
+                   "passwd.YaST2save"  : $[]
+               ],
+               "var"   : $[
+                   "log"               : $[
+                       "YaST2"         : $[
+                           "y2changes" : $[],
+                           "y2log"     : $[]
+                       ],
+                       "messages"      : $[],
+                       "snapper.log"   : $[]
+                   ]
+               ]
+           ]
+       </pre>
+       </td></tr>
+</table>
+
+<P>
+<h2>Complete Execute paths table</h2>
+
+<table border=3>
+    <tr>
+       <th width="20%" align="left">Path</th>
+        <th width="10%" align="left">Argument</th>
+       <th width="10%" align="left">Type of Result</th>
+       <th align="left">Result</th>
+    </tr>
+
+       <tr><td><tt>.snapper</td><td>(none)</td><td align="left">YCPBoolean</td>
+       <td>Initializes snapper object. In case of init failure, sets the 
internal error ID.
+       Use Read (.snapper.error) to get the error info.
+       </td>
+       </tr>
+
+       <tr><td><tt>.snapper.rollback</td><td>YCPMap</td><td 
align="left">YCPBoolean</td>
+       <td>Rollback the list of given files from snapshot num1 to num2. If 
num2 is not present,
+       current system is used as a default.
+       <b>Example of argument map</b>:
+           <pre>
+           $[
+               "files" : [
+                   "/etc/passwd",
+                   "/etc/group"
+               ]
+               "from"  : 1,
+           $]
+           </pre>
+       </td></tr>
 </table>
 
 <P>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-snapper-2.21.4/agent-snapper/src/SnapperAgent.cc 
new/yast2-snapper-2.21.5/agent-snapper/src/SnapperAgent.cc
--- old/yast2-snapper-2.21.4/agent-snapper/src/SnapperAgent.cc  2011-04-15 
11:37:11.000000000 +0200
+++ new/yast2-snapper-2.21.5/agent-snapper/src/SnapperAgent.cc  2011-05-06 
08:28:32.000000000 +0200
@@ -86,7 +86,9 @@
  */
 SnapperAgent::SnapperAgent() : SCRAgent()
 {
-    sh = createSnapper();
+    sh                 = NULL;
+    snapper_initialized        = false;
+    snapper_error      = "";
 }
 
 /**
@@ -94,7 +96,10 @@
  */
 SnapperAgent::~SnapperAgent()
 {
-    deleteSnapper(sh);
+    if (sh)
+    {
+       deleteSnapper(sh);
+    }
 }
 
 
@@ -133,14 +138,21 @@
     YCPMap argmap;
     if (!arg.isNull() && arg->isMap())
        argmap = arg->asMap();
+
+    if (!snapper_initialized && PC(0) != "error") {
+       y2error ("snapper not initialized: use Execute (.snapper) first!");
+       snapper_error = "not_initialized";
+       return YCPVoid();
+    }
        
     if (path->length() == 1) {
 
        /**
-        * error: Read(.snapper.error) -> returns last error message
+        * error: Read (.snapper.error) -> returns last error message
         */
        if (PC(0) == "error") {
            YCPMap retmap;
+           retmap->add (YCPString ("type"), YCPString (snapper_error));
            return retmap;
        }
        /**
@@ -286,6 +298,38 @@
     if (!arg.isNull() && arg->isMap())
        argmap = arg->asMap();
 
+    /**
+     * Execute (.snapper) call: Initialize snapper object
+     */
+    if (path->length() == 0) {
+
+       try {
+           sh = createSnapper();
+       }
+       catch (const ConfigNotFoundException& e)
+       {
+           y2error ("Config not found.");
+           snapper_error       = "config_not_found";
+           sh                  = NULL;
+           return YCPBoolean (false);
+       }
+       catch (const InvalidConfigException& e)
+       {
+           y2error ("Config is invalid.");
+           snapper_error       = "config_invalid";
+           sh                  = NULL;
+           return YCPBoolean (false);
+       }
+       snapper_initialized     = true;
+       return ret;
+    }
+
+    if (!snapper_initialized) {
+       y2error ("snapper not initialized: use Execute (.snapper) first!");
+       snapper_error = "not_initialized";
+       return YCPVoid();
+    }
+
     if (path->length() == 1) {
 
        /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-snapper-2.21.4/agent-snapper/src/SnapperAgent.h 
new/yast2-snapper-2.21.5/agent-snapper/src/SnapperAgent.h
--- old/yast2-snapper-2.21.4/agent-snapper/src/SnapperAgent.h   2011-04-14 
10:50:11.000000000 +0200
+++ new/yast2-snapper-2.21.5/agent-snapper/src/SnapperAgent.h   2011-05-06 
08:06:27.000000000 +0200
@@ -29,6 +29,10 @@
      * Agent private variables and methods
      */
 
+    snapper::Snapper* sh;
+    bool snapper_initialized;
+    string snapper_error;
+
     /**
      * search the map for value of given key; both key and value have to be 
strings
      * when key is not present, empty string is returned
@@ -92,11 +96,6 @@
      * Used for mounting the agent.
      */
     virtual YCPValue otherCommand(const YCPTerm& term);
-
-private:
-
-    snapper::Snapper* sh;
-
 };
 
 #endif /* _SnapperAgent_h */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-snapper-2.21.4/src/Snapper.ycp 
new/yast2-snapper-2.21.5/src/Snapper.ycp
--- old/yast2-snapper-2.21.4/src/Snapper.ycp    2011-04-15 11:34:54.000000000 
+0200
+++ new/yast2-snapper-2.21.5/src/Snapper.ycp    2011-05-06 08:06:27.000000000 
+0200
@@ -23,7 +23,7 @@
  * Summary:    Snapper settings, input and output functions
  * Authors:    Jiri Suchomel <[email protected]>
  *
- * $Id: Snapper.ycp 63782 2011-04-15 09:33:15Z jsuchome $
+ * $Id: Snapper.ycp 63915 2011-05-05 15:42:45Z jsuchome $
  *
  * Representation of the configuration of snapper.
  * Input and output routines.
@@ -37,6 +37,7 @@
 import "FileUtils";
 import "Label";
 import "Progress";
+import "Report";
 
 
 // global list of all snapshot
@@ -163,6 +164,41 @@
     return true;
 }
 
+global map LastSnapperErrorMap () {
+
+    return (map) SCR::Read (.snapper.error);
+}
+
+/**
+ * Initialize snapper agent
+ * Return true on success
+ */
+global boolean InitializeSnapper () {
+
+    boolean init       = (boolean) SCR::Execute (.snapper);
+    if (!init)
+    {
+       map err_map     = LastSnapperErrorMap ();
+       string type     = err_map["type"]:"";
+       string details  = _("Reason not known.");
+       if (type == "config_not_found")
+       {
+           details     = _("Configuration not found.");
+       }
+       else if (type == "config_invalid")
+       {
+           details     = _("Configuration is not valid.");
+       }
+
+       y2warning ("init failed with '%1'", err_map);
+       // error popup
+       Report::Error (sformat (_("Failed to initialize snapper library:
+%1"), details));
+    }
+    return init;
+
+}
+
 /**
  * Read all snapper settings
  * @return true on success
@@ -188,7 +224,11 @@
     );
 
     Progress::NextStage();
-    // read database
+
+    if (!InitializeSnapper ())
+    {
+       return false;
+    }
 
     ReadSnapshots ();
 


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to