summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch
blob: 0b12671e5bdf9f5608238508eab9b7a9aa76a1f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
From 0a1390428fd6f5651669f4306f6105d33a24453c Mon Sep 17 00:00:00 2001
From: Ayushi Smriti <smriti.ayushi@intel.com>
Date: Mon, 10 May 2021 13:03:37 +0530
Subject: [PATCH] EventService: Log events for subscription actions

Log redfish event for below 3 actions
 - Add new subscription
 - Update existing subscription properties
 - Delete existing subscription
in order to notify the subscribed clients on the subscription related
information.

Modified method name accordingly to indicate the clear purpose and
added updateSubscription method with subscription id param
to log event for subscription update.

Tested:
 - Performed all the above actions and verified the redfish event
   messages are logged.

Change-Id: I528293e55b1f3401bc2bb09c11c63ae985fbfedb
Signed-off-by: AppaRao Puli <apparao.puli@intel.com>
Signed-off-by: Ayushi Smriti <smriti.ayushi@intel.com>
---
 .../include/event_service_manager.hpp         | 35 ++++++++++++++++---
 redfish-core/lib/event_service.hpp            |  2 +-
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 9952ef1..2b957ea 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -22,6 +22,7 @@
 #include "registries/task_event_message_registry.hpp"
 
 #include <sys/inotify.h>
+#include <systemd/sd-journal.h>
 
 #include <boost/asio/io_context.hpp>
 #include <boost/beast/core/span.hpp>
@@ -800,7 +801,7 @@ class EventServiceManager
         return;
     }
 
-    void updateSubscriptionData()
+    void persistSubscriptionData()
     {
         // Persist the config and subscription data.
         nlohmann::json jsonData;
@@ -897,7 +898,7 @@ class EventServiceManager
 
         if (updateConfig)
         {
-            updateSubscriptionData();
+            persistSubscriptionData();
         }
 
         if (updateRetryCfg)
@@ -992,7 +993,7 @@ class EventServiceManager
 
         if (updateFile)
         {
-            updateSubscriptionData();
+            persistSubscriptionData();
         }
 
 #ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
@@ -1007,6 +1008,13 @@ class EventServiceManager
 
         // Set Subscription ID for back trace
         subValue->setSubscriptionId(id);
+
+        /* Log event for subscription addition */
+        sd_journal_send("MESSAGE=Event subscription added(Id: %s)", id.c_str(),
+                        "PRIORITY=%i", LOG_INFO, "REDFISH_MESSAGE_ID=%s",
+                        "OpenBMC.0.1.EventSubscriptionAdded",
+                        "REDFISH_MESSAGE_ARGS=%s", id.c_str(), NULL);
+
         return id;
     }
 
@@ -1027,7 +1035,14 @@ class EventServiceManager
         {
             subscriptionsMap.erase(obj);
             updateNoOfSubscribersCount();
-            updateSubscriptionData();
+
+            persistSubscriptionData();
+            /* Log event for subscription delete. */
+            sd_journal_send("MESSAGE=Event subscription removed.(Id = %s)",
+                            id.c_str(), "PRIORITY=%i", LOG_INFO,
+                            "REDFISH_MESSAGE_ID=%s",
+                            "OpenBMC.0.1.EventSubscriptionRemoved",
+                            "REDFISH_MESSAGE_ARGS=%s", id.c_str(), NULL);
         }
     }
 
@@ -1049,6 +1064,18 @@ class EventServiceManager
         }
     }
 
+    void updateSubscription(const std::string& id)
+    {
+        persistSubscriptionData();
+
+        /* Log event for subscription update. */
+        sd_journal_send("MESSAGE=Event subscription updated.(Id = %s)",
+                        id.c_str(), "PRIORITY=%i", LOG_INFO,
+                        "REDFISH_MESSAGE_ID=%s",
+                        "OpenBMC.0.1.EventSubscriptionUpdated",
+                        "REDFISH_MESSAGE_ARGS=%s", id.c_str(), NULL);
+    }
+
     size_t getNumberOfSubscriptions()
     {
         return subscriptionsMap.size();
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index 297a4ea..ed4955e 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -616,7 +616,7 @@ class EventDestination : public Node
             subValue->updateRetryPolicy();
         }
 
-        EventServiceManager::getInstance().updateSubscriptionData();
+        EventServiceManager::getInstance().updateSubscription(params[0]);
     }
 
     void doDelete(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-- 
2.17.1