From: Razvan Becheriu Date: Fri, 24 Jul 2020 14:10:03 +0000 (+0300) Subject: [#1065] lease commands update statistics X-Git-Tag: Kea-1.8.0~118 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb0396056a90aee1245cd518c5d0b1b42114f736;p=thirdparty%2Fkea.git [#1065] lease commands update statistics --- diff --git a/src/hooks/dhcp/lease_cmds/lease_cmds.cc b/src/hooks/dhcp/lease_cmds/lease_cmds.cc index 8832422ef6..3518346614 100644 --- a/src/hooks/dhcp/lease_cmds/lease_cmds.cc +++ b/src/hooks/dhcp/lease_cmds/lease_cmds.cc @@ -1207,34 +1207,84 @@ void updateOrAdd(Lease6Ptr lease) { LeaseMgrFactory::instance().getLease6(lease->type_, lease->addr_); // Try to update. LeaseMgrFactory::instance().updateLease6(lease); - bool update = lease6->stateExpiredReclaimed(); - if (lease6->subnet_id_ != lease->subnet_id_) { - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease6->subnet_id_, - lease->type_ == Lease::TYPE_NA ? - "assigned-nas" : "assigned-pds"), - int64_t(-1)); - update = true; + if (!lease6->stateExpiredReclaimed()) { + // old lease is non expired-reclaimed + if (lease6->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease6->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(-1)); + } + if (!lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(1)); + } else { + // new lease is expired-reclaimed + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + } + } else { + // old lease is expired-reclaimed + if (lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease6->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } else { + // new lease is expired-reclaimed + if (lease6->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease6->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } + } } - if (update) { + } catch (const NoSuchLease& ex) { + // Lease to be updated not found, so add it. + if (!LeaseMgrFactory::instance().addLease(lease)) { + isc_throw(db::DuplicateEntry, + "lost race between calls to update and add"); + } + if (!lease->stateExpiredReclaimed()) { + // adding a non expired-reclaimed lease StatsMgr::instance().addValue( StatsMgr::generateName("subnet", lease->subnet_id_, lease->type_ == Lease::TYPE_NA ? "assigned-nas" : "assigned-pds"), int64_t(1)); - } + } else { + // adding an expired-reclaimed lease + // Increase total number of reclaimed leases. + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); - } catch (const NoSuchLease& ex) { - // Lease to be updated not found, so add it. - if (!LeaseMgrFactory::instance().addLease(lease)) { - isc_throw(db::DuplicateEntry, - "lost race between calls to update and add"); + // Increase number of reclaimed leases for a subnet. + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); } - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease->subnet_id_, - lease->type_ == Lease::TYPE_NA ? - "assigned-nas" : "assigned-pds"), - int64_t(1)); } } @@ -1521,30 +1571,81 @@ namespace { // anonymous namepace. bool addOrUpdate4(Lease4Ptr lease, bool force_create) { Lease4Ptr lease4 = LeaseMgrFactory::instance().getLease4(lease->addr_); if (force_create && !lease4) { + // lease does not exist if (!LeaseMgrFactory::instance().addLease(lease)) { isc_throw(db::DuplicateEntry, "lost race between calls to get and add"); } - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease->subnet_id_, - "assigned-addresses"), - int64_t(1)); + if (!lease->stateExpiredReclaimed()) { + // adding a non expired-reclaimed lease + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + "assigned-addresses"), + int64_t(1)); + } else { + // adding an expired-reclaimed lease + // Increase total number of reclaimed leases. + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); + + // Increase number of reclaimed leases for a subnet. + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + } return (true); } LeaseMgrFactory::instance().updateLease4(lease); - bool update = lease4->stateExpiredReclaimed(); - if (lease4->subnet_id_ != lease->subnet_id_) { - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease4->subnet_id_, - "assigned-addresses"), - int64_t(-1)); - update = true; - } - if (update) { - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease->subnet_id_, - "assigned-addresses"), - int64_t(1)); + if (!lease4->stateExpiredReclaimed()) { + // old lease is non expired-reclaimed + if (lease4->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease4->subnet_id_, + "assigned-addresses"), + int64_t(-1)); + } + if (!lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + "assigned-addresses"), + int64_t(1)); + } else { + // new lease is expired-reclaimed + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + } + } else { + // old lease is expired-reclaimed + if (lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + "assigned-addresses"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease4->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } else { + // new lease is expired-reclaimed + if (lease4->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease4->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } + } } return (false); } @@ -1610,33 +1711,85 @@ bool addOrUpdate6(Lease6Ptr lease, bool force_create) { Lease6Ptr lease6 = LeaseMgrFactory::instance().getLease6(lease->type_, lease->addr_); if (force_create && !lease6) { + // lease does not exist if (!LeaseMgrFactory::instance().addLease(lease)) { isc_throw(db::DuplicateEntry, "lost race between calls to get and add"); } - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease->subnet_id_, - lease->type_ == Lease::TYPE_NA ? - "assigned-nas" : "assigned-pds"), - int64_t(1)); + if (!lease->stateExpiredReclaimed()) { + // adding a non expired-reclaimed lease + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(1)); + } else { + // adding an expired-reclaimed lease + // Increase total number of reclaimed leases. + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); + + // Increase number of reclaimed leases for a subnet. + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + } return (true); } LeaseMgrFactory::instance().updateLease6(lease); - bool update = lease6->stateExpiredReclaimed(); - if (lease6->subnet_id_ != lease->subnet_id_) { - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease6->subnet_id_, - lease->type_ == Lease::TYPE_NA ? - "assigned-nas" : "assigned-pds"), - int64_t(-1)); - update = true; - } - if (update) { - StatsMgr::instance().addValue( - StatsMgr::generateName("subnet", lease->subnet_id_, - lease->type_ == Lease::TYPE_NA ? - "assigned-nas" : "assigned-pds"), - int64_t(1)); + if (!lease6->stateExpiredReclaimed()) { + // old lease is non expired-reclaimed + if (lease6->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease6->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(-1)); + } + if (!lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(1)); + } else { + // new lease is expired-reclaimed + StatsMgr::instance().addValue("reclaimed-leases", int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + } + } else { + // old lease is expired-reclaimed + if (lease->stateExpiredReclaimed()) { + // new lease is non expired-reclaimed + StatsMgr::instance().addValue( + StatsMgr::generateName("subnet", lease->subnet_id_, + lease->type_ == Lease::TYPE_NA ? + "assigned-nas" : "assigned-pds"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease6->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } else { + // new lease is expired-reclaimed + if (lease6->subnet_id_ != lease->subnet_id_) { + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease->subnet_id_, + "reclaimed-leases"), + int64_t(1)); + + StatsMgr::instance().addValue(StatsMgr::generateName("subnet", + lease6->subnet_id_, + "reclaimed-leases"), + int64_t(-1)); + } + } } return (false); }