From: Tomek Mrugalski Date: Fri, 22 Oct 2021 10:57:20 +0000 (+0200) Subject: [#1848] Skeleton methods for client classes in v4 X-Git-Tag: Kea-2.1.1~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34c533e4564abb89f2de0cf4a2fa373b64583a0e;p=thirdparty%2Fkea.git [#1848] Skeleton methods for client classes in v4 --- diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.cc b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.cc index 7f2c9e9cbe..fa8a85051e 100644 --- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.cc +++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.cc @@ -1834,8 +1834,9 @@ bool PgSqlConfigBackendDHCPv4::registerBackendType() { LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_REGISTER_BACKEND_TYPE4); return ( - dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory("mysql", + dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory("pgsql", [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv4Ptr { + // Many virtual function still missing return (dhcp::PgSqlConfigBackendDHCPv4Ptr(new dhcp::PgSqlConfigBackendDHCPv4(params))); }) ); @@ -1844,8 +1845,44 @@ PgSqlConfigBackendDHCPv4::registerBackendType() { void PgSqlConfigBackendDHCPv4::unregisterBackendType() { LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_UNREGISTER_BACKEND_TYPE4); - dhcp::ConfigBackendDHCPv4Mgr::instance().unregisterBackendFactory("mysql"); + dhcp::ConfigBackendDHCPv4Mgr::instance().unregisterBackendFactory("pgsql"); } +void +PgSqlConfigBackendDHCPv4::createUpdateClientClass4(const db::ServerSelector& server_selector, + const ClientClassDefPtr& client_class, + const std::string& follow_class_name) { + isc_throw(NotImplemented, "Not implemented yet."); +} + +ClientClassDefPtr +PgSqlConfigBackendDHCPv4::getClientClass4(const db::ServerSelector& selector, + const std::string& name) const { + isc_throw(NotImplemented, "Not implemented yet."); +} + +ClientClassDictionary +PgSqlConfigBackendDHCPv4::getAllClientClasses4(const db::ServerSelector& selector) const { + isc_throw(NotImplemented, "Not implemented yet."); +} + +ClientClassDictionary +PgSqlConfigBackendDHCPv4::getModifiedClientClasses4(const db::ServerSelector& selector, + const boost::posix_time::ptime& modification_time) const { + isc_throw(NotImplemented, "Not implemented yet."); +} + +uint64_t +PgSqlConfigBackendDHCPv4::deleteClientClass4(const db::ServerSelector& server_selector, + const std::string& name) { + isc_throw(NotImplemented, "Not implemented yet."); +} + +uint64_t +PgSqlConfigBackendDHCPv4::deleteAllClientClasses4(const db::ServerSelector& server_selector) { + isc_throw(NotImplemented, "Not implemented yet."); +} + + } // end of namespace isc::dhcp } // end of namespace isc diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.h b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.h index 6530faf3f8..8be71ac6b2 100644 --- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.h +++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.h @@ -348,6 +348,19 @@ public: virtual void createUpdateServer4(const db::ServerPtr& server); + /// @brief Creates or updates DHCPv4 client class. + /// + /// @param server_selector Server selector. + /// @param client_class Client class to be added or updated. + /// @param follow_class_name name of the class after which the + /// new or updated class should be positioned. An empty value + /// causes the class to be appended at the end of the class + /// hierarchy. + virtual void + createUpdateClientClass4(const db::ServerSelector& server_selector, + const ClientClassDefPtr& client_class, + const std::string& follow_class_name); + /// @brief Deletes subnet by prefix. /// /// @param server_selector Server selector. @@ -495,6 +508,47 @@ public: virtual uint64_t deleteAllGlobalParameters4(const db::ServerSelector& server_selector); + /// @brief Retrieves a client class by name. + /// + /// @param selector Server selector. + /// @param name Client class name. + /// @return Pointer to the retrieved client class. + virtual ClientClassDefPtr + getClientClass4(const db::ServerSelector& selector, const std::string& name) const; + + /// @brief Retrieves all client classes. + /// + /// @param selector Server selector. + /// @return Collection of client classes. + virtual ClientClassDictionary + getAllClientClasses4(const db::ServerSelector& selector) const; + + /// @brief Retrieves client classes modified after specified time. + /// + /// @param selector Server selector. + /// @param modification_time Modification time. + /// @return Collection of client classes. + virtual ClientClassDictionary + getModifiedClientClasses4(const db::ServerSelector& selector, + const boost::posix_time::ptime& modification_time) const; + + /// @brief Deletes DHCPv4 client class. + /// + /// @param server_selector Server selector. + /// @param name Name of the class to be deleted. + /// @return Number of deleted client classes. + virtual uint64_t + deleteClientClass4(const db::ServerSelector& server_selector, + const std::string& name); + + /// @brief Deletes all client classes. + /// + /// @param server_selector Server selector. + /// @return Number of deleted client classes. + virtual uint64_t + deleteAllClientClasses4(const db::ServerSelector& server_selector); + + /// @brief Deletes a server from the backend. /// /// @param server_tag Tag of the server to be deleted. @@ -550,6 +604,8 @@ public: /// otherwise virtual bool isUnusable(); + + protected: /// @brief Pointer to the implementation of the @c PgSqlConfigBackendDHCPv4