if (NetconfProcess::shut_down) {
return (SR_ERR_DISCONNECT);
}
- NetconfAgent::logChanges(sess, xpath + "logging");
- if (NetconfProcess::shut_down) {
- return (SR_ERR_DISCONNECT);
- }
switch (event) {
case SR_EV_VERIFY:
return (NetconfAgent::validate(sess, service_pair_));
if (agent && (agent->startup_sess_)) {
string xpath = "/kea-dhcp4-server:config";
EXPECT_NO_THROW(agent->startup_sess_->delete_item(xpath.c_str()));
- xpath = "/kea-dhcp4-server:logging";
- EXPECT_NO_THROW(agent->startup_sess_->delete_item(xpath.c_str()));
EXPECT_NO_THROW(agent->startup_sess_->commit());
}
}
sr_notif_event_t /*event*/,
void* /*private_ctx*/) {
NetconfAgent::logChanges(sess, "/kea-dhcp4-server:config");
- NetconfAgent::logChanges(sess, "/kea-dhcp4-server:logging");
finished = true;
return (SR_ERR_OK);
}
description "This model defines a YANG data model that can be
used to configure and manage a Kea control agent.";
- revision 2018-11-16 {
+ revision 2018-11-19 {
description "Initial revision";
reference "";
}
type kea:user-context;
description "Control agent user context.";
}
- }
-
- container logging {
- // config true;
- description "Logging";
- uses logging:configuration;
+ // Moved from logging
+ uses logging:loggers;
}
}
description "This model defines a YANG data model that can be
used to configure and manage a Kea DHCP-DDNS server.";
- revision 2018-11-16 {
+ revision 2018-11-19 {
description "Initial revision";
reference "";
}
type kea:user-context;
description "DHCP-DDNS server user context.";
}
- }
-
- container logging {
- // config true;
- description "Logging";
- uses logging:configuration;
+ // Moved from logging
+ uses logging:loggers;
}
}
description "This model defines a YANG data model that can be
used to configure and manage a Kea DHCPv4 server.";
- revision 2018-11-18 {
+ revision 2018-11-19 {
description "Initial revision";
reference "";
}
uses dhcp:config-control;
uses dhcp:server-tag;
uses dhcp:dhcp-queue-control;
- }
-
- container logging {
- // config true;
- description "Logging";
-
- uses logging:configuration;
+ // Moved from logging
+ uses logging:loggers;
}
/*
description "This model defines a YANG data model that can be
used to configure and manage a Kea DHCPv6 server.";
- revision 2018-11-18 {
+ revision 2018-11-19 {
description "Initial revision";
reference "";
}
uses dhcp:config-control;
uses dhcp:server-tag;
uses dhcp:dhcp-queue-control;
- }
-
- container logging {
- // config true;
- description "Logging";
-
- uses logging:configuration;
+ // Moved from logging
+ uses logging:loggers;
}
/*
useModel(KEA_DHCP4_SERVER);
// Get empty.
- const string& xpath = "/kea-dhcp4-server:logging";
+ const string& xpath = "/kea-dhcp4-server:config";
ConstElementPtr loggers;
EXPECT_NO_THROW(loggers = t_obj_->getLoggers(xpath));
ASSERT_TRUE(loggers);
useModel(KEA_DHCP6_SERVER);
// Set a value.
- const string& xpath = "/kea-dhcp6-server:logging";
+ const string& xpath = "/kea-dhcp6-server:config";
const string& xlogger = xpath + "/logger[name='foo']";
const string& xseverity = xlogger + "/severity";
const string& xoption = xlogger + "/output-option[output='/bar']";
useModel(KEA_DHCP4_SERVER);
// Set a value.
- const string& xpath = "/kea-dhcp4-server:logging";
+ const string& xpath = "/kea-dhcp4-server:config";
ElementPtr option = Element::createMap();
option->set("output", Element::create(string("/bar")));
option->set("maxver", Element::create(10));
// Check the tree representation.
S_Tree tree;
- EXPECT_NO_THROW(tree = sess_->get_subtree("/kea-dhcp4-server:logging"));
+ EXPECT_NO_THROW(tree = sess_->get_subtree("/kea-dhcp4-server:config"));
ASSERT_TRUE(tree);
string expected =
- "kea-dhcp4-server:logging (container)\n"
+ "kea-dhcp4-server:config (container)\n"
" |\n"
" -- logger (list instance)\n"
" |\n"
ElementPtr
TranslatorConfig::getConfigKea4() {
ElementPtr result = Element::createMap();
- result->set("Dhcp4", getServerKeaDhcp4());
- ConstElementPtr logging = getServerKeaLogging();
- if (logging && !logging->empty()) {
- result->set("Logging", logging);
+ ElementPtr dhcp = getServerKeaDhcp4();
+ result->set("Dhcp4", dhcp);
+ ConstElementPtr loggers = dhcp->get("loggers");
+ if (loggers) {
+ dhcp->remove("loggers");
+
+ ElementPtr logging = Element::createMap();
+ logging->set("loggers", loggers);
+ result->set("Logging", logging);
}
return (result);
}
ElementPtr
TranslatorConfig::getConfigKea6() {
ElementPtr result = Element::createMap();
- result->set("Dhcp6", getServerKeaDhcp6());
- ConstElementPtr logging = getServerKeaLogging();
- if (logging && !logging->empty()) {
- result->set("Logging", logging);
+ ElementPtr dhcp = getServerKeaDhcp6();
+ result->set("Dhcp6", dhcp);
+ ConstElementPtr loggers = dhcp->get("loggers");
+ if (loggers) {
+ dhcp->remove("loggers");
+
+ ElementPtr logging = Element::createMap();
+ logging->set("loggers", loggers);
+ result->set("Logging", logging);
}
return (result);
}
result->set("dhcp-queue-control",
Element::fromJSON(queue_ctrl->stringValue()));
}
+ ConstElementPtr loggers = getLoggers(xpath);
+ if (loggers && !loggers->empty()) {
+ result->set("loggers", loggers);
+ }
return (result);
}
return (result);
}
-ElementPtr
-TranslatorConfig::getServerKeaLogging() {
- string xpath = "/" + model_ + ":logging";
- ElementPtr result = Element::createMap();
- ConstElementPtr loggers = getLoggers(xpath);
- if (loggers && !loggers->empty()) {
- result->set("loggers", loggers);
- }
- return (result);
-}
-
void
TranslatorConfig::setConfig(ConstElementPtr elem) {
try {
void
TranslatorConfig::delConfigKea() {
delItem("/" + model_ + ":config");
- delItem("/" + model_ + ":logging");
}
void
void
TranslatorConfig::setServerKeaLogging(ConstElementPtr elem) {
- string xpath = "/" + model_ + ":logging";
+ string xpath = "/" + model_ + ":config";
ConstElementPtr loggers = elem->get("loggers");
if (loggers) {
setLoggers(xpath, loggers);
/// +--rw config-database*
/// +--rw server-tag string
/// +--rw dhcp-queue-control string
+/// +--rw logger*
/// @endcode
///
/// Example of kea-dhcp6 simple configuration:
/// +--rw config-database*
/// +--rw server-tag string
/// +--rw dhcp-queue-control string
+/// +--rw logger*
/// @endcode
///
/// Example of kea-dhcp6 simple configuration:
/// }
/// @endcode
///
-/// YANG syntax for kea-*:logging is:
-/// @code
-/// +--rw logging
-/// +--rw logger*
-/// @endcode
-///
/// Example of Logging simple configuration:
/// @code
/// {
+/// ...
/// "Logging":
/// {
/// "loggers":
/// The same configuration wrote into YANG datastore using @c setConfig()
/// with a kea server model and exported to XML format:
/// @code
-/// <logging xmlns="urn:ietf:params:xml:ns:yang:kea-dhcp4-server">
+/// <config xmlns="urn:ietf:params:xml:ns:yang:kea-dhcp4-server">
+/// ...
/// <logger>
/// <name>kea-dhcp6</name>
/// <output-options>
/// <debuglevel>99</debuglevel>
/// <severity>DEBUG</severity>
/// </logger>
-/// </logging>
+/// </config>
/// @endcode
-///
-/// Note that sysrepo uses one XML document per container in the model.
/// Inheritance graph between translators is:
///
/// Currently supports the following models:
/// - kea-dhcp4-server
/// - kea-dhcp6-server
-/// - kea-logging
/// - ietf-dhcpv6-server (partial)
class TranslatorConfig : virtual public TranslatorControlSocket,
virtual public TranslatorDatabases,
/// @throw SysrepoError when sysrepo raises an error.
isc::data::ElementPtr getServerKeaDhcp6();
- /// @brief getServer for kea-*:logging.
- ///
- /// @return JSON representation of the config.
- /// @throw SysrepoError when sysrepo raises an error.
- isc::data::ElementPtr getServerKeaLogging();
-
/// @brief delConfig for kea-dhcp[46]-server.
void delConfigKea();
/// @param elem The JSON element.
void setServerKeaDhcp6(isc::data::ConstElementPtr elem);
- /// @brief setServer for kea-*:logging.
+ /// @brief set Logging part for kea-*:config.
///
/// @param elem The JSON element.
void setServerKeaLogging(isc::data::ConstElementPtr elem);
/// ]
/// @endcode
/// @code
-/// /kea-dhcp4-server:logging (container)
-/// /kea-dhcp4-server:logging/logger[name='foo'] (list instance)
-/// /kea-dhcp4-server:logging/logger[name='foo']/name = foo
-/// /kea-dhcp4-server:logging/logger[name='foo']/
+/// /kea-dhcp4-server:config (container)
+/// /kea-dhcp4-server:config/...
+/// /kea-dhcp4-server:config/logger[name='foo'] (list instance)
+/// /kea-dhcp4-server:config/logger[name='foo']/name = foo
+/// /kea-dhcp4-server:config/logger[name='foo']/
/// option[output='/bar'] (list instance)
-/// /kea-dhcp4-server:logging/logger[name='foo']/
+/// /kea-dhcp4-server:config/logger[name='foo']/
/// option[output='/bar']/option = /bar
-/// /kea-dhcp4-server:logging/logger[name='foo']/
+/// /kea-dhcp4-server:config/logger[name='foo']/
/// option[output='/bar']/maxver = 10
-/// /kea-dhcp4-server:logging/logger[name='foo']/severity = WARN
+/// /kea-dhcp4-server:config/logger[name='foo']/severity = WARN
/// @endcode
/// @brief A translator class for converting a logger between