" <arg name='config-name' type='s' direction='in'/>\n"
" </method>\n"
+ " <method name='GetPluginsReport'>\n"
+ " <arg name='report' type='a(sasi)' direction='out'/>\n"
+ " </method>\n"
+
+ " <method name='ClearPluginsReport'>\n"
+ " </method>\n"
+
" </interface>\n"
"</node>\n";
check_permission(conn, msg);
- meta_snappers.createConfig(config_name, subvolume, fstype, template_name);
+ meta_snappers.createConfig(config_name, subvolume, fstype, template_name, report);
DBus::MessageMethodReturn reply(msg);
check_lock(conn, msg, config_name);
check_config_in_use(*it);
- meta_snappers.deleteConfig(it);
+ meta_snappers.deleteConfig(it, report);
DBus::MessageMethodReturn reply(msg);
if (snap == snapshots.end())
SN_THROW(IllegalSnapshotException());
- snapper->modifySnapshot(snap, smd);
+ snapper->modifySnapshot(snap, smd, report);
DBus::MessageMethodReturn reply(msg);
Snapper* snapper = it->getSnapper();
- Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd);
+ Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd, report);
DBus::MessageMethodReturn reply(msg);
Snapshots::iterator parent = snapshots.find(parent_num);
- Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, scd);
+ Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, scd, report);
DBus::MessageMethodReturn reply(msg);
Snapper* snapper = it->getSnapper();
- Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd);
+ Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd, report);
DBus::MessageMethodReturn reply(msg);
Snapper* snapper = it->getSnapper();
- Snapshots::iterator snap1 = snapper->createPreSnapshot(scd);
+ Snapshots::iterator snap1 = snapper->createPreSnapshot(scd, report);
DBus::MessageMethodReturn reply(msg);
Snapshots::iterator snap1 = snapshots.find(pre_num);
- Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, scd);
+ Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, scd, report);
bool background_comparison = true;
it->getConfigInfo().get_value("BACKGROUND_COMPARISON", background_comparison);
Snapshots::iterator snap = snapshots.find(*it2);
- snapper->deleteSnapshot(snap);
+ snapper->deleteSnapshot(snap, report);
}
DBus::MessageMethodReturn reply(msg);
y2deb("Sync config_name:" << config_name);
+ boost::unique_lock<boost::shared_mutex> lock(big_mutex);
+
MetaSnappers::iterator it = meta_snappers.find(config_name);
check_permission(conn, msg, *it);
}
+void
+Client::get_plugins_report(DBus::Connection& conn, DBus::Message& msg)
+{
+ y2deb("GetPluginsReport");
+
+ boost::unique_lock<boost::shared_mutex> lock(big_mutex);
+
+ check_permission(conn, msg);
+
+ DBus::MessageMethodReturn reply(msg);
+
+ DBus::Marshaller marshaller(reply);
+ marshaller << report.entries;
+
+ conn.send(reply);
+}
+
+
+void
+Client::clear_plugins_report(DBus::Connection& conn, DBus::Message& msg)
+{
+ y2deb("ClearPluginsReport");
+
+ boost::unique_lock<boost::shared_mutex> lock(big_mutex);
+
+ check_permission(conn, msg);
+
+ DBus::MessageMethodReturn reply(msg);
+
+ report.clear();
+
+ DBus::Marshaller marshaller(reply);
+
+ conn.send(reply);
+}
+
+
void
Client::debug(DBus::Connection& conn, DBus::Message& msg)
{
{ "QueryQuota", &Client::query_quota },
{ "QueryFreeSpace", &Client::query_free_space },
{ "Sync", &Client::sync },
+ { "GetPluginsReport", &Client::get_plugins_report },
+ { "ClearPluginsReport", &Client::clear_plugins_report },
{ "Debug", &Client::debug }
};
#include <snapper/Snapper.h>
#include <snapper/Snapshot.h>
#include <snapper/Comparison.h>
+#include <snapper/Plugins.h>
#include <dbus/DBusConnection.h>
#include <dbus/DBusMessage.h>
void query_quota(DBus::Connection& conn, DBus::Message& msg);
void query_free_space(DBus::Connection& conn, DBus::Message& msg);
void sync(DBus::Connection& conn, DBus::Message& msg);
+ void get_plugins_report(DBus::Connection& conn, DBus::Message& msg);
+ void clear_plugins_report(DBus::Connection& conn, DBus::Message& msg);
void debug(DBus::Connection& conn, DBus::Message& msg);
void dispatch(DBus::Connection& conn, DBus::Message& msg);
bool zombie = false;
+ Plugins::Report report;
+
private:
void method_call_worker();
*/
-#include <string.h>
+#include <cstring>
#include <sys/types.h>
#include <boost/algorithm/string.hpp>
void
-MetaSnappers::createConfig(const string& config_name, const string& subvolume,
- const string& fstype, const string& template_name)
+MetaSnappers::createConfig(const string& config_name, const string& subvolume, const string& fstype,
+ const string& template_name, Plugins::Report& report)
{
- Snapper::createConfig(config_name, "/", subvolume, fstype, template_name);
+ Snapper::createConfig(config_name, "/", subvolume, fstype, template_name, report);
ConfigInfo config_info = Snapper::getConfig(config_name, "/");
void
-MetaSnappers::deleteConfig(iterator it)
+MetaSnappers::deleteConfig(iterator it, Plugins::Report& report)
{
- Snapper::deleteConfig(it->configName(), "/");
+ Snapper::deleteConfig(it->configName(), "/", report);
entries.erase(it);
}