]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- extended callback for rollback infos
authorArvin Schnell <aschnell@suse.de>
Tue, 3 May 2011 08:13:26 +0000 (10:13 +0200)
committerArvin Schnell <aschnell@suse.de>
Tue, 3 May 2011 08:13:26 +0000 (10:13 +0200)
snapper/File.cc
snapper/Snapper.cc
snapper/Snapper.h
testsuite-real/common.cc
tools/snapper.cc

index 0a7437ff0de03e287ba542a060ab4f637fe6dcca..0f2e780ef7952812f2bc3cbd1d87d11100b85b66 100644 (file)
@@ -377,8 +377,8 @@ namespace snapper
     {
        if (getPreToPostStatus() & CREATED || getPreToPostStatus() & TYPE)
        {
-           if (getSnapper()->getRollbackProgressCallback())
-               getSnapper()->getRollbackProgressCallback()->deleteInfo(name);
+           if (getSnapper()->getRollbackCallback())
+               getSnapper()->getRollbackCallback()->deleteInfo(name);
 
            struct stat fs;
            getLStat(getAbsolutePath(LOC_POST), fs);
@@ -401,8 +401,8 @@ namespace snapper
 
        if (getPreToPostStatus() & DELETED || getPreToPostStatus() & TYPE)
        {
-           if (getSnapper()->getRollbackProgressCallback())
-               getSnapper()->getRollbackProgressCallback()->createInfo(name);
+           if (getSnapper()->getRollbackCallback())
+               getSnapper()->getRollbackCallback()->createInfo(name);
 
            struct stat fs;
            getLStat(getAbsolutePath(LOC_PRE), fs);
@@ -431,8 +431,8 @@ namespace snapper
 
        if (getPreToPostStatus() & (CONTENT | PERMISSIONS | USER | GROUP))
        {
-           if (getSnapper()->getRollbackProgressCallback())
-               getSnapper()->getRollbackProgressCallback()->modifyInfo(name);
+           if (getSnapper()->getRollbackCallback())
+               getSnapper()->getRollbackCallback()->modifyInfo(name);
 
            struct stat fs;
            getLStat(getAbsolutePath(LOC_PRE), fs);
@@ -497,6 +497,9 @@ namespace snapper
     {
        y2mil("begin rollback");
 
+       if (getSnapper()->getRollbackCallback())
+           getSnapper()->getRollbackCallback()->start();
+
        for (vector<File>::reverse_iterator it = entries.rbegin(); it != entries.rend(); ++it)
        {
            if (it->getRollback())
@@ -519,6 +522,9 @@ namespace snapper
            }
        }
 
+       if (getSnapper()->getRollbackCallback())
+           getSnapper()->getRollbackCallback()->stop();
+
        y2mil("end rollback");
 
        return true;
index 3052b7b7243725f2488970a2f25211a8fe0f6b68..a64fb0a9f846a3e694607b2b15ac3ddea9d3378f 100644 (file)
@@ -46,7 +46,7 @@ namespace snapper
 
     Snapper::Snapper(const string& config_name)
        : config_name(config_name), config(NULL), subvolume("/"), snapshots(this),
-         compare_callback(NULL), rollback_progress_callback(NULL)
+         compare_callback(NULL), rollback_callback(NULL)
     {
        y2mil("Snapper constructor");
        y2mil("libsnapper version " VERSION);
index c973b594fb8c744e21d255491136c893de6a37c0..d2b9db4b3f529ad690668bbcfcaa3dc458c34d41 100644 (file)
@@ -47,10 +47,13 @@ namespace snapper
     };
 
 
-    struct RollbackProgressCallback
+    struct RollbackCallback
     {
-       RollbackProgressCallback() {}
-       virtual ~RollbackProgressCallback() {}
+       RollbackCallback() {}
+       virtual ~RollbackCallback() {}
+
+       virtual void start() = 0;
+       virtual void stop() = 0;
 
        virtual void createInfo(const string& name) = 0;
        virtual void modifyInfo(const string& name) = 0;
@@ -125,8 +128,8 @@ namespace snapper
        void setCompareCallback(CompareCallback* p) { compare_callback = p; }
        CompareCallback* getCompareCallback() const { return compare_callback; }
 
-       void setRollbackProgressCallback(RollbackProgressCallback* p) { rollback_progress_callback = p; }
-       RollbackProgressCallback* getRollbackProgressCallback() const { return rollback_progress_callback; }
+       void setRollbackCallback(RollbackCallback* p) { rollback_callback = p; }
+       RollbackCallback* getRollbackCallback() const { return rollback_callback; }
 
        const vector<string>& getIgnorePatterns() const { return ignore_patterns; }
 
@@ -152,7 +155,7 @@ namespace snapper
        Snapshots snapshots;
 
        CompareCallback* compare_callback;
-       RollbackProgressCallback* rollback_progress_callback;
+       RollbackCallback* rollback_callback;
 
     };
 
index e33b4aa228b6e603cc457d7f00d1fd5dd21e3439..309fb34e27ac9aaf73d3f5d0b19c4c7bc6f1853d 100644 (file)
@@ -30,21 +30,24 @@ Snapshots::iterator second;
 
 struct CompareCallbackImpl : public CompareCallback
 {
-    void start() {  cout << "comparing snapshots..." << flush; }
+    void start() { cout << "comparing snapshots..." << flush; }
     void stop() { cout << " done" << endl; }
 };
 
 CompareCallbackImpl compare_callback_impl;
 
 
-struct RollbackProgressCallbackImpl : public RollbackProgressCallback
+struct RollbackCallbackImpl : public RollbackCallback
 {
+    void start() { cout << "running rollback..." << endl; }
+    void stop() { cout << "rollback done" << endl; }
+
     void createInfo(const string& name) { cout << "create " << name << endl; }
     void modifyInfo(const string& name) { cout << "modify " << name << endl; }
     void deleteInfo(const string& name) { cout << "delete " << name << endl; }
 };
 
-RollbackProgressCallbackImpl rollback_progress_callback_impl;
+RollbackCallbackImpl rollback_callback_impl;
 
 
 void
@@ -58,7 +61,7 @@ setup()
     sh = createSnapper("testsuite");
 
     sh->setCompareCallback(&compare_callback_impl);
-    sh->setRollbackProgressCallback(&rollback_progress_callback_impl);
+    sh->setRollbackCallback(&rollback_callback_impl);
 }
 
 
index 0f0abdb1583522b7150ca0f7172ef096304b84b1..7de47e11dfbaedce32ae81146a62eb0a687dd52a 100644 (file)
@@ -27,6 +27,7 @@ map<string, cmd_fnc> cmds;
 GetOpts getopts;
 
 bool quiet = false;
+bool verbose = false;
 string config_name = "root";
 
 Snapper* sh = NULL;
@@ -677,6 +678,7 @@ command_help()
 
     cout << _("    Global options:") << endl
         << _("\t--quiet, -q\t\t\tSuppress normal output.") << endl
+        << _("\t--verbose, -v\t\t\tIncrease verbosity.") << endl
         << _("\t--table-style, -t <style>\tTable style (integer).") << endl
         << _("\t--config, -c <name>\t\tSet name of config to use.") << endl
         << endl;
@@ -695,21 +697,24 @@ command_help()
 
 struct CompareCallbackImpl : public CompareCallback
 {
-    void start() {  cout << "comparing snapshots..." << flush; }
+    void start() { cout << "comparing snapshots..." << flush; }
     void stop() { cout << " done" << endl; }
 };
 
 CompareCallbackImpl compare_callback_impl;
 
 
-struct RollbackProgressCallbackImpl : public RollbackProgressCallback
+struct RollbackCallbackImpl : public RollbackCallback
 {
-    void createInfo(const string& name) { cout << "create " << name << endl; }
-    void modifyInfo(const string& name) { cout << "modify " << name << endl; }
-    void deleteInfo(const string& name) { cout << "delete " << name << endl; }
+    void start() { if (!verbose) cout << "running rollback..." << flush; }
+    void stop() { if (!verbose) cout << " done" << endl; }
+
+    void createInfo(const string& name) { if (verbose) cout << "create " << name << endl; }
+    void modifyInfo(const string& name) { if (verbose) cout << "modify " << name << endl; }
+    void deleteInfo(const string& name) { if (verbose) cout << "delete " << name << endl; }
 };
 
-RollbackProgressCallbackImpl rollback_progress_callback_impl;
+RollbackCallbackImpl rollback_callback_impl;
 
 
 int
@@ -732,6 +737,7 @@ main(int argc, char** argv)
 
     const struct option options[] = {
        { "quiet",              no_argument,            0,      'q' },
+       { "verbose",            no_argument,            0,      'v' },
        { "table-style",        required_argument,      0,      't' },
        { "config",             required_argument,      0,      'c' },
        { 0, 0, 0, 0 }
@@ -761,6 +767,9 @@ main(int argc, char** argv)
     if ((opt = opts.find("quiet")) != opts.end())
        quiet = true;
 
+    if ((opt = opts.find("verbose")) != opts.end())
+       verbose = true;
+
     if ((opt = opts.find("table-style")) != opts.end())
     {
        unsigned int s;
@@ -801,7 +810,7 @@ main(int argc, char** argv)
        if (!quiet)
        {
            sh->setCompareCallback(&compare_callback_impl);
-           sh->setRollbackProgressCallback(&rollback_progress_callback_impl);
+           sh->setRollbackCallback(&rollback_callback_impl);
        }
 
        (*cmd->second)();