// *********************** ControlSocketConfigParser *************************
CfgControlSocketPtr
-ControlSocketConfigParser::parse(ConstElementPtr ctrl_sock_config) {
+ControlSocketConfigParser::parse(ConstElementPtr ctrl_sock_config, const std::string& service) {
CfgControlSocketPtr result;
string type_str = getString(ctrl_sock_config, "socket-type");
string name = getString(ctrl_sock_config, "socket-name");
result->setContext(user_context);
}
+ std::ostringstream msg;
+ switch (type) {
+ case CfgControlSocket::Type::UNIX:
+ msg << "with socket name: " << name;
+ break;
+ case CfgControlSocket::Type::HTTP:
+ msg << "with url: " << url_str;
+ break;
+ case CfgControlSocket::Type::STDOUT:
+ msg << "used for logging";
+ break;
+ }
+ LOG_INFO(netconf_logger, NETCONF_CONTROL_SOCKET_INFO)
+ .arg(service)
+ .arg(type_str)
+ .arg(msg.str());
+
return (result);
}
// *********************** ServerConfigParser *************************
CfgServerPtr
-ServerConfigParser::parse(ConstElementPtr server_config) {
+ServerConfigParser::parse(ConstElementPtr server_config, const string& service) {
CfgServerPtr result;
string model = getString(server_config, "model");
ConstElementPtr user_context = server_config->get("user-context");
CfgControlSocketPtr ctrl_sock;
if (ctrl_sock_config) {
ControlSocketConfigParser parser;
- ctrl_sock = parser.parse(ctrl_sock_config);
+ ctrl_sock = parser.parse(ctrl_sock_config, service);
}
try {
result.reset(new CfgServer(model, ctrl_sock));
/// instance.
///
/// @param ctrl_sock_config is the "control-socket" configuration to parse.
+ /// @param service The service name.
///
/// @return pointer to the new CfgControlSocket instance.
- CfgControlSocketPtr parse(data::ConstElementPtr ctrl_sock_config);
+ CfgControlSocketPtr parse(data::ConstElementPtr ctrl_sock_config,
+ const std::string& service = "");
}; // ControlSocketConfigParser
/// @brief Parser for CfgServer.
/// CfgServer, validates those entries, creates a CfgServer instance.
///
/// @param server_config is the value from the "managed-servers" map to parse.
+ /// @param service The service name.
/// @return pointer to the new CfgServer instance.
- CfgServerPtr parse(data::ConstElementPtr server_config);
+ CfgServerPtr parse(data::ConstElementPtr server_config,
+ const std::string& service = "");
}; // ServerConfigParser
} // namespace netconf
extern const isc::log::MessageID NETCONF_CONFIG_CHECK_FAIL = "NETCONF_CONFIG_CHECK_FAIL";
extern const isc::log::MessageID NETCONF_CONFIG_FAIL = "NETCONF_CONFIG_FAIL";
extern const isc::log::MessageID NETCONF_CONFIG_SYNTAX_WARNING = "NETCONF_CONFIG_SYNTAX_WARNING";
+extern const isc::log::MessageID NETCONF_CONTROL_SOCKET_INFO = "NETCONF_CONTROL_SOCKET_INFO";
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";
"NETCONF_CONFIG_CHECK_FAIL", "NETCONF configuration check failed: %1",
"NETCONF_CONFIG_FAIL", "NETCONF configuration failed: %1",
"NETCONF_CONFIG_SYNTAX_WARNING", "NETCONF configuration syntax warning: %1",
+ "NETCONF_CONTROL_SOCKET_INFO", "the service: %1 started using control socket type: %2 %3",
"NETCONF_FAILED", "application experienced a fatal error: %1",
"NETCONF_GET_CONFIG", "got configuration from %1 server: %2",
"NETCONF_GET_CONFIG_FAILED", "getting configuration from %1 server failed: %2",
extern const isc::log::MessageID NETCONF_CONFIG_CHECK_FAIL;
extern const isc::log::MessageID NETCONF_CONFIG_FAIL;
extern const isc::log::MessageID NETCONF_CONFIG_SYNTAX_WARNING;
+extern const isc::log::MessageID NETCONF_CONTROL_SOCKET_INFO;
extern const isc::log::MessageID NETCONF_FAILED;
extern const isc::log::MessageID NETCONF_GET_CONFIG;
extern const isc::log::MessageID NETCONF_GET_CONFIG_FAILED;
This warning message indicates that the NETCONF configuration had a minor
syntax error. The error was displayed and the configuration parsing resumed.
+% NETCONF_CONTROL_SOCKET_INFO the service: %1 started using control socket type: %2 %3
+This info message provides details of the control socket used for the
+respective service. The service name, socket type and details are logged.
+
% NETCONF_FAILED application experienced a fatal error: %1
This is a fatal error message issued when kea-netconf
got an unrecoverable error from within the event loop.
if (servers) {
for (auto const& it : servers->mapValue()) {
ServerConfigParser server_parser;
- CfgServerPtr server = server_parser.parse(it.second);
+ CfgServerPtr server = server_parser.parse(it.second, it.first);
ctx->getCfgServersMap()->insert(make_pair(it.first, server));
}
}