]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- pass single struct instead of many values to create and modify snapshot functions
authorArvin Schnell <aschnell@suse.de>
Mon, 16 Feb 2015 10:57:12 +0000 (11:57 +0100)
committerArvin Schnell <aschnell@suse.de>
Mon, 16 Feb 2015 10:57:12 +0000 (11:57 +0100)
examples/c++-lib/Create.cc
examples/c++-lib/CreateNumber.cc
examples/c++-lib/CreateTimeline.cc
server/Client.cc
snapper/Snapper.cc
snapper/Snapper.h
snapper/Snapshot.cc
snapper/Snapshot.h
testsuite-real/common.cc

index b0e4305f6a639fd5226b6c9c4f9ce6ee923ae0ea..c240137e6bfc93dd2dddd86f8487dd500faff2c6 100644 (file)
@@ -14,7 +14,12 @@ main(int argc, char** argv)
 {
     Snapper* sh = new Snapper();
 
-    sh->createSingleSnapshot(getuid(), "test", "number", map<string, string>());
+    SCD scd;
+    scd.uid = getuid();
+    scd.description = "test";
+    scd.cleanup = "number";
+
+    sh->createSingleSnapshot(scd);
 
     delete sh;
 
index 1719a019e1c039828f456bbf6178969b60a8d172..94dafb0e59022134422e51d473570b396e7f48f6 100644 (file)
@@ -39,11 +39,14 @@ main()
 
     for (size_t i = 0; i < 100; ++i)
     {
-       map<string, string> userdata;
+       SCD scd;
+       scd.uid = getuid();
+       scd.description = "testsuite";
+       scd.cleanup = "number";
        if (i % 5 == 0)
-           userdata["important"] = "yes";
+           scd.userdata["important"] = "yes";
 
-       sh->createSingleSnapshot(getuid(), "testsuite", "number", userdata);
+       sh->createSingleSnapshot(scd);
     }
 
     delete sh;
index 2ca03a5422c1e3cde8620081d904c2ebad1198d6..22e93eb06610c4451e604a392bf654ad4b3a5ce0 100644 (file)
@@ -40,8 +40,12 @@ main()
     time_t t = time(NULL) - 100 * 24*60*60;
     while (t < time(NULL))
     {
-       Snapshots::iterator snap = sh->createSingleSnapshot(getuid(), "testsuite", "timeline",
-                                                           map<string, string>());
+       SCD scd;
+       scd.uid = getuid();
+       scd.description = "testsuite";
+       scd.cleanup = "timeline";
+
+       Snapshots::iterator snap = sh->createSingleSnapshot(scd);
        // snap->setDate(t);
 
        t += 60*60;
index 1c1bfc41e84cb492c8e70505612a992ae94bd7e7..ab6b803abc57a244a2dee451c4372c50cae8b65a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2012-2014] Novell, Inc.
+ * Copyright (c) [2012-2015] Novell, Inc.
  *
  * All Rights Reserved.
  *
@@ -823,12 +823,10 @@ Client::set_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     dbus_uint32_t num;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SMD smd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> num >> description >> cleanup >> userdata;
+    hihi >> config_name >> num >> smd.description >> smd.cleanup >> smd.userdata;
 
     y2deb("SetSnapshot config_name:" << config_name << " num:" << num);
 
@@ -845,7 +843,7 @@ Client::set_snapshot(DBus::Connection& conn, DBus::Message& msg)
     if (snap == snapshots.end())
        throw IllegalSnapshotException();
 
-    snapper->modifySnapshot(snap, description, cleanup, userdata);
+    snapper->modifySnapshot(snap, smd);
 
     DBus::MessageMethodReturn reply(msg);
 
@@ -859,26 +857,24 @@ void
 Client::create_single_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SCD scd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> description >> cleanup >> userdata;
+    hihi >> config_name >> scd.description >> scd.cleanup >> scd.userdata;
 
-    y2deb("CreateSingleSnapshot config_name:" << config_name << " description:" << description <<
-         " cleanup:" << cleanup);
+    y2deb("CreateSingleSnapshot config_name:" << config_name << " description:" << scd.description <<
+         " cleanup:" << scd.cleanup);
 
     boost::unique_lock<boost::shared_mutex> lock(big_mutex);
 
     MetaSnappers::iterator it = meta_snappers.find(config_name);
 
     check_permission(conn, msg, *it);
+    scd.uid = conn.get_unix_userid(msg);
 
     Snapper* snapper = it->getSnapper();
 
-    Snapshots::iterator snap1 = snapper->createSingleSnapshot(conn.get_unix_userid(msg),
-                                                             description, cleanup, userdata);
+    Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd);
 
     DBus::MessageMethodReturn reply(msg);
 
@@ -896,22 +892,20 @@ Client::create_single_snapshot_v2(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     unsigned int parent_num;
-    bool read_only;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SCD scd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> parent_num >> read_only >> description >> cleanup >> userdata;
+    hihi >> config_name >> parent_num >> scd.read_only >> scd.description >> scd.cleanup >> scd.userdata;
 
     y2deb("CreateSingleSnapshotV2 config_name:" << config_name << " parent_num:" << parent_num <<
-         " read_only:" << read_only << " description:" << description << " cleanup:" << cleanup);
+         " read_only:" << scd.read_only << " description:" << scd.description << " cleanup:" << scd.cleanup);
 
     boost::unique_lock<boost::shared_mutex> lock(big_mutex);
 
     MetaSnappers::iterator it = meta_snappers.find(config_name);
 
     check_permission(conn, msg, *it);
+    scd.uid = conn.get_unix_userid(msg);
 
     Snapper* snapper = it->getSnapper();
 
@@ -919,9 +913,7 @@ Client::create_single_snapshot_v2(DBus::Connection& conn, DBus::Message& msg)
 
     Snapshots::iterator parent = snapshots.find(parent_num);
 
-    Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, read_only,
-                                                             conn.get_unix_userid(msg),
-                                                             description, cleanup, userdata);
+    Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, scd);
 
     DBus::MessageMethodReturn reply(msg);
 
@@ -938,29 +930,24 @@ void
 Client::create_single_snapshot_of_default(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
-    bool read_only;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SCD scd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> read_only >> description >> cleanup >> userdata;
+    hihi >> config_name >> scd.read_only >> scd.description >> scd.cleanup >> scd.userdata;
 
     y2deb("CreateSingleSnapshotOfDefault config_name:" << config_name << " read_only:" <<
-         read_only << " description:" << description << " cleanup:" << cleanup);
+         scd.read_only << " description:" << scd.description << " cleanup:" << scd.cleanup);
 
     boost::unique_lock<boost::shared_mutex> lock(big_mutex);
 
     MetaSnappers::iterator it = meta_snappers.find(config_name);
 
     check_permission(conn, msg, *it);
+    scd.uid = conn.get_unix_userid(msg);
 
     Snapper* snapper = it->getSnapper();
 
-    Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(read_only,
-                                                                     conn.get_unix_userid(msg),
-                                                                     description, cleanup,
-                                                                     userdata);
+    Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd);
 
     DBus::MessageMethodReturn reply(msg);
 
@@ -977,26 +964,24 @@ void
 Client::create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SCD scd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> description >> cleanup >> userdata;
+    hihi >> config_name >> scd.description >> scd.cleanup >> scd.userdata;
 
-    y2deb("CreatePreSnapshot config_name:" << config_name << " description:" << description <<
-         " cleanup:" << cleanup);
+    y2deb("CreatePreSnapshot config_name:" << config_name << " description:" << scd.description <<
+         " cleanup:" << scd.cleanup);
 
     boost::unique_lock<boost::shared_mutex> lock(big_mutex);
 
     MetaSnappers::iterator it = meta_snappers.find(config_name);
 
     check_permission(conn, msg, *it);
+    scd.uid = conn.get_unix_userid(msg);
 
     Snapper* snapper = it->getSnapper();
 
-    Snapshots::iterator snap1 = snapper->createPreSnapshot(conn.get_unix_userid(msg), description,
-                                                          cleanup, userdata);
+    Snapshots::iterator snap1 = snapper->createPreSnapshot(scd);
 
     DBus::MessageMethodReturn reply(msg);
 
@@ -1014,29 +999,27 @@ Client::create_post_snapshot(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     unsigned int pre_num;
-    string description;
-    string cleanup;
-    map<string, string> userdata;
+    SCD scd;
 
     DBus::Hihi hihi(msg);
-    hihi >> config_name >> pre_num >> description >> cleanup >> userdata;
+    hihi >> config_name >> pre_num >> scd.description >> scd.cleanup >> scd.userdata;
 
     y2deb("CreatePostSnapshot config_name:" << config_name << " pre_num:" << pre_num <<
-         " description:" << description << " cleanup:" << cleanup);
+         " description:" << scd.description << " cleanup:" << scd.cleanup);
 
     boost::unique_lock<boost::shared_mutex> lock(big_mutex);
 
     MetaSnappers::iterator it = meta_snappers.find(config_name);
 
     check_permission(conn, msg, *it);
+    scd.uid = conn.get_unix_userid(msg);
 
     Snapper* snapper = it->getSnapper();
     Snapshots& snapshots = snapper->getSnapshots();
 
     Snapshots::iterator snap1 = snapshots.find(pre_num);
 
-    Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, conn.get_unix_userid(msg),
-                                                           description, cleanup, userdata);
+    Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, scd);
 
     bool background_comparison = true;
     it->getConfigInfo().getValue("BACKGROUND_COMPARISON", background_comparison);
index 25858e7ddc29ba51c6848a521f2149dbdba46303..e5fc8c06360280ec11a13c1aa12ec20a81d09492 100644 (file)
@@ -182,57 +182,47 @@ namespace snapper
 
 
     Snapshots::iterator
-    Snapper::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
-                                 const map<string, string>& userdata)
+    Snapper::createSingleSnapshot(const SCD& scd)
     {
-       return snapshots.createSingleSnapshot(uid, description, cleanup, userdata);
+       return snapshots.createSingleSnapshot(scd);
     }
 
 
     Snapshots::iterator
-    Snapper::createSingleSnapshot(Snapshots::const_iterator parent, bool read_only, uid_t uid,
-                                 const string& description, const string& cleanup,
-                                 const map<string, string>& userdata)
+    Snapper::createSingleSnapshot(Snapshots::const_iterator parent, const SCD& scd)
     {
        if (parent == snapshots.end())
            throw IllegalSnapshotException();
 
-       return snapshots.createSingleSnapshot(parent, read_only, uid, description, cleanup,
-                                             userdata);
+       return snapshots.createSingleSnapshot(parent, scd);
     }
 
 
     Snapshots::iterator
-    Snapper::createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description,
-                                          const string& cleanup,
-                                          const map<string, string>& userdata)
+    Snapper::createSingleSnapshotOfDefault(const SCD& scd)
     {
-       return snapshots.createSingleSnapshotOfDefault(read_only, uid, description, cleanup,
-                                                      userdata);
+       return snapshots.createSingleSnapshotOfDefault(scd);
     }
 
 
     Snapshots::iterator
-    Snapper::createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
-                              const map<string, string>& userdata)
+    Snapper::createPreSnapshot(const SCD& scd)
     {
-       return snapshots.createPreSnapshot(uid, description, cleanup, userdata);
+       return snapshots.createPreSnapshot(scd);
     }
 
 
     Snapshots::iterator
-    Snapper::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description,
-                               const string& cleanup, const map<string, string>& userdata)
+    Snapper::createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd)
     {
-       return snapshots.createPostSnapshot(pre, uid, description, cleanup, userdata);
+       return snapshots.createPostSnapshot(pre, scd);
     }
 
 
     void
-    Snapper::modifySnapshot(Snapshots::iterator snapshot, const string& description,
-                           const string& cleanup, const map<string, string>& userdata)
+    Snapper::modifySnapshot(Snapshots::iterator snapshot, const SMD& smd)
     {
-       snapshots.modifySnapshot(snapshot, description, cleanup, userdata);
+       snapshots.modifySnapshot(snapshot, smd);
     }
 
 
index c05640c3d3fa2cc1384bbccc94aabcf3618e47a7..cfb25d6faefda1dfcaada2bb9911522ad1e0dcef 100644 (file)
@@ -125,26 +125,13 @@ namespace snapper
 
        Snapshots::const_iterator getSnapshotCurrent() const;
 
+       Snapshots::iterator createSingleSnapshot(const SCD& scd);
+       Snapshots::iterator createSingleSnapshot(Snapshots::const_iterator parent, const SCD& scd);
+       Snapshots::iterator createSingleSnapshotOfDefault(const SCD& scd);
+       Snapshots::iterator createPreSnapshot(const SCD& scd);
+       Snapshots::iterator createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd);
 
-       Snapshots::iterator createSingleSnapshot(uid_t uid, const string& description,
-                                                const string& cleanup,
-                                                const map<string, string>& userdata);
-       Snapshots::iterator createSingleSnapshot(Snapshots::const_iterator parent, bool read_only,
-                                                uid_t uid, const string& description,
-                                                const string& cleanup,
-                                                const map<string, string>& userdata);
-       Snapshots::iterator createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description,
-                                                         const string& cleanup,
-                                                         const map<string, string>& userdata);
-       Snapshots::iterator createPreSnapshot(uid_t uid, const string& description,
-                                             const string& cleanup,
-                                             const map<string, string>& userdata);
-       Snapshots::iterator createPostSnapshot(Snapshots::const_iterator pre, uid_t uid,
-                                              const string& description, const string& cleanup,
-                                              const map<string, string>& userdata);
-
-       void modifySnapshot(Snapshots::iterator snapshot, const string& description,
-                           const string& cleanup, const map<string, string>& userdata);
+       void modifySnapshot(Snapshots::iterator snapshot, const SMD& smd);
 
        void deleteSnapshot(Snapshots::iterator snapshot);
 
index c8be010208df99fc56eac417630d0ad97d9fa48d..41e37a9613a28c4804f9f0b68fe4230cb03f3926 100644 (file)
@@ -533,89 +533,82 @@ namespace snapper
 
 
     Snapshots::iterator
-    Snapshots::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
-                                   const map<string, string>& userdata)
+    Snapshots::createSingleSnapshot(const SCD& scd)
     {
-       checkUserdata(userdata);
+       checkUserdata(scd.userdata);
 
        Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL));
-       snapshot.uid = uid;
-       snapshot.description = description;
-       snapshot.cleanup = cleanup;
-       snapshot.userdata = userdata;
+       snapshot.uid = scd.uid;
+       snapshot.description = scd.description;
+       snapshot.cleanup = scd.cleanup;
+       snapshot.userdata =scd. userdata;
 
-       return createHelper(snapshot, getSnapshotCurrent(), true);
+       return createHelper(snapshot, getSnapshotCurrent(), scd.read_only);
     }
 
 
     Snapshots::iterator
-    Snapshots::createSingleSnapshot(const_iterator parent, bool read_only, uid_t uid,
-                                   const string& description, const string& cleanup,
-                                   const map<string, string>& userdata)
+    Snapshots::createSingleSnapshot(const_iterator parent, const SCD& scd)
     {
-       checkUserdata(userdata);
+       checkUserdata(scd.userdata);
 
        Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL));
-       snapshot.uid = uid;
-       snapshot.description = description;
-       snapshot.cleanup = cleanup;
-       snapshot.userdata = userdata;
+       snapshot.uid = scd.uid;
+       snapshot.description = scd.description;
+       snapshot.cleanup = scd.cleanup;
+       snapshot.userdata = scd.userdata;
 
-       return createHelper(snapshot, parent, read_only);
+       return createHelper(snapshot, parent, scd.read_only);
     }
 
 
     Snapshots::iterator
-    Snapshots::createSingleSnapshotOfDefault(bool read_only, uid_t uid,
-                                            const string& description, const string& cleanup,
-                                            const map<string, string>& userdata)
+    Snapshots::createSingleSnapshotOfDefault(const SCD& scd)
     {
-       checkUserdata(userdata);
+       checkUserdata(scd.userdata);
 
        Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL));
-       snapshot.uid = uid;
-       snapshot.description = description;
-       snapshot.cleanup = cleanup;
-       snapshot.userdata = userdata;
+       snapshot.uid = scd.uid;
+       snapshot.description = scd.description;
+       snapshot.cleanup = scd.cleanup;
+       snapshot.userdata = scd.userdata;
 
-       return createHelper(snapshot, end(), read_only);
+       return createHelper(snapshot, end(), scd.read_only);
     }
 
 
     Snapshots::iterator
-    Snapshots::createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
-                                const map<string, string>& userdata)
+    Snapshots::createPreSnapshot(const SCD& scd)
     {
-       checkUserdata(userdata);
+       checkUserdata(scd.userdata);
 
        Snapshot snapshot(snapper, PRE, nextNumber(), time(NULL));
-       snapshot.uid = uid;
-       snapshot.description = description;
-       snapshot.cleanup = cleanup;
-       snapshot.userdata = userdata;
+       snapshot.uid = scd.uid;
+       snapshot.description = scd.description;
+       snapshot.cleanup = scd.cleanup;
+       snapshot.userdata = scd.userdata;
 
-       return createHelper(snapshot, getSnapshotCurrent(), true);
+       return createHelper(snapshot, getSnapshotCurrent(), scd.read_only);
     }
 
 
     Snapshots::iterator
-    Snapshots::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description,
-                                 const string& cleanup, const map<string, string>& userdata)
+    Snapshots::createPostSnapshot(Snapshots::const_iterator pre, const SCD& scd)
     {
        if (pre == entries.end() || pre->isCurrent() || pre->getType() != PRE ||
            findPost(pre) != entries.end())
            throw IllegalSnapshotException();
 
-       checkUserdata(userdata);
+       checkUserdata(scd.userdata);
 
        Snapshot snapshot(snapper, POST, nextNumber(), time(NULL));
        snapshot.pre_num = pre->getNum();
-       snapshot.uid = uid;
-       snapshot.description = description;
-       snapshot.cleanup = cleanup;
-       snapshot.userdata = userdata;
+       snapshot.uid = scd.uid;
+       snapshot.description = scd.description;
+       snapshot.cleanup = scd.cleanup;
+       snapshot.userdata = scd.userdata;
 
-       return createHelper(snapshot, getSnapshotCurrent(), true);
+       return createHelper(snapshot, getSnapshotCurrent(), scd.read_only);
     }
 
 
@@ -665,17 +658,16 @@ namespace snapper
 
 
     void
-    Snapshots::modifySnapshot(iterator snapshot, const string& description, const string& cleanup,
-                             const map<string, string>& userdata)
+    Snapshots::modifySnapshot(iterator snapshot, const SMD& smd)
     {
        if (snapshot == entries.end() || snapshot->isCurrent())
            throw IllegalSnapshotException();
 
-       checkUserdata(userdata);
+       checkUserdata(smd.userdata);
 
-       snapshot->description = description;
-       snapshot->cleanup = cleanup;
-       snapshot->userdata = userdata;
+       snapshot->description = smd.description;
+       snapshot->cleanup = smd.cleanup;
+       snapshot->userdata = smd.userdata;
 
        snapshot->writeInfo();
 
index 995da56456389f2f900ecb6219a66bb24152c398..e95be7c55d5d8900edb42c069ae5ec87741d70c7 100644 (file)
@@ -130,9 +130,7 @@ namespace snapper
        unsigned int pre_num;   // valid only for type=POST
 
        string description;     // likely empty for type=POST
-
        string cleanup;
-
        map<string, string> userdata;
 
        mutable bool mount_checked;
@@ -154,6 +152,32 @@ namespace snapper
     }
 
 
+    // Snapshot Modify Data
+    class SMD
+    {
+    public:
+
+       SMD() : description(), cleanup(), userdata({}) {}
+
+       string description;
+       string cleanup;
+       map<string, string> userdata;
+
+    };
+
+    // Snapshot Create Data
+    class SCD : public SMD
+    {
+    public:
+
+       SCD() : SMD(), read_only(true), uid(0) {}
+
+       bool read_only;
+       uid_t uid;
+
+    };
+
+
     class Snapshots
     {
     public:
@@ -195,23 +219,15 @@ namespace snapper
 
        void checkUserdata(const map<string, string>& userdata) const;
 
-       iterator createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
-                                     const map<string, string>& userdata);
-       iterator createSingleSnapshot(const_iterator parent, bool read_only, uid_t uid,
-                                     const string& description, const string& cleanup,
-                                     const map<string, string>& userdata);
-       iterator createSingleSnapshotOfDefault(bool read_only, uid_t uid, const string& description,
-                                              const string& cleanup,
-                                              const map<string, string>& userdata);
-       iterator createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
-                                  const map<string, string>& userdata);
-       iterator createPostSnapshot(const_iterator pre, uid_t uid, const string& description,
-                                   const string& cleanup, const map<string, string>& userdata);
+       iterator createSingleSnapshot(const SCD& scd);
+       iterator createSingleSnapshot(const_iterator parent, const SCD& scd);
+       iterator createSingleSnapshotOfDefault(const SCD& scd);
+       iterator createPreSnapshot(const SCD& scd);
+       iterator createPostSnapshot(const_iterator pre, const SCD& scd);
 
        iterator createHelper(Snapshot& snapshot, const_iterator parent, bool read_only);
 
-       void modifySnapshot(iterator snapshot, const string& description, const string& cleanup,
-                           const map<string, string>& userdata);
+       void modifySnapshot(iterator snapshot, const SMD& smd);
 
        void deleteSnapshot(iterator snapshot);
 
index 885eae3300a81bbf7c2bc6d27e525f91f6fc5f5e..05fc8f79da3b009bccba0e9bec681c9b6594a4bd 100644 (file)
@@ -48,14 +48,22 @@ cleanup()
 void
 first_snapshot()
 {
-    first = sh->createPreSnapshot(0, CONFIG, "number", map<string, string>());
+    SCD scd;
+    scd.description = CONFIG;
+    scd.cleanup = "number";
+
+    first = sh->createPreSnapshot(scd);
 }
 
 
 void
 second_snapshot()
 {
-    second = sh->createPostSnapshot(first, 0, CONFIG, "number", map<string, string>());
+    SCD scd;
+    scd.description = CONFIG;
+    scd.cleanup = "number";
+
+    second = sh->createPostSnapshot(first, scd);
 }