Commit f0e37cd6 authored by Thomas Markwalder's avatar Thomas Markwalder

Merge branch 'trac4216'

parents 657c7a0f dea9eb2c
......@@ -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.
......
......@@ -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
......
......@@ -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
......
Markdown is supported
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