From: Francis Dupont Date: Tue, 30 Oct 2018 17:30:32 +0000 (+0100) Subject: [176-update-to-sysrepo-0-7-6-release] Added sysrepo 0.7.6 support X-Git-Tag: 275-config-control-syntax-cleanup_base~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f34be2881283f9b31c25c1688e42c8b5f01cce4;p=thirdparty%2Fkea.git [176-update-to-sysrepo-0-7-6-release] Added sysrepo 0.7.6 support --- diff --git a/configure.ac b/configure.ac index 11a3a78cb2..8d40afc453 100644 --- a/configure.ac +++ b/configure.ac @@ -941,11 +941,19 @@ if test "$SYSREPO_CONFIG" != "" ; then ) AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include ], - [Connection("conn-name");])], - [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... yes])], - [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no]) - AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.])] + [AC_LANG_PROGRAM( + [#include ], + [sysrepo::Connection("conn-name");])], + [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... yes])], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include ], + [Connection("conn-name");])], + [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... old]) + AC_DEFINE([HAVE_OLD_SYSREPO], [1], [Using sysrepo < 0.7.6])], + [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no]) + AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.)])] + )] ) CPPFLAGS=$CPPFLAGS_SAVED diff --git a/doc/guide/netconf.xml b/doc/guide/netconf.xml index 8760200dec..277ec595b8 100644 --- a/doc/guide/netconf.xml +++ b/doc/guide/netconf.xml @@ -83,8 +83,8 @@ After installation the result should be similar to this: -Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ -Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/data/ +Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ +Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/data/ (Do not alter contents of these directories manually) Module Name | Revision | Conformance | Data Owner | Permissions | Submodules | Enabled Features @@ -113,9 +113,9 @@ src/lib/libyang/models. To install models, do the following: cd src/lib/yang/models -sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g ietf-dhcpv6-server.yang -sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g kea-dhcp4-server.yang -sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g kea-dhcp6-server.yang +sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g ietf-dhcpv6-server.yang +sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g kea-dhcp4-server.yang +sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g kea-dhcp6-server.yang Note the first -s parameter specifies the location of your YANG schema @@ -125,15 +125,15 @@ under the SYSREPO_REPO name. The installation should look similar to the following: -$ sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g ietf-dhcpv6-server.yang +$ sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g ietf-dhcpv6-server.yang Installing a new module from file 'ietf-dhcpv6-server.yang'... -Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-server@2018-07-14.yang'... +Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-server@2018-07-14.yang'... Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-dhcpv6-options'... -Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-options@2018-07-14.yang'... +Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-options@2018-07-14.yang'... Resolving dependency: 'ietf-dhcpv6-options' imports 'ietf-dhcpv6-types'... -Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'... +Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'... Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-dhcpv6-types'... -Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'... +Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'... Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-interfaces'... Schema of the module ietf-interfaces is already installed, skipping... Installing data files for module 'ietf-dhcpv6-server'... @@ -153,8 +153,8 @@ You can confirm whether the models are imported correctly by using sysrepoctl -l $ sysrepoctl -l -Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ -Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/data/ +Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ +Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/data/ (Do not alter contents of these directories manually) Module Name | Revision | Conformance | Data Owner | Permissions | Submodules | Enabled Features diff --git a/src/bin/netconf/netconf.cc b/src/bin/netconf/netconf.cc index f8509d3774..4f2276fa6b 100644 --- a/src/bin/netconf/netconf.cc +++ b/src/bin/netconf/netconf.cc @@ -22,6 +22,9 @@ using namespace isc::config; using namespace isc::data; using namespace isc::netconf; using namespace isc::yang; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/bin/netconf/netconf.h b/src/bin/netconf/netconf.h index 86964997b6..9778726b0c 100644 --- a/src/bin/netconf/netconf.h +++ b/src/bin/netconf/netconf.h @@ -9,12 +9,20 @@ #ifndef NETCONF_H #define NETCONF_H +#ifndef HAVE_SYSREPO +#error "config.h must be included before netconf.h" +#endif + #include #include #include #include #include +#ifndef HAVE_OLD_SYSREPO +#include +#else #include +#endif #include namespace isc { @@ -71,7 +79,12 @@ public: /// @param sess The sysrepo running datastore session. /// @param service_pair The service name and configuration pair. /// @return return code for sysrepo. +#ifndef HAVE_OLD_SYSREPO + static int validate(sysrepo::S_Session sess, + const CfgServersMapPair& service_pair); +#else static int validate(S_Session sess, const CfgServersMapPair& service_pair); +#endif /// @brief Update. /// @@ -80,7 +93,12 @@ public: /// @param sess The sysrepo running datastore session. /// @param service_pair The service name and configuration pair. /// @return return code for sysrepo. +#ifndef HAVE_OLD_SYSREPO + static int update(sysrepo::S_Session sess, + const CfgServersMapPair& service_pair); +#else static int update(S_Session sess, const CfgServersMapPair& service_pair); +#endif /// @brief Log changes. /// @@ -90,7 +108,11 @@ public: /// /// @param sess The sysrepo running datastore session. /// @param model The model name. +#ifndef HAVE_OLD_SYSREPO + static void logChanges(sysrepo::S_Session sess, const std::string& model); +#else static void logChanges(S_Session sess, const std::string& model); +#endif /// @brief Cancel flag. bool cancel_; @@ -124,16 +146,32 @@ protected: void subscribeConfig(const CfgServersMapPair& service_pair); /// @brief Sysrepo connection. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Connection conn_; +#else S_Connection conn_; +#endif /// @brief Sysrepo startup datastore session. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Session startup_sess_; +#else S_Session startup_sess_; +#endif /// @brief Sysrepo running datastore session. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Session running_sess_; +#else S_Session running_sess_; +#endif /// @brief Subscription map. +#ifndef HAVE_OLD_SYSREPO + std::map subscriptions_; +#else std::map subscriptions_; +#endif }; } // namespace netconf diff --git a/src/bin/netconf/tests/netconf_unittests.cc b/src/bin/netconf/tests/netconf_unittests.cc index 107056e310..9fc97698fb 100644 --- a/src/bin/netconf/tests/netconf_unittests.cc +++ b/src/bin/netconf/tests/netconf_unittests.cc @@ -34,6 +34,9 @@ using namespace isc::test; using namespace isc::yang; using namespace isc::yang::test; using namespace isc::util::thread; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/pretests/sysrepo_setup_tests.cc b/src/lib/yang/pretests/sysrepo_setup_tests.cc index ddcb937937..98b7aa87f3 100644 --- a/src/lib/yang/pretests/sysrepo_setup_tests.cc +++ b/src/lib/yang/pretests/sysrepo_setup_tests.cc @@ -6,10 +6,18 @@ #include +#ifndef HAVE_OLD_SYSREPO +#include +#else #include +#endif + #include using namespace std; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif /// Not using libyang headers, e.g. yang_models.h. diff --git a/src/lib/yang/tests/config_unittests.cc b/src/lib/yang/tests/config_unittests.cc index d5a8634f6a..cb4b083a32 100644 --- a/src/lib/yang/tests/config_unittests.cc +++ b/src/lib/yang/tests/config_unittests.cc @@ -21,6 +21,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/sysrepo_setup.h b/src/lib/yang/tests/sysrepo_setup.h index b600504916..c9e270ebeb 100644 --- a/src/lib/yang/tests/sysrepo_setup.h +++ b/src/lib/yang/tests/sysrepo_setup.h @@ -36,8 +36,13 @@ public: void useModel(std::string model) { std::string full_name = "translator " + std::string(Name) + " unittests"; +#ifndef HAVE_OLD_SYSREPO + conn_.reset(new sysrepo::Connection(full_name.c_str())); + sess_.reset(new sysrepo::Session(conn_, SR_DS_CANDIDATE)); +#else conn_.reset(new Connection(full_name.c_str())); sess_.reset(new Session(conn_, SR_DS_CANDIDATE)); +#endif EXPECT_NO_THROW(t_obj_.reset(new Type(sess_, model))); } @@ -51,10 +56,18 @@ public: } /// @brief Sysrepo connection. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Connection conn_; +#else S_Connection conn_; +#endif /// @brief Sysrepo session. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Session sess_; +#else S_Session sess_; +#endif /// @brief Shared pointer to the transaction object. boost::shared_ptr t_obj_; diff --git a/src/lib/yang/tests/translator_class_unittests.cc b/src/lib/yang/tests/translator_class_unittests.cc index c7a9b5999f..1eefe0138f 100644 --- a/src/lib/yang/tests/translator_class_unittests.cc +++ b/src/lib/yang/tests/translator_class_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_control_socket_unittests.cc b/src/lib/yang/tests/translator_control_socket_unittests.cc index 9889cc7487..c6a3e69cfb 100644 --- a/src/lib/yang/tests/translator_control_socket_unittests.cc +++ b/src/lib/yang/tests/translator_control_socket_unittests.cc @@ -17,6 +17,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_database_unittests.cc b/src/lib/yang/tests/translator_database_unittests.cc index d575b08072..d891b54417 100644 --- a/src/lib/yang/tests/translator_database_unittests.cc +++ b/src/lib/yang/tests/translator_database_unittests.cc @@ -17,6 +17,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_host_unittests.cc b/src/lib/yang/tests/translator_host_unittests.cc index 5a7b26a806..e387587550 100644 --- a/src/lib/yang/tests/translator_host_unittests.cc +++ b/src/lib/yang/tests/translator_host_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_logger_unittests.cc b/src/lib/yang/tests/translator_logger_unittests.cc index 80e6f4d863..6dce09b576 100644 --- a/src/lib/yang/tests/translator_logger_unittests.cc +++ b/src/lib/yang/tests/translator_logger_unittests.cc @@ -17,6 +17,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_option_data_unittests.cc b/src/lib/yang/tests/translator_option_data_unittests.cc index 9daa348786..5aa0d3216e 100644 --- a/src/lib/yang/tests/translator_option_data_unittests.cc +++ b/src/lib/yang/tests/translator_option_data_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_option_def_unittests.cc b/src/lib/yang/tests/translator_option_def_unittests.cc index 03b5dc865e..2baec9ae36 100644 --- a/src/lib/yang/tests/translator_option_def_unittests.cc +++ b/src/lib/yang/tests/translator_option_def_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_pd_pool_unittests.cc b/src/lib/yang/tests/translator_pd_pool_unittests.cc index e82e06565a..f9e30b63d5 100644 --- a/src/lib/yang/tests/translator_pd_pool_unittests.cc +++ b/src/lib/yang/tests/translator_pd_pool_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_pool_unittests.cc b/src/lib/yang/tests/translator_pool_unittests.cc index 18f191344e..c8ed80c1aa 100644 --- a/src/lib/yang/tests/translator_pool_unittests.cc +++ b/src/lib/yang/tests/translator_pool_unittests.cc @@ -18,6 +18,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_shared_network_unittests.cc b/src/lib/yang/tests/translator_shared_network_unittests.cc index 87ffe6f10b..b18510d08a 100644 --- a/src/lib/yang/tests/translator_shared_network_unittests.cc +++ b/src/lib/yang/tests/translator_shared_network_unittests.cc @@ -17,6 +17,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_subnet_unittests.cc b/src/lib/yang/tests/translator_subnet_unittests.cc index de22ad9293..5b33d28ad6 100644 --- a/src/lib/yang/tests/translator_subnet_unittests.cc +++ b/src/lib/yang/tests/translator_subnet_unittests.cc @@ -17,6 +17,9 @@ using namespace isc; using namespace isc::data; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/tests/translator_unittests.cc b/src/lib/yang/tests/translator_unittests.cc index 5b3bdb47cf..515c28c94c 100644 --- a/src/lib/yang/tests/translator_unittests.cc +++ b/src/lib/yang/tests/translator_unittests.cc @@ -15,6 +15,9 @@ using namespace std; using namespace isc; using namespace isc::data; using namespace isc::yang; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { @@ -26,7 +29,7 @@ TEST(TranslatorBasicTest, constructor) { S_Session sess(new Session(conn, SR_DS_CANDIDATE)); // Get a translator object. boost::scoped_ptr t_obj; - EXPECT_NO_THROW(t_obj.reset(new TranslatorBasic(sess))); + EXPECT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, ""))); } // Test basic yang value to JSON using the static method. @@ -147,7 +150,7 @@ TEST(TranslatorBasicTest, getItem) { S_Connection conn(new Connection("translator unittests")); S_Session sess(new Session(conn, SR_DS_CANDIDATE)); boost::scoped_ptr t_obj; - ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess))); + ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, ""))); // Container. string xpath = "/keatest-module:container/list"; @@ -449,7 +452,7 @@ TEST(TranslatorBasicTest, setItem) { S_Connection conn(new Connection("translator unittests")); S_Session sess(new Session(conn, SR_DS_CANDIDATE)); boost::scoped_ptr t_obj; - ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess))); + ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, ""))); // Container. string xpath = "/keatest-module:container"; @@ -653,7 +656,7 @@ TEST(TranslatorBasicTest, list) { S_Connection conn(new Connection("translator unittests")); S_Session sess(new Session(conn, SR_DS_CANDIDATE)); boost::scoped_ptr t_obj; - ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess))); + ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, ""))); // Empty list. S_Iter_Value iter; diff --git a/src/lib/yang/tests/translator_utils_unittests.cc b/src/lib/yang/tests/translator_utils_unittests.cc index 6fae632b42..79845c29ce 100644 --- a/src/lib/yang/tests/translator_utils_unittests.cc +++ b/src/lib/yang/tests/translator_utils_unittests.cc @@ -15,6 +15,9 @@ using namespace std; using namespace isc; using namespace isc::yang; using namespace isc::yang::test; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { diff --git a/src/lib/yang/testutils/translator_test.cc b/src/lib/yang/testutils/translator_test.cc index 0020e863a4..f21146bbaf 100644 --- a/src/lib/yang/testutils/translator_test.cc +++ b/src/lib/yang/testutils/translator_test.cc @@ -4,12 +4,17 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { @@ -104,7 +109,7 @@ YangRepr::get(S_Session session) const { Tree result; try { const string& xpath0 = "/" + model_ + ":*//."; - TranslatorBasic tb(session); + TranslatorBasic tb(session, model_); S_Iter_Value iter = tb.getIter(xpath0); for (;;) { const string& xpath = tb.getNext(iter); diff --git a/src/lib/yang/testutils/translator_test.h b/src/lib/yang/testutils/translator_test.h index 11352865fe..1ead1da05b 100644 --- a/src/lib/yang/testutils/translator_test.h +++ b/src/lib/yang/testutils/translator_test.h @@ -46,7 +46,12 @@ public: /// @param xpath The xpath of an element to be retrieved. /// @param session Sysrepo session. /// @return YangReprItem instance representing configuration parameter. +#ifndef HAVE_OLD_SYSREPO + static YangReprItem get(const std::string& xpath, + sysrepo::S_Session session); +#else static YangReprItem get(const std::string& xpath, S_Session session); +#endif /// @brief The xpath. std::string xpath_; @@ -85,7 +90,11 @@ public: /// @brief Get tree from session. /// /// @param session Sysrepo session. +#ifndef HAVE_OLD_SYSREPO + Tree get(sysrepo::S_Session session) const; +#else Tree get(S_Session session) const; +#endif /// @brief Verifies a tree. /// @@ -94,8 +103,13 @@ public: /// @param errs Error stream. /// @return true if verification succeeds, false with errors displayed. /// on errs if it fails. +#ifndef HAVE_OLD_SYSREPO + bool verify(const Tree& expected, sysrepo::S_Session session, + std::ostream& errs) const; +#else bool verify(const Tree& expected, S_Session session, std::ostream& errs) const; +#endif /// @brief Sets specified tree in a sysrepo. /// @@ -103,7 +117,11 @@ public: /// /// @param tree The tree to install. /// @param session Sysrepo session. +#ifndef HAVE_OLD_SYSREPO + void set(const Tree& tree, sysrepo::S_Session session) const; +#else void set(const Tree& tree, S_Session session) const; +#endif /// @brief Validate. /// @@ -111,7 +129,11 @@ public: /// @param errs Error stream. /// @return True if validation succeeds, false with errors displayed /// on errs if it fails. +#ifndef HAVE_OLD_SYSREPO + bool validate(sysrepo::S_Session session, std::ostream& errs) const; +#else bool validate(S_Session session, std::ostream& errs) const; +#endif /// @brief The model name. std::string model_; diff --git a/src/lib/yang/translator.cc b/src/lib/yang/translator.cc index 082adbd280..783b47daae 100644 --- a/src/lib/yang/translator.cc +++ b/src/lib/yang/translator.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,6 +13,9 @@ using namespace std; using namespace isc::data; using namespace isc::util::encode; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace { @@ -35,7 +40,8 @@ string decode64(const string& input) { namespace isc { namespace yang { -TranslatorBasic::TranslatorBasic(S_Session session) : session_(session) { +TranslatorBasic::TranslatorBasic(S_Session session, const string& model) + : session_(session), model_(model) { } TranslatorBasic::~TranslatorBasic() { diff --git a/src/lib/yang/translator.h b/src/lib/yang/translator.h index 866d66f040..227939a3e1 100644 --- a/src/lib/yang/translator.h +++ b/src/lib/yang/translator.h @@ -10,7 +10,15 @@ #include #include +#ifndef HAVE_SYSREPO +#error "config.h must be included before translator.h" +#endif + +#ifndef HAVE_OLD_SYSREPO +#include +#else #include +#endif namespace isc { namespace yang { @@ -22,7 +30,12 @@ public: /// @brief Constructor. /// /// @param session Sysrepo session. - TranslatorBasic(S_Session session); + /// @param model Model name (used and shared by derived classes). +#ifndef HAVE_OLD_SYSREPO + TranslatorBasic(sysrepo::S_Session session, const std::string& model); +#else + TranslatorBasic(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorBasic(); @@ -34,7 +47,11 @@ public: /// @param s_val The value. /// @return The Element representing the sysrepo value. /// @throw NotImplemented when the value type is not supported. +#ifndef HAVE_OLD_SYSREPO + static isc::data::ElementPtr value(sysrepo::S_Val s_val); +#else static isc::data::ElementPtr value(S_Val s_val); +#endif /// @brief Get and translate basic value from YANG to JSON. /// @@ -60,7 +77,12 @@ public: /// /// @param elem The JSON element. /// @param type The sysrepo type. +#ifndef HAVE_OLD_SYSREPO + static sysrepo::S_Val value(isc::data::ConstElementPtr elem, + sr_type_t type); +#else static S_Val value(isc::data::ConstElementPtr elem, sr_type_t type); +#endif /// @brief Translate and set basic value from JSON to YANG. /// @@ -81,17 +103,33 @@ public: /// /// @param xpath The xpath of the list. /// @return An S_Iter_Value pointer. Null is the list does not exist. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Iter_Value getIter(const std::string& xpath); +#else S_Iter_Value getIter(const std::string& xpath); +#endif /// @brief Get xpath of the next YANG list item. /// /// @param iter The iterator pointing to the previous element - /// @return The xpath of the next element. Empty string when at the end of the list. + /// @return The xpath of the next element. Empty string when at + /// the end of the list. +#ifndef HAVE_OLD_SYSREPO + std::string getNext(sysrepo::S_Iter_Value iter); +#else std::string getNext(S_Iter_Value iter); +#endif protected: /// @brief The sysrepo session. +#ifndef HAVE_OLD_SYSREPO + sysrepo::S_Session session_; +#else S_Session session_; +#endif + + /// @brief The model. + std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_class.cc b/src/lib/yang/translator_class.cc index de0ec9a8ad..199e23b889 100644 --- a/src/lib/yang/translator_class.cc +++ b/src/lib/yang/translator_class.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,17 +13,19 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorClass::TranslatorClass(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorOptionDef(session, model), - TranslatorOptionDefList(session, model), - model_(model) { + TranslatorOptionDefList(session, model) { } TranslatorClass::~TranslatorClass() { @@ -161,13 +165,12 @@ TranslatorClass::setClassKea(const string& xpath, ConstElementPtr elem) { } TranslatorClasses::TranslatorClasses(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorOptionDef(session, model), TranslatorOptionDefList(session, model), - TranslatorClass(session, model), - model_(model) { + TranslatorClass(session, model) { } TranslatorClasses::~TranslatorClasses() { diff --git a/src/lib/yang/translator_class.h b/src/lib/yang/translator_class.h index 27ab642095..545420fdb8 100644 --- a/src/lib/yang/translator_class.h +++ b/src/lib/yang/translator_class.h @@ -82,7 +82,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorClass(sysrepo::S_Session session, const std::string& model); +#else TranslatorClass(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorClass(); @@ -114,9 +118,6 @@ protected: /// @param elem The JSON element. void setClassKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting a client class list between @@ -131,7 +132,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorClasses(sysrepo::S_Session session, const std::string& model); +#else TranslatorClasses(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorClasses(); @@ -165,9 +170,6 @@ protected: /// @throw BadValue on client class without name. void setClassesKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_config.cc b/src/lib/yang/translator_config.cc index 3c1c20be02..969a312046 100644 --- a/src/lib/yang/translator_config.cc +++ b/src/lib/yang/translator_config.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,12 +13,15 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorConfig::TranslatorConfig(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorControlSocket(session, model), TranslatorDatabase(session, model), TranslatorDatabases(session, model), @@ -37,8 +42,7 @@ TranslatorConfig::TranslatorConfig(S_Session session, const string& model) TranslatorSharedNetwork(session, model), TranslatorSharedNetworks(session, model), TranslatorLogger(session, model), - TranslatorLoggers(session, model), - model_(model) { + TranslatorLoggers(session, model) { } TranslatorConfig::~TranslatorConfig() { diff --git a/src/lib/yang/translator_config.h b/src/lib/yang/translator_config.h index 600cfdf46d..fd9bf33a53 100644 --- a/src/lib/yang/translator_config.h +++ b/src/lib/yang/translator_config.h @@ -22,59 +22,59 @@ namespace yang { /// /// This translator supports kea-dhcp4-server, kea-dhcp6-server and /// partially ietf-dhcpv6-server. -/// -/// JSON syntax for kea-dhcp6 is: + +/// JSON syntax for kea-dhcp4 is: /// @code -/// "Dhcp6": { -/// "preferred-lifetime": , +/// "Dhcp4": { /// "valid-lifetime": , /// "renew-timer": , /// "rebind-timer": , /// "decline-probation-period": , -/// "subnet6": [ ], +/// "subnet4": [ ], /// , /// "interfaces-config": { /// "interfaces" [ ], /// ... /// }, /// , -/// , -/// , /// , /// , /// , /// , /// , /// , -/// , /// , /// , /// , +/// "echo-client-id": , +/// "match-client-id": , +/// "next-server": , +/// "server-hostname": , +/// "boot-file-name": , /// , -/// +/// , +/// "sanity-checks": { }, +/// "reservations": [ ] /// }, /// "Logging": /// @endcode /// -/// @todo: add kea-dhcp4 syntax and expand logging. -/// -/// YANG syntax for kea-dhcp6-server:config is: +/// YANG syntax for kea-dhcp4-server:config is: /// @code -/// +--rw preferred-lifetime? uint32 /// +--rw valid-lifetime? uint32 /// +--rw renew-timer? uint32 /// +--rw rebind-timer? uint32 /// +--rw decline-probation-period? uint32 -/// +--rw subnet6 subnet6* +/// +--rw subnet4 subnet4* /// +--rw shared-networks shared-network* /// +--rw interfaces-config /// +--rw interfaces* string +/// +--rw dhcp-socket-type? enumeration +/// +--rw outbound-interface? enumeration /// +--rw re-detect? boolean /// +--rw user-context? string /// +--rw lease-database! /// +--rw hosts-databases hosts-database* -/// +--rw relay-supplied-options* string -/// +--rw mac-sources* string /// +--rw host-reservation-identifiers* enumeration /// +--rw client-classes client-class* /// +--rw option-def-list option-def* @@ -83,32 +83,127 @@ namespace yang { /// +--rw library string /// +--rw parameters? string /// +--rw expired-leases-processing -/// +--rw server-id /// +--rw dhcp4o6-port? uint16 /// +--rw control-socket! /// +--rw dhcp-ddns /// +--rw echo-client-id? boolean +/// +--rw match-client-id? boolean +/// +--rw next-server? inet:ipv4-address +/// +--rw server-hostname? string +/// +--rw boot-file-name? string /// +--rw user-context? string /// +--rw sanity-checks /// +--rw lease-checks? enumeration /// @endcode /// -/// YANG syntax for kea-dhcp4-server:config is: +/// Example of kea-dhcp6 simple configuration: +/// @code +/// { +/// "Dhcp4": { +/// "interfaces-config": +/// { +/// "interfaces": [ "eth1" ] +/// }, +/// "control-socket": { +/// "socket-type": "unix", +/// "socket-name": "/tmp/kea4-sock" +/// }, +/// "subnet4": +/// [ +/// { +/// "subnet": "10.0.35.0/24", +/// "pools": +/// [ +/// { +/// "pool": "10.0.35.64/27" +/// } +/// ] +/// } +/// ] +/// } +/// } +/// +/// @endcode +/// +/// The same configuration wrote into YANG datastore using @c setConfig() +/// with the kea-dhcp4-model and exported to XML format: +/// @code +/// +/// +/// +/// 1 +/// +/// +/// 10.0.35.64 +/// 10.0.35.95 +/// 10.0.35.64/27 +/// +/// +/// 10.0.35.0/24 +/// +/// +/// +/// eth1 +/// +/// +/// /tmp/kea4-sock +/// unix +/// +/// +/// @endcode + +/// JSON syntax for kea-dhcp6 is: /// @code +/// "Dhcp6": { +/// "preferred-lifetime": , +/// "valid-lifetime": , +/// "renew-timer": , +/// "rebind-timer": , +/// "decline-probation-period": , +/// "subnet6": [ ], +/// , +/// "interfaces-config": { +/// "interfaces" [ ], +/// ... +/// }, +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// , +/// +/// "sanity-checks": { }, +/// "reservations": [ ] +/// }, +/// "Logging": +/// @endcode +/// +/// YANG syntax for kea-dhcp6-server:config is: +/// @code +/// +--rw preferred-lifetime? uint32 /// +--rw valid-lifetime? uint32 /// +--rw renew-timer? uint32 /// +--rw rebind-timer? uint32 /// +--rw decline-probation-period? uint32 -/// +--rw subnet4 subnet4* +/// +--rw subnet6 subnet6* /// +--rw shared-networks shared-network* /// +--rw interfaces-config /// +--rw interfaces* string -/// +--rw dhcp-socket-type? enumeration -/// +--rw outbound-interface? enumeration /// +--rw re-detect? boolean /// +--rw user-context? string /// +--rw lease-database! /// +--rw hosts-databases hosts-database* +/// +--rw relay-supplied-options* string +/// +--rw mac-sources* string /// +--rw host-reservation-identifiers* enumeration /// +--rw client-classes client-class* /// +--rw option-def-list option-def* @@ -117,25 +212,16 @@ namespace yang { /// +--rw library string /// +--rw parameters? string /// +--rw expired-leases-processing +/// +--rw server-id /// +--rw dhcp4o6-port? uint16 /// +--rw control-socket! /// +--rw dhcp-ddns /// +--rw echo-client-id? boolean -/// +--rw match-client-id? boolean -/// +--rw next-server? inet:ipv4-address -/// +--rw server-hostname? string -/// +--rw boot-file-name? string /// +--rw user-context? string /// +--rw sanity-checks /// +--rw lease-checks? enumeration /// @endcode /// -/// YANG syntax for kea-*:logging is: -/// @code -/// +--rw logging -/// +--rw loggers -/// @endcode -/// /// Example of kea-dhcp6 simple configuration: /// @code /// { @@ -190,7 +276,64 @@ namespace yang { /// /// /// @endcode + +/// JSON syntax for the logging part of kea servers is: +/// @code +/// "Logging": { +/// "loggers": [ ' +/// } +/// @endcode /// +/// YANG syntax for kea-*:logging is: +/// @code +/// +--rw logging +/// +--rw loggers +/// @endcode +/// +/// Example of Logging simple configuration: +/// @code +/// { +/// "Logging": +/// { +/// "loggers": +/// [ +/// { +/// "name": "kea-dhcp6", +/// "output_options": +/// [ +/// { +/// "output": "stderr" +/// } +/// ], +/// "severity": "DEBUG", +/// "debuglevel": 99 +/// } +/// ] +/// } +/// } +/// @endcode +/// +/// The same configuration wrote into YANG datastore using @c setConfig() +/// with a kea server model and exported to XML format: +/// @code +/// +/// +/// +/// kea-dhcp6 +/// +/// +/// +/// 99 +/// DEBUG +/// +/// +/// +/// @endcode +/// +/// Note that sysrepo uses one XML document per container in the model. + /// Inheritance graph between translators is: /// /// +-----------------------------------------+ @@ -232,7 +375,7 @@ namespace yang { /// /// 'XXX (list)' stands for 'XXX list --- XXX' which is a common motif /// (only database shows direct dependencies on both the list and the element) -/// + /// @brief A translator class for converting the config between YANG and JSON. /// /// Currently supports the following models: @@ -251,7 +394,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorConfig(sysrepo::S_Session session, const std::string& model); +#else TranslatorConfig(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorConfig(); @@ -392,9 +539,6 @@ protected: /// @param name name of the parameter void getParam(isc::data::ElementPtr& storage, const std::string& xpath, const std::string& name); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_control_socket.cc b/src/lib/yang/translator_control_socket.cc index d4a1aba5d3..64e72a0b12 100644 --- a/src/lib/yang/translator_control_socket.cc +++ b/src/lib/yang/translator_control_socket.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,13 +13,16 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorControlSocket::TranslatorControlSocket(S_Session session, const string& model) - : TranslatorBasic(session), model_(model) { + : TranslatorBasic(session, model) { } TranslatorControlSocket::~TranslatorControlSocket() { diff --git a/src/lib/yang/translator_control_socket.h b/src/lib/yang/translator_control_socket.h index 4d65fc8118..3254869470 100644 --- a/src/lib/yang/translator_control_socket.h +++ b/src/lib/yang/translator_control_socket.h @@ -74,7 +74,12 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorControlSocket(sysrepo::S_Session session, + const std::string& model); +#else TranslatorControlSocket(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorControlSocket(); @@ -112,9 +117,6 @@ protected: /// @throw BadValue on control socket without socket type or name. void setControlSocketKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_database.cc b/src/lib/yang/translator_database.cc index 2ceaa4e39d..d103ccdf2c 100644 --- a/src/lib/yang/translator_database.cc +++ b/src/lib/yang/translator_database.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,12 +13,15 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorDatabase::TranslatorDatabase(S_Session session, const string& model) - : TranslatorBasic(session), model_(model) { + : TranslatorBasic(session, model) { } TranslatorDatabase::~TranslatorDatabase() { @@ -225,9 +230,8 @@ TranslatorDatabase::setDatabaseKea(const string& xpath, TranslatorDatabases::TranslatorDatabases(S_Session session, const string& model) - : TranslatorBasic(session), - TranslatorDatabase(session, model), - model_(model) { + : TranslatorBasic(session, model), + TranslatorDatabase(session, model) { } TranslatorDatabases::~TranslatorDatabases() { diff --git a/src/lib/yang/translator_database.h b/src/lib/yang/translator_database.h index 74459c90c4..dfcc5293b7 100644 --- a/src/lib/yang/translator_database.h +++ b/src/lib/yang/translator_database.h @@ -109,7 +109,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorDatabase(sysrepo::S_Session session, const std::string& model); +#else TranslatorDatabase(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorDatabase(); @@ -149,9 +153,6 @@ protected: void setDatabaseKea(const std::string& xpath, isc::data::ConstElementPtr elem, bool skip); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting a database access list between @@ -165,7 +166,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorDatabases(sysrepo::S_Session session, const std::string& model); +#else TranslatorDatabases(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorDatabases(); @@ -201,9 +206,6 @@ protected: /// @throw BadValue on database without tyoe, void setDatabasesKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_host.cc b/src/lib/yang/translator_host.cc index 3bfade1991..db3e42ce3d 100644 --- a/src/lib/yang/translator_host.cc +++ b/src/lib/yang/translator_host.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,15 +13,17 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorHost::TranslatorHost(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), - TranslatorOptionDataList(session, model), - model_(model) { + TranslatorOptionDataList(session, model) { } TranslatorHost::~TranslatorHost() { @@ -178,11 +182,10 @@ TranslatorHost::setHostKea(const string& xpath, ConstElementPtr elem) { } TranslatorHosts::TranslatorHosts(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), - TranslatorHost(session, model), - model_(model) { + TranslatorHost(session, model) { } TranslatorHosts::~TranslatorHosts() { diff --git a/src/lib/yang/translator_host.h b/src/lib/yang/translator_host.h index beac9ddbee..f193723082 100644 --- a/src/lib/yang/translator_host.h +++ b/src/lib/yang/translator_host.h @@ -119,7 +119,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorHost(sysrepo::S_Session session, const std::string& model); +#else TranslatorHost(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorHost(); @@ -149,9 +153,6 @@ protected: /// @param xpath The xpath of the host reservation. /// @param elem The JSON element. void setHostKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting host reservations list between @@ -169,7 +170,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorHosts(sysrepo::S_Session session, const std::string& model); +#else TranslatorHosts(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorHosts(); @@ -194,9 +199,6 @@ protected: /// @throw BadValue on host reservation without known identifier type. void setHostsKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_logger.cc b/src/lib/yang/translator_logger.cc index e43de36de8..f00d20ecf9 100644 --- a/src/lib/yang/translator_logger.cc +++ b/src/lib/yang/translator_logger.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,12 +13,15 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorLogger::TranslatorLogger(S_Session session, const string& model) - : TranslatorBasic(session), model_(model) { + : TranslatorBasic(session, model) { } TranslatorLogger::~TranslatorLogger() { @@ -194,9 +199,8 @@ TranslatorLogger::setOutputOptions(const string& xpath, ConstElementPtr elem) { } TranslatorLoggers::TranslatorLoggers(S_Session session, const string& model) - : TranslatorBasic(session), - TranslatorLogger(session, model), - model_(model) { + : TranslatorBasic(session, model), + TranslatorLogger(session, model) { } TranslatorLoggers::~TranslatorLoggers() { diff --git a/src/lib/yang/translator_logger.h b/src/lib/yang/translator_logger.h index 5ecfb18b57..2b5bc2d34d 100644 --- a/src/lib/yang/translator_logger.h +++ b/src/lib/yang/translator_logger.h @@ -101,7 +101,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorLogger(sysrepo::S_Session session, const std::string& model); +#else TranslatorLogger(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorLogger(); @@ -162,9 +166,6 @@ protected: /// @param elem The JSON element. void setLoggerKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting a logger list between @@ -178,7 +179,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorLoggers(sysrepo::S_Session session, const std::string& model); +#else TranslatorLoggers(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorLoggers(); @@ -212,9 +217,6 @@ protected: /// @throw BadValue on a logger without name. void setLoggersKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_option_data.cc b/src/lib/yang/translator_option_data.cc index 1c7c6d812d..f05fe28a94 100644 --- a/src/lib/yang/translator_option_data.cc +++ b/src/lib/yang/translator_option_data.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,13 +13,16 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorOptionData::TranslatorOptionData(S_Session session, const string& model) - : TranslatorBasic(session), model_(model) { + : TranslatorBasic(session, model) { } TranslatorOptionData::~TranslatorOptionData() { @@ -122,8 +127,8 @@ TranslatorOptionData::setOptionDataKea(const string& xpath, TranslatorOptionDataList::TranslatorOptionDataList(S_Session session, const string& model) - : TranslatorBasic(session), TranslatorOptionData(session, model), - model_(model) { + : TranslatorBasic(session, model), + TranslatorOptionData(session, model) { } TranslatorOptionDataList::~TranslatorOptionDataList() { diff --git a/src/lib/yang/translator_option_data.h b/src/lib/yang/translator_option_data.h index d286d68d80..74a9439403 100644 --- a/src/lib/yang/translator_option_data.h +++ b/src/lib/yang/translator_option_data.h @@ -80,7 +80,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorOptionData(sysrepo::S_Session session, const std::string& model); +#else TranslatorOptionData(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorOptionData(); @@ -114,9 +118,6 @@ protected: /// @param elem The JSON element. void setOptionDataKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting an option data list between @@ -130,7 +131,12 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorOptionDataList(sysrepo::S_Session session, + const std::string& model); +#else TranslatorOptionDataList(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorOptionDataList(); @@ -162,9 +168,6 @@ protected: /// @throw BadValue on option data without code or space. void setOptionDataListKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_option_def.cc b/src/lib/yang/translator_option_def.cc index b5365052c5..88a784ef1a 100644 --- a/src/lib/yang/translator_option_def.cc +++ b/src/lib/yang/translator_option_def.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,13 +13,16 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorOptionDef::TranslatorOptionDef(S_Session session, const string& model) - : TranslatorBasic(session), model_(model) { + : TranslatorBasic(session, model) { } TranslatorOptionDef::~TranslatorOptionDef() { @@ -131,8 +136,8 @@ TranslatorOptionDef::setOptionDefKea(const string& xpath, TranslatorOptionDefList::TranslatorOptionDefList(S_Session session, const string& model) - : TranslatorBasic(session), TranslatorOptionDef(session, model), - model_(model) { + : TranslatorBasic(session, model), + TranslatorOptionDef(session, model) { } TranslatorOptionDefList::~TranslatorOptionDefList() { diff --git a/src/lib/yang/translator_option_def.h b/src/lib/yang/translator_option_def.h index c0a1af17c0..4987be325f 100644 --- a/src/lib/yang/translator_option_def.h +++ b/src/lib/yang/translator_option_def.h @@ -83,7 +83,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorOptionDef(sysrepo::S_Session session, const std::string& model); +#else TranslatorOptionDef(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorOptionDef(); @@ -118,9 +122,6 @@ protected: /// @throw BadValue on option definition without name or type. void setOptionDefKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; // @brief A translator class for converting an option definition list @@ -135,7 +136,12 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorOptionDefList(sysrepo::S_Session session, + const std::string& model); +#else TranslatorOptionDefList(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorOptionDefList(); @@ -169,9 +175,6 @@ protected: /// @throw BadValue on option definition without code or space. void setOptionDefListKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_pd_pool.cc b/src/lib/yang/translator_pd_pool.cc index 02411ec73c..7638b51898 100644 --- a/src/lib/yang/translator_pd_pool.cc +++ b/src/lib/yang/translator_pd_pool.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -12,15 +14,17 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorPdPool::TranslatorPdPool(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), - TranslatorOptionDataList(session, model), - model_(model) { + TranslatorOptionDataList(session, model) { } TranslatorPdPool::~TranslatorPdPool() { @@ -283,11 +287,10 @@ TranslatorPdPool::setPdPoolKea(const string& xpath, ConstElementPtr elem) { } TranslatorPdPools::TranslatorPdPools(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), - TranslatorPdPool(session, model), - model_(model) { + TranslatorPdPool(session, model) { } TranslatorPdPools::~TranslatorPdPools() { diff --git a/src/lib/yang/translator_pd_pool.h b/src/lib/yang/translator_pd_pool.h index d2cd13014c..05e2019ab5 100644 --- a/src/lib/yang/translator_pd_pool.h +++ b/src/lib/yang/translator_pd_pool.h @@ -122,7 +122,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorPdPool(sysrepo::S_Session session, const std::string& model); +#else TranslatorPdPool(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorPdPool(); @@ -170,9 +174,6 @@ protected: /// @param elem The JSON element. void setPdPoolKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting a pd-pool list between @@ -188,7 +189,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorPdPools(sysrepo::S_Session session, const std::string& model); +#else TranslatorPdPools(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorPdPools(); @@ -220,9 +225,6 @@ protected: /// @throw BadValue on pd-pool without prefix or prefix length. void setPdPoolsPrefix(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_pool.cc b/src/lib/yang/translator_pool.cc index d9c0385669..a5b6c0dc70 100644 --- a/src/lib/yang/translator_pool.cc +++ b/src/lib/yang/translator_pool.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -16,15 +18,17 @@ using namespace std; using namespace isc::data; using namespace isc::asiolink; using namespace isc::dhcp; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorPool::TranslatorPool(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), - TranslatorOptionDataList(session, model), - model_(model) { + TranslatorOptionDataList(session, model) { } TranslatorPool::~TranslatorPool() { @@ -263,11 +267,10 @@ TranslatorPool::getAddresses(const string& prefix, } TranslatorPools::TranslatorPools(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), - TranslatorPool(session, model), - model_(model) { + TranslatorPool(session, model) { } TranslatorPools::~TranslatorPools() { diff --git a/src/lib/yang/translator_pool.h b/src/lib/yang/translator_pool.h index 1e702af7c7..aa92e73bb6 100644 --- a/src/lib/yang/translator_pool.h +++ b/src/lib/yang/translator_pool.h @@ -130,7 +130,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorPool(sysrepo::S_Session session, const std::string& model); +#else TranslatorPool(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorPool(); @@ -188,9 +192,6 @@ protected: /// @param elem The JSON element. /// @throw BadValue on a pool without a well formed prefix. void setPoolKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting pools between YANG and JSON. @@ -203,7 +204,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorPools(sysrepo::S_Session session, const std::string& model); +#else TranslatorPools(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorPools(); @@ -235,9 +240,6 @@ protected: /// @throw BadValue on a pool without a prefix. void setPoolsByAddresses(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_shared_network.cc b/src/lib/yang/translator_shared_network.cc index 2b483ed14c..fa152ce30d 100644 --- a/src/lib/yang/translator_shared_network.cc +++ b/src/lib/yang/translator_shared_network.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,13 +13,16 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorSharedNetwork::TranslatorSharedNetwork(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorPool(session, model), @@ -27,8 +32,7 @@ TranslatorSharedNetwork::TranslatorSharedNetwork(S_Session session, TranslatorHost(session, model), TranslatorHosts(session, model), TranslatorSubnet(session, model), - TranslatorSubnets(session, model), - model_(model) { + TranslatorSubnets(session, model) { } TranslatorSharedNetwork::~TranslatorSharedNetwork() { @@ -262,7 +266,7 @@ TranslatorSharedNetwork::setSharedNetworkKea(const string& xpath, TranslatorSharedNetworks::TranslatorSharedNetworks(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorPool(session, model), @@ -273,8 +277,7 @@ TranslatorSharedNetworks::TranslatorSharedNetworks(S_Session session, TranslatorHosts(session, model), TranslatorSubnet(session, model), TranslatorSubnets(session, model), - TranslatorSharedNetwork(session, model), - model_(model) { + TranslatorSharedNetwork(session, model) { } TranslatorSharedNetworks::~TranslatorSharedNetworks() { diff --git a/src/lib/yang/translator_shared_network.h b/src/lib/yang/translator_shared_network.h index 5d546681e8..60628f2787 100644 --- a/src/lib/yang/translator_shared_network.h +++ b/src/lib/yang/translator_shared_network.h @@ -132,7 +132,12 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorSharedNetwork(sysrepo::S_Session session, + const std::string& model); +#else TranslatorSharedNetwork(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorSharedNetwork(); @@ -170,9 +175,6 @@ protected: void setSharedNetworkKea(const std::string& xpath, isc::data::ConstElementPtr elem, const std::string& subsel); - - /// @brief The model name. - std::string model_; }; /// @brief A translator class for converting a shared network list between @@ -188,7 +190,12 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorSharedNetworks(sysrepo::S_Session session, + const std::string& model); +#else TranslatorSharedNetworks(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorSharedNetworks(); @@ -215,9 +222,6 @@ protected: /// @throw BadValue on a shared network without name. void setSharedNetworksKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model name. - std::string model_; }; }; // end of namespace isc::yang diff --git a/src/lib/yang/translator_subnet.cc b/src/lib/yang/translator_subnet.cc index 3358214857..9881e041c2 100644 --- a/src/lib/yang/translator_subnet.cc +++ b/src/lib/yang/translator_subnet.cc @@ -4,6 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#include + #include #include #include @@ -11,12 +13,15 @@ using namespace std; using namespace isc::data; +#ifndef HAVE_OLD_SYSREPO +using namespace sysrepo; +#endif namespace isc { namespace yang { TranslatorSubnet::TranslatorSubnet(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorPool(session, model), @@ -24,8 +29,7 @@ TranslatorSubnet::TranslatorSubnet(S_Session session, const string& model) TranslatorPdPool(session, model), TranslatorPdPools(session, model), TranslatorHost(session, model), - TranslatorHosts(session, model), - model_(model) { + TranslatorHosts(session, model) { } TranslatorSubnet::~TranslatorSubnet() { @@ -378,7 +382,7 @@ TranslatorSubnet::setSubnetKea(const string& xpath, ConstElementPtr elem) { } TranslatorSubnets::TranslatorSubnets(S_Session session, const string& model) - : TranslatorBasic(session), + : TranslatorBasic(session, model), TranslatorOptionData(session, model), TranslatorOptionDataList(session, model), TranslatorPool(session, model), @@ -387,8 +391,7 @@ TranslatorSubnets::TranslatorSubnets(S_Session session, const string& model) TranslatorPdPools(session, model), TranslatorHost(session, model), TranslatorHosts(session, model), - TranslatorSubnet(session, model), - model_(model) { + TranslatorSubnet(session, model) { } TranslatorSubnets::~TranslatorSubnets() { diff --git a/src/lib/yang/translator_subnet.h b/src/lib/yang/translator_subnet.h index ea8736c056..a44b155a9e 100644 --- a/src/lib/yang/translator_subnet.h +++ b/src/lib/yang/translator_subnet.h @@ -240,7 +240,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorSubnet(sysrepo::S_Session session, const std::string& model); +#else TranslatorSubnet(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorSubnet(); @@ -286,9 +290,6 @@ protected: /// @param elem The JSON element. void setSubnetKea(const std::string& xpath, isc::data::ConstElementPtr elem); - - /// @brief The model. - std::string model_; }; /// @brief A translator class for converting a subnet list between @@ -302,7 +303,11 @@ public: /// /// @param session Sysrepo session. /// @param model Model name. +#ifndef HAVE_OLD_SYSREPO + TranslatorSubnets(sysrepo::S_Session session, const std::string& model); +#else TranslatorSubnets(S_Session session, const std::string& model); +#endif /// @brief Destructor. virtual ~TranslatorSubnets(); @@ -336,9 +341,6 @@ protected: void setSubnetsKea(const std::string& xpath, isc::data::ConstElementPtr elem, const std::string& subsel); - - /// @brief The model. - std::string model_; }; }; // end of namespace isc::yang