]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1077] proper notification logging
authorAndrei Pavel <andrei@isc.org>
Thu, 22 Jul 2021 18:45:43 +0000 (21:45 +0300)
committerTomek Mrugalski <tomek@isc.org>
Fri, 23 Jul 2021 10:45:36 +0000 (10:45 +0000)
src/bin/netconf/netconf.cc
src/bin/netconf/netconf_messages.cc
src/bin/netconf/netconf_messages.h
src/bin/netconf/netconf_messages.mes

index 1c32df646ffdb2ecbe8e5180f9feb6d28bd8ae92..780db0ed36ae98d5f8a73df2223a92c2f8077f4c 100644 (file)
@@ -105,19 +105,40 @@ public:
                      sysrepo::S_Vals const vals,
                      time_t timestamp,
                      void* private_data) {
-        LOG_INFO(netconf_logger, NETCONF_INFO).arg("======== notification received ========");
+        string n;
+        switch (notification_type) {
+        case SR_EV_NOTIF_REALTIME:
+            n = "SR_EV_NOTIF_REALTIME";
+            break;
+        case SR_EV_NOTIF_REPLAY:
+            n = "SR_EV_NOTIF_REPLAY";
+            break;
+        case SR_EV_NOTIF_REPLAY_COMPLETE:
+            n = "SR_EV_NOTIF_REPLAY_COMPLETE";
+            break;
+        case SR_EV_NOTIF_STOP:
+            n = "SR_EV_NOTIF_STOP";
+            break;
+        case SR_EV_NOTIF_SUSPENDED:
+            n = "SR_EV_NOTIF_SUSPENDED";
+            break;
+        case SR_EV_NOTIF_RESUMED:
+            n = "SR_EV_NOTIF_RESUMED";
+            break;
+        }
+
+        stringstream s;
         for (size_t i(0); i < vals->val_cnt(); ++i) {
-            LOG_INFO(netconf_logger, NETCONF_INFO).arg(vals->val(i)->xpath());
+            if (i != 0) {
+                s << ", ";
+            }
+            s << vals->val(i)->to_string();
         }
-    }
 
-    void event_notif_tree(sysrepo::S_Session session,
-                          sr_ev_notif_type_t const notif_type,
-                          libyang::S_Data_Node const notification,
-                          time_t timestamp,
-                          void* private_data) {
-        LOG_INFO(netconf_logger, NETCONF_INFO).arg("======== notification tree received ========");
-        LOG_INFO(netconf_logger, NETCONF_INFO).arg(notification->print_mem(LYD_XML, LYP_FORMAT));
+        LOG_INFO(netconf_logger, NETCONF_NOTIFICATION_RECEIVED)
+            .arg(n)
+            .arg(service_pair_.first)
+            .arg(s.str());
     }
 };
 
@@ -478,19 +499,11 @@ NetconfAgent::subscribeToNotifications(const CfgServersMapPair& service_pair) {
             return agent.event_notif(session, notification_type, path, vals,
                                      timestamp, nullptr);
         };
-    auto event_notif_tree_callback =
-        [=](sysrepo::S_Session session,
-            sr_ev_notif_type_t const notification_type,
-            libyang::S_Data_Node const notification, time_t timestamp) {
-            NetconfAgentCallback agent(service_pair);
-            return agent.event_notif_tree(session, notification_type,
-                                          notification, timestamp, nullptr);
-        };
     try {
+        // The alternative event_notif_subscribe_tree() might expose more data
+        // as S_Data_Node if needed.
         subscription->event_notif_subscribe(model.c_str(),
             event_notif_callback);
-        subscription->event_notif_subscribe_tree(model.c_str(),
-            event_notif_tree_callback);
     } catch (const std::exception& ex) {
         ostringstream msg;
         msg << "event notification subscription for model " << model <<
index 434e52dd408759a89a1e3bc50ddcce73d9ce59ca..5ae5b7d6c811a3b6c2d6d6f02949f81eaf15a921 100644 (file)
@@ -16,13 +16,13 @@ extern const isc::log::MessageID NETCONF_FAILED = "NETCONF_FAILED";
 extern const isc::log::MessageID NETCONF_GET_CONFIG = "NETCONF_GET_CONFIG";
 extern const isc::log::MessageID NETCONF_GET_CONFIG_FAILED = "NETCONF_GET_CONFIG_FAILED";
 extern const isc::log::MessageID NETCONF_GET_CONFIG_STARTED = "NETCONF_GET_CONFIG_STARTED";
-extern const isc::log::MessageID NETCONF_INFO = "NETCONF_INFO";
 extern const isc::log::MessageID NETCONF_LOG_CHANGE_FAIL = "NETCONF_LOG_CHANGE_FAIL";
 extern const isc::log::MessageID NETCONF_MODULE_INSTALL = "NETCONF_MODULE_INSTALL";
 extern const isc::log::MessageID NETCONF_MODULE_MISSING_ERR = "NETCONF_MODULE_MISSING_ERR";
 extern const isc::log::MessageID NETCONF_MODULE_MISSING_WARN = "NETCONF_MODULE_MISSING_WARN";
 extern const isc::log::MessageID NETCONF_MODULE_REVISION_ERR = "NETCONF_MODULE_REVISION_ERR";
 extern const isc::log::MessageID NETCONF_MODULE_REVISION_WARN = "NETCONF_MODULE_REVISION_WARN";
+extern const isc::log::MessageID NETCONF_NOTIFICATION_RECEIVED = "NETCONF_NOTIFICATION_RECEIVED";
 extern const isc::log::MessageID NETCONF_RUN_EXIT = "NETCONF_RUN_EXIT";
 extern const isc::log::MessageID NETCONF_SET_CONFIG = "NETCONF_SET_CONFIG";
 extern const isc::log::MessageID NETCONF_SET_CONFIG_FAILED = "NETCONF_SET_CONFIG_FAILED";
@@ -57,13 +57,13 @@ const char* values[] = {
     "NETCONF_GET_CONFIG", "got configuration from %1 server: %2",
     "NETCONF_GET_CONFIG_FAILED", "getting configuration from %1 server failed: %2",
     "NETCONF_GET_CONFIG_STARTED", "getting configuration from %1 server",
-    "NETCONF_INFO", "%1",
     "NETCONF_LOG_CHANGE_FAIL", "Netconf configuration change logging failed: %1",
     "NETCONF_MODULE_INSTALL", "Sysrepo (un)installs a module: %1 (revision %2)",
     "NETCONF_MODULE_MISSING_ERR", "Missing essential module %1 in sysrepo",
     "NETCONF_MODULE_MISSING_WARN", "Missing module %1 in sysrepo",
     "NETCONF_MODULE_REVISION_ERR", "Essential module %1 does NOT have the right revision: expected %2, got %3",
     "NETCONF_MODULE_REVISION_WARN", "Module %1 does NOT have the right revision: expected %2, got %3",
+    "NETCONF_NOTIFICATION_RECEIVED", "Received notification of type %1 for module %1: %2",
     "NETCONF_RUN_EXIT", "application is exiting the event loop",
     "NETCONF_SET_CONFIG", "set configuration to %1 server: %2",
     "NETCONF_SET_CONFIG_FAILED", "setting configuration to %1 server failed: %2",
index 38ca67a4512a19df9a3d4b8e50837bec56119ecf..aae9d045bec39b84b522e81616126d253c8a62e2 100644 (file)
@@ -17,13 +17,13 @@ extern const isc::log::MessageID NETCONF_FAILED;
 extern const isc::log::MessageID NETCONF_GET_CONFIG;
 extern const isc::log::MessageID NETCONF_GET_CONFIG_FAILED;
 extern const isc::log::MessageID NETCONF_GET_CONFIG_STARTED;
-extern const isc::log::MessageID NETCONF_INFO;
 extern const isc::log::MessageID NETCONF_LOG_CHANGE_FAIL;
 extern const isc::log::MessageID NETCONF_MODULE_INSTALL;
 extern const isc::log::MessageID NETCONF_MODULE_MISSING_ERR;
 extern const isc::log::MessageID NETCONF_MODULE_MISSING_WARN;
 extern const isc::log::MessageID NETCONF_MODULE_REVISION_ERR;
 extern const isc::log::MessageID NETCONF_MODULE_REVISION_WARN;
+extern const isc::log::MessageID NETCONF_NOTIFICATION_RECEIVED;
 extern const isc::log::MessageID NETCONF_RUN_EXIT;
 extern const isc::log::MessageID NETCONF_SET_CONFIG;
 extern const isc::log::MessageID NETCONF_SET_CONFIG_FAILED;
index a75f9f677e361f62770fda883cb71cda79fb8c1c..30b85d94942fe3b8c9e89aff71013d59e70a93dd 100644 (file)
@@ -48,9 +48,6 @@ name of the server and the error are printed.
 This informational message indicates that Netconf is trying to get the
 configuration from a Kea server.
 
-% NETCONF_INFO %1
-Generic NETCONF message
-
 % NETCONF_LOG_CHANGE_FAIL Netconf configuration change logging failed: %1
 The warning message indicates that the configuration change logging
 encountered an unexpected condition. Details of it will be logged.
@@ -79,6 +76,12 @@ This warning message indicates that a module used by Kea is not at the
 right revision in the sysrepo repository. The name, expected and
 available revisions of the module are printed.
 
+% NETCONF_NOTIFICATION_RECEIVED Received notification of type %1 for module %1: %2
+This informational message logs any YANG notification that has been signaled
+by the server, sent to kea-netconf which then was forwarded to subscribed
+clients. To achieve this, kea-netconf subscribes itself as a client to all
+notifications for the configured module.
+
 % NETCONF_RUN_EXIT application is exiting the event loop
 This is a debug message issued when the Netconf application exits its
 event loop. This is a normal step during kea-netconf shutdown.