Commit 39525b94 authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

[4216] Addressed review comments

    HostDataSourceFactory::create(const std::string& dbaccess)
        - Removed logging from exception throwing conditions
        - Minor clean up of the method itself

    Removed obsoleted error messages:
parent 2c413e04
......@@ -238,12 +238,6 @@ hook point sets the skip flag. It means that the server was told that
no lease6 should be assigned. The server will not put that lease in its
database and the client will get a NoAddrsAvail for that IA_NA option.
% DHCPSRV_HOSTDB_NOTYPE 'type' parameter is missing from hosts database configuration: %1
This is an error message, logged when an attempt has been made to access
the configured hosts database, but no 'type' keyword has been included in
the access string. The access string (less any passwords) is included
in the message.
% DHCPSRV_INVALID_ACCESS invalid database access string: %1
This is logged when an attempt has been made to parse a database access string
and the attempt ended in error. The access string in question - which
......@@ -796,7 +790,3 @@ indicate an error in the source code, please submit a bug report.
% DHCPSRV_UNKNOWN_DB unknown database type: %1
The database access string specified a database type (given in the
message) that is unknown to the software. This is a configuration error.
% DHCPSRV_UNKNOWN_HOST_DB unknown hosts database type: %1
The hosts database access string specified a database type (given in the
message) that is unknown to the software. This is a configuration error.
......@@ -47,45 +47,38 @@ HostDataSourceFactory::getHostDataSourcePtr() {
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 =
std::string redacted =
// Is "type" present?
if (parameters.find(type) == parameters.end()) {
LOG_ERROR(dhcpsrv_logger, DHCPSRV_HOSTDB_NOTYPE).arg(dbaccess);
// 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.
if (parameters[type] == string("mysql")) {
LOG_INFO(dhcpsrv_logger, DHCPSRV_MYSQL_HOST_DB).arg(redacted);
if (db_type == "mysql") {
getHostDataSourcePtr().reset(new MySqlHostDataSource(parameters));
if (parameters[type] == string("postgresql")) {
LOG_INFO(dhcpsrv_logger, DHCPSRV_PGSQL_HOST_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.
// Get here on no match.
LOG_ERROR(dhcpsrv_logger, DHCPSRV_UNKNOWN_HOST_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");
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment