From: Arvin Schnell Date: Tue, 28 Nov 2023 07:32:40 +0000 (+0100) Subject: - added dbus function to query and clear plugins report X-Git-Tag: v0.10.7~3^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=77ebce4fe040a57074b7f70f7d7d3a90dfe9a51a;p=thirdparty%2Fsnapper.git - added dbus function to query and clear plugins report --- diff --git a/server/Client.cc b/server/Client.cc index c117c035..68f89d79 100644 --- a/server/Client.cc +++ b/server/Client.cc @@ -399,6 +399,13 @@ Client::introspect(DBus::Connection& conn, DBus::Message& msg) " \n" " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" "\n"; @@ -682,7 +689,7 @@ Client::create_config(DBus::Connection& conn, DBus::Message& msg) 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); @@ -710,7 +717,7 @@ Client::delete_config(DBus::Connection& conn, DBus::Message& 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); @@ -891,7 +898,7 @@ Client::set_snapshot(DBus::Connection& conn, DBus::Message& msg) if (snap == snapshots.end()) SN_THROW(IllegalSnapshotException()); - snapper->modifySnapshot(snap, smd); + snapper->modifySnapshot(snap, smd, report); DBus::MessageMethodReturn reply(msg); @@ -922,7 +929,7 @@ Client::create_single_snapshot(DBus::Connection& conn, DBus::Message& msg) Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd); + Snapshots::iterator snap1 = snapper->createSingleSnapshot(scd, report); DBus::MessageMethodReturn reply(msg); @@ -961,7 +968,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, scd); + Snapshots::iterator snap2 = snapper->createSingleSnapshot(parent, scd, report); DBus::MessageMethodReturn reply(msg); @@ -995,7 +1002,7 @@ Client::create_single_snapshot_of_default(DBus::Connection& conn, DBus::Message& Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd); + Snapshots::iterator snap = snapper->createSingleSnapshotOfDefault(scd, report); DBus::MessageMethodReturn reply(msg); @@ -1029,7 +1036,7 @@ Client::create_pre_snapshot(DBus::Connection& conn, DBus::Message& msg) Snapper* snapper = it->getSnapper(); - Snapshots::iterator snap1 = snapper->createPreSnapshot(scd); + Snapshots::iterator snap1 = snapper->createPreSnapshot(scd, report); DBus::MessageMethodReturn reply(msg); @@ -1067,7 +1074,7 @@ Client::create_post_snapshot(DBus::Connection& conn, DBus::Message& 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); @@ -1113,7 +1120,7 @@ Client::delete_snapshots(DBus::Connection& conn, DBus::Message& msg) Snapshots::iterator snap = snapshots.find(*it2); - snapper->deleteSnapshot(snap); + snapper->deleteSnapshot(snap, report); } DBus::MessageMethodReturn reply(msg); @@ -1708,6 +1715,8 @@ Client::sync(DBus::Connection& conn, DBus::Message& msg) y2deb("Sync config_name:" << config_name); + boost::unique_lock lock(big_mutex); + MetaSnappers::iterator it = meta_snappers.find(config_name); check_permission(conn, msg, *it); @@ -1722,6 +1731,43 @@ Client::sync(DBus::Connection& conn, DBus::Message& msg) } +void +Client::get_plugins_report(DBus::Connection& conn, DBus::Message& msg) +{ + y2deb("GetPluginsReport"); + + boost::unique_lock 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 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) { @@ -1836,6 +1882,8 @@ Client::dispatch(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 } }; diff --git a/server/Client.h b/server/Client.h index dd7e0962..5fee4a3d 100644 --- a/server/Client.h +++ b/server/Client.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -120,6 +121,8 @@ public: 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); @@ -174,6 +177,8 @@ public: bool zombie = false; + Plugins::Report report; + private: void method_call_worker(); diff --git a/server/MetaSnapper.cc b/server/MetaSnapper.cc index 506c6286..e0f090bc 100644 --- a/server/MetaSnapper.cc +++ b/server/MetaSnapper.cc @@ -21,7 +21,7 @@ */ -#include +#include #include #include @@ -172,10 +172,10 @@ MetaSnappers::find(const string& config_name) 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, "/"); @@ -184,9 +184,9 @@ MetaSnappers::createConfig(const string& config_name, const string& subvolume, void -MetaSnappers::deleteConfig(iterator it) +MetaSnappers::deleteConfig(iterator it, Plugins::Report& report) { - Snapper::deleteConfig(it->configName(), "/"); + Snapper::deleteConfig(it->configName(), "/", report); entries.erase(it); } diff --git a/server/MetaSnapper.h b/server/MetaSnapper.h index 7377e123..a630295e 100644 --- a/server/MetaSnapper.h +++ b/server/MetaSnapper.h @@ -105,8 +105,8 @@ public: iterator find(const string& config_name); void createConfig(const string& config_name, const string& subvolume, const string& fstype, - const string& template_name); - void deleteConfig(iterator); + const string& template_name, Plugins::Report& report); + void deleteConfig(iterator, Plugins::Report& report); private: diff --git a/server/Types.cc b/server/Types.cc index db469bc0..db72afcf 100644 --- a/server/Types.cc +++ b/server/Types.cc @@ -1,6 +1,6 @@ /* * Copyright (c) [2012-2013] Novell, Inc. - * Copyright (c) [2016,2018] SUSE LLC + * Copyright (c) [2016-2023] SUSE LLC * * All Rights Reserved. * @@ -31,6 +31,7 @@ namespace DBus const char* TypeInfo::signature = "(su)"; const char* TypeInfo::signature = "(tt)"; const char* TypeInfo::signature = "(tt)"; + const char* TypeInfo::signature = "(sasi)"; Marshaller& @@ -124,4 +125,14 @@ namespace DBus return marshaller; } + + Marshaller& + operator<<(Marshaller& marshaller, const Plugins::Report::Entry& data) + { + marshaller.open_struct(); + marshaller << data.name << data.args << data.exit_status; + marshaller.close_struct(); + return marshaller; + } + } diff --git a/server/Types.h b/server/Types.h index a51fabd1..478612ec 100644 --- a/server/Types.h +++ b/server/Types.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2012 Novell, Inc. - * Copyright (c) [2016,2018] SUSE LLC + * Copyright (c) [2016-2023] SUSE LLC * * All Rights Reserved. * @@ -22,11 +22,10 @@ #include -#include -#include -#include - +#include +#include #include +#include #include #include @@ -46,6 +45,7 @@ namespace DBus template <> struct TypeInfo { static const char* signature; }; template <> struct TypeInfo { static const char* signature; }; template <> struct TypeInfo { static const char* signature; }; + template <> struct TypeInfo { static const char* signature; }; Marshaller& operator<<(Marshaller& marshaller, const ConfigInfo& data); @@ -64,4 +64,6 @@ namespace DBus Marshaller& operator<<(Marshaller& marshaller, const FreeSpaceData& data); + Marshaller& operator<<(Marshaller& marshaller, const Plugins::Report::Entry& data); + }