From 2ff9657ffe776173bd9668d5557f6a9a1d8d5193 Mon Sep 17 00:00:00 2001 From: Andrei Pavel Date: Tue, 27 Dec 2022 10:45:09 +0200 Subject: [PATCH] [#1994] make YANG models identical to JSON config --- .../netconf/kea-dhcp6-operations/logging.xml | 4 +-- doc/sphinx/arm/ext-netconf.rst | 4 +-- .../yang/tests/translator_class_unittests.cc | 2 +- .../yang/tests/translator_logger_unittests.cc | 4 +-- .../tests/translator_pd_pool_unittests.cc | 6 ++-- .../yang/tests/translator_pool_unittests.cc | 2 +- .../yang/tests/translator_subnet_unittests.cc | 4 +-- src/lib/yang/tests/yang_configs.h | 28 +++++++++---------- src/lib/yang/translator_class.cc | 4 +-- src/lib/yang/translator_config.cc | 4 +-- src/lib/yang/translator_logger.cc | 10 +++---- src/lib/yang/translator_logger.h | 2 +- src/lib/yang/translator_pd_pool.cc | 13 +++++---- src/lib/yang/translator_pd_pool.h | 3 +- src/lib/yang/translator_pool.cc | 4 +-- .../hashes/kea-dhcp4-server@2022-07-27.hash | 1 + .../modules/hashes/kea-types@2019-08-12.hash | 2 +- .../modules/kea-dhcp4-server@2022-11-30.yang | 4 +-- .../modules/kea-dhcp6-server@2022-11-30.yang | 6 ++-- .../yang/modules/kea-types@2019-08-12.yang | 6 ++-- 20 files changed, 58 insertions(+), 55 deletions(-) create mode 100644 src/share/yang/modules/hashes/kea-dhcp4-server@2022-07-27.hash diff --git a/doc/examples/netconf/kea-dhcp6-operations/logging.xml b/doc/examples/netconf/kea-dhcp6-operations/logging.xml index 7ce04e4682..b9ec442219 100644 --- a/doc/examples/netconf/kea-dhcp6-operations/logging.xml +++ b/doc/examples/netconf/kea-dhcp6-operations/logging.xml @@ -17,9 +17,9 @@ kea-dhcp6 - + stderr - + 99 DEBUG diff --git a/doc/sphinx/arm/ext-netconf.rst b/doc/sphinx/arm/ext-netconf.rst index a1c9ce3822..d4db2507e2 100644 --- a/doc/sphinx/arm/ext-netconf.rst +++ b/doc/sphinx/arm/ext-netconf.rst @@ -1050,9 +1050,9 @@ configuration in the ``logging.xml`` file: kea-dhcp6 - + stderr - + 99 DEBUG diff --git a/src/lib/yang/tests/translator_class_unittests.cc b/src/lib/yang/tests/translator_class_unittests.cc index 02405c5313..ca7dbba434 100644 --- a/src/lib/yang/tests/translator_class_unittests.cc +++ b/src/lib/yang/tests/translator_class_unittests.cc @@ -60,7 +60,7 @@ TEST_F(TranslatorClassesTestv4, getEmpty) { TEST_F(TranslatorClassesTestv6, get) { // Create the client class. const string& xpath = "/kea-dhcp6-server:config"; - const string& xclass = xpath + "/client-class[name='foo']"; + const string& xclass = xpath + "/client-classes[name='foo']"; const string& xtest = xclass + "/test"; string const v_test("not member('ALL')"); EXPECT_NO_THROW_LOG(sess_->setItem(xtest, v_test)); diff --git a/src/lib/yang/tests/translator_logger_unittests.cc b/src/lib/yang/tests/translator_logger_unittests.cc index 365e4bd474..07f64bf024 100644 --- a/src/lib/yang/tests/translator_logger_unittests.cc +++ b/src/lib/yang/tests/translator_logger_unittests.cc @@ -58,9 +58,9 @@ TEST_F(TranslatorLoggersTestv4, getEmpty) { TEST_F(TranslatorLoggersTestv6, get) { // Set a value. const string& xpath = "/kea-dhcp6-server:config"; - const string& xlogger = xpath + "/logger[name='foo']"; + const string& xlogger = xpath + "/loggers[name='foo']"; const string& xseverity = xlogger + "/severity"; - const string& xoption = xlogger + "/output-option[output='/bar']"; + const string& xoption = xlogger + "/output_options[output='/bar']"; const string& xmaxver = xoption + "/maxver"; string const s_severity("WARN"); EXPECT_NO_THROW_LOG(sess_->setItem(xseverity, s_severity)); diff --git a/src/lib/yang/tests/translator_pd_pool_unittests.cc b/src/lib/yang/tests/translator_pd_pool_unittests.cc index f8c9388b55..a7091237bc 100644 --- a/src/lib/yang/tests/translator_pd_pool_unittests.cc +++ b/src/lib/yang/tests/translator_pd_pool_unittests.cc @@ -121,7 +121,7 @@ TEST_F(TranslatorPdPoolsTestKeaV6, getKea) { // Create the pd-pool 2001:db8:0:1000::/64. const string& prefix = "2001:db8:0:1000::/56"; ostringstream spool; - spool << xpath + "/pd-pool[prefix='" << prefix << "']"; + spool << xpath + "/pd-pools[prefix='" << prefix << "']"; const string& x_delegated = spool.str() + "/delegated-len"; uint8_t dl = 64; string const s_delegated(to_string(dl)); @@ -264,7 +264,7 @@ TEST_F(TranslatorPdPoolsTestKeaV6, getListKea) { // Create the first pd-pool 2001:db8:0:1000::/56. const string& prefix = "2001:db8:0:1000::/56"; ostringstream spool; - spool << xpath + "/pd-pool[prefix='" << prefix << "']"; + spool << xpath + "/pd-pools[prefix='" << prefix << "']"; const string& x_delegated = spool.str() + "/delegated-len"; uint8_t dl = 64; string const s_delegated(to_string(dl)); @@ -274,7 +274,7 @@ TEST_F(TranslatorPdPoolsTestKeaV6, getListKea) { // Create the second pd-pool 2001:db8:0:2000::/56 const string& prefix2 = "2001:db8:0:2000::/56"; ostringstream spool2; - spool2 << xpath + "/pd-pool[prefix='" << prefix2 << "']"; + spool2 << xpath + "/pd-pools[prefix='" << prefix2 << "']"; const string& x_delegated2 = spool2.str() + "/delegated-len"; uint8_t dl2 = 60; string const s_delegated2(to_string(dl2)); diff --git a/src/lib/yang/tests/translator_pool_unittests.cc b/src/lib/yang/tests/translator_pool_unittests.cc index ad0d25f428..f8f1857572 100644 --- a/src/lib/yang/tests/translator_pool_unittests.cc +++ b/src/lib/yang/tests/translator_pool_unittests.cc @@ -126,7 +126,7 @@ TEST_F(TranslatorPoolsTestKeaV6, getKea) { EXPECT_EQ("2001:db8::1:0", start_addr); EXPECT_EQ("2001:db8::1:ffff", end_addr); ostringstream spool; - spool << xpath + "/pool[start-address='" << start_addr + spool << xpath + "/pools[start-address='" << start_addr << "'][end-address='" << end_addr << "']"; const string& x_prefix = spool.str() + "/prefix"; string const s_prefix("2001:db8::1:0/112"); diff --git a/src/lib/yang/tests/translator_subnet_unittests.cc b/src/lib/yang/tests/translator_subnet_unittests.cc index d9a8104a11..1ad110e580 100644 --- a/src/lib/yang/tests/translator_subnet_unittests.cc +++ b/src/lib/yang/tests/translator_subnet_unittests.cc @@ -197,14 +197,14 @@ TEST_F(TranslatorSubnetsTestKeaV6, getPoolsKea) { sess_->applyChanges(); // Create the pool 2001:db8::1:0/112. - const string& prefix1 = xsub + "/pool[start-address='2001:db8::1:0']" + + const string& prefix1 = xsub + "/pools[start-address='2001:db8::1:0']" + "[end-address='2001:db8::1:ffff']/prefix"; string const s_pool1("2001:db8::1:0/112"); EXPECT_NO_THROW_LOG(sess_->setItem(prefix1, s_pool1)); sess_->applyChanges(); // Create the pool 2001:db8::2:0/112. - const string& prefix2 = xsub + "/pool[start-address='2001:db8::2:0']" + + const string& prefix2 = xsub + "/pools[start-address='2001:db8::2:0']" + "[end-address='2001:db8::2:ffff']"; EXPECT_NO_THROW_LOG(sess_->setItem(prefix2, nullopt)); sess_->applyChanges(); diff --git a/src/lib/yang/tests/yang_configs.h b/src/lib/yang/tests/yang_configs.h index c3bb0530c7..ffa22a95e1 100644 --- a/src/lib/yang/tests/yang_configs.h +++ b/src/lib/yang/tests/yang_configs.h @@ -424,16 +424,16 @@ const YRTree subnetOptionsTreeKeaDhcp4 = YangRepr::buildTreeFromVector({ "option-data[code='100'][space='dns']/always-send", "false", libyang::LeafBaseType::Bool, true }, { "/kea-dhcp4-server:config/subnet4[id='111']/" - "pool[start-address='10.0.1.0'][end-address='10.0.1.255']", + "pools[start-address='10.0.1.0'][end-address='10.0.1.255']", std::nullopt, libyang::LeafBaseType::Unknown, false }, { "/kea-dhcp4-server:config/subnet4[id='111']/" - "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/start-address", + "pools[start-address='10.0.1.0'][end-address='10.0.1.255']/start-address", "10.0.1.0", libyang::LeafBaseType::String, false }, { "/kea-dhcp4-server:config/subnet4[id='111']/" - "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/end-address", + "pools[start-address='10.0.1.0'][end-address='10.0.1.255']/end-address", "10.0.1.255", libyang::LeafBaseType::String, false }, { "/kea-dhcp4-server:config/subnet4[id='111']/" - "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/prefix", + "pools[start-address='10.0.1.0'][end-address='10.0.1.255']/prefix", "10.0.1.0/24", libyang::LeafBaseType::String, true }, { "/kea-dhcp4-server:config/subnet4[id='111']/subnet", "10.0.0.0/8", libyang::LeafBaseType::String, true }, @@ -466,42 +466,42 @@ const YRTree subnetOptionsTreeKeaDhcp6 = YangRepr::buildTreeFromVector({ { "/kea-dhcp6-server:config/subnet6[id='111']/id", "111", libyang::LeafBaseType::Uint32, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']", + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']", std::nullopt, libyang::LeafBaseType::Unknown, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "start-address", "2001:db8::1:0", libyang::LeafBaseType::String, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "end-address", "2001:db8::1:ffff", libyang::LeafBaseType::String, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "prefix", "2001:db8::1:0/112", libyang::LeafBaseType::String, true }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']", std::nullopt, libyang::LeafBaseType::Unknown, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']/code", "100", libyang::LeafBaseType::Uint16, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']/space", "dns", libyang::LeafBaseType::String, false }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']/data", "12121212", libyang::LeafBaseType::String, true }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']/csv-format", "false", libyang::LeafBaseType::Bool, true }, { "/kea-dhcp6-server:config/subnet6[id='111']/" - "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" + "pools[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" "option-data[code='100'][space='dns']/always-send", "false", libyang::LeafBaseType::Bool, true }, { "/kea-dhcp6-server:config/subnet6[id='111']/subnet", diff --git a/src/lib/yang/translator_class.cc b/src/lib/yang/translator_class.cc index 7d3ec40189..933e72d4db 100644 --- a/src/lib/yang/translator_class.cc +++ b/src/lib/yang/translator_class.cc @@ -178,7 +178,7 @@ TranslatorClasses::getClassesFromAbsoluteXpath(string const& xpath) { ElementPtr TranslatorClasses::getClassesKea(DataNode const& data_node) { - return getList(data_node, "client-class", *this, + return getList(data_node, "client-classes", *this, &TranslatorClass::getClass); } @@ -208,7 +208,7 @@ TranslatorClasses::setClassesKea(string const& xpath, ConstElementPtr elem) { } string name = cclass->get("name")->stringValue(); ostringstream key; - key << xpath << "/client-class[name='" << name << "']"; + key << xpath << "/client-classes[name='" << name << "']"; setClass(key.str(), cclass); } } diff --git a/src/lib/yang/translator_config.cc b/src/lib/yang/translator_config.cc index 13a29d82bf..c74c165625 100644 --- a/src/lib/yang/translator_config.cc +++ b/src/lib/yang/translator_config.cc @@ -109,7 +109,7 @@ ElementPtr TranslatorConfig::getHook(DataNode const& data_node) { ElementPtr TranslatorConfig::getHooksKea(DataNode const& data_node) { - return getList(data_node, "hook-library", *this, &TranslatorConfig::getHook); + return getList(data_node, "hooks-libraries", *this, &TranslatorConfig::getHook); } isc::data::ElementPtr @@ -592,7 +592,7 @@ TranslatorConfig::setServerKeaDhcpCommon(string const& xpath, continue; } ostringstream hook_lib; - hook_lib << xpath << "/hook-library[library='" + hook_lib << xpath << "/hooks-libraries[library='" << name->stringValue() << "']"; string const hook_xpath(hook_lib.str()); setItem(hook_xpath, ElementPtr(), LeafBaseType::Unknown); diff --git a/src/lib/yang/translator_logger.cc b/src/lib/yang/translator_logger.cc index bff43db77d..569509dceb 100644 --- a/src/lib/yang/translator_logger.cc +++ b/src/lib/yang/translator_logger.cc @@ -75,7 +75,7 @@ TranslatorLogger::getOutputOption(DataNode const& data_node) { ElementPtr TranslatorLogger::getOutputOptions(DataNode const& data_node) { - return getList(data_node, "output-option", *this, + return getList(data_node, "output_options", *this, &TranslatorLogger::getOutputOption); } @@ -128,12 +128,12 @@ TranslatorLogger::setOutputOptions(string const& xpath, ConstElementPtr elem) { for (size_t i = 0; i < elem->size(); ++i) { ElementPtr option = elem->getNonConst(i); if (!option->contains("output")) { - isc_throw(BadValue, "output-option without output: " + isc_throw(BadValue, "output_options without output: " << option->str()); } string output = option->get("output")->stringValue(); ostringstream key; - key << xpath << "/output-option[output='" << output << "']"; + key << xpath << "/output_options[output='" << output << "']"; setOutputOption(key.str(), option); } } @@ -171,7 +171,7 @@ TranslatorLoggers::getLoggersFromAbsoluteXpath(string const& xpath) { ElementPtr TranslatorLoggers::getLoggersKea(DataNode const& data_node) { - return getList(data_node, "logger", *this, + return getList(data_node, "loggers", *this, &TranslatorLogger::getLogger); } @@ -203,7 +203,7 @@ TranslatorLoggers::setLoggersKea(string const& xpath, ConstElementPtr elem) { } string name = logger->get("name")->stringValue(); ostringstream key; - key << xpath << "/logger[name='" << name << "']"; + key << xpath << "/loggers[name='" << name << "']"; setLogger(key.str(), logger); } } diff --git a/src/lib/yang/translator_logger.h b/src/lib/yang/translator_logger.h index 6d54dc4b25..8929434bd8 100644 --- a/src/lib/yang/translator_logger.h +++ b/src/lib/yang/translator_logger.h @@ -41,7 +41,7 @@ namespace yang { /// @code /// +--rw logger* [name] /// +--rw name string -/// +--rw output-option* [output] +/// +--rw output_options* [output] /// | +--rw output string /// | +--rw flush? boolean /// | +--rw maxsize? uint32 diff --git a/src/lib/yang/translator_pd_pool.cc b/src/lib/yang/translator_pd_pool.cc index d0f888050e..bc248f5267 100644 --- a/src/lib/yang/translator_pd_pool.cc +++ b/src/lib/yang/translator_pd_pool.cc @@ -243,9 +243,10 @@ TranslatorPdPools::TranslatorPdPools(Session session, const string& model) ElementPtr TranslatorPdPools::getPdPools(DataNode const& data_node) { try { - if ((model_ == IETF_DHCPV6_SERVER) || - (model_ == KEA_DHCP6_SERVER)) { - return (getPdPoolsCommon(data_node)); + if (model_ == IETF_DHCPV6_SERVER) { + return (getPdPoolsCommon(data_node, "pd-pool")); + } else if (model_ == KEA_DHCP6_SERVER) { + return (getPdPoolsCommon(data_node, "pd-pools")); } } catch (Error const& ex) { isc_throw(NetconfError, @@ -266,8 +267,8 @@ TranslatorPdPools::getPdPoolsFromAbsoluteXpath(string const& xpath) { } ElementPtr -TranslatorPdPools::getPdPoolsCommon(DataNode const& data_node) { - return getList(data_node, "pd-pool", *this, +TranslatorPdPools::getPdPoolsCommon(DataNode const& data_node, string const& xpath) { + return getList(data_node, xpath, *this, &TranslatorPdPool::getPdPool); } @@ -309,7 +310,7 @@ TranslatorPdPools::setPdPoolsPrefix(string const& xpath, << pool->str()); } ostringstream prefix; - prefix << xpath << "/pd-pool[prefix='" + prefix << xpath << "/pd-pools[prefix='" << pool->get("prefix")->stringValue() << "/" << pool->get("prefix-len")->intValue() << "']"; setPdPool(prefix.str(), pool); diff --git a/src/lib/yang/translator_pd_pool.h b/src/lib/yang/translator_pd_pool.h index a7d0ec030b..3848df39c6 100644 --- a/src/lib/yang/translator_pd_pool.h +++ b/src/lib/yang/translator_pd_pool.h @@ -232,7 +232,8 @@ protected: /// @param data_node the YANG node representing the list of PD pools /// /// @throw NetconfError when sysrepo raises an error. - isc::data::ElementPtr getPdPoolsCommon(libyang::DataNode const& data_node); + isc::data::ElementPtr getPdPoolsCommon(libyang::DataNode const& data_node, + std::string const& xpath); /// @brief setPdPools using pool-id. /// diff --git a/src/lib/yang/translator_pool.cc b/src/lib/yang/translator_pool.cc index 05fdec6a8d..66a0bf5603 100644 --- a/src/lib/yang/translator_pool.cc +++ b/src/lib/yang/translator_pool.cc @@ -266,7 +266,7 @@ TranslatorPools::getPoolsIetf(DataNode const& data_node) { ElementPtr TranslatorPools::getPoolsKea(DataNode const& data_node) { - return getList(data_node, "pool", *this, + return getList(data_node, "pools", *this, &TranslatorPool::getPool); } @@ -313,7 +313,7 @@ TranslatorPools::setPoolsByAddresses(string const& xpath, string end_addr; getAddresses(pref, start_addr, end_addr); ostringstream prefix; - prefix << xpath << "/pool[start-address='" << start_addr + prefix << xpath << "/pools[start-address='" << start_addr << "'][end-address='" << end_addr << "']"; setPool(prefix.str(), pool); } diff --git a/src/share/yang/modules/hashes/kea-dhcp4-server@2022-07-27.hash b/src/share/yang/modules/hashes/kea-dhcp4-server@2022-07-27.hash new file mode 100644 index 0000000000..50ed7de6fa --- /dev/null +++ b/src/share/yang/modules/hashes/kea-dhcp4-server@2022-07-27.hash @@ -0,0 +1 @@ +7a43fa1d619fcb23912340c3abd597ca155668a65b4c26313a72f602e3584fb4 diff --git a/src/share/yang/modules/hashes/kea-types@2019-08-12.hash b/src/share/yang/modules/hashes/kea-types@2019-08-12.hash index 49d7419eea..bbe1f58304 100644 --- a/src/share/yang/modules/hashes/kea-types@2019-08-12.hash +++ b/src/share/yang/modules/hashes/kea-types@2019-08-12.hash @@ -1 +1 @@ -250dd730716a0f65682d866958718eb5eefc62ff1e0463d9ae8047bc16123995 +af58ddb3d7268d459bd6eb878a460a99eea21aa55312d6d18a5773b5635f38e0 diff --git a/src/share/yang/modules/kea-dhcp4-server@2022-11-30.yang b/src/share/yang/modules/kea-dhcp4-server@2022-11-30.yang index 3466e314a1..a8d767e37c 100644 --- a/src/share/yang/modules/kea-dhcp4-server@2022-11-30.yang +++ b/src/share/yang/modules/kea-dhcp4-server@2022-11-30.yang @@ -182,7 +182,7 @@ module kea-dhcp4-server { uses dhcp:t1-percent; uses dhcp:t2-percent; uses option-data-list; - list pool { + list pools { key "start-address end-address"; ordered-by user; description "Pool list."; @@ -264,7 +264,7 @@ module kea-dhcp4-server { grouping client-classes { description "Client class grouping."; - list client-class { + list client-classes { key name; ordered-by user; description "List of client classes."; diff --git a/src/share/yang/modules/kea-dhcp6-server@2022-11-30.yang b/src/share/yang/modules/kea-dhcp6-server@2022-11-30.yang index 57d74d0cbf..a17ca5271e 100644 --- a/src/share/yang/modules/kea-dhcp6-server@2022-11-30.yang +++ b/src/share/yang/modules/kea-dhcp6-server@2022-11-30.yang @@ -188,7 +188,7 @@ module kea-dhcp6-server { uses dhcp:t1-percent; uses dhcp:t2-percent; uses option-data-list; - list pool { + list pools { key "start-address end-address"; ordered-by user; description "Pool list."; @@ -211,7 +211,7 @@ module kea-dhcp6-server { uses dhcp:pool-require-client-classes; uses dhcp:pool-user-context; } - list pd-pool { + list pd-pools { key prefix; ordered-by user; description "Prefix delegation pool list."; @@ -299,7 +299,7 @@ module kea-dhcp6-server { grouping client-classes { description "Client class grouping."; - list client-class { + list client-classes { key name; ordered-by user; description "List of client classes."; diff --git a/src/share/yang/modules/kea-types@2019-08-12.yang b/src/share/yang/modules/kea-types@2019-08-12.yang index a19c18f9e8..bf54c53633 100644 --- a/src/share/yang/modules/kea-types@2019-08-12.yang +++ b/src/share/yang/modules/kea-types@2019-08-12.yang @@ -63,7 +63,7 @@ module kea-types { grouping hooks-libraries { description "Hooks libraries grouping."; - list hook-library { + list hooks-libraries { key library; description "List of hook library."; leaf library { @@ -80,7 +80,7 @@ module kea-types { grouping loggers { description "Loggers."; - list logger { + list loggers { key name; description "List of loggers."; leaf name { @@ -88,7 +88,7 @@ module kea-types { mandatory true; description "Name of the logger."; } - list output-option { + list output_options { key output; description "List of output options."; leaf output { -- GitLab