]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- work on dbus interface
authorArvin Schnell <aschnell@suse.de>
Fri, 27 Apr 2012 13:33:16 +0000 (15:33 +0200)
committerArvin Schnell <aschnell@suse.de>
Fri, 27 Apr 2012 13:33:16 +0000 (15:33 +0200)
client/commands.cc
client/commands.h
client/snapper.cc
doc/dbus-protocol.txt
server/Client.h
server/snapperd.cc

index 8c427bcc16ed4c4a591394b7173464de21fbcdd2..a3345fe1038a5df46d2271ab74794c161fb31795 100644 (file)
 #include "commands.h"
 
 
+#define SERVICE "org.opensuse.snapper"
+#define OBJECT "/org/opensuse/snapper"
+#define INTERFACE "org.opensuse.snapper"
+
+
 list<XConfigInfo>
 command_list_xconfigs(DBus::Connection& conn)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "ListConfigs");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "ListConfigs");
 
     DBus::Message reply = conn.send_and_reply_and_block(call);
 
@@ -45,11 +49,35 @@ command_list_xconfigs(DBus::Connection& conn)
 }
 
 
+void
+command_create_xconfig(DBus::Connection& conn, const string& config_name, const string& subvolume,
+                      const string& fstype, const string& template_name)
+{
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "CreateConfig");
+
+    DBus::Hoho hoho(call);
+    hoho << config_name << subvolume << fstype << template_name;
+
+    DBus::Message reply = conn.send_and_reply_and_block(call);
+}
+
+
+void
+command_delete_xconfig(DBus::Connection& conn, const string& config_name)
+{
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "DeleteConfig");
+
+    DBus::Hoho hoho(call);
+    hoho << config_name;
+
+    DBus::Message reply = conn.send_and_reply_and_block(call);
+}
+
+
 XSnapshots
 command_list_xsnapshots(DBus::Connection& conn, const string& config_name)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "ListSnapshots");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "ListSnapshots");
 
     DBus::Hoho hoho(call);
     hoho << config_name;
@@ -70,8 +98,7 @@ command_create_single_xsnapshot(DBus::Connection& conn, const string& config_nam
                                const string& description, const string& cleanup,
                                const map<string, string>& userdata)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "CreateSingleSnapshot");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "CreateSingleSnapshot");
 
     DBus::Hoho hoho(call);
     hoho << config_name << description << cleanup << userdata;
@@ -92,8 +119,7 @@ command_create_pre_xsnapshot(DBus::Connection& conn, const string& config_name,
                             const string& description, const string& cleanup,
                             const map<string, string>& userdata)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "CreatePreSnapshot");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "CreatePreSnapshot");
 
     DBus::Hoho hoho(call);
     hoho << config_name << description << cleanup << userdata;
@@ -114,8 +140,7 @@ command_create_post_xsnapshot(DBus::Connection& conn, const string& config_name,
                              unsigned int prenum, const string& description,
                              const string& cleanup, const map<string, string>& userdata)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "CreatePostSnapshot");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "CreatePostSnapshot");
 
     DBus::Hoho hoho(call);
     hoho << config_name << prenum << description << cleanup << userdata;
@@ -134,8 +159,7 @@ command_create_post_xsnapshot(DBus::Connection& conn, const string& config_name,
 void
 command_delete_xsnapshot(DBus::Connection& conn, const string& config_name, unsigned int num)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                "org.opensuse.snapper", "DeleteSnapshot");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "DeleteSnapshot");
 
     DBus::Hoho hoho(call);
     hoho << config_name << num;
@@ -148,8 +172,7 @@ void
 command_create_xcomparison(DBus::Connection& conn, const string& config_name, unsigned int number1,
                           unsigned int number2)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                 "org.opensuse.snapper", "CreateComparison");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "CreateComparison");
 
     DBus::Hoho hoho(call);
     hoho << config_name << number1 << number2;
@@ -162,8 +185,7 @@ list<XFile>
 command_get_xfiles(DBus::Connection& conn, const string& config_name, unsigned int number1,
                   unsigned int number2)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                 "org.opensuse.snapper", "GetFiles");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "GetFiles");
 
     DBus::Hoho hoho(call);
     hoho << config_name << number1 << number2;
@@ -182,8 +204,7 @@ vector<string>
 command_get_xdiff(DBus::Connection& conn, const string& config_name, unsigned int number1,
                  unsigned int number2, const string& filename, const string& options)
 {
-    DBus::MessageMethodCall call("org.opensuse.snapper", "/org/opensuse/snapper",
-                                 "org.opensuse.snapper", "GetDiff");
+    DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "GetDiff");
 
     DBus::Hoho hoho(call);
     hoho << config_name << number1 << number2 << filename << options;
index f0e2f067ec057654623ee57e6fe743e37ffe916d..52578dfefd45e80ac93633f42b98f5609a7fb129 100644 (file)
@@ -40,6 +40,13 @@ using std::map;
 list<XConfigInfo>
 command_list_xconfigs(DBus::Connection& conn);
 
+void
+command_create_xconfig(DBus::Connection& conn, const string& config_name, const string& subvolume,
+                      const string& fstype, const string& template_name);
+
+void
+command_delete_xconfig(DBus::Connection& conn, const string& config_name);
+
 XSnapshots
 command_list_xsnapshots(DBus::Connection& conn, const string& config_name);
 
index 390507004e7eeedf08c3c52663bda397a73dc21b..17b94dc73c346b16efa49a6ca10f1b1a0641f468 100644 (file)
@@ -253,7 +253,7 @@ command_create_config(DBus::Connection& conn)
 
     try
     {
-       Snapper::createConfig(config_name, subvolume, fstype, template_name);
+       command_create_xconfig(conn, config_name, subvolume, fstype, template_name);
     }
     catch (const CreateConfigFailedException& e)
     {
@@ -284,7 +284,7 @@ command_delete_config(DBus::Connection& conn)
 
     try
     {
-       Snapper::deleteConfig(config_name);
+       command_delete_xconfig(conn, config_name);
     }
     catch (const DeleteConfigFailedException& e)
     {
@@ -838,7 +838,7 @@ command_diff(DBus::Connection& conn)
            vector<string> lines = command_get_xdiff(conn, config_name, nums.first, nums.second,
                                                     it1->filename, "--unified --new-file");
            for (vector<string>::const_iterator it2 = lines.begin(); it2 != lines.end(); ++it2)
-               cout << it2->c_str() << endl;
+               cout << it2->c_str() << endl;
        }
     }
     else
index ef47bca5cb80cf436f8ee3129f5ca2a02ab231d9..2fa870ebe7ec5ebc8f3d4290272b5a573fb8dd26 100644 (file)
@@ -2,7 +2,7 @@
 method ListConfigs
 
 
-method CreateConfig config-name subvolume
+method CreateConfig config-name subvolume fstype template_name
 method DeleteConfig config-name
 
 signal ConfigCreated config-name
index b1ba3dfb6b02c76fc7ffe9dbf194bf3ede873d7d..975ff51b0b4c1e388a02d0cbea5348045b2e2ce7 100644 (file)
@@ -57,7 +57,7 @@ public:
 
     Comparison* find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1,
                                Snapshots::const_iterator snapshot2);
-    
+
     void add_lock(const string& config_name);
     void remove_lock(const string& config_name);
     bool has_lock(const string& config_name) const;
@@ -80,7 +80,7 @@ public:
 
     iterator begin() { return entries.begin(); }
     const_iterator begin() const { return entries.begin(); }
-    
+
     iterator end() { return entries.end(); }
     const_iterator end() const { return entries.end(); }
 
@@ -96,6 +96,6 @@ private:
     list<Client> entries;
 
 };
-    
+
 
 #endif
index 1ab979e901dfe4a79be040816324ae7177d9d13c..2575d1bdbff0ff4fbb3eb69c01931b53563cb35f 100644 (file)
@@ -47,6 +47,11 @@ using namespace std;
 using namespace snapper;
 
 
+#define SERVICE "org.opensuse.snapper"
+#define PATH "/org/opensuse/snapper"
+#define INTERFACE "org.opensuse.snapper"
+
+
 Clients clients;
 
 Jobs jobs;
@@ -63,7 +68,7 @@ reply_to_introspect(DBus::Connection& conn, DBus::Message& msg)
        "      <arg name='xml_data' type='s' direction='out'/>\n"
        "    </method>\n"
        "  </interface>\n"
-       "  <interface name='org.opensuse.snapper'>\n"
+       "  <interface name='" INTERFACE "'>\n"
 
        "    <method name='ListConfigs'>\n"
        "      <arg name='configs' type='v' direction='out'/>\n"
@@ -72,6 +77,8 @@ reply_to_introspect(DBus::Connection& conn, DBus::Message& msg)
        "    <method name='CreateConfig'>\n"
        "      <arg name='config-name' type='s' direction='in'/>\n"
        "      <arg name='subvolume' type='s' direction='in'/>\n"
+       "      <arg name='fstype' type='s' direction='in'/>\n"
+       "      <arg name='template-name' type='s' direction='in'/>\n"
        "    </method>\n"
 
        "    <method name='DeleteConfig'>\n"
@@ -229,10 +236,21 @@ check_lock(DBus::Connection& conn, DBus::Message& msg, const string& config_name
 
 
 void
-send_signal_config_created(DBus::Connection& conn, const string& config_name,
-                          const string& subvolume)
+send_signal_config_created(DBus::Connection& conn, const string& config_name)
+{
+    DBus::MessageSignal msg(PATH, INTERFACE, "ConfigCreated");
+
+    DBus::Hoho hoho(msg);
+    hoho << config_name;
+
+    conn.send(msg);
+}
+
+
+void
+send_signal_config_deleted(DBus::Connection& conn, const string& config_name)
 {
-    DBus::MessageSignal msg("/org/opensuse/snapper", "org.opensuse.snapper", "ConfigCreated");
+    DBus::MessageSignal msg(PATH, INTERFACE, "ConfigDeleted");
 
     DBus::Hoho hoho(msg);
     hoho << config_name;
@@ -245,7 +263,7 @@ void
 send_signal_snapshot_created(DBus::Connection& conn, const string& config_name,
                             unsigned int num)
 {
-    DBus::MessageSignal msg("/org/opensuse/snapper", "org.opensuse.snapper", "SnapshotCreated");
+    DBus::MessageSignal msg(PATH, INTERFACE, "SnapshotCreated");
 
     DBus::Hoho hoho(msg);
     hoho << config_name << num;
@@ -258,7 +276,7 @@ void
 send_signal_snapshot_deleted(DBus::Connection& conn, const string& config_name,
                             unsigned int num)
 {
-    DBus::MessageSignal msg("/org/opensuse/snapper", "org.opensuse.snapper", "SnapshotDeleted");
+    DBus::MessageSignal msg(PATH, INTERFACE, "SnapshotDeleted");
 
     DBus::Hoho hoho(msg);
     hoho << config_name << num;
@@ -283,6 +301,32 @@ reply_to_command_list_configs(DBus::Connection& conn, DBus::Message& msg)
 
 void
 reply_to_command_create_config(DBus::Connection& conn, DBus::Message& msg)
+{
+    string config_name;
+    string subvolume;
+    string fstype;
+    string template_name;
+
+    DBus::Hihi hihi(msg);
+    hihi >> config_name >> subvolume >> fstype >> template_name;
+
+    y2mil("CreateConfig config_name:" << config_name << " subvolume:" << subvolume <<
+         " fstype:" << fstype << " template_name:" << template_name);
+
+    check_permission(conn, msg);
+
+    Snapper::createConfig(config_name, subvolume, fstype, template_name);
+
+    DBus::MessageMethodReturn reply(msg);
+
+    conn.send(reply);
+
+    send_signal_config_created(conn, config_name);
+}
+
+
+void
+reply_to_command_delete_config(DBus::Connection& conn, DBus::Message& msg)
 {
     string config_name;
     string subvolume;
@@ -290,15 +334,17 @@ reply_to_command_create_config(DBus::Connection& conn, DBus::Message& msg)
     DBus::Hihi hihi(msg);
     hihi >> config_name >> subvolume;
 
-    y2mil("ListSnapshots config_name:" << config_name << " subvolume:" << subvolume);
+    y2mil("DeleteConfig config_name:" << config_name);
 
     check_permission(conn, msg);
 
+    Snapper::deleteConfig(config_name);
+
     DBus::MessageMethodReturn reply(msg);
 
     conn.send(reply);
 
-    send_signal_config_created(conn, config_name, subvolume);
+    send_signal_config_deleted(conn, config_name);
 }
 
 
@@ -750,33 +796,35 @@ dispatch(DBus::Connection& conn, DBus::Message& msg)
 {
     try
     {
-       if (msg.is_method_call("org.opensuse.snapper", "Debug"))
+       if (msg.is_method_call(INTERFACE, "Debug"))
            reply_to_command_debug(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "ListConfigs"))
+       else if (msg.is_method_call(INTERFACE, "ListConfigs"))
            reply_to_command_list_configs(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "CreateConfig"))
+       else if (msg.is_method_call(INTERFACE, "CreateConfig"))
            reply_to_command_create_config(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "LockConfig"))
+       else if (msg.is_method_call(INTERFACE, "DeleteConfig"))
+           reply_to_command_delete_config(conn, msg);
+       else if (msg.is_method_call(INTERFACE, "LockConfig"))
            reply_to_command_lock_config(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "UnlockConfig"))
+       else if (msg.is_method_call(INTERFACE, "UnlockConfig"))
            reply_to_command_unlock_config(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "ListSnapshots"))
+       else if (msg.is_method_call(INTERFACE, "ListSnapshots"))
            reply_to_command_list_snapshots(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "CreateSingleSnapshot"))
+       else if (msg.is_method_call(INTERFACE, "CreateSingleSnapshot"))
            reply_to_command_create_single_snapshot(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "CreatePreSnapshot"))
+       else if (msg.is_method_call(INTERFACE, "CreatePreSnapshot"))
            reply_to_command_create_pre_snapshot(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "CreatePostSnapshot"))
+       else if (msg.is_method_call(INTERFACE, "CreatePostSnapshot"))
            reply_to_command_create_post_snapshot(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "DeleteSnapshot"))
+       else if (msg.is_method_call(INTERFACE, "DeleteSnapshot"))
            reply_to_command_delete_snapshot(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "CreateComparison"))
+       else if (msg.is_method_call(INTERFACE, "CreateComparison"))
            reply_to_command_create_comparison(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "GetFiles"))
+       else if (msg.is_method_call(INTERFACE, "GetFiles"))
            reply_to_command_get_files(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "SetUndo"))
+       else if (msg.is_method_call(INTERFACE, "SetUndo"))
            reply_to_command_set_undo(conn, msg);
-       else if (msg.is_method_call("org.opensuse.snapper", "GetDiff"))
+       else if (msg.is_method_call(INTERFACE, "GetDiff"))
            reply_to_command_get_diff(conn, msg);
     }
     catch (const DBus::MarshallingException& e)