From: Andrei Pavel Date: Thu, 22 Jul 2021 18:45:43 +0000 (+0300) Subject: [#1077] proper notification logging X-Git-Tag: Kea-1.9.10~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84ab94f931871db92d2d703b722f212a2bd9f424;p=thirdparty%2Fkea.git [#1077] proper notification logging --- diff --git a/src/bin/netconf/netconf.cc b/src/bin/netconf/netconf.cc index 1c32df646f..780db0ed36 100644 --- a/src/bin/netconf/netconf.cc +++ b/src/bin/netconf/netconf.cc @@ -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 << diff --git a/src/bin/netconf/netconf_messages.cc b/src/bin/netconf/netconf_messages.cc index 434e52dd40..5ae5b7d6c8 100644 --- a/src/bin/netconf/netconf_messages.cc +++ b/src/bin/netconf/netconf_messages.cc @@ -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", diff --git a/src/bin/netconf/netconf_messages.h b/src/bin/netconf/netconf_messages.h index 38ca67a451..aae9d045be 100644 --- a/src/bin/netconf/netconf_messages.h +++ b/src/bin/netconf/netconf_messages.h @@ -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; diff --git a/src/bin/netconf/netconf_messages.mes b/src/bin/netconf/netconf_messages.mes index a75f9f677e..30b85d9494 100644 --- a/src/bin/netconf/netconf_messages.mes +++ b/src/bin/netconf/netconf_messages.mes @@ -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.