diff options
author | Zdenek Prikryl <zprikryl@redhat.com> | 2009-08-14 20:59:43 +0200 |
---|---|---|
committer | Zdenek Prikryl <zprikryl@redhat.com> | 2009-08-14 20:59:43 +0200 |
commit | 3c226c987f5015e8184bfc4293ee9f9b2f7b8f67 (patch) | |
tree | b2ec9e8f5ec3140008a15cccea4030c438dbe72e /lib/Plugins | |
parent | 15e44fefb8e0ce093e91bc0fd96302c6b77bf92a (diff) | |
download | abrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.tar.gz abrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.tar.xz abrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.zip |
added support for storing results from reporters (used from gui)
Diffstat (limited to 'lib/Plugins')
-rw-r--r-- | lib/Plugins/Bugzilla.cpp | 11 | ||||
-rw-r--r-- | lib/Plugins/Bugzilla.h | 6 | ||||
-rw-r--r-- | lib/Plugins/KerneloopsReporter.cpp | 8 | ||||
-rw-r--r-- | lib/Plugins/KerneloopsReporter.h | 4 | ||||
-rw-r--r-- | lib/Plugins/Logger.cpp | 8 | ||||
-rw-r--r-- | lib/Plugins/Logger.h | 4 | ||||
-rw-r--r-- | lib/Plugins/Mailx.cpp | 3 | ||||
-rw-r--r-- | lib/Plugins/Mailx.h | 4 | ||||
-rw-r--r-- | lib/Plugins/SQLite3.cpp | 12 | ||||
-rw-r--r-- | lib/Plugins/SQLite3.h | 2 |
10 files changed, 41 insertions, 21 deletions
diff --git a/lib/Plugins/Bugzilla.cpp b/lib/Plugins/Bugzilla.cpp index 2a91b959..5e3602f4 100644 --- a/lib/Plugins/Bugzilla.cpp +++ b/lib/Plugins/Bugzilla.cpp @@ -150,7 +150,7 @@ void CReporterBugzilla::AddPlusOneCC(const std::string& pBugId) ret = xmlrpc_c::value_struct(rpc->getResult()); } -bool CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID) +std::string CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID) { xmlrpc_c::paramList paramList; map_xmlrpc_params_t searchParams; @@ -182,9 +182,9 @@ bool CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const AddPlusOneComment(ss.str()); AddPlusOneCC(ss.str()); - return true; + return ss.str(); } - return false; + return ""; } void CReporterBugzilla::CreateNewBugDescription(const map_crash_report_t& pCrashReport, std::string& pDescription) @@ -358,7 +358,7 @@ void CReporterBugzilla::AddAttachments(const std::string& pBugId, const map_cras } } -void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) +std::string CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) { std::string package = pCrashReport.find(FILENAME_PACKAGE)->second[CD_CONTENT]; std::string component = package.substr(0, package.rfind("-", package.rfind("-")-1)); @@ -371,7 +371,7 @@ void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std { Login(); comm_layer_inner_status("Checking for duplicates..."); - if (!CheckUUIDInBugzilla(component, uuid)) + if ((bugId = CheckUUIDInBugzilla(component, uuid)) == "") { comm_layer_inner_status("Creating new bug..."); bugId = NewBug(pCrashReport); @@ -386,6 +386,7 @@ void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std throw CABRTException(EXCEP_PLUGIN, std::string("CReporterBugzilla::Report(): ") + e.what()); } DeleteXMLRPCClient(); + return "See bug in bugzilla: " + m_sBugzillaURL + ", bug id:" + bugId; } void CReporterBugzilla::SetSettings(const map_plugin_settings_t& pSettings) diff --git a/lib/Plugins/Bugzilla.h b/lib/Plugins/Bugzilla.h index 3849f17f..575de1f0 100644 --- a/lib/Plugins/Bugzilla.h +++ b/lib/Plugins/Bugzilla.h @@ -19,7 +19,7 @@ class CReporterBugzilla : public CReporter void Logout(); void AddPlusOneComment(const std::string& pBugId); void AddPlusOneCC(const std::string& pBugId); - bool CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID); + std::string CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID); std::string NewBug(const map_crash_report_t& pCrashReport); void AddAttachments(const std::string& pBugId, const map_crash_report_t& pCrashReport); void CreateNewBugDescription(const map_crash_report_t& pCrashReport, @@ -42,8 +42,8 @@ class CReporterBugzilla : public CReporter virtual ~CReporterBugzilla(); virtual void SetSettings(const map_plugin_settings_t& pSettings); virtual map_plugin_settings_t GetSettings(); - virtual void Report(const map_crash_report_t& pCrashReport, - const std::string& pArgs); + virtual std::string Report(const map_crash_report_t& pCrashReport, + const std::string& pArgs); }; #endif /* BUGZILLA_H_ */ diff --git a/lib/Plugins/KerneloopsReporter.cpp b/lib/Plugins/KerneloopsReporter.cpp index 1860fd8b..647ff8f9 100644 --- a/lib/Plugins/KerneloopsReporter.cpp +++ b/lib/Plugins/KerneloopsReporter.cpp @@ -28,6 +28,7 @@ #include "KerneloopsReporter.h" #include "CommLayerInner.h" #include <curl/curl.h> +#include "ABRTException.h" #define FILENAME_KERNELOOPS "kerneloops" @@ -92,7 +93,7 @@ CKerneloopsReporter::CKerneloopsReporter() : m_sSubmitURL("http://submit.kerneloops.org/submitoops.php") {} -void CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) +std::string CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) { int ret = -1; map_crash_report_t::const_iterator it; @@ -109,8 +110,11 @@ void CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const s } if (ret) + { /* FIXME: be more informative */ - comm_layer_inner_status("Report has not been sent..."); + throw CABRTException(EXCEP_PLUGIN, std::string("CKerneloopsReporter::Report(): Report has not been sent...")); + } + return "Kernel oops report was uploaded to :" + m_sSubmitURL; } void CKerneloopsReporter::SetSettings(const map_plugin_settings_t& pSettings) diff --git a/lib/Plugins/KerneloopsReporter.h b/lib/Plugins/KerneloopsReporter.h index c8295a7a..f1b427f8 100644 --- a/lib/Plugins/KerneloopsReporter.h +++ b/lib/Plugins/KerneloopsReporter.h @@ -42,8 +42,8 @@ class CKerneloopsReporter : public CReporter virtual void SetSettings(const map_plugin_settings_t& pSettings); virtual map_plugin_settings_t GetSettings(); - virtual void Report(const map_crash_report_t& pCrashReport, - const std::string& pArgs); + virtual std::string Report(const map_crash_report_t& pCrashReport, + const std::string& pArgs); }; #endif diff --git a/lib/Plugins/Logger.cpp b/lib/Plugins/Logger.cpp index cb702276..fc96dcac 100644 --- a/lib/Plugins/Logger.cpp +++ b/lib/Plugins/Logger.cpp @@ -24,6 +24,7 @@ #include <sstream> #include "DebugDump.h" #include "CommLayerInner.h" +#include "ABRTException.h" CLogger::CLogger() : m_sLogPath("/var/log/abrt-logger"), @@ -52,7 +53,7 @@ map_plugin_settings_t CLogger::GetSettings() return ret; } -void CLogger::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) +std::string CLogger::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) { comm_layer_inner_status("Creating a report..."); @@ -130,6 +131,11 @@ void CLogger::Report(const map_crash_report_t& pCrashReport, const std::string& fOut << std::endl; fOut.close(); } + else + { + throw CABRTException(EXCEP_PLUGIN, "CLogger::Report(): Cannot open file: " + m_sLogPath); + } + return "Report was stored into: " + m_sLogPath; } PLUGIN_INFO(REPORTER, diff --git a/lib/Plugins/Logger.h b/lib/Plugins/Logger.h index c838b3cb..60c76e4a 100644 --- a/lib/Plugins/Logger.h +++ b/lib/Plugins/Logger.h @@ -36,8 +36,8 @@ class CLogger : public CReporter virtual void SetSettings(const map_plugin_settings_t& pSettings); virtual map_plugin_settings_t GetSettings(); - virtual void Report(const map_crash_report_t& pCrashReport, - const std::string& pArgs); + virtual std::string Report(const map_crash_report_t& pCrashReport, + const std::string& pArgs); }; #endif /* LOGGER_H_ */ diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp index 5ee6b65d..6daf8eb9 100644 --- a/lib/Plugins/Mailx.cpp +++ b/lib/Plugins/Mailx.cpp @@ -61,7 +61,7 @@ void CMailx::SendEmail(const std::string& pSubject, const std::string& pText) } -void CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) +std::string CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs) { comm_layer_inner_status("Creating a report..."); @@ -135,6 +135,7 @@ void CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& p { SendEmail(m_sSubject, emailBody.str()); } + return "Email was send to :" + m_sEmailTo; } void CMailx::SetSettings(const map_plugin_settings_t& pSettings) diff --git a/lib/Plugins/Mailx.h b/lib/Plugins/Mailx.h index b5d78364..ff8685d9 100644 --- a/lib/Plugins/Mailx.h +++ b/lib/Plugins/Mailx.h @@ -44,8 +44,8 @@ class CMailx : public CReporter virtual void SetSettings(const map_plugin_settings_t& pSettings); virtual map_plugin_settings_t GetSettings(); - virtual void Report(const map_crash_report_t& pCrashReport, - const std::string& pArgs); + virtual std::string Report(const map_crash_report_t& pCrashReport, + const std::string& pArgs); }; #endif /* MAILX_H_ */ diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp index 7720c409..49f4448a 100644 --- a/lib/Plugins/SQLite3.cpp +++ b/lib/Plugins/SQLite3.cpp @@ -87,7 +87,9 @@ void CSQLite3::GetTable(const std::string& pCommand, vector_database_rows_t& pTa break; case 4: row.m_sReported = table[jj +(ncol*ii) + ncol]; break; - case 5: row.m_sTime = table[jj +(ncol*ii) + ncol]; + case 5: row.m_sMessage = table[jj +(ncol*ii) + ncol]; + break; + case 6: row.m_sTime = table[jj +(ncol*ii) + ncol]; break; default: break; @@ -155,6 +157,7 @@ void CSQLite3::CreateTable() DATABASE_COLUMN_DEBUG_DUMP_PATH" VARCHAR NOT NULL," DATABASE_COLUMN_COUNT" INT NOT NULL DEFAULT 1," DATABASE_COLUMN_REPORTED" INT NOT NULL DEFAULT 0," + DATABASE_COLUMN_MESSAGE" VARCHAR NOT NULL DEFAULT ''," DATABASE_COLUMN_TIME" VARCHAR NOT NULL DEFAULT 0," "PRIMARY KEY ("DATABASE_COLUMN_UUID","DATABASE_COLUMN_UID"));"); } @@ -211,7 +214,7 @@ void CSQLite3::Delete(const std::string& pUUID, const std::string& pUID) } } -void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID) +void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID, const std::string& pMessage) { if (Exist(pUUID, pUID)) { @@ -219,6 +222,11 @@ void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID) "SET "DATABASE_COLUMN_REPORTED" = 1 " "WHERE "DATABASE_COLUMN_UUID" = '"+pUUID+"' " "AND "DATABASE_COLUMN_UID" = '"+pUID+"';"); + Exec("UPDATE "ABRT_TABLE" " + "SET "DATABASE_COLUMN_MESSAGE" = '" + pMessage + "' " + "WHERE "DATABASE_COLUMN_UUID" = '"+pUUID+"' " + "AND "DATABASE_COLUMN_UID" = '"+pUID+"';"); + } else { diff --git a/lib/Plugins/SQLite3.h b/lib/Plugins/SQLite3.h index 987512e7..0b8e22a5 100644 --- a/lib/Plugins/SQLite3.h +++ b/lib/Plugins/SQLite3.h @@ -53,7 +53,7 @@ class CSQLite3 : public CDatabase const std::string& pTime); virtual void Delete(const std::string& pUUID, const std::string& pUID); - virtual void SetReported(const std::string& pUUID, const std::string& pUID); + virtual void SetReported(const std::string& pUUID, const std::string& pUID, const std::string& pMessage); virtual const vector_database_rows_t GetUIDData(const std::string& pUID); virtual const database_row_t GetUUIDData(const std::string& pUUID, const std::string& pUID); |