]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2472] Add getType() method and update message when backend is started
authorStephen Morris <stephen@isc.org>
Tue, 13 Nov 2012 12:14:55 +0000 (12:14 +0000)
committerStephen Morris <stephen@isc.org>
Tue, 13 Nov 2012 12:14:55 +0000 (12:14 +0000)
The message when the DHCPv6 database backend is started now includes
both the type and the name of the database.

src/bin/dhcp6/dhcp6_messages.mes
src/bin/dhcp6/dhcp6_srv.cc
src/lib/dhcp/lease_mgr.h
src/lib/dhcp/memfile_lease_mgr.h
src/lib/dhcp/mysql_lease_mgr.h
src/lib/dhcp/tests/lease_mgr_unittest.cc
src/lib/dhcp/tests/memfile_lease_mgr_unittest.cc
src/lib/dhcp/tests/mysql_lease_mgr_unittest.cc

index 5f9cd02b68cdf7070181be56e15b5e24ab8d1a90..96649d5890426f41a3268e8efd83acaadb6d11d7 100644 (file)
@@ -30,7 +30,7 @@ from the BIND 10 control system by the IPv6 DHCP server.
 A debug message indicating that the IPv6 DHCP server has received an
 updated configuration from the BIND 10 configuration system.
 
-% DHCP6_DB_BACKEND_STARTED Lease database started (backend type: %1)
+% DHCP6_DB_BACKEND_STARTED lease database started (type: %1, name: %2)
 This informational message is printed every time DHCPv6 is started.
 It indicates what database backend type is being to store lease and
 other information.
@@ -47,7 +47,7 @@ interfaces and is therefore shutting down.
 A debug message issued during startup, this indicates that the IPv6 DHCP
 server is about to open sockets on the specified port.
 
-% DHCP6_LEASE_ADVERT Lease %1 advertised (client duid=%2, iaid=%3)
+% DHCP6_LEASE_ADVERT lease %1 advertised (client duid=%2, iaid=%3)
 This debug message indicates that the server successfully advertised
 a lease. It is up to the client to choose one server out of othe advertised
 and continue allocation with that server. This is a normal behavior and
@@ -154,14 +154,16 @@ the response will only contain generic configuration parameters and no
 addresses or prefixes.
 
 % DHCP6_NO_SUBNET_DEF_OPT failed to find subnet for address %1 when adding default options
-This warning message indicates that when attempting to add default options to a response,
-the server found that it was not configured to support the subnet from which the DHCPv6
-request was received.  The packet has been ignored.
+This warning message indicates that when attempting to add default options
+to a response, the server found that it was not configured to support
+the subnet from which the DHCPv6 request was received.  The packet has
+been ignored.
 
 % DHCP6_NO_SUBNET_REQ_OPT failed to find subnet for address %1 when adding requested options
-This warning message indicates that when attempting to add requested options to a response,
-the server found that it was not configured to support the subnet from which the DHCPv6
-request was received.  The packet has been ignored.
+This warning message indicates that when attempting to add requested
+options to a response, the server found that it was not configured
+to support the subnet from which the DHCPv6 request was received.
+The packet has been ignored.
 
 % DHCP6_CONFIG_LOAD_FAIL failed to load configuration: %1
 This critical error message indicates that the initial DHCPv6
index 1c76b7510356a457fb90e340c0f5d83d641d6552..82a47774339482ae20e34090c224673b9075f10d 100644 (file)
@@ -80,6 +80,7 @@ Dhcpv6Srv::Dhcpv6Srv(uint16_t port, const char* dbconfig)
         // Instantiate LeaseMgr
         LeaseMgrFactory::create(dbconfig);
         LOG_INFO(dhcp6_logger, DHCP6_DB_BACKEND_STARTED)
+            .arg(LeaseMgrFactory::instance().getType())
             .arg(LeaseMgrFactory::instance().getName());
 
         // Instantiate allocation engine
index 40c20cd529e2fa0c5b9ae3175100c318192e772f..7819aad423bc139941fdc9ca9eb0cd6c2d69c7dd 100644 (file)
@@ -505,14 +505,26 @@ public:
     /// @return true if deletion was successful, false if no such lease exists
     virtual bool deleteLease6(const isc::asiolink::IOAddress& addr) = 0;
 
+    /// @brief Return backend type
+    ///
+    /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+    ///
+    /// @return Type of the backend.
+    virtual std::string getType() const = 0;
+
     /// @brief Returns backend name.
     ///
-    /// Each backend have specific name, e.g. "mysql" or "sqlite".
+    /// If the backend is a database, this is the name of the database or the
+    /// file.  Otherwise it is just the same as the type.
+    ///
+    /// @return Name of the backend.
     virtual std::string getName() const = 0;
 
     /// @brief Returns description of the backend.
     ///
     /// This description may be multiline text that describes the backend.
+    ///
+    /// @return Description of the backend.
     virtual std::string getDescription() const = 0;
 
     /// @brief Returns backend version.
@@ -548,7 +560,7 @@ public:
     /// is currently postponed.
 
     /// @brief returns value of the parameter
-    std::string getParameter(const std::string& name) const;
+    virtual std::string getParameter(const std::string& name) const;
 
 private:
     /// @brief list of parameters passed in dbconfig
index cb02360db23737334a9ff676e2de53e89c835ec5..2f66e8c02ed1d9c24395046b6416429a463b06bb 100644 (file)
@@ -188,15 +188,31 @@ public:
     /// @return true if deletion was successful, false if no such lease exists
     bool deleteLease6(const isc::asiolink::IOAddress& addr);
 
+    /// @brief Return backend type
+    ///
+    /// Returns the type of the backend.
+    ///
+    /// @return Type of the backend.
+    virtual std::string getType() const {
+        return (std::string("memfile"));
+    }
+
     /// @brief Returns backend name.
     ///
-    /// Each backend have specific name, e.g. "mysql" or "sqlite".
-    std::string getName() const { return ("memfile"); }
+    /// As there is no variation, in this case we return the type of the
+    /// backend.
+    ///
+    /// @return Name of the backend.
+    virtual std::string getName() const {
+        return ("memfile");
+    }
 
     /// @brief Returns description of the backend.
     ///
     /// This description may be multiline text that describes the backend.
-    std::string getDescription() const;
+    ///
+    /// @return Description of the backend.
+    virtual std::string getDescription() const;
 
     /// @brief Returns backend version.
     virtual std::pair<uint32_t, uint32_t> getVersion() const {
index 8712c330352b33fc1075684594f82b7ab93be37b..e3f1a7a1ea40909fc7d11af7d19ac5c8cb485fb7 100644 (file)
@@ -239,14 +239,27 @@ public:
     ///        failed.
     virtual bool deleteLease6(const isc::asiolink::IOAddress& addr);
 
+    /// @brief Return backend type
+    ///
+    /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+    ///
+    /// @return Type of the backend.
+    virtual std::string getType() const {
+        return (std::string("mysql"));
+    }
+
     /// @brief Returns backend name.
     ///
     /// Each backend have specific name, e.g. "mysql" or "sqlite".
+    ///
+    /// @return Name of the backend.
     virtual std::string getName() const;
 
     /// @brief Returns description of the backend.
     ///
     /// This description may be multiline text that describes the backend.
+    ///
+    /// @return Description of the backend.
     virtual std::string getDescription() const;
 
     /// @brief Returns backend version.
index 64ce9b1653c8aec07323a4e6abe19a3bafa8fb12..7ad203693094c4d6616882ff4c72ec6df2f927ba 100644 (file)
@@ -134,7 +134,7 @@ public:
     /// @param addr address of the searched lease
     ///
     /// @return smart pointer to the lease (or NULL if a lease is not found)
-    Lease6Ptr getLease6(const isc::asiolink::IOAddress&) const {
+    virtual Lease6Ptr getLease6(const isc::asiolink::IOAddress&) const {
         return (Lease6Ptr());
     }
 
@@ -144,7 +144,7 @@ public:
     /// @param iaid IA identifier
     ///
     /// @return collection of IPv6 leases
-    Lease6Collection getLease6(const DUID&, uint32_t) const {
+    virtual Lease6Collection getLease6(const DUID&, uint32_t) const {
         return (Lease6Collection());
     }
 
@@ -155,7 +155,7 @@ public:
     /// @param subnet_id identifier of the subnet the lease must belong to
     ///
     /// @return smart pointer to the lease (or NULL if a lease is not found)
-    Lease6Ptr getLease6(const DUID&, uint32_t, SubnetID) const {
+    virtual Lease6Ptr getLease6(const DUID&, uint32_t, SubnetID) const {
         return (Lease6Ptr());
     }
 
@@ -164,21 +164,21 @@ public:
     /// @param lease4 The lease to be updated.
     ///
     /// If no such lease is present, an exception will be thrown.
-    void updateLease4(const Lease4Ptr&) {}
+    virtual void updateLease4(const Lease4Ptr&) {}
 
     /// @brief Updates IPv4 lease.
     ///
     /// @param lease4 The lease to be updated.
     ///
     /// If no such lease is present, an exception will be thrown.
-    void updateLease6(const Lease6Ptr&) {}
+    virtual void updateLease6(const Lease6Ptr&) {}
 
     /// @brief Deletes a lease.
     ///
     /// @param addr IPv4 address of the lease to be deleted.
     ///
     /// @return true if deletion was successful, false if no such lease exists
-    bool deleteLease4(const isc::asiolink::IOAddress&) {
+    virtual bool deleteLease4(const isc::asiolink::IOAddress&) {
         return (false);
     }
 
@@ -187,35 +187,49 @@ public:
     /// @param addr IPv4 address of the lease to be deleted.
     ///
     /// @return true if deletion was successful, false if no such lease exists
-    bool deleteLease6(const isc::asiolink::IOAddress&) {
+    virtual bool deleteLease6(const isc::asiolink::IOAddress&) {
         return (false);
     }
 
+    /// @brief Returns backend type.
+    ///
+    /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+    ///
+    /// @return Type of the backend.
+    virtual std::string getType() const {
+        return (std::string("concrete"));
+    }
+
     /// @brief Returns backend name.
     ///
-    /// Each backend have specific name, e.g. "mysql" or "sqlite".
-    std::string getName() const {
+    /// If the backend is a database, this is the name of the database or the
+    /// file.  Otherwise it is just the same as the type.
+    ///
+    /// @return Name of the backend.
+    virtual std::string getName() const {
         return (std::string("concrete"));
     }
 
     /// @brief Returns description of the backend.
     ///
     /// This description may be multiline text that describes the backend.
-    std::string getDescription() const {
+    ///
+    /// @return Description of the backend.
+    virtual std::string getDescription() const {
         return (std::string("This is a dummy concrete backend implementation."));
     }
 
     /// @brief Returns backend version.
-    std::pair<uint32_t, uint32_t> getVersion() const {
+    virtual std::pair<uint32_t, uint32_t> getVersion() const {
         return (make_pair(uint32_t(0), uint32_t(0)));
     }
 
     /// @brief Commit transactions
-    void commit() {
+    virtual void commit() {
     }
 
     /// @brief Rollback transactions
-    void rollback() {
+    virtual void rollback() {
     }
 };
 
index c625a16f28c48a76de6a7890584f5ab965fed1b7..f25ceabb9a4f37b11e2cad91393ab5c750dd5f0a 100644 (file)
@@ -45,6 +45,14 @@ TEST_F(MemfileLeaseMgrTest, constructor) {
     ASSERT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
 }
 
+TEST_F(MemfileLeaseMgrTest, GetTypeAndName) {
+    const LeaseMgr::ParameterMap pmap;  // Empty parameter map
+    boost::scoped_ptr<Memfile_LeaseMgr> lease_mgr(new Memfile_LeaseMgr(pmap));
+
+    EXPECT_EQ(std::string("memfile"), lease_mgr->getType());
+    EXPECT_EQ(std::string("memfile"), lease_mgr->getName());
+}
+
 // There's no point in calling any other methods in LeaseMgr, as they
 // are purely virtual, so we would only call Memfile_LeaseMgr methods.
 // Those methods are just stubs that does not return anything.
index a9b09ffbaeea57437c84ffb47b2be4733a9dcedf..fc43bb56f4e692efb91d3a53b996d72e80902f14 100644 (file)
@@ -470,6 +470,10 @@ TEST(MySqlOpenTest, OpenDatabase) {
     destroySchema();
 }
 
+TEST_F(MySqlLeaseMgrTest, GetType) {
+    EXPECT_EQ(std::string("mysql"), lmptr_->getType());
+}
+
 // @brief Check conversion functions
 TEST_F(MySqlLeaseMgrTest, CheckTimeConversion) {
     const time_t cltt = time(NULL);