// The three control flags can be defined in this scope too
// and takes precedence over global and default values.
- "boot-update": false,
- "subscribe-changes": false,
+ // boot-update determines whether the initial configuration
+ // should be retrieved from netconf during kea-netconf startup.
+ // You almost always want to set this to yes.
+ "boot-update": true,
+
+ // This flag control whether the kea-netconf daemon should
+ // subscribe to any changes. If set to true, kea-netconf will
+ // monitor sysrepo and will pick up any changes that may be
+ // introduced, either using netconf clients or sysrepocfg.
+ "subscribe-changes": true,
+
+ // This parameters specifies whether kea-netconf will attempt
+ // to verify if the upcoming NETCONF configuration is sane. The
+ // verification is done by calling config-test. Depending on
+ // Kea response, the new configuration is accepted or rejected.
"validate-changes": false,
// Currently three control channel types are supported:
"comment": "Kea DHCP4 server serving network on floor 13"
}
- },
+ }
// Netconf is able to load hook libraries that augment its operation.
// The primary functionality is the ability to add new commands.
- "hooks-libraries": [
- // Hook libraries list may contain more than one library.
- {
- // The only necessary parameter is the library filename.
- "library": "/opt/local/netconf-commands.so",
-
- // Some libraries may support parameters. Make sure you
- // type this section carefully, as the CA does not validate
- // it (because the format is library specific).
- "parameters": {
- "param1": "foo"
- }
- }
- ]
+ //
+ // Uncomment this section to load a hook library.
+ //
+ // "hooks-libraries": [
+ // // Hook libraries list may contain more than one library.
+ // {
+ // // The only necessary parameter is the library filename.
+ // "library": "/opt/local/netconf-commands.so",
+ //
+ // // Some libraries may support parameters. Make sure you
+ // // type this section carefully, as the CA does not validate
+ // // it (because the format is library specific).
+ // "parameters": {
+ // "param1": "foo"
+ // }
+ // }
+ //]
},
"name": "kea-netconf",
"output_options": [
{
- "output": "/var/log/kea-netconf.log",
+ //"output": "/var/log/kea-netconf.log",
+ "output": "stdout",
// Several additional parameters are possible in addition
// to the typical output. Flush determines whether logger
// flushes output to a file. Maxsize determines maximum
"maxver": 4
}
],
+ // You can change the severity to DEBUG, INFO, WARN, ERROR or
+ // CRIT. For DEBUG level, you can also additionally specify
+ // debuglevel (0-99, higher = more verbose). All configurations
+ // are logged on DEBUG/55.
"severity": "INFO",
"debuglevel": 0
}
--- /dev/null
+<config xmlns="urn:ietf:params:xml:ns:yang:kea-dhcp4-server">
+ <subnet4>
+ <subnet4>
+ <id>1</id>
+ <pools>
+ <pool>
+ <start-address>192.0.2.100</start-address>
+ <end-address>192.0.2.200</end-address>
+ </pool>
+ </pools>
+ <subnet>192.0.2.0/24</subnet>
+ </subnet4>
+ </subnet4>
+ <interfaces-config>
+ <interfaces>eth1</interfaces>
+ </interfaces-config>
+ <control-socket>
+ <socket-name>/tmp/kea4-ctrl-socket</socket-name>
+ <socket-type>unix</socket-type>
+ </control-socket>
+</config>
config = parseAnswer(rcode, answer);
} catch (const std::exception& ex) {
ostringstream msg;
- msg << "configGet failed with " << ex.what();
+ msg << "config-get command failed with " << ex.what();
LOG_ERROR(netconf_logger, NETCONF_GET_CONFIG_FAILED)
.arg(service_pair.first)
.arg(msg.str());
}
if (rcode != CONTROL_RESULT_SUCCESS) {
ostringstream msg;
- msg << "configGet returned " << answerToText(answer);
+ msg << "config-get command returned " << answerToText(answer);
LOG_ERROR(netconf_logger, NETCONF_GET_CONFIG_FAILED)
.arg(service_pair.first)
.arg(msg.str());
.arg("configGet returned an empty configuration");
return;
}
+ LOG_INFO(netconf_logger, NETCONF_BOOT_UPDATE_COMPLETE)
+ .arg(service_pair.first);
+
LOG_DEBUG(netconf_logger, NETCONF_DBG_TRACE_DETAIL_DATA,
NETCONF_GET_CONFIG_CONFIG)
.arg(service_pair.first)
parseAnswer(rcode, answer);
} catch (const std::exception& ex) {
ostringstream msg;
- msg << "configSet failed with " << ex.what();
+ msg << "config-set command failed with " << ex.what();
LOG_ERROR(netconf_logger, NETCONF_SET_CONFIG_FAILED)
.arg(service_pair.first)
.arg(msg.str());
}
if (rcode != CONTROL_RESULT_SUCCESS) {
ostringstream msg;
- msg << "configSet returned " << answerToText(answer);
+ msg << "config-set command returned " << answerToText(answer);
LOG_ERROR(netconf_logger, NETCONF_SET_CONFIG_FAILED)
.arg(service_pair.first)
.arg(msg.str());
int
NetconfAgent::update(S_Session sess, const CfgServersMapPair& service_pair) {
+
+ // Check if we should and can process this update.
if (NetconfProcess::global_shut_down_flag ||
!service_pair.second->getSubscribeChanges()) {
return (SR_ERR_OK);
if (!ctrl_sock) {
return (SR_ERR_OK);
}
- LOG_DEBUG(netconf_logger, NETCONF_DBG_TRACE, NETCONF_UPDATE_CONFIG)
+
+ // All looks good, let's get started. Print an info that we're about
+ // to update the configuration.
+ LOG_INFO(netconf_logger, NETCONF_DBG_TRACE, NETCONF_UPDATE_CONFIG)
.arg(service_pair.first);
+
+ // Retrieve the configuration from SYSREPO first.
ConstElementPtr config;
try {
TranslatorConfig tc(sess, service_pair.second->getModel());
if (NetconfProcess::global_shut_down_flag) {
return (SR_ERR_OK);
}
+
+ // Ok, now open the control socket. We need this to send the config to
+ // the server.
ControlSocketBasePtr comm;
try {
comm = createControlSocket(ctrl_sock);
.arg(msg.str());
return (SR_ERR_OK);
}
+
+ // Now apply the config using config-set command.
ConstElementPtr answer;
int rcode;
try {
$NAMESPACE isc::netconf
+% NETCONF_BOOT_UPDATE_COMPLETE Boot-update configuration completed for server %1
+This informational message is issued when the initial configuration was retrieved
+from Netconf and successfully applied to Kea server.
+
% NETCONF_CONFIG_CHANGE_EVENT Received YANG configuration change %1 event
-This informational message is issued when Netconf receives an YANG
-configuration change even.t. The type of event is printed.
+This informational message is issued when Netconf receives a YANG
+configuration change event. The type of event is printed.
% NETCONF_CONFIG_CHANGED_DETAIL YANG configuration changed: %1
This debug message indicates a YANG configuration change. The format
% NETCONF_GET_CONFIG_FAILED getting configuration from %1 server failed: %2
The error message indicates that Netconf got an error getting the
-configuration from a Kea server. The name of the server and the error
+configuration from a Kea server. Make sure that the server is up and running,
+has appropriate control socket defined and that the controls socket configuration
+on the server matches that of kea-netconf. The name of the server and the error
are printed.
% NETCONF_LOG_CHANGE_FAIL Netconf configuration change logging failed: %1
% NETCONF_SET_CONFIG_FAILED setting configuration to %1 server: %2
The error message indicates that Netconf got an error setting the
configuration to a Kea server. The name of the server and the error
-are printed.
+are printed. Make sure that the server is up and running, has appropriate
+control socket defined and that the controls socket configuration
+on the server matches that of kea-netconf.
% NETCONF_STARTED Netconf (version %1) started
This informational message indicates that Netconf has processed
with a Kea server. The server name and the validated configuration are
printed.
-% NETCONF_VALIDATE_CONFIG_FAILED validating configuration with %1 server: %2
+% NETCONF_VALIDATE_CONFIG_ERROR validating configuration errored with %1 server: %2
The error message indicates that Netconf got an error validating the
configuration with a Kea server. The name of the server and the error
-are printed.
+are printed. This message is produced when exception is thrown during
+an attempt to validate received configuration. Additional explanation may be
+provided as a parameter. You may also take a look at earlier log messages.
+
+% NETCONF_VALIDATE_CONFIG_FAILED validating configuration with %1 server: %2
+The warning message indicates that Netconf got an error validating the
+configuration with a Kea server. The name of the server and the error
+are printed. This message is printed when the configuration was rejected
+during normal processing. Additional explanation may be provided as
+a parameter. You may also take a look at earlier log messages.
% NETCONF_UPDATE_CONFIG updating configuration for %1 server
This debug message indicates that Netconf is trying to update the