diff --git a/oam/oamcpp/liboamcpp.h b/oam/oamcpp/liboamcpp.h index c50c5bd9f..5f4d7f7a7 100644 --- a/oam/oamcpp/liboamcpp.h +++ b/oam/oamcpp/liboamcpp.h @@ -518,7 +518,8 @@ namespace oam ENABLEMYSQLREP, DISABLEMYSQLREP, GLUSTERASSIGN, - GLUSTERUNASSIGN + GLUSTERUNASSIGN, + PROCESSALARM }; /** @brief Process Management - Mgr to Mon request options diff --git a/oamapps/alarmmanager/alarmmanager.cpp b/oamapps/alarmmanager/alarmmanager.cpp index e03f38b4d..a94d375f8 100644 --- a/oamapps/alarmmanager/alarmmanager.cpp +++ b/oamapps/alarmmanager/alarmmanager.cpp @@ -283,12 +283,12 @@ void processAlarm(const Alarm& calAlarm) } /***************************************************************************************** -* @brief configAlarm +* @brief processAlarmReport * -* purpose: Get Config Data for Incoming alarm +* purpose: Process Alarm Report * *****************************************************************************************/ -void configAlarm (Alarm& calAlarm) +void ALARMManager::processAlarmReport (Alarm& calAlarm) { int alarmID = calAlarm.getAlarmID(); Oam oam; @@ -299,7 +299,7 @@ void configAlarm (Alarm& calAlarm) MessageLog ml(lid); Message msg; Message::Args args; - args.add("configAlarm Called"); + args.add("processAlarmReport Called"); msg.format(args); ml.logDebugMessage(msg); } @@ -437,19 +437,33 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st } else processName = repProcessName; - - Alarm calAlarm; - - calAlarm.setAlarmID (alarmID); - calAlarm.setComponentID (componentID); - calAlarm.setState (state); - calAlarm.setSname (ModuleName); - calAlarm.setPname (processName); - calAlarm.setPid (pid); - calAlarm.setTid (tid); - // Get alarm configuration - try { + //send request to ProcMgr to be processed + ByteStream msg1; + + msg1 << (ByteStream::byte) REQUEST; + msg1 << oam::PROCESSALARM; + msg1 << (ByteStream::byte) alarmID; + msg1 << (std::string) componentID; + msg1 << (ByteStream::byte) state; + msg1 << (std::string) ModuleName; + msg1 << (std::string) processName; + msg1 << (ByteStream::byte) pid; + msg1 << (ByteStream::byte) tid; + + try + { + //send the msg to Process Manager + MessageQueueClient procmgr("ProcMgr"); + procmgr.write(msg1); + + procmgr.shutdown(); + } + catch (...) + {} + + //There's other reasons, but this is the most likely... +/* try { configAlarm (calAlarm); } catch (runtime_error& e) { @@ -462,6 +476,7 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st msg.format(args); ml.logErrorMessage(msg); } +*/ return; #endif //SKIP_ALARM diff --git a/oamapps/alarmmanager/alarmmanager.h b/oamapps/alarmmanager/alarmmanager.h index 28909cbb7..9c8da9977 100644 --- a/oamapps/alarmmanager/alarmmanager.h +++ b/oamapps/alarmmanager/alarmmanager.h @@ -75,6 +75,8 @@ public: const int state, std::string repModuleName = "", std::string repProcessName = ""); + + EXPORT void processAlarmReport ( Alarm& calAlarm ); /** @brief return active alarm list diff --git a/procmgr/processmanager.cpp b/procmgr/processmanager.cpp index 3f1ea1304..0eb29bf54 100644 --- a/procmgr/processmanager.cpp +++ b/procmgr/processmanager.cpp @@ -2629,6 +2629,44 @@ void processMSG(messageqcpp::IOSocket* cfIos) break; } + case PROCESSALARM: + { + string dbroot; + msg >> dbroot; + + ByteStream::byte alarmID; + std::string componentID; + ByteStream::byte state; + std::string ModuleName; + std::string processName; + ByteStream::byte pid; + ByteStream::byte tid; + + msg >> alarmID; + msg >> componentID; + msg >> state; + msg >> ModuleName; + msg >> processName; + msg >> pid; + msg >> tid; + + Alarm calAlarm; + + calAlarm.setAlarmID (alarmID); + calAlarm.setComponentID (componentID); + calAlarm.setState (state); + calAlarm.setSname (ModuleName); + calAlarm.setPname (processName); + calAlarm.setPid (pid); + calAlarm.setTid (tid); + + ALARMManager aManager; + aManager.processAlarmReport(calAlarm); + + break; + } + + default: log.writeLog(__LINE__, "MSG RECEIVED: Invalid type" ); break;