2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-22 09:57:41 +00:00

[#2629] added origin for ha lease commands

This commit is contained in:
Razvan Becheriu 2023-05-16 16:31:08 +03:00
parent 5aa1ecfbd5
commit fda083c259
3 changed files with 58 additions and 0 deletions

View File

@ -425,6 +425,26 @@ Examples:
2018-01-06 01:02:12 CET Administrator deleted a lease for a device identified by: hw-address of 1a:1b:1c:1d:1e:1f
If High availability module is enabled, the partner will periodically send lease
commands which have a similar format, the only difference is that the issuer of
the command is 'HA partner' instead of 'Administrator'.
::
*timestamp* HA partner added ...
or
::
*timestamp* HA partner updated ...
or
::
*timestamp* HA partner deleted ...
The ``request-parser-format`` and ``response-parser-format`` options can be used to
extract and log data from the incoming packet and server response packet,
respectively. The configured value is an evaluated parsed expression returning a
@ -730,6 +750,26 @@ Examples:
2018-01-06 01:02:11 PST Administrator deleted a lease for a device identified by: duid of 1a:1b:1c:1d:1e:1f:20:21:22:23:24
If High availability module is enabled, the partner will periodically send lease
commands which have a similar format, the only difference is that the issuer of
the command is 'HA partner' instead of 'Administrator'.
::
*timestamp* HA partner added ...
or
::
*timestamp* HA partner updated ...
or
::
*timestamp* HA partner deleted ...
The ``request-parser-format`` and ``response-parser-format`` options can be used to
extract and log data from the incoming packet and server response packet,
respectively. The configured value is an evaluated parsed expression returning a

View File

@ -81,6 +81,7 @@ CommandCreator::createLease4Update(const Lease4& lease4) {
ElementPtr lease_as_json = lease4.toElement();
insertLeaseExpireTime(lease_as_json);
lease_as_json->set("force-create", Element::create(true));
lease_as_json->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease4-update", lease_as_json);
insertService(command, HAServerType::DHCPv4);
return (command);
@ -90,6 +91,7 @@ ConstElementPtr
CommandCreator::createLease4Delete(const Lease4& lease4) {
ElementPtr lease_as_json = lease4.toElement();
insertLeaseExpireTime(lease_as_json);
lease_as_json->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease4-del", lease_as_json);
insertService(command, HAServerType::DHCPv4);
return (command);
@ -149,6 +151,7 @@ CommandCreator::createLease6BulkApply(const Lease6CollectionPtr& leases,
ElementPtr args = Element::createMap();
args->set("deleted-leases", deleted_leases_list);
args->set("leases", leases_list);
args->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease6-bulk-apply", args);
insertService(command, HAServerType::DHCPv6);
@ -175,6 +178,7 @@ CommandCreator::createLease6BulkApply(LeaseUpdateBacklog& leases) {
ElementPtr args = Element::createMap();
args->set("deleted-leases", deleted_leases_list);
args->set("leases", leases_list);
args->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease6-bulk-apply", args);
insertService(command, HAServerType::DHCPv6);
@ -186,6 +190,7 @@ CommandCreator::createLease6Update(const Lease6& lease6) {
ElementPtr lease_as_json = lease6.toElement();
insertLeaseExpireTime(lease_as_json);
lease_as_json->set("force-create", Element::create(true));
lease_as_json->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease6-update", lease_as_json);
insertService(command, HAServerType::DHCPv6);
return (command);
@ -195,6 +200,7 @@ ConstElementPtr
CommandCreator::createLease6Delete(const Lease6& lease6) {
ElementPtr lease_as_json = lease6.toElement();
insertLeaseExpireTime(lease_as_json);
lease_as_json->set("origin", Element::create("ha-partner"));
ConstElementPtr command = config::createCommand("lease6-del", lease_as_json);
insertService(command, HAServerType::DHCPv6);
return (command);

View File

@ -208,6 +208,7 @@ TEST(CommandCreatorTest, createLease4Update) {
// The lease update must contain the "force-create" parameter indicating that
// the lease must be created if it doesn't exist.
lease_as_json->set("force-create", Element::create(true));
lease_as_json->set("origin", Element::create("ha-partner"));
EXPECT_EQ(lease_as_json->str(), arguments->str());
}
@ -219,6 +220,7 @@ TEST(CommandCreatorTest, createLease4Delete) {
ASSERT_NO_FATAL_FAILURE(testCommandBasics(command, "lease4-del", "dhcp4",
arguments));
ElementPtr lease_as_json = leaseAsJson(createLease4());
lease_as_json->set("origin", Element::create("ha-partner"));
EXPECT_EQ(lease_as_json->str(), arguments->str());
}
@ -334,6 +336,7 @@ TEST(CommandCreatorTest, createLease6Update) {
// The lease update must contain the "force-create" parameter indicating that
// the lease must be created if it doesn't exist.
lease_as_json->set("force-create", Element::create(true));
lease_as_json->set("origin", Element::create("ha-partner"));
EXPECT_EQ(lease_as_json->str(), arguments->str());
}
@ -345,6 +348,7 @@ TEST(CommandCreatorTest, createLease6Delete) {
ASSERT_NO_FATAL_FAILURE(testCommandBasics(command, "lease6-del", "dhcp6",
arguments));
ElementPtr lease_as_json = leaseAsJson(createLease6());
lease_as_json->set("origin", Element::create("ha-partner"));
EXPECT_EQ(lease_as_json->str(), arguments->str());
}
@ -364,6 +368,10 @@ TEST(CommandCreatorTest, createLease6BulkApply) {
ASSERT_NO_FATAL_FAILURE(testCommandBasics(command, "lease6-bulk-apply",
"dhcp6", arguments));
ConstElementPtr origin = arguments->get("origin");
ASSERT_TRUE(origin);
ASSERT_EQ("ha-partner", origin->stringValue());
// Verify deleted-leases.
auto deleted_leases_json = arguments->get("deleted-leases");
ASSERT_TRUE(deleted_leases_json);
@ -396,6 +404,10 @@ TEST(CommandCreatorTest, createLease6BulkApplyFromBacklog) {
ASSERT_NO_FATAL_FAILURE(testCommandBasics(command, "lease6-bulk-apply",
"dhcp6", arguments));
ConstElementPtr origin = arguments->get("origin");
ASSERT_TRUE(origin);
ASSERT_EQ("ha-partner", origin->stringValue());
// Verify deleted-leases.
auto deleted_leases_json = arguments->get("deleted-leases");
ASSERT_TRUE(deleted_leases_json);