]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2629] added origin for ha lease commands
authorRazvan Becheriu <razvan@isc.org>
Tue, 16 May 2023 13:31:08 +0000 (16:31 +0300)
committerRazvan Becheriu <razvan@isc.org>
Thu, 25 May 2023 21:12:53 +0000 (21:12 +0000)
doc/sphinx/arm/hooks-legal-log.rst
src/hooks/dhcp/high_availability/command_creator.cc
src/hooks/dhcp/high_availability/tests/command_creator_unittest.cc

index 30eb1c0b5afcc11238c922311ff0c5fe9a9fc0bf..68d0d315abe0c30897ce4b8adabfbcce071be79f 100644 (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
index 4fa0b02b588f7bd6ab298a9b38e3dbe037be1616..77eb88703eff55fbd883a45d49c8cbe421468fcc 100644 (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);
index b1d1a065daf67c42331d7cde70ade98cc56f4c3a..3178478a917f5ef7d090851288e36b30021e0ff1 100644 (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);