Browse Source

Merge branch 'trac4216'

Thomas Markwalder 9 years ago
parent
commit
f0e37cd6d4

+ 16 - 0
src/lib/dhcpsrv/dhcpsrv_messages.mes

@@ -532,6 +532,16 @@ and hardware address.
 A debug message issued when the server is about to obtain schema version
 information from the MySQL database.
 
+% DHCPSRV_MYSQL_HOST_DB opening MySQL hosts database: %1
+This informational message is logged when a DHCP server (either V4 or
+V6) is about to open a MySQL hosts database.  The parameters of the
+connection including database name and username needed to access it
+(but not the password if any) are logged.
+
+% DHCPSRV_MYSQL_HOST_DB_GET_VERSION obtaining schema version information for the MySQL hosts database
+A debug message issued when the server is about to obtain schema version
+information from the MySQL hosts database.
+
 % DHCPSRV_MYSQL_ROLLBACK rolling back MySQL database
 The code has issued a rollback call.  All outstanding transaction will
 be rolled back and not committed to the database.
@@ -658,6 +668,12 @@ and hardware address.
 A debug message issued when the server is about to obtain schema version
 information from the PostgreSQL database.
 
+% DHCPSRV_PGSQL_HOST_DB opening PostgreSQL hosts database: %1
+This informational message is logged when a DHCP server (either V4 or
+V6) is about to open a PostgreSQL hosts database.  The parameters of the
+connection including database name and username needed to access it
+(but not the password if any) are logged.
+
 % DHCPSRV_PGSQL_ROLLBACK rolling back PostgreSQL database
 The code has issued a rollback call.  All outstanding transaction will
 be rolled back and not committed to the database.

+ 12 - 19
src/lib/dhcpsrv/host_data_source_factory.cc

@@ -47,45 +47,38 @@ HostDataSourceFactory::getHostDataSourcePtr() {
 
 void
 HostDataSourceFactory::create(const std::string& dbaccess) {
-    const std::string type = "type";
-
     // Parse the access string and create a redacted string for logging.
     DatabaseConnection::ParameterMap parameters =
             DatabaseConnection::parse(dbaccess);
-    std::string redacted =
-            DatabaseConnection::redactedAccessString(parameters);
 
-    // Is "type" present?
-    if (parameters.find(type) == parameters.end()) {
-        LOG_ERROR(dhcpsrv_logger, DHCPSRV_NOTYPE_DB).arg(dbaccess);
-        isc_throw(InvalidParameter, "Database configuration parameters do not "
+    // Get the databaase type and open the corresponding database
+    DatabaseConnection::ParameterMap::iterator it = parameters.find("type");
+    if (it == parameters.end()) {
+        isc_throw(InvalidParameter, "Host database configuration does not "
                   "contain the 'type' keyword");
     }
 
+    std::string db_type = it->second;
 
-    // Yes, check what it is.
 #ifdef HAVE_MYSQL
-    if (parameters[type] == string("mysql")) {
-        LOG_INFO(dhcpsrv_logger, DHCPSRV_MYSQL_DB).arg(redacted);
+    if (db_type == "mysql") {
+        LOG_INFO(dhcpsrv_logger, DHCPSRV_MYSQL_HOST_DB)
+            .arg(DatabaseConnection::redactedAccessString(parameters));
         getHostDataSourcePtr().reset(new MySqlHostDataSource(parameters));
         return;
     }
 #endif
 
 #ifdef HAVE_PGSQL
-    if (parameters[type] == string("postgresql")) {
-        LOG_INFO(dhcpsrv_logger, DHCPSRV_PGSQL_DB).arg(redacted);
-        isc_throw(NotImplemented, "Sorry, Postgres backend for host reservations "
+    if (db_type == "postgresql") {
+        isc_throw(NotImplemented, "Sorry, PostgreSQL backend for host reservations "
                   "is not implemented yet.");
-        // Set pgsql data source here, when it will be implemented.
-        return;
     }
 #endif
 
     // Get here on no match.
-    LOG_ERROR(dhcpsrv_logger, DHCPSRV_UNKNOWN_DB).arg(parameters[type]);
-    isc_throw(InvalidType, "Database access parameter 'type' does "
-              "not specify a supported database backend");
+    isc_throw(InvalidType, "Hosts database access parameter 'type': " <<
+                           db_type << " is invalid");
 }
 
 void

+ 1 - 1
src/lib/dhcpsrv/mysql_host_data_source.cc

@@ -976,7 +976,7 @@ std::pair<uint32_t, uint32_t> MySqlHostDataSource::getVersion() const {
     const StatementIndex stindex = GET_VERSION;
 
     LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL,
-              DHCPSRV_MYSQL_GET_VERSION);
+              DHCPSRV_MYSQL_HOST_DB_GET_VERSION);
 
     uint32_t major;      // Major version number
     uint32_t minor;      // Minor version number