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
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
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);
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);
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);
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);
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);
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);
// 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());
}
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());
}
// 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());
}
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());
}
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);
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);