#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);
}
+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;
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;
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;
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;
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;
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;
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;
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;
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);
try
{
- Snapper::createConfig(config_name, subvolume, fstype, template_name);
+ command_create_xconfig(conn, config_name, subvolume, fstype, template_name);
}
catch (const CreateConfigFailedException& e)
{
try
{
- Snapper::deleteConfig(config_name);
+ command_delete_xconfig(conn, config_name);
}
catch (const DeleteConfigFailedException& e)
{
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
method ListConfigs
-method CreateConfig config-name subvolume
+method CreateConfig config-name subvolume fstype template_name
method DeleteConfig config-name
signal ConfigCreated config-name
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;
iterator begin() { return entries.begin(); }
const_iterator begin() const { return entries.begin(); }
-
+
iterator end() { return entries.end(); }
const_iterator end() const { return entries.end(); }
list<Client> entries;
};
-
+
#endif
using namespace snapper;
+#define SERVICE "org.opensuse.snapper"
+#define PATH "/org/opensuse/snapper"
+#define INTERFACE "org.opensuse.snapper"
+
+
Clients clients;
Jobs jobs;
" <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"
" <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"
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;
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;
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;
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;
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);
}
{
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)