2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 22:15:23 +00:00

[5586] MySQL shared leases stats implemented

src/share/database/scripts/mysql/dhcpdb_create.mysql
    src/share/database/scripts/mysql/dhcpdb_drop.mysql
    src/share/database/scripts/mysql/upgrade_5.2_to_6.0.sh.in
        Added MySQL v4/6 stat tables and triggers

    src/lib/dhcpsrv/memfile_lease_mgr.cc
        Suppress output of of rows with count values of 0

    src/lib/dhcpsrv/mysql_lease_mgr.*
        Added v4/v6 lease stat SQL statements

        MySqlLeaseStatsQuery
        - Added ctor variants that accomodate selection criteria
        - Modified start() to handle three variants of selection

        MySqlLeaseMgr
        - Added start***Query4/6 variants

    src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
        Added tests:
        - TEST_F(MySqlLeaseMgrTest, leaseStatsQuery4)
        - TEST_F(MySqlLeaseMgrTest, leaseStatsQuery6)
This commit is contained in:
Thomas Markwalder
2018-05-02 13:36:02 -04:00
parent 6c3c1afdec
commit a662ab45d9
12 changed files with 950 additions and 61 deletions

View File

@@ -365,22 +365,66 @@ public:
///
/// It creates an instance of a MySqlLeaseStatsQuery4 and then
/// invokes its start method, which fetches its statistical data
/// result set by executing the RECOUNT_LEASE_STATS4 query.
/// result set by executing the ALL_LEASE_STATS4 query.
/// The query object is then returned.
///
/// @return The populated query as a pointer to an LeaseStatsQuery
virtual LeaseStatsQueryPtr startLeaseStatsQuery4();
/// @brief Creates and runs the IPv4 lease stats query for a single subnet
///
/// It creates an instance of a MySqlLeaseStatsQuery4 for a single subnet
/// query and then invokes its start method in which the query constructs its
/// statistical data result set. The query object is then returned.
///
/// @param subnet_id id of the subnet for which stats are desired
/// @return A populated LeaseStatsQuery
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id);
/// @brief Creates and runs the IPv4 lease stats query for a single subnet
///
/// It creates an instance of a MySqlLeaseStatsQuery4 for a subnet range
/// query and then invokes its start method in which the query constructs its
/// statistical data result set. The query object is then returned.
///
/// @param first_subnet_id first subnet in the range of subnets
/// @param last_subnet_id last subnet in the range of subnets
/// @return A populated LeaseStatsQuery
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
const SubnetID& last_subnet_id);
/// @brief Creates and runs the IPv6 lease stats query
///
/// It creates an instance of a MySqlLeaseStatsQuery6 and then
/// invokes its start method, which fetches its statistical data
/// result set by executing the RECOUNT_LEASE_STATS6 query.
/// result set by executing the ALL_LEASE_STATS6 query.
/// The query object is then returned.
///
/// @return The populated query as a pointer to an LeaseStatsQuery
virtual LeaseStatsQueryPtr startLeaseStatsQuery6();
/// @brief Creates and runs the IPv6 lease stats query for a single subnet
///
/// It creates an instance of a MySqlLeaseStatsQuery6 for a single subnet
/// query and then invokes its start method in which the query constructs its
/// statistical data result set. The query object is then returned.
///
/// @param subnet_id id of the subnet for which stats are desired
/// @return A populated LeaseStatsQuery
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id);
/// @brief Creates and runs the IPv6 lease stats query for a single subnet
///
/// It creates an instance of a MySqlLeaseStatsQuery6 for a subnet range
/// query and then invokes its start method in which the query constructs its
/// statistical data result set. The query object is then returned.
///
/// @param first_subnet_id first subnet in the range of subnets
/// @param last_subnet_id last subnet in the range of subnets
/// @return A populated LeaseStatsQuery
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
const SubnetID& last_subnet_id);
/// @brief Removes specified IPv4 leases.
///
/// This rather dangerous method is able to remove all leases from specified
@@ -478,8 +522,12 @@ public:
INSERT_LEASE6, // Add entry to lease6 table
UPDATE_LEASE4, // Update a Lease4 entry
UPDATE_LEASE6, // Update a Lease6 entry
RECOUNT_LEASE4_STATS, // Fetches IPv4 address statistics
RECOUNT_LEASE6_STATS, // Fetches IPv6 address statistics
ALL_LEASE4_STATS, // Fetches IPv4 lease statistics
SUBNET_LEASE4_STATS, // Fetched IPv4 lease stats for a single subnet.
SUBNET_RANGE_LEASE4_STATS, // Fetched IPv4 lease stats for a subnet range.
ALL_LEASE6_STATS, // Fetches IPv6 lease statistics
SUBNET_LEASE6_STATS, // Fetched IPv6 lease stats for a single subnet.
SUBNET_RANGE_LEASE6_STATS, // Fetched IPv6 lease stats for a subnet range.
NUM_STATEMENTS // Number of statements
};