kea-dhcp4
added support for max-reconnect-tries and reconnect-wait-time
to lease and host db parsers
Added a callback for when DB backends detect loss of connectivity
Added a self-rescheduling method to attempt to reconnect to the
backends if retries are enabled
dhcpsrv
Added a callback that DatabaseConnection derivations should invoke
when they lose connectivity.
Added an optional callback parameter from CfgDbAccess::createManagers()
all the way down to DatabaseConnection ctor.
pgsql_connection.cc
PgSqlConnection::~PgSqlConnection() - Added logic to close the
connection only when the connect state is still OK.
Otherwise it likes to core dump.
PgSqlConnection::checkStatementError() - Modified to invoke the
connectivity lost callback on "fatal" errors
pgsql_lease_mgr_unittest.cc
pgsql_host_data_source_unittest.cc
Added tests to verify that the lost callback is NOT invoked on an
open failure
With C++14, std::make_pair<T,U>(t,u) expects rvalue. If trying
to pass an lvalue, either std::make_pair(t,u) and type is
deduced, or std::pair<T,U>(t,y).
The only review item not addressed with this commit is the
implementation of unit test that operates on the read only
database, i.e. the database containing tables on which the
given user only has SELECT privileges.
src/lib/dhcpsrv/tests/pgsql_exchange_unittest.cc
- Added PgSqlBasicsTest test fixture class and tests which exercise all of
the PostgreSQL data types we currently use with round-trip database writes
and reads
src/lib/dhcpsrv/pgsql_connection.cc
src/lib/dhcpsrv/pgsql_connection.h
- Moved PgSqlResult function impls from .h
- Added exception safe implementation of getColumnLabel() to PgSqlResult
src/lib/dhcpsrv/pgsql_exchange.cc
src/lib/dhcpsrv/pgsql_exchange.h
- PsqlBindArray::add() variants which accept raw pointers now throw
if the pointer is NULL
- PgSqlExchange::getColumnLabel() is now a wrapper around PgSqlResult method
src/lib/dhcpsrv/pgsql_host_data_source.h
src/lib/dhcpsrv/pgsql_host_data_source.cc
- Commentary clean up
src/lib/dhcpsrv/pgsql_lease_mgr.cc
- Commentary clean up
src/lib/dhcpsrv/pgsql_exchange.h
src/lib/dhcpsrv/pgsql_exchange.cc
src/lib/dhcpsrv/pgsql_lease_mgr.cc
Moved getIPv6Value() from PgSqlLease6Exchange to
PgSqlExchange and made it static
PgSqlExchange::dumpRow() gets number of columns
from result set, not parameter
src/lib/dhcpsrv/pgsql_host_data_source.cc
PgSqlIPv6ReservationExchange
PgSqlHostIPv6Exchange - now functional
src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc
TEST_F(PgSqlHostDataSourceTest, get6AddrWithDuid)
TEST_F(PgSqlHostDataSourceTest, addDuplicate6WithHWAddr)
TEST_F(PgSqlHostDataSourceTest, optionsReservations6)
TEST_F(PgSqlHostDataSourceTest, optionsReservations46)
TEST_F(PgSqlHostDataSourceTest, formattedOptionsReservations6)
TEST_F(PgSqlHostDataSourceTest, formattedOptionsReservations46)
- All included and passing.
src/lib/dhcpsrv/pgsql_connection.h
Added OID_TEXT
src/lib/dhcpsrv/pgsql_exchange.cc
PsqlBindArray::addNull()
class PgSqlExchange
- getColumnLabel() - now gets column name from result set
- getColumnValue variants are now static methods
- rename column_labels_ to columns_
- isColumnNull() new method tests if column in row is null
- dumpRow() - debug method dumps row as text
src/lib/dhcpsrv/pgsql_host_data_source.cc
PgSqlHostWithOptionsExchange
PgSqlOptionExchange now functional
src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc
TEST_F(PgSqlHostDataSourceTest, addDuplicate4)
TEST_F(PgSqlHostDataSourceTest, formattedOptionsReservations4)
- Enabled and passing.
src/lib/dhcpsrv
pgsql_host_data_source.c
pgsql_host_data_source.h - new files, preliminary implementation
src/lib/dhcpsrv/Makefile.am
Added new files pgsql_host_data_source.cc, pgsql_host_data_source.h
src/lib/dhcpsrv/dhcpsrv_messages.mes
Added log messages DHCPSRV_PGSQL_HOST_DB_GET_VERSION, DHCPSRV_PGSQL_START_TRANSACTION
src/lib/dhcpsrv/pgsql_connection.cc
src/lib/dhcpsrv/pgsql_connection.h
Added PgSqlTransaction
Added PgSqlConnection::startTransaction()
src/lib/dhcpsrv/pgsql_exchange.cc
src/lib/dhcpsrv/pgsql_exchange.h
PsqlBindArray
- Added storage of conversion strings used for bound values
- Added add() variants for uint8_t, IOAddress, uint8_t buffer
- Added templated variant for miscellaneous types
PgSqlExchange
- Removed getColumnValue variants for various integers, replaced
with templated version for miscellaneous types
src/lib/dhcpsrv/pgsql_lease_mgr.cc
Added todo comment to remember to account for hwaddr columns added to lease6
src/lib/dhcpsrv/tests/pgsql_exchange_unittest.cc
TEST(PsqlBindArray, basicOperation) - new test to exercise bind functions