[yast-commit] r63945 - in /branches/SuSE-Code-11-SP2-Branch/snapper: ./ agent-snapper/doc/ agent-snapper/src/ package/ src/
![](https://seccdn.libravatar.org/avatar/60813f3f932f58dedcb16c313b400a2e.jpg?s=120&d=mm&r=g)
Author: jsuchome Date: Wed May 11 11:31:04 2011 New Revision: 63945 URL: http://svn.opensuse.org/viewcvs/yast?rev=63945&view=rev Log: - added initialization code to agent, check for exceptions - updated agent documentation - 2.17.1 Modified: branches/SuSE-Code-11-SP2-Branch/snapper/VERSION branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/doc/snapper.html branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.cc branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.h branches/SuSE-Code-11-SP2-Branch/snapper/package/yast2-snapper.changes branches/SuSE-Code-11-SP2-Branch/snapper/src/Snapper.ycp Modified: branches/SuSE-Code-11-SP2-Branch/snapper/VERSION URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/VERSION?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/VERSION (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/VERSION Wed May 11 11:31:04 2011 @@ -1 +1 @@ -2.17.0 +2.17.1 Modified: branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/doc/snapper.html URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/doc/snapper.html?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/doc/snapper.html (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/doc/snapper.html Wed May 11 11:31:04 2011 @@ -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> Modified: branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.cc URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.cc?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.cc (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.cc Wed May 11 11:31:04 2011 @@ -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) { /** Modified: branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.h URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.h?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.h (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/agent-snapper/src/SnapperAgent.h Wed May 11 11:31:04 2011 @@ -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 */ Modified: branches/SuSE-Code-11-SP2-Branch/snapper/package/yast2-snapper.changes URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/package/yast2-snapper.changes?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/package/yast2-snapper.changes (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/package/yast2-snapper.changes Wed May 11 11:31:04 2011 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Wed May 11 11:28:15 CEST 2011 - jsuchome@suse.cz + +- added initialization code to agent, check for exceptions +- updated agent documentation +- 2.17.1 + +------------------------------------------------------------------- Tue Apr 19 11:24:05 CEST 2011 - jsuchome@suse.cz - initial version for SP2, based on Factory version 2.21.4 Modified: branches/SuSE-Code-11-SP2-Branch/snapper/src/Snapper.ycp URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/snapper/src/Snapper.ycp?rev=63945&r1=63944&r2=63945&view=diff ============================================================================== --- branches/SuSE-Code-11-SP2-Branch/snapper/src/Snapper.ycp (original) +++ branches/SuSE-Code-11-SP2-Branch/snapper/src/Snapper.ycp Wed May 11 11:31:04 2011 @@ -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 (); -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
jsuchome@svn2.opensuse.org