// issues related to namespaces.
#include <config.h>
+
#include <hooks/hooks.h>
+
#include <pgsql_cb_dhcp4.h>
#include <pgsql_cb_dhcp6.h>
#include <pgsql_cb_log.h>
/// @param handle library handle
/// @return 0 when initialization is successful, 1 otherwise
-int load(LibraryHandle& /* handle */) {
+int
+load(LibraryHandle& /* handle */) {
LOG_INFO(pgsql_cb_logger, PGSQL_CB_INIT_OK);
// Register Postgres CB factories with CB Managers
isc::dhcp::PgSqlConfigBackendDHCPv4::registerBackendType();
///
/// @param handle callout handle passed to the callout.
/// @return 0 on success, 1 otherwise.
-int dhcp4_srv_configured(CalloutHandle& handle) {
+int
+dhcp4_srv_configured(CalloutHandle& handle) {
isc::asiolink::IOServicePtr io_service;
handle.getArgument("io_context", io_service);
isc::dhcp::PgSqlConfigBackendImpl::setIOService(io_service);
///
/// @param handle callout handle passed to the callout.
/// @return 0 on success, 1 otherwise.
-int dhcp6_srv_configured(CalloutHandle& handle) {
+int
+dhcp6_srv_configured(CalloutHandle& handle) {
isc::asiolink::IOServicePtr io_service;
handle.getArgument("io_context", io_service);
isc::dhcp::PgSqlConfigBackendImpl::setIOService(io_service);
/// @brief This function is called when the library is unloaded.
///
/// @return 0 if deregistration was successful, 1 otherwise
-int unload() {
+int
+unload() {
LOG_INFO(pgsql_cb_logger, PGSQL_CB_DEINIT_OK);
// Unregister the factories and remove Postgres backends
isc::dhcp::PgSqlConfigBackendDHCPv4::unregisterBackendType();
/// is always called from the main thread.
///
/// @return 1 which means compatible with multi-threading.
-int multi_threading_compatible() {
+int
+multi_threading_compatible() {
return (1);
}
-} // end extern "C"
+} // end extern "C"
#include <config.h>
-#include <pgsql_cb_dhcp4.h>
-#include <pgsql_cb_impl.h>
-#include <pgsql_macros.h>
#include <cc/data.h>
#include <config_backend/constants.h>
#include <database/database_connection.h>
#include <dhcp/option_space.h>
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/config_backend_dhcp4_mgr.h>
+#include <dhcpsrv/lease.h>
#include <dhcpsrv/network.h>
#include <dhcpsrv/pool.h>
-#include <dhcpsrv/lease.h>
#include <dhcpsrv/timer_mgr.h>
-#include <util/buffer.h>
-#include <util/boost_time_utils.h>
#include <pgsql/pgsql_connection.h>
+#include <util/boost_time_utils.h>
+#include <util/buffer.h>
+
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/pointer_cast.hpp>
#include <boost/scoped_ptr.hpp>
+
#include <array>
+#include <pgsql_cb_dhcp4.h>
+#include <pgsql_cb_impl.h>
+#include <pgsql_macros.h>
#include <sstream>
#include <utility>
#include <vector>
/// @brief Implementation of the Postgres Configuration Backend.
class PgSqlConfigBackendDHCPv4Impl : public PgSqlConfigBackendImpl {
public:
-
/// @brief Statement tags.
///
/// The contents of the enum are indexes into the list of SQL statements.
///
/// @param parameters A data structure relating keywords and values
/// concerned with the database.
- explicit PgSqlConfigBackendDHCPv4Impl(const DatabaseConnection::ParameterMap&
- parameters);
+ explicit PgSqlConfigBackendDHCPv4Impl(const DatabaseConnection::ParameterMap& parameters);
/// @brief Destructor.
~PgSqlConfigBackendDHCPv4Impl();
///
/// @return Pointer to the retrieved value or null if such parameter
/// doesn't exist.
- StampedValuePtr getGlobalParameter4(const ServerSelector& server_selector,
- const std::string& name) {
+ StampedValuePtr
+ getGlobalParameter4(const ServerSelector& server_selector, const std::string& name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
///
/// @return Pointer to the returned subnet or NULL if such subnet
/// doesn't exist.
- Subnet4Ptr getSubnet4(const ServerSelector& server_selector,
- const SubnetID& subnet_id) {
+ Subnet4Ptr getSubnet4(const ServerSelector& server_selector, const SubnetID& subnet_id) {
isc_throw(NotImplemented, "Not implemented yet.");
}
///
/// @return Pointer to the returned subnet or NULL if such subnet
/// doesn't exist.
- Subnet4Ptr getSubnet4(const ServerSelector& server_selector,
- const std::string& subnet_prefix) {
+ Subnet4Ptr getSubnet4(const ServerSelector& server_selector, const std::string& subnet_prefix) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @param server_selector Server selector.
/// @param [out] subnets Reference to the subnet collection structure where
/// subnets should be inserted.
- void getAllSubnets4(const ServerSelector& server_selector,
- Subnet4Collection& subnets) {
+ void getAllSubnets4(const ServerSelector& server_selector, Subnet4Collection& subnets) {
isc_throw(NotImplemented, "Not implemented yet.");
}
const IOAddress& pool_start_address,
const IOAddress& pool_end_address,
uint64_t& pool_id) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Sends query to insert or update subnet.
///
/// @param server_selector Server selector.
/// @param subnet Pointer to the subnet to be inserted or updated.
- void createUpdateSubnet4(const ServerSelector& server_selector,
- const Subnet4Ptr& subnet) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ void createUpdateSubnet4(const ServerSelector& server_selector, const Subnet4Ptr& subnet) {
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Inserts new IPv4 pool to the database.
/// @param server_selector Server selector.
/// @param pool Pointer to the pool to be inserted.
/// @param subnet Pointer to the subnet that this pool belongs to.
- void createPool4(const ServerSelector& server_selector, const Pool4Ptr& pool,
+ void createPool4(const ServerSelector& server_selector,
+ const Pool4Ptr& pool,
const Subnet4Ptr& subnet) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Sends a query to delete data from a table.
/// @c deleteFromTable methods.
///
/// @return Number of deleted entries.
- template<typename... Args>
+ template <typename... Args>
uint64_t deleteTransactional(const int index,
const db::ServerSelector& server_selector,
const std::string& operation,
const std::string& log_message,
const bool cascade_delete,
Args&&... keys) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Sends query to delete subnet by id.
/// @param server_selector Server selector.
/// @param subnet_id Identifier of the subnet to be deleted.
/// @return Number of deleted subnets.
- uint64_t deleteSubnet4(const ServerSelector& server_selector,
- const SubnetID& subnet_id) {
+ uint64_t deleteSubnet4(const ServerSelector& server_selector, const SubnetID& subnet_id) {
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_ID_ANY :
- PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_ID_WITH_TAG);
- return (deleteTransactional(index, server_selector,
- "deleting a subnet", "subnet deleted",
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_ID_ANY :
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_ID_WITH_TAG);
+ return (deleteTransactional(index, server_selector, "deleting a subnet", "subnet deleted",
true, static_cast<uint32_t>(subnet_id)));
}
/// @param server_selector Server selector.
/// @param subnet_prefix Prefix of the subnet to be deleted.
/// @return Number of deleted subnets.
- uint64_t deleteSubnet4(const ServerSelector& server_selector,
- const std::string& subnet_prefix) {
+ uint64_t
+ deleteSubnet4(const ServerSelector& server_selector, const std::string& subnet_prefix) {
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_PREFIX_ANY :
- PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_PREFIX_WITH_TAG);
- return (deleteTransactional(index, server_selector,
- "deleting a subnet", "subnet deleted",
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_PREFIX_ANY :
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SUBNET4_PREFIX_WITH_TAG);
+ return (deleteTransactional(index, server_selector, "deleting a subnet", "subnet deleted",
true, subnet_prefix));
}
/// @param subnet Pointer to the subnet for which pools should be
/// deleted.
uint64_t deletePools4(const Subnet4Ptr& subnet) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Sends query to retrieve single shared network by name.
///
/// @return Pointer to the returned shared network or NULL if such shared
/// network doesn't exist.
- SharedNetwork4Ptr getSharedNetwork4(const ServerSelector& server_selector,
- const std::string& name) {
- isc_throw(NotImplemented, "Not implemented yet.");
+ SharedNetwork4Ptr
+ getSharedNetwork4(const ServerSelector& server_selector, const std::string& name) {
+ isc_throw(NotImplemented, "Not implemented yet.");
}
/// @brief Sends query to retrieve all shared networks.
///
/// @param server_selector Server selector.
/// @param option Pointer to the option descriptor encapsulating the option.
- void createUpdateOption4(const ServerSelector& server_selector,
- const OptionDescriptorPtr& option) {
- isc_throw(NotImplemented, "Not implemented yet.");
- }
+ void
+ createUpdateOption4(const ServerSelector& server_selector, const OptionDescriptorPtr& option) {
+ isc_throw(NotImplemented, "Not implemented yet.");
+ }
/// @brief Sends query to insert or update DHCP option in a subnet.
///
const IOAddress& pool_end_address,
const OptionDescriptorPtr& option) {
uint64_t pool_id = 0;
- Pool4Ptr pool = getPool4(server_selector, pool_start_address, pool_end_address,
- pool_id);
+ Pool4Ptr pool = getPool4(server_selector, pool_start_address, pool_end_address, pool_id);
if (!pool) {
- isc_throw(BadValue, "no pool found for range of "
- << pool_start_address << " : "
- << pool_end_address);
+ isc_throw(BadValue, "no pool found for range of " << pool_start_address << " : "
+ << pool_end_address);
}
createUpdateOption4(server_selector, pool_id, option, false);
}
-
/// @brief Sends query to insert or update DHCP option in a pool.
///
/// @param selector Server selector.
/// @param subnet Pointer to the subnet for which options should be
/// deleted.
/// @return Number of deleted options.
- uint64_t deleteOptions4(const ServerSelector& server_selector,
- const Subnet4Ptr& subnet) {
+ uint64_t deleteOptions4(const ServerSelector& server_selector, const Subnet4Ptr& subnet) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @param subnet Pointer to the subnet for which options should be
/// deleted.
/// @return Number of deleted options.
- uint64_t deleteOptions4(const ServerSelector& server_selector,
- const SharedNetwork4Ptr& shared_network) {
+ uint64_t
+ deleteOptions4(const ServerSelector& server_selector, const SharedNetwork4Ptr& shared_network) {
isc_throw(NotImplemented, "Not implemented yet.");
}
for (auto db : config_ctl->getConfigDatabases()) {
const std::string& access = db.getAccessString();
auto parameters = db.getParameters();
- if (ConfigBackendDHCPv4Mgr::instance().delBackend(parameters["type"], access, true)) {
+ if (ConfigBackendDHCPv4Mgr::instance().delBackend(parameters["type"], access,
+ true)) {
ConfigBackendDHCPv4Mgr::instance().addBackend(db.getAccessString());
}
}
reopened = true;
} catch (const std::exception& ex) {
- LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_FAILED4)
- .arg(ex.what());
+ LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_FAILED4).arg(ex.what());
}
if (reopened) {
if (!db_reconnect_ctl->checkRetries()) {
// We're out of retries, log it and initiate shutdown.
LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_FAILED4)
- .arg(db_reconnect_ctl->maxRetries());
+ .arg(db_reconnect_ctl->maxRetries());
// Cancel the timer.
if (TimerMgr::instance()->isTimerRegistered(timer_name)) {
}
LOG_INFO(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_SCHEDULE4)
- .arg(db_reconnect_ctl->maxRetries() - db_reconnect_ctl->retriesLeft() + 1)
- .arg(db_reconnect_ctl->maxRetries())
- .arg(db_reconnect_ctl->retryInterval());
+ .arg(db_reconnect_ctl->maxRetries() - db_reconnect_ctl->retriesLeft() + 1)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->retryInterval());
// Start the timer.
if (!TimerMgr::instance()->isTimerRegistered(timer_name)) {
- TimerMgr::instance()->registerTimer(timer_name,
+ TimerMgr::instance()->registerTimer(
+ timer_name,
std::bind(&PgSqlConfigBackendDHCPv4Impl::dbReconnect, db_reconnect_ctl),
- db_reconnect_ctl->retryInterval(),
- asiolink::IntervalTimer::ONE_SHOT);
+ db_reconnect_ctl->retryInterval(), asiolink::IntervalTimer::ONE_SHOT);
}
TimerMgr::instance()->setup(timer_name);
}
return (true);
}
-
};
namespace {
/// @brief Array of tagged statements.
typedef std::array<PgSqlTaggedStatement, PgSqlConfigBackendDHCPv4Impl::NUM_STATEMENTS>
-PgSqlTaggedStatementArray;
+ PgSqlTaggedStatementArray;
/// @brief Prepared Postgres statements used by the backend to insert and
/// retrieve data from the database.
};
#endif
-}; // end anonymous namespace
+}; // end anonymous namespace
-PgSqlConfigBackendDHCPv4Impl::PgSqlConfigBackendDHCPv4Impl(const DatabaseConnection::ParameterMap& parameters)
+PgSqlConfigBackendDHCPv4Impl::PgSqlConfigBackendDHCPv4Impl(
+ const DatabaseConnection::ParameterMap& parameters)
: PgSqlConfigBackendImpl(parameters, &PgSqlConfigBackendDHCPv4Impl::dbReconnect) {
// Prepare query statements. Those are will be only used to retrieve
// information from the database, so they can be used even if the
// database is read only for the current user.
- conn_.prepareStatements(tagged_statements.begin(),
- tagged_statements.end());
+ conn_.prepareStatements(tagged_statements.begin(), tagged_statements.end());
// Create unique timer name per instance.
timer_name_ = "PgSqlConfigBackend4[";
PgSqlConfigBackendDHCPv4Impl::~PgSqlConfigBackendDHCPv4Impl() {
}
-PgSqlConfigBackendDHCPv4::PgSqlConfigBackendDHCPv4(const DatabaseConnection::ParameterMap& parameters)
+PgSqlConfigBackendDHCPv4::PgSqlConfigBackendDHCPv4(
+ const DatabaseConnection::ParameterMap& parameters)
: impl_(new PgSqlConfigBackendDHCPv4Impl(parameters)), base_impl_(impl_) {
}
Subnet4Ptr
PgSqlConfigBackendDHCPv4::getSubnet4(const ServerSelector& server_selector,
const SubnetID& subnet_id) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SUBNET4_BY_SUBNET_ID)
- .arg(subnet_id);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SUBNET4_BY_SUBNET_ID).arg(subnet_id);
return (impl_->getSubnet4(server_selector, subnet_id));
}
}
Subnet4Collection
-PgSqlConfigBackendDHCPv4::getModifiedSubnets4(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedSubnets4(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_SUBNETS4)
.arg(util::ptimeToText(modification_time));
Subnet4Collection subnets;
SharedNetwork4Ptr
PgSqlConfigBackendDHCPv4::getSharedNetwork4(const ServerSelector& server_selector,
const std::string& name) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SHARED_NETWORK4)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SHARED_NETWORK4).arg(name);
return (impl_->getSharedNetwork4(server_selector, name));
}
}
SharedNetwork4Collection
-PgSqlConfigBackendDHCPv4::getModifiedSharedNetworks4(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedSharedNetworks4(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_SHARED_NETWORKS4)
.arg(util::ptimeToText(modification_time));
SharedNetwork4Collection shared_networks;
PgSqlConfigBackendDHCPv4::getOptionDef4(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION_DEF4)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION_DEF4).arg(code).arg(space);
return (impl_->getOptionDef(PgSqlConfigBackendDHCPv4Impl::GET_OPTION_DEF4_CODE_SPACE,
server_selector, code, space));
}
PgSqlConfigBackendDHCPv4::getAllOptionDefs4(const ServerSelector& server_selector) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTION_DEFS4);
OptionDefContainer option_defs;
- impl_->getAllOptionDefs(PgSqlConfigBackendDHCPv4Impl::GET_ALL_OPTION_DEFS4,
- server_selector, option_defs);
+ impl_->getAllOptionDefs(PgSqlConfigBackendDHCPv4Impl::GET_ALL_OPTION_DEFS4, server_selector,
+ option_defs);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTION_DEFS4_RESULT)
.arg(option_defs.size());
return (option_defs);
}
OptionDefContainer
-PgSqlConfigBackendDHCPv4::getModifiedOptionDefs4(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedOptionDefs4(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTION_DEFS4)
.arg(util::ptimeToText(modification_time));
OptionDefContainer option_defs;
PgSqlConfigBackendDHCPv4::getOption4(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION4)
- .arg(code).arg(space);
- return (impl_->getOption(PgSqlConfigBackendDHCPv4Impl::GET_OPTION4_CODE_SPACE,
- Option::V4, server_selector, code, space));
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION4).arg(code).arg(space);
+ return (impl_->getOption(PgSqlConfigBackendDHCPv4Impl::GET_OPTION4_CODE_SPACE, Option::V4,
+ server_selector, code, space));
}
OptionContainer
PgSqlConfigBackendDHCPv4::getAllOptions4(const ServerSelector& server_selector) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTIONS4);
OptionContainer options = impl_->getAllOptions(PgSqlConfigBackendDHCPv4Impl::GET_ALL_OPTIONS4,
- Option::V4, server_selector);
+ Option::V4, server_selector);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTIONS4_RESULT)
.arg(options.size());
return (options);
}
OptionContainer
-PgSqlConfigBackendDHCPv4::getModifiedOptions4(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedOptions4(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTIONS4)
.arg(util::ptimeToText(modification_time));
- OptionContainer options = impl_->getModifiedOptions(PgSqlConfigBackendDHCPv4Impl::GET_MODIFIED_OPTIONS4,
- Option::V4, server_selector, modification_time);
+ OptionContainer options =
+ impl_->getModifiedOptions(PgSqlConfigBackendDHCPv4Impl::GET_MODIFIED_OPTIONS4, Option::V4,
+ server_selector, modification_time);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTIONS4_RESULT)
.arg(options.size());
return (options);
StampedValuePtr
PgSqlConfigBackendDHCPv4::getGlobalParameter4(const ServerSelector& server_selector,
const std::string& name) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_GLOBAL_PARAMETER4)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_GLOBAL_PARAMETER4).arg(name);
return (impl_->getGlobalParameter4(server_selector, name));
}
}
StampedValueCollection
-PgSqlConfigBackendDHCPv4::getModifiedGlobalParameters4(const db::ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedGlobalParameters4(
+ const db::ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
isc_throw(NotImplemented, "Not implemented yet.");
}
AuditEntryCollection
PgSqlConfigBackendDHCPv4::getRecentAuditEntries(const db::ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time,
- const uint64_t& modification_id) const {
+ const boost::posix_time::ptime& modification_time,
+ const uint64_t& modification_id) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_RECENT_AUDIT_ENTRIES4)
- .arg(util::ptimeToText(modification_time))
- .arg(modification_id);
+ .arg(util::ptimeToText(modification_time))
+ .arg(modification_id);
AuditEntryCollection audit_entries;
impl_->getRecentAuditEntries(PgSqlConfigBackendDHCPv4Impl::GET_AUDIT_ENTRIES4_TIME,
- server_selector, modification_time,
- modification_id, audit_entries);
+ server_selector, modification_time, modification_id,
+ audit_entries);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_RECENT_AUDIT_ENTRIES4_RESULT)
.arg(audit_entries.size());
return (audit_entries);
ServerCollection servers;
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_SERVERS4);
- impl_->getAllServers(PgSqlConfigBackendDHCPv4Impl::GET_ALL_SERVERS4,
- servers);
+ impl_->getAllServers(PgSqlConfigBackendDHCPv4Impl::GET_ALL_SERVERS4, servers);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_SERVERS4_RESULT)
.arg(servers.size());
ServerPtr
PgSqlConfigBackendDHCPv4::getServer4(const data::ServerTag& server_tag) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SERVER4)
- .arg(server_tag.get());
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SERVER4).arg(server_tag.get());
return (impl_->getServer(PgSqlConfigBackendDHCPv4Impl::GET_SERVER4, server_tag));
}
void
PgSqlConfigBackendDHCPv4::createUpdateSubnet4(const ServerSelector& server_selector,
const Subnet4Ptr& subnet) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_SUBNET4)
- .arg(subnet);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_SUBNET4).arg(subnet);
impl_->createUpdateSubnet4(server_selector, subnet);
}
PgSqlConfigBackendDHCPv4::createUpdateOptionDef4(const ServerSelector& server_selector,
const OptionDefinitionPtr& option_def) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_OPTION_DEF4)
- .arg(option_def->getName()).arg(option_def->getCode());
+ .arg(option_def->getName())
+ .arg(option_def->getCode());
impl_->createUpdateOptionDef4(server_selector, option_def);
}
const asiolink::IOAddress& pool_end_address,
const OptionDescriptorPtr& option) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_BY_POOL_OPTION4)
- .arg(pool_start_address.toText()).arg(pool_end_address.toText());
- impl_->createUpdateOption4(server_selector, pool_start_address, pool_end_address,
- option);
+ .arg(pool_start_address.toText())
+ .arg(pool_end_address.toText());
+ impl_->createUpdateOption4(server_selector, pool_start_address, pool_end_address, option);
}
void
.arg(server->getServerTagAsText());
impl_->createUpdateServer(PgSqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
PgSqlConfigBackendDHCPv4Impl::INSERT_SERVER4,
- PgSqlConfigBackendDHCPv4Impl::UPDATE_SERVER4,
- server);
+ PgSqlConfigBackendDHCPv4Impl::UPDATE_SERVER4, server);
}
uint64_t
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS4);
int index = (server_selector.amUnassigned() ?
- PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4_UNASSIGNED :
- PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4);
+ PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4_UNASSIGNED :
+ PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4);
uint64_t result = impl_->deleteTransactional(index, server_selector, "deleting all subnets",
"deleted all subnets", true);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS4_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS4_RESULT).arg(result);
return (result);
}
const std::string& shared_network_name) {
if (!server_selector.amAny()) {
isc_throw(InvalidOperation, "deleting all subnets from a shared "
- "network requires using ANY server selector");
+ "network requires using ANY server selector");
}
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_SUBNETS4)
.arg(shared_network_name);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4_SHARED_NETWORK_NAME,
- server_selector,
- "deleting all subnets for a shared network",
- "deleted all subnets for a shared network",
- true, shared_network_name);
+ uint64_t result = impl_->deleteTransactional(
+ PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SUBNETS4_SHARED_NETWORK_NAME, server_selector,
+ "deleting all subnets for a shared network", "deleted all subnets for a shared network",
+ true, shared_network_name);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_SUBNETS4_RESULT)
.arg(result);
return (result);
/// dedicated query for this at the moment. The user should use ANY to delete
/// the shared network by name.
if (server_selector.amUnassigned()) {
- isc_throw(NotImplemented, "deleting an unassigned shared network requires "
+ isc_throw(NotImplemented,
+ "deleting an unassigned shared network requires "
"an explicit server tag or using ANY server. The UNASSIGNED server "
"selector is currently not supported");
}
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK4)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK4).arg(name);
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv4Impl::DELETE_SHARED_NETWORK4_NAME_ANY :
- PgSqlConfigBackendDHCPv4Impl::DELETE_SHARED_NETWORK4_NAME_WITH_TAG);
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SHARED_NETWORK4_NAME_ANY :
+ PgSqlConfigBackendDHCPv4Impl::DELETE_SHARED_NETWORK4_NAME_WITH_TAG);
uint64_t result = impl_->deleteTransactional(index, server_selector,
"deleting a shared network",
"shared network deleted", true, name);
PgSqlConfigBackendDHCPv4::deleteAllSharedNetworks4(const ServerSelector& server_selector) {
if (server_selector.amAny()) {
isc_throw(InvalidOperation, "deleting all shared networks for ANY server is not"
- " supported");
+ " supported");
}
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SHARED_NETWORKS4);
int index = (server_selector.amUnassigned() ?
- PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SHARED_NETWORKS4_UNASSIGNED :
- PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SHARED_NETWORKS4);
- uint64_t result = impl_->deleteTransactional(index, server_selector, "deleting all shared networks",
+ PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SHARED_NETWORKS4_UNASSIGNED :
+ PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_SHARED_NETWORKS4);
+ uint64_t result = impl_->deleteTransactional(index, server_selector,
+ "deleting all shared networks",
"deleted all shared networks", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SHARED_NETWORKS4_RESULT)
.arg(result);
PgSqlConfigBackendDHCPv4::deleteOptionDef4(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF4)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF4).arg(code).arg(space);
uint64_t result = impl_->deleteOptionDef4(server_selector, code, space);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF4_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF4_RESULT).arg(result);
return (result);
}
uint64_t
PgSqlConfigBackendDHCPv4::deleteAllOptionDefs4(const ServerSelector& server_selector) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_OPTION_DEFS4);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_OPTION_DEFS4,
- server_selector, "deleting all option definitions",
- "deleted all option definitions", true);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_OPTION_DEFS4,
+ server_selector, "deleting all option definitions",
+ "deleted all option definitions", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_OPTION_DEFS4_RESULT)
.arg(result);
return (result);
PgSqlConfigBackendDHCPv4::deleteOption4(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION4)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION4).arg(code).arg(space);
uint64_t result = impl_->deleteOption4(server_selector, code, space);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION4_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION4_RESULT).arg(result);
return (result);
}
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_OPTION4)
- .arg(shared_network_name).arg(code).arg(space);
- uint64_t result = impl_->deleteOption4(ServerSelector::ANY(), shared_network_name,
- code, space);
+ .arg(shared_network_name)
+ .arg(code)
+ .arg(space);
+ uint64_t result = impl_->deleteOption4(ServerSelector::ANY(), shared_network_name, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_OPTION4_RESULT)
.arg(result);
return (result);
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_SUBNET_ID_OPTION4)
- .arg(subnet_id).arg(code).arg(space);
+ .arg(subnet_id)
+ .arg(code)
+ .arg(space);
uint64_t result = impl_->deleteOption4(ServerSelector::ANY(), subnet_id, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_SUBNET_ID_OPTION4_RESULT)
.arg(result);
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_OPTION4)
- .arg(pool_start_address.toText()).arg(pool_end_address.toText()).arg(code).arg(space);
+ .arg(pool_start_address.toText())
+ .arg(pool_end_address.toText())
+ .arg(code)
+ .arg(space);
uint64_t result = impl_->deleteOption4(ServerSelector::ANY(), pool_start_address,
pool_end_address, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_OPTION4_RESULT)
uint64_t
PgSqlConfigBackendDHCPv4::deleteGlobalParameter4(const ServerSelector& server_selector,
const std::string& name) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER4)
- .arg(name);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_GLOBAL_PARAMETER4,
- server_selector, "deleting global parameter",
- "global parameter deleted", false, name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER4).arg(name);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_GLOBAL_PARAMETER4,
+ server_selector, "deleting global parameter",
+ "global parameter deleted", false, name);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER4_RESULT)
.arg(result);
return (result);
uint64_t
PgSqlConfigBackendDHCPv4::deleteAllGlobalParameters4(const ServerSelector& server_selector) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_GLOBAL_PARAMETERS4);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_GLOBAL_PARAMETERS4,
- server_selector, "deleting all global parameters",
- "all global parameters deleted", true);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv4Impl::DELETE_ALL_GLOBAL_PARAMETERS4,
+ server_selector, "deleting all global parameters",
+ "all global parameters deleted", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_GLOBAL_PARAMETERS4_RESULT)
.arg(result);
return (result);
uint64_t
PgSqlConfigBackendDHCPv4::deleteServer4(const ServerTag& server_tag) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER4)
- .arg(server_tag.get());
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER4).arg(server_tag.get());
uint64_t result = impl_->deleteServer4(server_tag);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER4_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER4_RESULT).arg(result);
return (result);
}
PgSqlConfigBackendDHCPv4::deleteAllServers4() {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS4);
uint64_t result = impl_->deleteAllServers4();
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS4_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS4_RESULT).arg(result);
return (result);
}
bool
PgSqlConfigBackendDHCPv4::registerBackendType() {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_REGISTER_BACKEND_TYPE4);
- return (
- dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory("pgsql",
- [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv4Ptr {
+ return (dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory(
+ "pgsql",
+ [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv4Ptr {
// Many virtual function still missing
return (dhcp::PgSqlConfigBackendDHCPv4Ptr(new dhcp::PgSqlConfigBackendDHCPv4(params)));
- })
- );
+ }));
}
void
void
PgSqlConfigBackendDHCPv4::createUpdateClientClass4(const db::ServerSelector& server_selector,
- const ClientClassDefPtr& client_class,
- const std::string& follow_class_name) {
+ const ClientClassDefPtr& client_class,
+ const std::string& follow_class_name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
}
ClientClassDictionary
-PgSqlConfigBackendDHCPv4::getModifiedClientClasses4(const db::ServerSelector& selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv4::getModifiedClientClasses4(
+ const db::ServerSelector& selector, const boost::posix_time::ptime& modification_time) const {
isc_throw(NotImplemented, "Not implemented yet.");
}
uint64_t
PgSqlConfigBackendDHCPv4::deleteClientClass4(const db::ServerSelector& server_selector,
- const std::string& name) {
+ const std::string& name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
isc_throw(NotImplemented, "Not implemented yet.");
}
-
-} // end of namespace isc::dhcp
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
#ifndef PGSQL_CONFIG_BACKEND_DHCP4_H
#define PGSQL_CONFIG_BACKEND_DHCP4_H
-#include <pgsql_cb_impl.h>
#include <database/database_connection.h>
#include <dhcpsrv/config_backend_dhcp4.h>
-#include <pgsql_cb_log.h>
+
#include <boost/shared_ptr.hpp>
+#include <pgsql_cb_impl.h>
+#include <pgsql_cb_log.h>
+
namespace isc {
namespace dhcp {
/// the methods throw @c isc::NotImplemented exception.
class PgSqlConfigBackendDHCPv4 : public ConfigBackendDHCPv4 {
public:
-
/// @brief Constructor.
///
/// @param parameters A data structure relating keywords and values
/// @param subnet_prefix Prefix of the subnet to be retrieved.
/// @return Pointer to the retrieved subnet or NULL if not found.
virtual Subnet4Ptr
- getSubnet4(const db::ServerSelector& server_selector,
- const std::string& subnet_prefix) const;
+ getSubnet4(const db::ServerSelector& server_selector, const std::string& subnet_prefix) const;
/// @brief Retrieves a single subnet by subnet identifier.
///
///
/// @param server_selector Server selector.
/// @return Collection of subnets or empty collection if no subnet found.
- virtual Subnet4Collection
- getAllSubnets4(const db::ServerSelector& server_selector) const;
+ virtual Subnet4Collection getAllSubnets4(const db::ServerSelector& server_selector) const;
/// @brief Retrieves subnets modified after specified time.
///
/// @return Pointer to the shared network or NULL if not found.
/// @throw NotImplemented if server selector is "unassigned".
virtual SharedNetwork4Ptr
- getSharedNetwork4(const db::ServerSelector& server_selector,
- const std::string& name) const;
+ getSharedNetwork4(const db::ServerSelector& server_selector, const std::string& name) const;
/// @brief Retrieves all shared networks.
///
/// @param space Option space of the option to be retrieved.
/// @return Pointer to the option definition or NULL if not found.
/// @throw NotImplemented if server selector is "unassigned".
- virtual OptionDefinitionPtr
- getOptionDef4(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space) const;
+ virtual OptionDefinitionPtr getOptionDef4(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space) const;
/// @brief Retrieves all option definitions.
///
/// @param server_selector Server selector.
/// @return Collection of option definitions or empty collection if
/// no option definition found.
- virtual OptionDefContainer
- getAllOptionDefs4(const db::ServerSelector& server_selector) const;
+ virtual OptionDefContainer getAllOptionDefs4(const db::ServerSelector& server_selector) const;
/// @brief Retrieves option definitions modified after specified time.
///
/// @return Pointer to the retrieved option descriptor or null if
/// no option was found.
/// @throw NotImplemented if server selector is "unassigned".
- virtual OptionDescriptorPtr
- getOption4(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space) const;
+ virtual OptionDescriptorPtr getOption4(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space) const;
/// @brief Retrieves all global options.
///
/// @param server_selector Server selector.
/// @return Collection of global options or empty collection if no
/// option found.
- virtual OptionContainer
- getAllOptions4(const db::ServerSelector& server_selector) const;
+ virtual OptionContainer getAllOptions4(const db::ServerSelector& server_selector) const;
/// @brief Retrieves option modified after specified time.
///
/// @return Value of the global parameter.
/// @throw NotImplemented if server selector is "unassigned".
virtual data::StampedValuePtr
- getGlobalParameter4(const db::ServerSelector& server_selector,
- const std::string& name) const;
+ getGlobalParameter4(const db::ServerSelector& server_selector, const std::string& name) const;
/// @brief Retrieves all global parameters.
///
/// 'all'.
///
/// @return Collection of servers from the backend.
- virtual db::ServerCollection
- getAllServers4() const;
+ virtual db::ServerCollection getAllServers4() const;
/// @brief Retrieves a server.
///
/// @param server_tag Tag of the server to be retrieved.
/// @return Pointer to the server instance or null pointer if no server
/// with the particular tag was found.
- virtual db::ServerPtr
- getServer4(const data::ServerTag& server_tag) const;
+ virtual db::ServerPtr getServer4(const data::ServerTag& server_tag) const;
/// @brief Creates or updates a subnet.
///
/// @param subnet Subnet to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
virtual void
- createUpdateSubnet4(const db::ServerSelector& server_selector,
- const Subnet4Ptr& subnet);
+ createUpdateSubnet4(const db::ServerSelector& server_selector, const Subnet4Ptr& subnet);
/// @brief Creates or updates a shared network.
///
/// @param server_selector Server selector.
/// @param shared_network Shared network to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateSharedNetwork4(const db::ServerSelector& server_selector,
- const SharedNetwork4Ptr& shared_network);
+ virtual void createUpdateSharedNetwork4(const db::ServerSelector& server_selector,
+ const SharedNetwork4Ptr& shared_network);
/// @brief Creates or updates an option definition.
///
/// @param server_selector Server selector.
/// @param option_def Option definition to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOptionDef4(const db::ServerSelector& server_selector,
- const OptionDefinitionPtr& option_def);
+ virtual void createUpdateOptionDef4(const db::ServerSelector& server_selector,
+ const OptionDefinitionPtr& option_def);
/// @brief Creates or updates global option.
///
/// @param server_selector Server selector.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption4(const db::ServerSelector& server_selector,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption4(const db::ServerSelector& server_selector,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates shared network level option.
///
/// belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption4(const db::ServerSelector& server_selector,
- const std::string& shared_network_name,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption4(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates subnet level option.
///
/// @param subnet_id Identifier of a subnet to which option belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption4(const db::ServerSelector& server_selector,
- const SubnetID& subnet_id,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption4(const db::ServerSelector& server_selector,
+ const SubnetID& subnet_id,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates pool level option.
///
/// option belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption4(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pool_start_address,
- const asiolink::IOAddress& pool_end_address,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption4(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pool_start_address,
+ const asiolink::IOAddress& pool_end_address,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates global parameter.
///
/// @param name Name of the global parameter.
/// @param value Value of the global parameter.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateGlobalParameter4(const db::ServerSelector& server_selector,
- const data::StampedValuePtr& value);
+ virtual void createUpdateGlobalParameter4(const db::ServerSelector& server_selector,
+ const data::StampedValuePtr& value);
/// @brief Creates or updates a server.
///
/// @param server Instance of the server to be stored.
/// @throw InvalidOperation when trying to create a duplicate or
/// update the logical server 'all'.
- virtual void
- createUpdateServer4(const db::ServerPtr& server);
+ virtual void createUpdateServer4(const db::ServerPtr& server);
/// @brief Creates or updates DHCPv4 client class.
///
/// new or updated class should be positioned. An empty value
/// causes the class to be appended at the end of the class
/// hierarchy.
- virtual void
- createUpdateClientClass4(const db::ServerSelector& server_selector,
- const ClientClassDefPtr& client_class,
- const std::string& follow_class_name);
+ virtual void createUpdateClientClass4(const db::ServerSelector& server_selector,
+ const ClientClassDefPtr& client_class,
+ const std::string& follow_class_name);
/// @brief Deletes subnet by prefix.
///
/// @return Number of deleted subnets.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteSubnet4(const db::ServerSelector& server_selector,
- const std::string& subnet_prefix);
+ deleteSubnet4(const db::ServerSelector& server_selector, const std::string& subnet_prefix);
/// @brief Deletes subnet by identifier.
///
/// @param server_selector Server selector.
/// @return Number of deleted subnets.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllSubnets4(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllSubnets4(const db::ServerSelector& server_selector);
/// @brief Deletes all subnets belonging to a specified shared network.
///
/// @param shared_network_name Name of the shared network for which the
/// subnets should be deleted.
/// @return Number of deleted subnets.
- virtual uint64_t
- deleteSharedNetworkSubnets4(const db::ServerSelector& server_selector,
- const std::string& shared_network_name);
+ virtual uint64_t deleteSharedNetworkSubnets4(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name);
/// @brief Deletes shared network by name.
///
/// @return Number of deleted shared networks.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteSharedNetwork4(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteSharedNetwork4(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all shared networks.
///
/// @param server_selector Server selector.
/// @return Number of deleted shared networks.
- virtual uint64_t
- deleteAllSharedNetworks4(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllSharedNetworks4(const db::ServerSelector& server_selector);
/// @brief Deletes option definition.
///
/// @param space Option space of the option to be deleted.
/// @return Number of deleted option definitions.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOptionDef4(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOptionDef4(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes all option definitions.
///
/// @param server_selector Server selector.
/// @return Number of deleted option definitions.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllOptionDefs4(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllOptionDefs4(const db::ServerSelector& server_selector);
/// @brief Deletes global option.
///
/// @param space Option space of the option to be deleted.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption4(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption4(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes shared network level option.
///
/// @param code Code of the deleted option.
/// @param space Option space of the deleted option.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption4(const db::ServerSelector& server_selector,
- const std::string& shared_network_name,
- const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption4(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes subnet level option.
///
/// @param space Option space of the deleted option.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption4(const db::ServerSelector& server_selector, const SubnetID& subnet_id,
- const uint16_t code, const std::string& space);
+ virtual uint64_t deleteOption4(const db::ServerSelector& server_selector,
+ const SubnetID& subnet_id,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes pool level option.
///
/// @param space Option space of the deleted option.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption4(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pool_start_address,
- const asiolink::IOAddress& pool_end_address,
- const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption4(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pool_start_address,
+ const asiolink::IOAddress& pool_end_address,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes global parameter.
///
/// @return Number of deleted global parameters.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteGlobalParameter4(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteGlobalParameter4(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all global parameters.
///
/// @param server_selector Server selector.
/// @return Number of deleted global parameters.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllGlobalParameters4(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllGlobalParameters4(const db::ServerSelector& server_selector);
/// @brief Retrieves a client class by name.
///
///
/// @param selector Server selector.
/// @return Collection of client classes.
- virtual ClientClassDictionary
- getAllClientClasses4(const db::ServerSelector& selector) const;
+ virtual ClientClassDictionary getAllClientClasses4(const db::ServerSelector& selector) const;
/// @brief Retrieves client classes modified after specified time.
///
/// @param name Name of the class to be deleted.
/// @return Number of deleted client classes.
virtual uint64_t
- deleteClientClass4(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteClientClass4(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all client classes.
///
/// @param server_selector Server selector.
/// @return Number of deleted client classes.
- virtual uint64_t
- deleteAllClientClasses4(const db::ServerSelector& server_selector);
-
+ virtual uint64_t deleteAllClientClasses4(const db::ServerSelector& server_selector);
/// @brief Deletes a server from the backend.
///
/// @return Number of deleted servers.
/// @throw isc::InvalidOperation when trying to delete the logical
/// server 'all'.
- virtual uint64_t
- deleteServer4(const data::ServerTag& server_tag);
+ virtual uint64_t deleteServer4(const data::ServerTag& server_tag);
/// @brief Deletes all servers from the backend except the logical
/// server 'all'.
///
/// @return Number of deleted servers.
- virtual uint64_t
- deleteAllServers4();
+ virtual uint64_t deleteAllServers4();
/// @brief Returns backend type in the textual format.
///
/// otherwise
virtual bool isUnusable();
-
-
protected:
-
/// @brief Pointer to the implementation of the @c PgSqlConfigBackendDHCPv4
/// class.
boost::shared_ptr<PgSqlConfigBackendDHCPv4Impl> impl_;
/// @brief Pointer to the @c PgSqlConfigBackendDHCPv4 class.
typedef boost::shared_ptr<PgSqlConfigBackendDHCPv4> PgSqlConfigBackendDHCPv4Ptr;
-} // end of namespace isc::cb
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
-#endif // PGSQL_CONFIG_BACKEND_DHCP4_H
+#endif // PGSQL_CONFIG_BACKEND_DHCP4_H
#include <config.h>
-#include <pgsql_cb_dhcp6.h>
-#include <pgsql_cb_impl.h>
-#include <pgsql_macros.h>
#include <asiolink/addr_utilities.h>
#include <cc/data.h>
#include <config_backend/constants.h>
#include <dhcp/option_space.h>
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/config_backend_dhcp6_mgr.h>
+#include <dhcpsrv/lease.h>
#include <dhcpsrv/network.h>
#include <dhcpsrv/pool.h>
-#include <dhcpsrv/lease.h>
#include <dhcpsrv/timer_mgr.h>
-#include <util/buffer.h>
-#include <util/boost_time_utils.h>
#include <pgsql/pgsql_connection.h>
+#include <util/boost_time_utils.h>
+#include <util/buffer.h>
+
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/pointer_cast.hpp>
#include <boost/scoped_ptr.hpp>
+
#include <array>
+#include <pgsql_cb_dhcp6.h>
+#include <pgsql_cb_impl.h>
+#include <pgsql_macros.h>
#include <sstream>
#include <utility>
#include <vector>
/// @brief Implementation of the Postgres Configuration Backend.
class PgSqlConfigBackendDHCPv6Impl : public PgSqlConfigBackendImpl {
public:
-
/// @brief Statement tags.
///
/// The contents of the enum are indexes into the list of SQL statements.
///
/// @param parameters A data structure relating keywords and values
/// concerned with the database.
- explicit PgSqlConfigBackendDHCPv6Impl(const DatabaseConnection::ParameterMap&
- parameters);
+ explicit PgSqlConfigBackendDHCPv6Impl(const DatabaseConnection::ParameterMap& parameters);
/// @brief Destructor.
~PgSqlConfigBackendDHCPv6Impl();
///
/// @return Pointer to the retrieved value or null if such parameter
/// doesn't exist.
- StampedValuePtr getGlobalParameter6(const ServerSelector& server_selector,
- const std::string& name) {
+ StampedValuePtr
+ getGlobalParameter6(const ServerSelector& server_selector, const std::string& name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
///
/// @return Pointer to the returned subnet or NULL if such subnet
/// doesn't exist.
- Subnet6Ptr getSubnet6(const ServerSelector& server_selector,
- const SubnetID& subnet_id) {
+ Subnet6Ptr getSubnet6(const ServerSelector& server_selector, const SubnetID& subnet_id) {
isc_throw(NotImplemented, "Not implemented yet.");
}
///
/// @return Pointer to the returned subnet or NULL if such subnet
/// doesn't exist.
- Subnet6Ptr getSubnet6(const ServerSelector& server_selector,
- const std::string& subnet_prefix) {
+ Subnet6Ptr getSubnet6(const ServerSelector& server_selector, const std::string& subnet_prefix) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @param server_selector Server selector.
/// @param [out] subnets Reference to the subnet collection structure where
/// subnets should be inserted.
- void getAllSubnets6(const ServerSelector& server_selector,
- Subnet6Collection& subnets) {
+ void getAllSubnets6(const ServerSelector& server_selector, Subnet6Collection& subnets) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// will be inserted.
/// @param [out] pool_ids Identifiers of the pools returned in @c pools
/// argument.
- /// @todo: add void getPools(const StatementIndex& index, const MySqlBindingCollection& in_bindings,
- /// PoolCollection& pools, std::vector<uint64_t>& pool_ids) {
+ /// @todo: add void getPools(const StatementIndex& index, const MySqlBindingCollection&
+ /// in_bindings, PoolCollection& pools, std::vector<uint64_t>& pool_ids) {
/// @brief Sends query to retrieve multiple pd pools.
///
/// will be inserted.
/// @param [out] pd_pool_ids Identifiers of the pd pools returned in
/// @c pd_pools argument.
- /// @todo add: void getPdPools(const StatementIndex& index, const MySqlBindingCollection& in_bindings,
+ /// @todo add: void getPdPools(const StatementIndex& index, const MySqlBindingCollection&
+ /// in_bindings,
/// PoolCollection& pd_pools, std::vector<uint64_t>& pd_pool_ids) {
/// @brief Sends query to retrieve single pool by address range.
///
/// @param server_selector Server selector.
/// @param subnet Pointer to the subnet to be inserted or updated.
- void createUpdateSubnet6(const ServerSelector& server_selector,
- const Subnet6Ptr& subnet) {
+ void createUpdateSubnet6(const ServerSelector& server_selector, const Subnet6Ptr& subnet) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @param server_selector Server selector.
/// @param pool Pointer to the pool to be inserted.
/// @param subnet Pointer to the subnet that this pool belongs to.
- void createPool6(const ServerSelector& server_selector, const Pool6Ptr& pool,
+ void createPool6(const ServerSelector& server_selector,
+ const Pool6Ptr& pool,
const Subnet6Ptr& subnet) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @c deleteFromTable methods.
///
/// @return Number of deleted entries.
- template<typename... Args>
+ template <typename... Args>
uint64_t deleteTransactional(const int index,
const db::ServerSelector& server_selector,
const std::string& operation,
/// @param server_selector Server selector.
/// @param subnet_id Identifier of the subnet to be deleted.
/// @return Number of deleted subnets.
- uint64_t deleteSubnet6(const ServerSelector& server_selector,
- const SubnetID& subnet_id) {
+ uint64_t deleteSubnet6(const ServerSelector& server_selector, const SubnetID& subnet_id) {
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_ID_ANY :
- PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_ID_WITH_TAG);
- return (deleteTransactional(index, server_selector,
- "deleting a subnet", "subnet deleted",
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_ID_ANY :
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_ID_WITH_TAG);
+ return (deleteTransactional(index, server_selector, "deleting a subnet", "subnet deleted",
true, static_cast<uint32_t>(subnet_id)));
}
/// @param server_selector Server selector.
/// @param subnet_prefix Prefix of the subnet to be deleted.
/// @return Number of deleted subnets.
- uint64_t deleteSubnet6(const ServerSelector& server_selector,
- const std::string& subnet_prefix) {
+ uint64_t
+ deleteSubnet6(const ServerSelector& server_selector, const std::string& subnet_prefix) {
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_PREFIX_ANY :
- PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_PREFIX_WITH_TAG);
- return (deleteTransactional(index, server_selector,
- "deleting a subnet", "subnet deleted",
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_PREFIX_ANY :
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SUBNET6_PREFIX_WITH_TAG);
+ return (deleteTransactional(index, server_selector, "deleting a subnet", "subnet deleted",
true, subnet_prefix));
}
/// @param [out] shared_networks Reference to the container where fetched
/// shared networks will be inserted.
/// @todo: implement void getSharedNetworks6(const StatementIndex& index,
-/// const ServerSelector& server_selector,
-/// const MySqlBindingCollection& in_bindings,
- ///SharedNetwork6Collection& shared_networks) {
+ /// const ServerSelector& server_selector,
+ /// const MySqlBindingCollection& in_bindings,
+ /// SharedNetwork6Collection& shared_networks) {
/// @brief Sends query to retrieve single shared network by name.
///
///
/// @return Pointer to the returned shared network or NULL if such shared
/// network doesn't exist.
- SharedNetwork6Ptr getSharedNetwork6(const ServerSelector& server_selector,
- const std::string& name) {
+ SharedNetwork6Ptr
+ getSharedNetwork6(const ServerSelector& server_selector, const std::string& name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
isc_throw(NotImplemented, "Not implemented yet.");
}
-
/// @brief Sends query to insert DHCP option.
///
/// This method expects that the server selector contains exactly one
///
/// @param server_selector Server selector.
/// @param option Pointer to the option descriptor encapsulating the option.
- void createUpdateOption6(const ServerSelector& server_selector,
- const OptionDescriptorPtr& option) {
+ void
+ createUpdateOption6(const ServerSelector& server_selector, const OptionDescriptorPtr& option) {
isc_throw(NotImplemented, "Not implemented yet.");
}
const IOAddress& pool_end_address,
const OptionDescriptorPtr& option) {
uint64_t pool_id = 0;
- Pool6Ptr pool = getPool6(server_selector, pool_start_address, pool_end_address,
- pool_id);
+ Pool6Ptr pool = getPool6(server_selector, pool_start_address, pool_end_address, pool_id);
if (!pool) {
- isc_throw(BadValue, "no pool found for range of "
- << pool_start_address << " : "
- << pool_end_address);
+ isc_throw(BadValue, "no pool found for range of " << pool_start_address << " : "
+ << pool_end_address);
}
- createUpdateOption6(server_selector, Lease::TYPE_NA,
- pool_id, option, false);
+ createUpdateOption6(server_selector, Lease::TYPE_NA, pool_id, option, false);
}
-
/// @brief Sends query to insert or update DHCP option in a pd pool.
///
/// @param server_selector Server selector.
const uint8_t pd_pool_prefix_length,
const OptionDescriptorPtr& option) {
uint64_t pd_pool_id = 0;
- Pool6Ptr pd_pool = getPdPool6(server_selector,
- pd_pool_prefix,
- pd_pool_prefix_length,
+ Pool6Ptr pd_pool = getPdPool6(server_selector, pd_pool_prefix, pd_pool_prefix_length,
pd_pool_id);
if (!pd_pool) {
isc_throw(BadValue, "no prefix delegation pool found for prefix "
- << "of " << pd_pool_prefix << "/"
- << static_cast<unsigned>(pd_pool_prefix_length));
+ << "of " << pd_pool_prefix << "/"
+ << static_cast<unsigned>(pd_pool_prefix_length));
}
- createUpdateOption6(server_selector, Lease::TYPE_PD,
- pd_pool_id, option, false);
+ createUpdateOption6(server_selector, Lease::TYPE_PD, pd_pool_id, option, false);
}
-
/// @brief Sends query to insert or update DHCP option in an address
/// or prefix delegation pool.
///
/// @param subnet Pointer to the subnet for which options should be
/// deleted.
/// @return Number of deleted options.
- uint64_t deleteOptions6(const ServerSelector& server_selector,
- const Subnet6Ptr& subnet) {
+ uint64_t deleteOptions6(const ServerSelector& server_selector, const Subnet6Ptr& subnet) {
isc_throw(NotImplemented, "Not implemented yet.");
}
/// @param subnet Pointer to the subnet for which options should be
/// deleted.
/// @return Number of deleted options.
- uint64_t deleteOptions6(const ServerSelector& server_selector,
- const SharedNetwork6Ptr& shared_network) {
+ uint64_t
+ deleteOptions6(const ServerSelector& server_selector, const SharedNetwork6Ptr& shared_network) {
isc_throw(NotImplemented, "Not implemented yet.");
}
for (auto db : config_ctl->getConfigDatabases()) {
const std::string& access = db.getAccessString();
auto parameters = db.getParameters();
- if (ConfigBackendDHCPv6Mgr::instance().delBackend(parameters["type"], access, true)) {
+ if (ConfigBackendDHCPv6Mgr::instance().delBackend(parameters["type"], access,
+ true)) {
ConfigBackendDHCPv6Mgr::instance().addBackend(db.getAccessString());
}
}
reopened = true;
} catch (const std::exception& ex) {
- LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_FAILED6)
- .arg(ex.what());
+ LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_FAILED6).arg(ex.what());
}
if (reopened) {
if (!db_reconnect_ctl->checkRetries()) {
// We're out of retries, log it and initiate shutdown.
LOG_ERROR(pgsql_cb_logger, PGSQL_CB_RECONNECT_FAILED6)
- .arg(db_reconnect_ctl->maxRetries());
+ .arg(db_reconnect_ctl->maxRetries());
// Cancel the timer.
if (TimerMgr::instance()->isTimerRegistered(timer_name)) {
}
LOG_INFO(pgsql_cb_logger, PGSQL_CB_RECONNECT_ATTEMPT_SCHEDULE6)
- .arg(db_reconnect_ctl->maxRetries() - db_reconnect_ctl->retriesLeft() + 1)
- .arg(db_reconnect_ctl->maxRetries())
- .arg(db_reconnect_ctl->retryInterval());
+ .arg(db_reconnect_ctl->maxRetries() - db_reconnect_ctl->retriesLeft() + 1)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->retryInterval());
// Start the timer.
if (!TimerMgr::instance()->isTimerRegistered(timer_name)) {
- TimerMgr::instance()->registerTimer(timer_name,
+ TimerMgr::instance()->registerTimer(
+ timer_name,
std::bind(&PgSqlConfigBackendDHCPv6Impl::dbReconnect, db_reconnect_ctl),
- db_reconnect_ctl->retryInterval(),
- asiolink::IntervalTimer::ONE_SHOT);
+ db_reconnect_ctl->retryInterval(), asiolink::IntervalTimer::ONE_SHOT);
}
TimerMgr::instance()->setup(timer_name);
}
return (true);
}
-
};
namespace {
/// @brief Array of tagged statements.
typedef std::array<PgSqlTaggedStatement, PgSqlConfigBackendDHCPv6Impl::NUM_STATEMENTS>
-PgSqlTaggedStatementArray;
+ PgSqlTaggedStatementArray;
/// @brief Prepared Postgres statements used by the backend to insert and
/// retrieve data from the database.
};
#endif
-}; // end anonymous namespace
+}; // end anonymous namespace
-PgSqlConfigBackendDHCPv6Impl::PgSqlConfigBackendDHCPv6Impl(const DatabaseConnection::ParameterMap& parameters)
+PgSqlConfigBackendDHCPv6Impl::PgSqlConfigBackendDHCPv6Impl(
+ const DatabaseConnection::ParameterMap& parameters)
: PgSqlConfigBackendImpl(parameters, &PgSqlConfigBackendDHCPv6Impl::dbReconnect) {
// Prepare query statements. Those are will be only used to retrieve
// information from the database, so they can be used even if the
// database is read only for the current user.
- conn_.prepareStatements(tagged_statements.begin(),
- tagged_statements.end());
-// tagged_statements.begin() + WRITE_STMTS_BEGIN);
+ conn_.prepareStatements(tagged_statements.begin(), tagged_statements.end());
+ // tagged_statements.begin() + WRITE_STMTS_BEGIN);
// Create unique timer name per instance.
timer_name_ = "PgSqlConfigBackend6[";
PgSqlConfigBackendDHCPv6Impl::~PgSqlConfigBackendDHCPv6Impl() {
}
-PgSqlConfigBackendDHCPv6::PgSqlConfigBackendDHCPv6(const DatabaseConnection::ParameterMap& parameters)
+PgSqlConfigBackendDHCPv6::PgSqlConfigBackendDHCPv6(
+ const DatabaseConnection::ParameterMap& parameters)
: impl_(new PgSqlConfigBackendDHCPv6Impl(parameters)), base_impl_(impl_) {
}
Subnet6Ptr
PgSqlConfigBackendDHCPv6::getSubnet6(const ServerSelector& server_selector,
const SubnetID& subnet_id) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SUBNET6_BY_SUBNET_ID)
- .arg(subnet_id);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SUBNET6_BY_SUBNET_ID).arg(subnet_id);
return (impl_->getSubnet6(server_selector, subnet_id));
}
}
Subnet6Collection
-PgSqlConfigBackendDHCPv6::getModifiedSubnets6(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedSubnets6(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_SUBNETS6)
.arg(util::ptimeToText(modification_time));
Subnet6Collection subnets;
SharedNetwork6Ptr
PgSqlConfigBackendDHCPv6::getSharedNetwork6(const ServerSelector& server_selector,
const std::string& name) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SHARED_NETWORK6)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SHARED_NETWORK6).arg(name);
return (impl_->getSharedNetwork6(server_selector, name));
}
}
SharedNetwork6Collection
-PgSqlConfigBackendDHCPv6::getModifiedSharedNetworks6(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedSharedNetworks6(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_SHARED_NETWORKS6)
.arg(util::ptimeToText(modification_time));
SharedNetwork6Collection shared_networks;
PgSqlConfigBackendDHCPv6::getOptionDef6(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION_DEF6)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION_DEF6).arg(code).arg(space);
return (impl_->getOptionDef(PgSqlConfigBackendDHCPv6Impl::GET_OPTION_DEF6_CODE_SPACE,
server_selector, code, space));
}
PgSqlConfigBackendDHCPv6::getAllOptionDefs6(const ServerSelector& server_selector) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTION_DEFS6);
OptionDefContainer option_defs;
- impl_->getAllOptionDefs(PgSqlConfigBackendDHCPv6Impl::GET_ALL_OPTION_DEFS6,
- server_selector, option_defs);
+ impl_->getAllOptionDefs(PgSqlConfigBackendDHCPv6Impl::GET_ALL_OPTION_DEFS6, server_selector,
+ option_defs);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTION_DEFS6_RESULT)
.arg(option_defs.size());
return (option_defs);
}
OptionDefContainer
-PgSqlConfigBackendDHCPv6::getModifiedOptionDefs6(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedOptionDefs6(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTION_DEFS6)
.arg(util::ptimeToText(modification_time));
OptionDefContainer option_defs;
PgSqlConfigBackendDHCPv6::getOption6(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION6)
- .arg(code).arg(space);
- return (impl_->getOption(PgSqlConfigBackendDHCPv6Impl::GET_OPTION6_CODE_SPACE,
- Option::V6, server_selector, code, space));
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_OPTION6).arg(code).arg(space);
+ return (impl_->getOption(PgSqlConfigBackendDHCPv6Impl::GET_OPTION6_CODE_SPACE, Option::V6,
+ server_selector, code, space));
}
OptionContainer
PgSqlConfigBackendDHCPv6::getAllOptions6(const ServerSelector& server_selector) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTIONS6);
OptionContainer options = impl_->getAllOptions(PgSqlConfigBackendDHCPv6Impl::GET_ALL_OPTIONS6,
- Option::V6, server_selector);
+ Option::V6, server_selector);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_OPTIONS6_RESULT)
.arg(options.size());
return (options);
}
OptionContainer
-PgSqlConfigBackendDHCPv6::getModifiedOptions6(const ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedOptions6(
+ const ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTIONS6)
.arg(util::ptimeToText(modification_time));
- OptionContainer options = impl_->getModifiedOptions(PgSqlConfigBackendDHCPv6Impl::GET_MODIFIED_OPTIONS6,
- Option::V6, server_selector, modification_time);
+ OptionContainer options =
+ impl_->getModifiedOptions(PgSqlConfigBackendDHCPv6Impl::GET_MODIFIED_OPTIONS6, Option::V6,
+ server_selector, modification_time);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_MODIFIED_OPTIONS6_RESULT)
.arg(options.size());
return (options);
StampedValuePtr
PgSqlConfigBackendDHCPv6::getGlobalParameter6(const ServerSelector& server_selector,
const std::string& name) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_GLOBAL_PARAMETER6)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_GLOBAL_PARAMETER6).arg(name);
return (impl_->getGlobalParameter6(server_selector, name));
}
}
StampedValueCollection
-PgSqlConfigBackendDHCPv6::getModifiedGlobalParameters6(const db::ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedGlobalParameters6(
+ const db::ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time) const {
isc_throw(NotImplemented, "Not implemented yet.");
}
AuditEntryCollection
PgSqlConfigBackendDHCPv6::getRecentAuditEntries(const db::ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time,
- const uint64_t& modification_id) const {
+ const boost::posix_time::ptime& modification_time,
+ const uint64_t& modification_id) const {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_RECENT_AUDIT_ENTRIES6)
- .arg(util::ptimeToText(modification_time))
- .arg(modification_id);
+ .arg(util::ptimeToText(modification_time))
+ .arg(modification_id);
AuditEntryCollection audit_entries;
impl_->getRecentAuditEntries(PgSqlConfigBackendDHCPv6Impl::GET_AUDIT_ENTRIES6_TIME,
- server_selector, modification_time,
- modification_id, audit_entries);
+ server_selector, modification_time, modification_id,
+ audit_entries);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_RECENT_AUDIT_ENTRIES6_RESULT)
.arg(audit_entries.size());
return (audit_entries);
ServerCollection servers;
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_SERVERS6);
- impl_->getAllServers(PgSqlConfigBackendDHCPv6Impl::GET_ALL_SERVERS6,
- servers);
+ impl_->getAllServers(PgSqlConfigBackendDHCPv6Impl::GET_ALL_SERVERS6, servers);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_ALL_SERVERS6_RESULT)
.arg(servers.size());
ServerPtr
PgSqlConfigBackendDHCPv6::getServer6(const data::ServerTag& server_tag) const {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SERVER6)
- .arg(server_tag.get());
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_GET_SERVER6).arg(server_tag.get());
return (impl_->getServer(PgSqlConfigBackendDHCPv6Impl::GET_SERVER6, server_tag));
}
void
PgSqlConfigBackendDHCPv6::createUpdateSubnet6(const ServerSelector& server_selector,
const Subnet6Ptr& subnet) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_SUBNET6)
- .arg(subnet);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_SUBNET6).arg(subnet);
impl_->createUpdateSubnet6(server_selector, subnet);
}
PgSqlConfigBackendDHCPv6::createUpdateOptionDef6(const ServerSelector& server_selector,
const OptionDefinitionPtr& option_def) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_OPTION_DEF6)
- .arg(option_def->getName()).arg(option_def->getCode());
+ .arg(option_def->getName())
+ .arg(option_def->getCode());
impl_->createUpdateOptionDef6(server_selector, option_def);
}
const asiolink::IOAddress& pool_end_address,
const OptionDescriptorPtr& option) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_BY_POOL_OPTION6)
- .arg(pool_start_address.toText()).arg(pool_end_address.toText());
- impl_->createUpdateOption6(server_selector, pool_start_address, pool_end_address,
- option);
+ .arg(pool_start_address.toText())
+ .arg(pool_end_address.toText());
+ impl_->createUpdateOption6(server_selector, pool_start_address, pool_end_address, option);
}
void
const uint8_t pd_pool_prefix_length,
const OptionDescriptorPtr& option) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_CREATE_UPDATE_BY_PREFIX_OPTION6)
- .arg(pd_pool_prefix.toText()).arg(pd_pool_prefix_length);
- impl_->createUpdateOption6(server_selector, pd_pool_prefix,
- pd_pool_prefix_length, option);
+ .arg(pd_pool_prefix.toText())
+ .arg(pd_pool_prefix_length);
+ impl_->createUpdateOption6(server_selector, pd_pool_prefix, pd_pool_prefix_length, option);
}
void
.arg(server->getServerTagAsText());
impl_->createUpdateServer(PgSqlConfigBackendDHCPv6Impl::CREATE_AUDIT_REVISION,
PgSqlConfigBackendDHCPv6Impl::INSERT_SERVER6,
- PgSqlConfigBackendDHCPv6Impl::UPDATE_SERVER6,
- server);
+ PgSqlConfigBackendDHCPv6Impl::UPDATE_SERVER6, server);
}
uint64_t
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS6);
int index = (server_selector.amUnassigned() ?
- PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6_UNASSIGNED :
- PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6);
+ PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6_UNASSIGNED :
+ PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6);
uint64_t result = impl_->deleteTransactional(index, server_selector, "deleting all subnets",
"deleted all subnets", true);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS6_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SUBNETS6_RESULT).arg(result);
return (result);
}
const std::string& shared_network_name) {
if (!server_selector.amAny()) {
isc_throw(InvalidOperation, "deleting all subnets from a shared "
- "network requires using ANY server selector");
+ "network requires using ANY server selector");
}
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_SUBNETS6)
.arg(shared_network_name);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6_SHARED_NETWORK_NAME,
- server_selector,
- "deleting all subnets for a shared network",
- "deleted all subnets for a shared network",
- true, shared_network_name);
+ uint64_t result = impl_->deleteTransactional(
+ PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SUBNETS6_SHARED_NETWORK_NAME, server_selector,
+ "deleting all subnets for a shared network", "deleted all subnets for a shared network",
+ true, shared_network_name);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_SUBNETS6_RESULT)
.arg(result);
return (result);
uint64_t
PgSqlConfigBackendDHCPv6::deleteSharedNetwork6(const ServerSelector& server_selector,
const std::string& name) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK6)
- .arg(name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK6).arg(name);
int index = (server_selector.amAny() ?
- PgSqlConfigBackendDHCPv6Impl::DELETE_SHARED_NETWORK6_NAME_ANY :
- PgSqlConfigBackendDHCPv6Impl::DELETE_SHARED_NETWORK6_NAME_WITH_TAG);
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SHARED_NETWORK6_NAME_ANY :
+ PgSqlConfigBackendDHCPv6Impl::DELETE_SHARED_NETWORK6_NAME_WITH_TAG);
uint64_t result = impl_->deleteTransactional(index, server_selector,
"deleting a shared network",
"shared network deleted", true, name);
PgSqlConfigBackendDHCPv6::deleteAllSharedNetworks6(const ServerSelector& server_selector) {
if (server_selector.amAny()) {
isc_throw(InvalidOperation, "deleting all shared networks for ANY server is not"
- " supported");
+ " supported");
}
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SHARED_NETWORKS6);
int index = (server_selector.amUnassigned() ?
- PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SHARED_NETWORKS6_UNASSIGNED :
- PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SHARED_NETWORKS6);
- uint64_t result = impl_->deleteTransactional(index,
- server_selector, "deleting all shared networks",
+ PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SHARED_NETWORKS6_UNASSIGNED :
+ PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_SHARED_NETWORKS6);
+ uint64_t result = impl_->deleteTransactional(index, server_selector,
+ "deleting all shared networks",
"deleted all shared networks", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SHARED_NETWORKS6_RESULT)
.arg(result);
PgSqlConfigBackendDHCPv6::deleteOptionDef6(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF6)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF6).arg(code).arg(space);
uint64_t result = impl_->deleteOptionDef6(server_selector, code, space);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF6_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION_DEF6_RESULT).arg(result);
return (result);
}
uint64_t
PgSqlConfigBackendDHCPv6::deleteAllOptionDefs6(const ServerSelector& server_selector) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_OPTION_DEFS6);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_OPTION_DEFS6,
- server_selector, "deleting all option definitions",
- "deleted all option definitions", true);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_OPTION_DEFS6,
+ server_selector, "deleting all option definitions",
+ "deleted all option definitions", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_OPTION_DEFS6_RESULT)
.arg(result);
return (result);
PgSqlConfigBackendDHCPv6::deleteOption6(const ServerSelector& server_selector,
const uint16_t code,
const std::string& space) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION6)
- .arg(code).arg(space);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION6).arg(code).arg(space);
uint64_t result = impl_->deleteOption6(server_selector, code, space);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION6_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_OPTION6_RESULT).arg(result);
return (result);
}
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_OPTION6)
- .arg(shared_network_name).arg(code).arg(space);
- uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), shared_network_name,
- code, space);
+ .arg(shared_network_name)
+ .arg(code)
+ .arg(space);
+ uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), shared_network_name, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SHARED_NETWORK_OPTION6_RESULT)
.arg(result);
return (result);
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_SUBNET_ID_OPTION6)
- .arg(subnet_id).arg(code).arg(space);
+ .arg(subnet_id)
+ .arg(code)
+ .arg(space);
uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), subnet_id, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_SUBNET_ID_OPTION6_RESULT)
.arg(result);
/// option is only deleted if the pool belongs to a given server. For now, we
/// just delete it when there is a match with the parent object.
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_OPTION6)
- .arg(pool_start_address.toText()).arg(pool_end_address.toText()).arg(code).arg(space);
- uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), pool_start_address, pool_end_address,
- code, space);
+ .arg(pool_start_address.toText())
+ .arg(pool_end_address.toText())
+ .arg(code)
+ .arg(space);
+ uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), pool_start_address,
+ pool_end_address, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_OPTION6_RESULT)
.arg(result);
return (result);
const uint16_t code,
const std::string& space) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_PREFIX_OPTION6)
- .arg(pd_pool_prefix.toText()).arg(pd_pool_prefix_length).arg(code).arg(space);
+ .arg(pd_pool_prefix.toText())
+ .arg(pd_pool_prefix_length)
+ .arg(code)
+ .arg(space);
uint64_t result = impl_->deleteOption6(ServerSelector::ANY(), pd_pool_prefix,
pd_pool_prefix_length, code, space);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_BY_POOL_PREFIX_OPTION6_RESULT)
uint64_t
PgSqlConfigBackendDHCPv6::deleteGlobalParameter6(const ServerSelector& server_selector,
const std::string& name) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER6)
- .arg(name);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_GLOBAL_PARAMETER6,
- server_selector, "deleting global parameter",
- "global parameter deleted", false, name);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER6).arg(name);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_GLOBAL_PARAMETER6,
+ server_selector, "deleting global parameter",
+ "global parameter deleted", false, name);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_GLOBAL_PARAMETER6_RESULT)
.arg(result);
return (result);
uint64_t
PgSqlConfigBackendDHCPv6::deleteAllGlobalParameters6(const ServerSelector& server_selector) {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_GLOBAL_PARAMETERS6);
- uint64_t result = impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_GLOBAL_PARAMETERS6,
- server_selector, "deleting all global parameters",
- "all global parameters deleted", true);
+ uint64_t result =
+ impl_->deleteTransactional(PgSqlConfigBackendDHCPv6Impl::DELETE_ALL_GLOBAL_PARAMETERS6,
+ server_selector, "deleting all global parameters",
+ "all global parameters deleted", true);
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_GLOBAL_PARAMETERS6_RESULT)
.arg(result);
return (result);
uint64_t
PgSqlConfigBackendDHCPv6::deleteServer6(const ServerTag& server_tag) {
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER6)
- .arg(server_tag.get());
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER6).arg(server_tag.get());
uint64_t result = impl_->deleteServer6(server_tag);
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER6_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_SERVER6_RESULT).arg(result);
return (result);
}
PgSqlConfigBackendDHCPv6::deleteAllServers6() {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS6);
uint64_t result = impl_->deleteAllServers6();
- LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS6_RESULT)
- .arg(result);
+ LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_DELETE_ALL_SERVERS6_RESULT).arg(result);
return (result);
}
bool
PgSqlConfigBackendDHCPv6::registerBackendType() {
LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_REGISTER_BACKEND_TYPE6);
- return (
- dhcp::ConfigBackendDHCPv6Mgr::instance().registerBackendFactory("pgsql",
- [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv6Ptr {
+ return (dhcp::ConfigBackendDHCPv6Mgr::instance().registerBackendFactory(
+ "pgsql",
+ [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv6Ptr {
return (dhcp::PgSqlConfigBackendDHCPv6Ptr(new dhcp::PgSqlConfigBackendDHCPv6(params)));
- })
- );
+ }));
}
void
void
PgSqlConfigBackendDHCPv6::createUpdateClientClass6(const db::ServerSelector& server_selector,
- const ClientClassDefPtr& client_class,
- const std::string& follow_class_name) {
+ const ClientClassDefPtr& client_class,
+ const std::string& follow_class_name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
}
ClientClassDictionary
-PgSqlConfigBackendDHCPv6::getModifiedClientClasses6(const db::ServerSelector& selector,
- const boost::posix_time::ptime& modification_time) const {
+PgSqlConfigBackendDHCPv6::getModifiedClientClasses6(
+ const db::ServerSelector& selector, const boost::posix_time::ptime& modification_time) const {
isc_throw(NotImplemented, "Not implemented yet.");
}
uint64_t
PgSqlConfigBackendDHCPv6::deleteClientClass6(const db::ServerSelector& server_selector,
- const std::string& name) {
+ const std::string& name) {
isc_throw(NotImplemented, "Not implemented yet.");
}
isc_throw(NotImplemented, "Not implemented yet.");
}
-
-} // end of namespace isc::dhcp
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
#ifndef PGSQL_CONFIG_BACKEND_DHCP6_H
#define PGSQL_CONFIG_BACKEND_DHCP6_H
-#include <pgsql_cb_impl.h>
#include <database/database_connection.h>
#include <dhcpsrv/config_backend_dhcp6.h>
-#include <pgsql_cb_log.h>
+
#include <boost/shared_ptr.hpp>
+#include <pgsql_cb_impl.h>
+#include <pgsql_cb_log.h>
+
namespace isc {
namespace dhcp {
/// the methods throw @c isc::NotImplemented exception.
class PgSqlConfigBackendDHCPv6 : public ConfigBackendDHCPv6 {
public:
-
/// @brief Constructor.
///
/// @param parameters A data structure relating keywords and values
/// @param subnet_prefix Prefix of the subnet to be retrieved.
/// @return Pointer to the retrieved subnet or NULL if not found.
virtual Subnet6Ptr
- getSubnet6(const db::ServerSelector& server_selector,
- const std::string& subnet_prefix) const;
+ getSubnet6(const db::ServerSelector& server_selector, const std::string& subnet_prefix) const;
/// @brief Retrieves a single subnet by subnet identifier.
///
///
/// @param server_selector Server selector.
/// @return Collection of subnets or empty collection if no subnet found.
- virtual Subnet6Collection
- getAllSubnets6(const db::ServerSelector& server_selector) const;
+ virtual Subnet6Collection getAllSubnets6(const db::ServerSelector& server_selector) const;
/// @brief Retrieves subnets modified after specified time.
///
/// @return Pointer to the shared network or NULL if not found.
/// @throw NotImplemented if server selector is "unassigned".
virtual SharedNetwork6Ptr
- getSharedNetwork6(const db::ServerSelector& server_selector,
- const std::string& name) const;
+ getSharedNetwork6(const db::ServerSelector& server_selector, const std::string& name) const;
/// @brief Retrieves all shared networks.
///
/// @param space Option space of the option to be retrieved.
/// @return Pointer to the option definition or NULL if not found.
/// @throw NotImplemented if server selector is "unassigned".
- virtual OptionDefinitionPtr
- getOptionDef6(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space) const;
+ virtual OptionDefinitionPtr getOptionDef6(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space) const;
/// @brief Retrieves all option definitions.
///
/// @param server_selector Server selector.
/// @return Collection of option definitions or empty collection if
/// no option definition found.
- virtual OptionDefContainer
- getAllOptionDefs6(const db::ServerSelector& server_selector) const;
+ virtual OptionDefContainer getAllOptionDefs6(const db::ServerSelector& server_selector) const;
/// @brief Retrieves option definitions modified after specified time.
///
/// @return Pointer to the retrieved option descriptor or null if
/// no option was found.
/// @throw NotImplemented if server selector is "unassigned".
- virtual OptionDescriptorPtr
- getOption6(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space) const;
+ virtual OptionDescriptorPtr getOption6(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space) const;
/// @brief Retrieves all global options.
///
/// @param server_selector Server selector.
/// @return Collection of global options or empty collection if no
/// option found.
- virtual OptionContainer
- getAllOptions6(const db::ServerSelector& server_selector) const;
+ virtual OptionContainer getAllOptions6(const db::ServerSelector& server_selector) const;
/// @brief Retrieves option modified after specified time.
///
/// @return Value of the global parameter.
/// @throw NotImplemented if server selector is "unassigned".
virtual data::StampedValuePtr
- getGlobalParameter6(const db::ServerSelector& server_selector,
- const std::string& name) const;
+ getGlobalParameter6(const db::ServerSelector& server_selector, const std::string& name) const;
/// @brief Retrieves all global parameters.
///
///
/// @param selector Server selector.
/// @return Collection of client classes.
- virtual ClientClassDictionary
- getAllClientClasses6(const db::ServerSelector& selector) const;
+ virtual ClientClassDictionary getAllClientClasses6(const db::ServerSelector& selector) const;
/// @brief Retrieves client classes modified after specified time.
///
/// 'all'.
///
/// @return Collection of servers from the backend.
- virtual db::ServerCollection
- getAllServers6() const;
+ virtual db::ServerCollection getAllServers6() const;
/// @brief Retrieves a server.
///
/// @param server_tag Tag of the server to be retrieved.
/// @return Pointer to the server instance or null pointer if no server
/// with the particular tag was found.
- virtual db::ServerPtr
- getServer6(const data::ServerTag& server_tag) const;
+ virtual db::ServerPtr getServer6(const data::ServerTag& server_tag) const;
/// @brief Creates or updates a subnet.
///
/// @param subnet Subnet to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
virtual void
- createUpdateSubnet6(const db::ServerSelector& server_selector,
- const Subnet6Ptr& subnet);
+ createUpdateSubnet6(const db::ServerSelector& server_selector, const Subnet6Ptr& subnet);
/// @brief Creates or updates a shared network.
///
/// @param server_selector Server selector.
/// @param shared_network Shared network to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateSharedNetwork6(const db::ServerSelector& server_selector,
- const SharedNetwork6Ptr& shared_network);
+ virtual void createUpdateSharedNetwork6(const db::ServerSelector& server_selector,
+ const SharedNetwork6Ptr& shared_network);
/// @brief Creates or updates an option definition.
///
/// @param server_selector Server selector.
/// @param option_def Option definition to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOptionDef6(const db::ServerSelector& server_selector,
- const OptionDefinitionPtr& option_def);
+ virtual void createUpdateOptionDef6(const db::ServerSelector& server_selector,
+ const OptionDefinitionPtr& option_def);
/// @brief Creates or updates global option.
///
/// @param server_selector Server selector.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption6(const db::ServerSelector& server_selector,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption6(const db::ServerSelector& server_selector,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates shared network level option.
///
/// belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption6(const db::ServerSelector& server_selector,
- const std::string& shared_network_name,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption6(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates subnet level option.
///
/// @param subnet_id Identifier of a subnet to which option belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption6(const db::ServerSelector& server_selector,
- const SubnetID& subnet_id,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption6(const db::ServerSelector& server_selector,
+ const SubnetID& subnet_id,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates pool level option.
///
/// option belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption6(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pool_start_address,
- const asiolink::IOAddress& pool_end_address,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption6(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pool_start_address,
+ const asiolink::IOAddress& pool_end_address,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates prefix delegation pool level option.
///
/// delegation pool to which the option belongs.
/// @param option Option to be added or updated.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateOption6(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pd_pool_prefix,
- const uint8_t pd_pool_prefix_length,
- const OptionDescriptorPtr& option);
+ virtual void createUpdateOption6(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pd_pool_prefix,
+ const uint8_t pd_pool_prefix_length,
+ const OptionDescriptorPtr& option);
/// @brief Creates or updates global parameter.
///
/// @param name Name of the global parameter.
/// @param value Value of the global parameter.
/// @throw NotImplemented if server selector is "unassigned".
- virtual void
- createUpdateGlobalParameter6(const db::ServerSelector& server_selector,
- const data::StampedValuePtr& value);
+ virtual void createUpdateGlobalParameter6(const db::ServerSelector& server_selector,
+ const data::StampedValuePtr& value);
/// @brief Creates or updates a client class.
///
/// new or updated class should be positioned. An empty value
/// causes the class to be appended at the end of the class
/// hierarchy.
- virtual void
- createUpdateClientClass6(const db::ServerSelector& server_selector,
- const ClientClassDefPtr& client_class,
- const std::string& follow_class_name);
+ virtual void createUpdateClientClass6(const db::ServerSelector& server_selector,
+ const ClientClassDefPtr& client_class,
+ const std::string& follow_class_name);
/// @brief Creates or updates a server.
///
/// @param server Instance of the server to be stored.
/// @throw InvalidOperation when trying to create a duplicate or
/// update the logical server 'all'.
- virtual void
- createUpdateServer6(const db::ServerPtr& server);
+ virtual void createUpdateServer6(const db::ServerPtr& server);
/// @brief Deletes subnet by prefix.
///
/// @return Number of deleted subnets.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteSubnet6(const db::ServerSelector& server_selector,
- const std::string& subnet_prefix);
+ deleteSubnet6(const db::ServerSelector& server_selector, const std::string& subnet_prefix);
/// @brief Deletes subnet by identifier.
///
/// @param server_selector Server selector.
/// @return Number of deleted subnets.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllSubnets6(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllSubnets6(const db::ServerSelector& server_selector);
/// @brief Deletes all subnets belonging to a specified shared network.
///
/// @param shared_network_name Name of the shared network for which the
/// subnets should be deleted.
/// @return Number of deleted subnets.
- virtual uint64_t
- deleteSharedNetworkSubnets6(const db::ServerSelector& server_selector,
- const std::string& shared_network_name);
+ virtual uint64_t deleteSharedNetworkSubnets6(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name);
/// @brief Deletes shared network by name.
///
/// @return Number of deleted shared networks.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteSharedNetwork6(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteSharedNetwork6(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all shared networks.
///
/// @param server_selector Server selector.
/// @return Number of deleted shared networks.
- virtual uint64_t
- deleteAllSharedNetworks6(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllSharedNetworks6(const db::ServerSelector& server_selector);
/// @brief Deletes option definition.
///
/// @param space Option space of the option to be deleted.
/// @return Number of deleted option definitions.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOptionDef6(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOptionDef6(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes all option definitions.
///
/// @param server_selector Server selector.
/// @return Number of deleted option definitions.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllOptionDefs6(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllOptionDefs6(const db::ServerSelector& server_selector);
/// @brief Deletes global option.
///
/// @param space Option space of the option to be deleted.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption6(const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption6(const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes shared network level option.
///
/// @param code Code of the deleted option.
/// @param space Option space of the deleted option.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption6(const db::ServerSelector& server_selector,
- const std::string& shared_network_name,
- const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption6(const db::ServerSelector& server_selector,
+ const std::string& shared_network_name,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes subnet level option.
///
/// @param space Option space of the deleted option.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption6(const db::ServerSelector& server_selector, const SubnetID& subnet_id,
- const uint16_t code, const std::string& space);
+ virtual uint64_t deleteOption6(const db::ServerSelector& server_selector,
+ const SubnetID& subnet_id,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes pool level option.
///
/// @param space Option space of the deleted option.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption6(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pool_start_address,
- const asiolink::IOAddress& pool_end_address,
- const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption6(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pool_start_address,
+ const asiolink::IOAddress& pool_end_address,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes prefix delegation pool level option.
///
/// @param space Option space of the deleted option.
/// @return Number of deleted options.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteOption6(const db::ServerSelector& server_selector,
- const asiolink::IOAddress& pd_pool_prefix,
- const uint8_t pd_pool_prefix_length,
- const uint16_t code,
- const std::string& space);
+ virtual uint64_t deleteOption6(const db::ServerSelector& server_selector,
+ const asiolink::IOAddress& pd_pool_prefix,
+ const uint8_t pd_pool_prefix_length,
+ const uint16_t code,
+ const std::string& space);
/// @brief Deletes global parameter.
///
/// @return Number of deleted global parameters.
/// @throw NotImplemented if server selector is "unassigned".
virtual uint64_t
- deleteGlobalParameter6(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteGlobalParameter6(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all global parameters.
///
/// @param server_selector Server selector.
/// @return Number of deleted global parameters.
/// @throw NotImplemented if server selector is "unassigned".
- virtual uint64_t
- deleteAllGlobalParameters6(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllGlobalParameters6(const db::ServerSelector& server_selector);
/// @brief Deletes a client class.
///
/// @param name Name of the class to be deleted.
/// @return Number of deleted client classes.
virtual uint64_t
- deleteClientClass6(const db::ServerSelector& server_selector,
- const std::string& name);
+ deleteClientClass6(const db::ServerSelector& server_selector, const std::string& name);
/// @brief Deletes all client classes.
///
/// @param server_selector Server selector.
/// @return Number of deleted client classes.
- virtual uint64_t
- deleteAllClientClasses6(const db::ServerSelector& server_selector);
+ virtual uint64_t deleteAllClientClasses6(const db::ServerSelector& server_selector);
/// @brief Deletes a server from the backend.
///
/// @return Number of deleted servers.
/// @throw isc::InvalidOperation when trying to delete the logical
/// server 'all'.
- virtual uint64_t
- deleteServer6(const data::ServerTag& server_tag);
+ virtual uint64_t deleteServer6(const data::ServerTag& server_tag);
/// @brief Deletes all servers from the backend except the logical
/// server 'all'.
///
/// @return Number of deleted servers.
- virtual uint64_t
- deleteAllServers6();
+ virtual uint64_t deleteAllServers6();
/// @brief Returns backend type in the textual format.
///
virtual bool isUnusable();
protected:
-
/// @brief Pointer to the implementation of the @c PgSqlConfigBackendDHCPv6
/// class.
boost::shared_ptr<PgSqlConfigBackendDHCPv6Impl> impl_;
/// @brief Pointer to the @c PgSqlConfigBackendDHCPv6 class.
typedef boost::shared_ptr<PgSqlConfigBackendDHCPv6> PgSqlConfigBackendDHCPv6Ptr;
-} // end of namespace isc::cb
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
-#endif // PGSQL_CONFIG_BACKEND_DHCP6_H
+#endif // PGSQL_CONFIG_BACKEND_DHCP6_H
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
-#include "pgsql_cb_impl.h"
+
#include <asiolink/io_address.h>
#include <config_backend/constants.h>
-#include <pgsql/pgsql_exchange.h>
#include <dhcp/option_space.h>
+#include <pgsql/pgsql_exchange.h>
#include <util/buffer.h>
+
+#include "pgsql_cb_impl.h"
#include <cstdint>
#include <utility>
isc::asiolink::IOServicePtr PgSqlConfigBackendImpl::io_service_ = isc::asiolink::IOServicePtr();
-PgSqlConfigBackendImpl::
-ScopedAuditRevision::ScopedAuditRevision(PgSqlConfigBackendImpl* impl,
- const int index,
- const ServerSelector& server_selector,
- const std::string& log_message,
- bool cascade_transaction)
+PgSqlConfigBackendImpl::ScopedAuditRevision::ScopedAuditRevision(
+ PgSqlConfigBackendImpl* impl,
+ const int index,
+ const ServerSelector& server_selector,
+ const std::string& log_message,
+ bool cascade_transaction)
: impl_(impl) {
impl_->createAuditRevision(index, server_selector,
- boost::posix_time::microsec_clock::local_time(),
- log_message,
+ boost::posix_time::microsec_clock::local_time(), log_message,
cascade_transaction);
}
-PgSqlConfigBackendImpl::
-ScopedAuditRevision::~ScopedAuditRevision() {
+PgSqlConfigBackendImpl::ScopedAuditRevision::~ScopedAuditRevision() {
impl_->clearAuditRevision();
}
-PgSqlConfigBackendImpl::
-PgSqlConfigBackendImpl(const DatabaseConnection::ParameterMap& parameters,
- const DbCallback db_reconnect_callback)
+PgSqlConfigBackendImpl::PgSqlConfigBackendImpl(const DatabaseConnection::ParameterMap& parameters,
+ const DbCallback db_reconnect_callback)
: conn_(parameters,
IOServiceAccessorPtr(new IOServiceAccessor(PgSqlConfigBackendImpl::getIOService)),
- db_reconnect_callback), timer_name_(""), audit_revision_created_(false),
- parameters_(parameters) {
+ db_reconnect_callback),
+ timer_name_(""), audit_revision_created_(false), parameters_(parameters) {
// Test schema version first.
std::pair<uint32_t, uint32_t> code_version(PG_SCHEMA_VERSION_MAJOR, PG_SCHEMA_VERSION_MINOR);
std::pair<uint32_t, uint32_t> db_version = PgSqlConnection::getVersion(parameters);
if (code_version != db_version) {
isc_throw(DbOpenError, "Postgres schema version mismatch: need version: "
- << code_version.first << "." << code_version.second
- << " found version: " << db_version.first << "." << db_version.second);
+ << code_version.first << "." << code_version.second
+ << " found version: " << db_version.first << "."
+ << db_version.second);
}
// Open the database.
// When deleting multiple objects we must not use ANY server.
if (server_selector.amAny()) {
isc_throw(InvalidOperation, "deleting multiple objects for ANY server is not"
- " supported");
+ " supported");
}
PsqlBindArray in_bindings;
isc_throw(NotImplemented, "todo");
}
-
void
PgSqlConfigBackendImpl::getGlobalParameters(const int index,
const PsqlBindArray& in_bindings,
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
auto tag = getServerTag(server_selector, "fetching option definition");
void
PgSqlConfigBackendImpl::getAllOptionDefs(const int index,
- const ServerSelector& server_selector,
- OptionDefContainer& option_defs) {
+ const ServerSelector& server_selector,
+ OptionDefContainer& option_defs) {
auto tags = server_selector.getTags();
#if 0
for (auto tag : tags) {
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
auto tag = getServerTag(server_selector, "creating or updating option definition");
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
auto tag = getServerTag(server_selector, "fetching global option");
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
auto tag = getServerTag(server_selector, "fetching subnet level option");
in_bindings.push_back(PsqlBindArray::createString(space));
#endif
getOptions(index, in_bindings, universe, options);
- return (options.empty() ? OptionDescriptorPtr() :
- OptionDescriptor::create(*options.begin()));
+ return (options.empty() ? OptionDescriptorPtr() : OptionDescriptor::create(*options.begin()));
}
OptionDescriptorPtr
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
std::string msg = "fetching ";
in_bindings.push_back(PsqlBindArray::createString(space));
#endif
getOptions(index, in_bindings, universe, options);
- return (options.empty() ? OptionDescriptorPtr() :
- OptionDescriptor::create(*options.begin()));
+ return (options.empty() ? OptionDescriptorPtr() : OptionDescriptor::create(*options.begin()));
}
OptionDescriptorPtr
if (server_selector.amUnassigned()) {
isc_throw(NotImplemented, "managing configuration for no particular server"
- " (unassigned) is unsupported at the moment");
+ " (unassigned) is unsupported at the moment");
}
auto tag = getServerTag(server_selector, "fetching shared network level option");
in_bindings.push_back(PsqlBindArray::createString(space));
#endif
getOptions(index, in_bindings, universe, options);
- return (options.empty() ? OptionDescriptorPtr() :
- OptionDescriptor::create(*options.begin()));
+ return (options.empty() ? OptionDescriptorPtr() : OptionDescriptor::create(*options.begin()));
}
void
}
#endif
-
PsqlBindArrayPtr
PgSqlConfigBackendImpl::createInputRelayBinding(const NetworkPtr& network) {
ElementPtr relay_element = Element::createList();
OutputBuffer buf(opt->len());
opt->pack(buf);
const char* buf_ptr = static_cast<const char*>(buf.getData());
- std::vector<uint8_t> blob(buf_ptr + opt->getHeaderLen(),
- buf_ptr + buf.getLength());
+ std::vector<uint8_t> blob(buf_ptr + opt->getHeaderLen(), buf_ptr + buf.getLength());
// return (PsqlBindArray::createBlob(blob.begin(), blob.end()));
}
const ServerPtr& server) {
// The server tag 'all' is reserved.
if (server->getServerTag().amAll()) {
- isc_throw(InvalidOperation, "'all' is a name reserved for the server tag which"
+ isc_throw(InvalidOperation,
+ "'all' is a name reserved for the server tag which"
" associates the configuration elements with all servers connecting"
" to the database and a server with this name may not be created");
}
// Create scoped audit revision. As long as this instance exists
// no new audit revisions are created in any subsequent calls.
- ScopedAuditRevision audit_revision(this,
- create_audit_revision,
- ServerSelector::ALL(),
- "server set",
- true);
+ ScopedAuditRevision audit_revision(this, create_audit_revision, ServerSelector::ALL(),
+ "server set", true);
PgSqlTransaction transaction(conn_);
return (0);
}
-} // end of namespace isc::dhcp
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
#include <exceptions/exceptions.h>
#include <pgsql/pgsql_connection.h>
#include <pgsql/pgsql_exchange.h>
+
#include <set>
#include <sstream>
#include <string>
/// class must be local times.
class PgSqlConfigBackendImpl {
protected:
-
/// @brief RAII object used to protect against creating multiple
/// audit revisions during cascade configuration updates.
///
/// transaction with the database.
class ScopedAuditRevision {
public:
-
/// @brief Constructor.
///
/// Creates new audit revision and sets the flag in the
~ScopedAuditRevision();
private:
-
/// @brief Pointer to the Postgres CB implementation.
PgSqlConfigBackendImpl* impl_;
};
public:
-
/// @brief Constructor.
///
/// @param parameters A data structure relating keywords and values
/// @return Server tag.
/// @throw InvalidOperation if the server selector is unassigned or if there
/// is more than one server tag associated with the selector.
- std::string getServerTag(const db::ServerSelector& server_selector,
- const std::string& operation) const {
+ std::string
+ getServerTag(const db::ServerSelector& server_selector, const std::string& operation) const {
auto tags = server_selector.getTags();
if (tags.size() != 1) {
isc_throw(InvalidOperation, "expected exactly one server tag to be specified"
- " while " << operation << ". Got: "
- << getServerTagsAsText(server_selector));
+ " while "
+ << operation
+ << ". Got: " << getServerTagsAsText(server_selector));
}
return (tags.begin()->get());
/// if the query contains no WHERE clause.
/// @param [out] option_defs Reference to the container where fetched
/// option definitions will be inserted.
- void
- getOptionDefs(const int index,
- const db::PsqlBindArray& in_bindings,
- OptionDefContainer& option_defs);
+ void getOptionDefs(const int index,
+ const db::PsqlBindArray& in_bindings,
+ OptionDefContainer& option_defs);
/// @brief Creates or updates an option definition.
///
///
/// @return Pointer to the returned option or NULL if such option
/// doesn't exist.
- OptionDescriptorPtr
- getOption(const int index, const Option::Universe& universe,
- const db::ServerSelector& server_selector, const uint16_t code,
- const std::string& space);
+ OptionDescriptorPtr getOption(const int index,
+ const Option::Universe& universe,
+ const db::ServerSelector& server_selector,
+ const uint16_t code,
+ const std::string& space);
/// @brief Sends query to retrieve all global options.
///
/// @param universe Option universe, i.e. V4 or V6.
/// @param server_selector Server selector.
/// @return Container holding returned options.
- OptionContainer
- getAllOptions(const int index, const Option::Universe& universe,
- const db::ServerSelector& server_selector);
+ OptionContainer getAllOptions(const int index,
+ const Option::Universe& universe,
+ const db::ServerSelector& server_selector);
/// @brief Sends query to retrieve global options with modification
/// time later than specified timestamp.
/// @param universe Option universe, i.e. V4 or V6.
/// @param server_selector Server selector.
/// @return Container holding returned options.
- OptionContainer
- getModifiedOptions(const int index, const Option::Universe& universe,
- const db::ServerSelector& server_selector,
- const boost::posix_time::ptime& modification_time);
+ OptionContainer getModifiedOptions(const int index,
+ const Option::Universe& universe,
+ const db::ServerSelector& server_selector,
+ const boost::posix_time::ptime& modification_time);
/// @brief Sends query to retrieve single option by code and option space
/// for a given subnet id.
/// @todo implement
db::PsqlBindArrayPtr createInputRelayBinding(const NetworkPtr& network);
- /// @todo implement template<typename T> db::MySqlBindingPtr createInputRequiredClassesBinding(const T& object)
+ /// @todo implement template<typename T> db::MySqlBindingPtr
+ /// createInputRequiredClassesBinding(const T& object)
/// @todo implement db::MySqlBindingPtr createInputContextBinding(const T& config_element) {
/// @param bindings Reference to the MySQL input bindings.
/// @param [out] servers Reference to the container where fetched servers
/// will be inserted.
- void getServers(const int index,
- const db::PsqlBindArray& bindings,
- db::ServerCollection& servers);
+ void
+ getServers(const int index, const db::PsqlBindArray& bindings, db::ServerCollection& servers);
/// @brief Creates or updates a server.
///
const int& update_index,
const db::ServerPtr& server);
- /// @todo implement template<typename T, typename... R> void multipleUpdateDeleteQueries(T first_index, R... other_indexes)
+ /// @todo implement template<typename T, typename... R> void multipleUpdateDeleteQueries(T
+ /// first_index, R... other_indexes)
/// @brief Removes configuration elements from the index which don't match
/// the specified server selector.
/// @param server_selector Server selector.
/// @param index Reference to the index holding the returned configuration
/// elements to be processed.
- template<typename CollectionIndex>
- void tossNonMatchingElements(const db::ServerSelector& server_selector,
- CollectionIndex& index) {
+ template <typename CollectionIndex>
+ void
+ tossNonMatchingElements(const db::ServerSelector& server_selector, CollectionIndex& index) {
// Don't filter the matching server tags if the server selector is
// set to ANY.
if (server_selector.amAny()) {
}
// Go over the collection of elements.
- for (auto elem = index.begin(); elem != index.end(); ) {
+ for (auto elem = index.begin(); elem != index.end();) {
// If we're asking for shared networks matching all servers,
// we have to make sure that the fetched element has "all"
auto tags = server_selector.getTags();
bool tag_found = false;
for (auto tag : tags) {
- if ((*elem)->hasServerTag(tag) ||
- (*elem)->hasAllServerTag()) {
+ if ((*elem)->hasServerTag(tag) || (*elem)->hasAllServerTag()) {
tag_found = true;
break;
}
db::PgSqlConnection conn_;
protected:
-
/// @brief Timer name used to register database reconnect timer.
std::string timer_name_;
private:
-
/// @brief Boolean flag indicating if audit revision has been created
/// using @c ScopedAuditRevision object.
bool audit_revision_created_;
static isc::asiolink::IOServicePtr io_service_;
};
-} // end of namespace isc::dhcp
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
#endif
#include <log/logger_support.h>
#include <log/macros.h>
+
#include <pgsql_cb_messages.h>
namespace isc {
} // namespace dhcp
} // namespace isc
-
#endif
namespace {
#ifndef PGSQL_GET_GLOBAL_PARAMETER
-#define PGSQL_GET_GLOBAL_PARAMETER(table_prefix, ...) \
- "SELECT" \
- " g.id," \
- " g.name," \
- " g.value," \
- " g.parameter_type," \
- " g.modification_ts," \
- " s.tag " \
- "FROM " #table_prefix "_global_parameter AS g " \
+#define PGSQL_GET_GLOBAL_PARAMETER(table_prefix, ...) \
+ "SELECT" \
+ " g.id," \
+ " g.name," \
+ " g.value," \
+ " g.parameter_type," \
+ " g.modification_ts," \
+ " s.tag " \
+ "FROM " #table_prefix "_global_parameter AS g " \
"INNER JOIN " #table_prefix "_global_parameter_server AS a " \
- " ON g.id = a.parameter_id " \
- "INNER JOIN " #table_prefix "_server AS s " \
- " ON (a.server_id = s.id) " \
- "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ \
- " ORDER BY g.id, s.id"
+ " ON g.id = a.parameter_id " \
+ "INNER JOIN " #table_prefix "_server AS s " \
+ " ON (a.server_id = s.id) " \
+ "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ " ORDER BY g.id, s.id"
#endif
#ifndef PGSQL_GET_SUBNET4
-#define PGSQL_GET_SUBNET4_COMMON(server_join, ...) \
- "SELECT" \
- " s.subnet_id," \
- " s.subnet_prefix," \
- " s.4o6_interface," \
- " s.4o6_interface_id," \
- " s.4o6_subnet," \
- " s.boot_file_name," \
- " s.client_class," \
- " s.interface," \
- " s.match_client_id," \
- " s.modification_ts," \
- " s.next_server," \
- " s.rebind_timer," \
- " s.relay," \
- " s.renew_timer," \
- " s.require_client_classes," \
- " s.reservations_global," \
- " s.server_hostname," \
- " s.shared_network_name," \
- " s.user_context," \
- " s.valid_lifetime," \
- " p.id," \
- " p.start_address," \
- " p.end_address," \
- " p.subnet_id," \
- " p.modification_ts," \
- " x.option_id," \
- " x.code," \
- " x.value," \
- " x.formatted_value," \
- " x.space," \
- " x.persistent," \
- " x.dhcp4_subnet_id," \
- " x.scope_id," \
- " x.user_context," \
- " x.shared_network_name," \
- " x.pool_id," \
- " x.modification_ts," \
- " o.option_id," \
- " o.code," \
- " o.value," \
- " o.formatted_value," \
- " o.space," \
- " o.persistent," \
- " o.dhcp4_subnet_id," \
- " o.scope_id," \
- " o.user_context," \
- " o.shared_network_name," \
- " o.pool_id," \
- " o.modification_ts," \
- " s.calculate_tee_times," \
- " s.t1_percent," \
- " s.t2_percent," \
- " s.authoritative," \
- " s.min_valid_lifetime," \
- " s.max_valid_lifetime," \
- " p.client_class," \
- " p.require_client_classes," \
- " p.user_context," \
- " s.ddns_send_updates," \
- " s.ddns_override_no_update," \
- " s.ddns_override_client_update," \
- " s.ddns_replace_client_name," \
- " s.ddns_generated_prefix," \
- " s.ddns_qualifying_suffix," \
- " s.reservations_in_subnet," \
- " s.reservations_out_of_pool," \
- " s.cache_threshold," \
- " s.cache_max_age," \
- " srv.tag " \
- "FROM dhcp4_subnet AS s " \
- server_join \
- "LEFT JOIN dhcp4_pool AS p ON s.subnet_id = p.subnet_id " \
+#define PGSQL_GET_SUBNET4_COMMON(server_join, ...) \
+ "SELECT" \
+ " s.subnet_id," \
+ " s.subnet_prefix," \
+ " s.4o6_interface," \
+ " s.4o6_interface_id," \
+ " s.4o6_subnet," \
+ " s.boot_file_name," \
+ " s.client_class," \
+ " s.interface," \
+ " s.match_client_id," \
+ " s.modification_ts," \
+ " s.next_server," \
+ " s.rebind_timer," \
+ " s.relay," \
+ " s.renew_timer," \
+ " s.require_client_classes," \
+ " s.reservations_global," \
+ " s.server_hostname," \
+ " s.shared_network_name," \
+ " s.user_context," \
+ " s.valid_lifetime," \
+ " p.id," \
+ " p.start_address," \
+ " p.end_address," \
+ " p.subnet_id," \
+ " p.modification_ts," \
+ " x.option_id," \
+ " x.code," \
+ " x.value," \
+ " x.formatted_value," \
+ " x.space," \
+ " x.persistent," \
+ " x.dhcp4_subnet_id," \
+ " x.scope_id," \
+ " x.user_context," \
+ " x.shared_network_name," \
+ " x.pool_id," \
+ " x.modification_ts," \
+ " o.option_id," \
+ " o.code," \
+ " o.value," \
+ " o.formatted_value," \
+ " o.space," \
+ " o.persistent," \
+ " o.dhcp4_subnet_id," \
+ " o.scope_id," \
+ " o.user_context," \
+ " o.shared_network_name," \
+ " o.pool_id," \
+ " o.modification_ts," \
+ " s.calculate_tee_times," \
+ " s.t1_percent," \
+ " s.t2_percent," \
+ " s.authoritative," \
+ " s.min_valid_lifetime," \
+ " s.max_valid_lifetime," \
+ " p.client_class," \
+ " p.require_client_classes," \
+ " p.user_context," \
+ " s.ddns_send_updates," \
+ " s.ddns_override_no_update," \
+ " s.ddns_override_client_update," \
+ " s.ddns_replace_client_name," \
+ " s.ddns_generated_prefix," \
+ " s.ddns_qualifying_suffix," \
+ " s.reservations_in_subnet," \
+ " s.reservations_out_of_pool," \
+ " s.cache_threshold," \
+ " s.cache_max_age," \
+ " srv.tag " \
+ "FROM dhcp4_subnet AS s " server_join \
+ "LEFT JOIN dhcp4_pool AS p ON s.subnet_id = p.subnet_id " \
"LEFT JOIN dhcp4_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " \
- "LEFT JOIN dhcp4_options AS o ON o.scope_id = 1 AND s.subnet_id = o.dhcp4_subnet_id " \
- #__VA_ARGS__ \
- " ORDER BY s.subnet_id, p.id, x.option_id, o.option_id"
-
-#define PGSQL_GET_SUBNET4_NO_TAG(...) \
- PGSQL_GET_SUBNET4_COMMON( \
- "INNER JOIN dhcp4_subnet_server AS a " \
- " ON s.subnet_id = a.subnet_id " \
- "INNER JOIN dhcp4_server AS srv " \
- " ON (a.server_id = srv.id) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SUBNET4_ANY(...) \
- PGSQL_GET_SUBNET4_COMMON( \
- "LEFT JOIN dhcp4_subnet_server AS a "\
- " ON s.subnet_id = a.subnet_id " \
- "LEFT JOIN dhcp4_server AS srv " \
- " ON a.server_id = srv.id ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SUBNET4_UNASSIGNED(...) \
- PGSQL_GET_SUBNET4_COMMON( \
- "LEFT JOIN dhcp4_subnet_server AS a "\
- " ON s.subnet_id = a.subnet_id " \
- "LEFT JOIN dhcp4_server AS srv " \
- " ON a.server_id = srv.id ", \
- WHERE a.subnet_id IS NULL __VA_ARGS__)
+ "LEFT JOIN dhcp4_options AS o ON o.scope_id = 1 AND s.subnet_id = " \
+ "o.dhcp4_subnet_id " #__VA_ARGS__ " ORDER BY s.subnet_id, p.id, x.option_id, o.option_id"
+
+#define PGSQL_GET_SUBNET4_NO_TAG(...) \
+ PGSQL_GET_SUBNET4_COMMON("INNER JOIN dhcp4_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "INNER JOIN dhcp4_server AS srv " \
+ " ON (a.server_id = srv.id) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SUBNET4_ANY(...) \
+ PGSQL_GET_SUBNET4_COMMON("LEFT JOIN dhcp4_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "LEFT JOIN dhcp4_server AS srv " \
+ " ON a.server_id = srv.id ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SUBNET4_UNASSIGNED(...) \
+ PGSQL_GET_SUBNET4_COMMON("LEFT JOIN dhcp4_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "LEFT JOIN dhcp4_server AS srv " \
+ " ON a.server_id = srv.id ", \
+ WHERE a.subnet_id IS NULL __VA_ARGS__)
#endif
#ifndef PGSQL_GET_SUBNET6
-#define PGSQL_GET_SUBNET6_COMMON(server_join, ...) \
- "SELECT" \
- " s.subnet_id," \
- " s.subnet_prefix," \
- " s.client_class," \
- " s.interface," \
- " s.modification_ts," \
- " s.preferred_lifetime," \
- " s.rapid_commit," \
- " s.rebind_timer," \
- " s.relay," \
- " s.renew_timer," \
- " s.require_client_classes," \
- " s.reservations_global," \
- " s.shared_network_name," \
- " s.user_context," \
- " s.valid_lifetime," \
- " p.id," \
- " p.start_address," \
- " p.end_address," \
- " p.subnet_id," \
- " p.modification_ts," \
- " d.id," \
- " d.prefix," \
- " d.prefix_length," \
- " d.delegated_prefix_length," \
- " d.subnet_id," \
- " d.modification_ts," \
- " x.option_id," \
- " x.code," \
- " x.value," \
- " x.formatted_value," \
- " x.space," \
- " x.persistent," \
- " x.dhcp6_subnet_id," \
- " x.scope_id," \
- " x.user_context," \
- " x.shared_network_name," \
- " x.pool_id," \
- " x.modification_ts," \
- " x.pd_pool_id," \
- " y.option_id," \
- " y.code," \
- " y.value," \
- " y.formatted_value," \
- " y.space," \
- " y.persistent," \
- " y.dhcp6_subnet_id," \
- " y.scope_id," \
- " y.user_context," \
- " y.shared_network_name," \
- " y.pool_id," \
- " y.modification_ts," \
- " y.pd_pool_id," \
- " o.option_id," \
- " o.code," \
- " o.value," \
- " o.formatted_value," \
- " o.space," \
- " o.persistent," \
- " o.dhcp6_subnet_id," \
- " o.scope_id," \
- " o.user_context," \
- " o.shared_network_name," \
- " o.pool_id," \
- " o.modification_ts," \
- " o.pd_pool_id, " \
- " s.calculate_tee_times," \
- " s.t1_percent," \
- " s.t2_percent," \
- " s.interface_id," \
- " s.min_preferred_lifetime," \
- " s.max_preferred_lifetime," \
- " s.min_valid_lifetime," \
- " s.max_valid_lifetime," \
- " p.client_class," \
- " p.require_client_classes," \
- " p.user_context," \
- " d.excluded_prefix," \
- " d.excluded_prefix_length," \
- " d.client_class," \
- " d.require_client_classes," \
- " d.user_context," \
- " s.ddns_send_updates," \
- " s.ddns_override_no_update," \
- " s.ddns_override_client_update," \
- " s.ddns_replace_client_name," \
- " s.ddns_generated_prefix," \
- " s.ddns_qualifying_suffix," \
- " s.reservations_in_subnet," \
- " s.reservations_out_of_pool," \
- " s.cache_threshold," \
- " s.cache_max_age," \
- " srv.tag " \
- "FROM dhcp6_subnet AS s " \
- server_join \
- "LEFT JOIN dhcp6_pool AS p ON s.subnet_id = p.subnet_id " \
- "LEFT JOIN dhcp6_pd_pool AS d ON s.subnet_id = d.subnet_id " \
- "LEFT JOIN dhcp6_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " \
+#define PGSQL_GET_SUBNET6_COMMON(server_join, ...) \
+ "SELECT" \
+ " s.subnet_id," \
+ " s.subnet_prefix," \
+ " s.client_class," \
+ " s.interface," \
+ " s.modification_ts," \
+ " s.preferred_lifetime," \
+ " s.rapid_commit," \
+ " s.rebind_timer," \
+ " s.relay," \
+ " s.renew_timer," \
+ " s.require_client_classes," \
+ " s.reservations_global," \
+ " s.shared_network_name," \
+ " s.user_context," \
+ " s.valid_lifetime," \
+ " p.id," \
+ " p.start_address," \
+ " p.end_address," \
+ " p.subnet_id," \
+ " p.modification_ts," \
+ " d.id," \
+ " d.prefix," \
+ " d.prefix_length," \
+ " d.delegated_prefix_length," \
+ " d.subnet_id," \
+ " d.modification_ts," \
+ " x.option_id," \
+ " x.code," \
+ " x.value," \
+ " x.formatted_value," \
+ " x.space," \
+ " x.persistent," \
+ " x.dhcp6_subnet_id," \
+ " x.scope_id," \
+ " x.user_context," \
+ " x.shared_network_name," \
+ " x.pool_id," \
+ " x.modification_ts," \
+ " x.pd_pool_id," \
+ " y.option_id," \
+ " y.code," \
+ " y.value," \
+ " y.formatted_value," \
+ " y.space," \
+ " y.persistent," \
+ " y.dhcp6_subnet_id," \
+ " y.scope_id," \
+ " y.user_context," \
+ " y.shared_network_name," \
+ " y.pool_id," \
+ " y.modification_ts," \
+ " y.pd_pool_id," \
+ " o.option_id," \
+ " o.code," \
+ " o.value," \
+ " o.formatted_value," \
+ " o.space," \
+ " o.persistent," \
+ " o.dhcp6_subnet_id," \
+ " o.scope_id," \
+ " o.user_context," \
+ " o.shared_network_name," \
+ " o.pool_id," \
+ " o.modification_ts," \
+ " o.pd_pool_id, " \
+ " s.calculate_tee_times," \
+ " s.t1_percent," \
+ " s.t2_percent," \
+ " s.interface_id," \
+ " s.min_preferred_lifetime," \
+ " s.max_preferred_lifetime," \
+ " s.min_valid_lifetime," \
+ " s.max_valid_lifetime," \
+ " p.client_class," \
+ " p.require_client_classes," \
+ " p.user_context," \
+ " d.excluded_prefix," \
+ " d.excluded_prefix_length," \
+ " d.client_class," \
+ " d.require_client_classes," \
+ " d.user_context," \
+ " s.ddns_send_updates," \
+ " s.ddns_override_no_update," \
+ " s.ddns_override_client_update," \
+ " s.ddns_replace_client_name," \
+ " s.ddns_generated_prefix," \
+ " s.ddns_qualifying_suffix," \
+ " s.reservations_in_subnet," \
+ " s.reservations_out_of_pool," \
+ " s.cache_threshold," \
+ " s.cache_max_age," \
+ " srv.tag " \
+ "FROM dhcp6_subnet AS s " server_join \
+ "LEFT JOIN dhcp6_pool AS p ON s.subnet_id = p.subnet_id " \
+ "LEFT JOIN dhcp6_pd_pool AS d ON s.subnet_id = d.subnet_id " \
+ "LEFT JOIN dhcp6_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " \
"LEFT JOIN dhcp6_options AS y ON y.scope_id = 6 AND d.id = y.pd_pool_id " \
- "LEFT JOIN dhcp6_options AS o ON o.scope_id = 1 AND s.subnet_id = o.dhcp6_subnet_id " \
- #__VA_ARGS__ \
+ "LEFT JOIN dhcp6_options AS o ON o.scope_id = 1 AND s.subnet_id = " \
+ "o.dhcp6_subnet_id " #__VA_ARGS__ \
" ORDER BY s.subnet_id, p.id, d.id, x.option_id, y.option_id, o.option_id"
-#define PGSQL_GET_SUBNET6_NO_TAG(...) \
- PGSQL_GET_SUBNET6_COMMON( \
- "INNER JOIN dhcp6_subnet_server AS a " \
- " ON s.subnet_id = a.subnet_id " \
- "INNER JOIN dhcp6_server AS srv " \
- " ON (a.server_id = srv.id) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SUBNET6_ANY(...) \
- PGSQL_GET_SUBNET6_COMMON( \
- "LEFT JOIN dhcp6_subnet_server AS a "\
- " ON s.subnet_id = a.subnet_id " \
- "LEFT JOIN dhcp6_server AS srv " \
- " ON a.server_id = srv.id ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SUBNET6_UNASSIGNED(...) \
- PGSQL_GET_SUBNET6_COMMON( \
- "LEFT JOIN dhcp6_subnet_server AS a "\
- " ON s.subnet_id = a.subnet_id " \
- "LEFT JOIN dhcp6_server AS srv " \
- " ON a.server_id = srv.id ", \
- WHERE a.subnet_id IS NULL __VA_ARGS__)
+#define PGSQL_GET_SUBNET6_NO_TAG(...) \
+ PGSQL_GET_SUBNET6_COMMON("INNER JOIN dhcp6_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "INNER JOIN dhcp6_server AS srv " \
+ " ON (a.server_id = srv.id) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SUBNET6_ANY(...) \
+ PGSQL_GET_SUBNET6_COMMON("LEFT JOIN dhcp6_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "LEFT JOIN dhcp6_server AS srv " \
+ " ON a.server_id = srv.id ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SUBNET6_UNASSIGNED(...) \
+ PGSQL_GET_SUBNET6_COMMON("LEFT JOIN dhcp6_subnet_server AS a " \
+ " ON s.subnet_id = a.subnet_id " \
+ "LEFT JOIN dhcp6_server AS srv " \
+ " ON a.server_id = srv.id ", \
+ WHERE a.subnet_id IS NULL __VA_ARGS__)
#endif
#ifndef PGSQL_GET_POOL4_COMMON
-#define PGSQL_GET_POOL4_COMMON(server_join, ...) \
- "SELECT" \
- " p.id," \
- " p.start_address," \
- " p.end_address," \
- " p.subnet_id," \
- " p.client_class," \
- " p.require_client_classes," \
- " p.user_context," \
- " p.modification_ts," \
- " x.option_id," \
- " x.code," \
- " x.value," \
- " x.formatted_value," \
- " x.space," \
- " x.persistent," \
- " x.dhcp4_subnet_id," \
- " x.scope_id," \
- " x.user_context," \
- " x.shared_network_name," \
- " x.pool_id," \
- " x.modification_ts " \
- "FROM dhcp4_pool AS p " \
- server_join \
- "LEFT JOIN dhcp4_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " \
- #__VA_ARGS__ \
- " ORDER BY p.id, x.option_id"
-
-#define PGSQL_GET_POOL4_RANGE_WITH_TAG(...) \
- PGSQL_GET_POOL4_COMMON( \
- "INNER JOIN dhcp4_subnet_server AS s ON p.subnet_id = s.subnet_id " \
- "INNER JOIN dhcp4_server AS srv " \
- " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_POOL4_RANGE_NO_TAG(...) \
- PGSQL_GET_POOL4_COMMON("", __VA_ARGS__)
+#define PGSQL_GET_POOL4_COMMON(server_join, ...) \
+ "SELECT" \
+ " p.id," \
+ " p.start_address," \
+ " p.end_address," \
+ " p.subnet_id," \
+ " p.client_class," \
+ " p.require_client_classes," \
+ " p.user_context," \
+ " p.modification_ts," \
+ " x.option_id," \
+ " x.code," \
+ " x.value," \
+ " x.formatted_value," \
+ " x.space," \
+ " x.persistent," \
+ " x.dhcp4_subnet_id," \
+ " x.scope_id," \
+ " x.user_context," \
+ " x.shared_network_name," \
+ " x.pool_id," \
+ " x.modification_ts " \
+ "FROM dhcp4_pool AS p " server_join \
+ "LEFT JOIN dhcp4_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " #__VA_ARGS__ \
+ " ORDER BY p.id, x.option_id"
+
+#define PGSQL_GET_POOL4_RANGE_WITH_TAG(...) \
+ PGSQL_GET_POOL4_COMMON("INNER JOIN dhcp4_subnet_server AS s ON p.subnet_id = s.subnet_id " \
+ "INNER JOIN dhcp4_server AS srv " \
+ " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_POOL4_RANGE_NO_TAG(...) PGSQL_GET_POOL4_COMMON("", __VA_ARGS__)
#endif
#ifndef PGSQL_GET_POOL6_COMMON
-#define PGSQL_GET_POOL6_COMMON(server_join, ...) \
- "SELECT" \
- " p.id," \
- " p.start_address," \
- " p.end_address," \
- " p.subnet_id," \
- " p.client_class," \
- " p.require_client_classes," \
- " p.user_context," \
- " p.modification_ts," \
- " x.option_id," \
- " x.code," \
- " x.value," \
- " x.formatted_value," \
- " x.space," \
- " x.persistent," \
- " x.dhcp6_subnet_id," \
- " x.scope_id," \
- " x.user_context," \
- " x.shared_network_name," \
- " x.pool_id," \
- " x.modification_ts," \
- " x.pd_pool_id " \
- "FROM dhcp6_pool AS p " \
- server_join \
- "LEFT JOIN dhcp6_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " \
- #__VA_ARGS__ \
+#define PGSQL_GET_POOL6_COMMON(server_join, ...) \
+ "SELECT" \
+ " p.id," \
+ " p.start_address," \
+ " p.end_address," \
+ " p.subnet_id," \
+ " p.client_class," \
+ " p.require_client_classes," \
+ " p.user_context," \
+ " p.modification_ts," \
+ " x.option_id," \
+ " x.code," \
+ " x.value," \
+ " x.formatted_value," \
+ " x.space," \
+ " x.persistent," \
+ " x.dhcp6_subnet_id," \
+ " x.scope_id," \
+ " x.user_context," \
+ " x.shared_network_name," \
+ " x.pool_id," \
+ " x.modification_ts," \
+ " x.pd_pool_id " \
+ "FROM dhcp6_pool AS p " server_join \
+ "LEFT JOIN dhcp6_options AS x ON x.scope_id = 5 AND p.id = x.pool_id " #__VA_ARGS__ \
" ORDER BY p.id, x.option_id"
-#define PGSQL_GET_POOL6_RANGE_WITH_TAG(...) \
- PGSQL_GET_POOL6_COMMON( \
- "INNER JOIN dhcp6_subnet_server AS s ON p.subnet_id = s.subnet_id " \
- "INNER JOIN dhcp6_server AS srv " \
- " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
- __VA_ARGS__)
+#define PGSQL_GET_POOL6_RANGE_WITH_TAG(...) \
+ PGSQL_GET_POOL6_COMMON("INNER JOIN dhcp6_subnet_server AS s ON p.subnet_id = s.subnet_id " \
+ "INNER JOIN dhcp6_server AS srv " \
+ " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
+ __VA_ARGS__)
-#define PGSQL_GET_POOL6_RANGE_NO_TAG(...) \
- PGSQL_GET_POOL6_COMMON("", __VA_ARGS__)
+#define PGSQL_GET_POOL6_RANGE_NO_TAG(...) PGSQL_GET_POOL6_COMMON("", __VA_ARGS__)
#endif
#ifndef PGSQL_GET_PD_POOL_COMMON
-#define PGSQL_GET_PD_POOL_COMMON(server_join, ...) \
- "SELECT" \
- " p.id," \
- " p.prefix," \
- " p.prefix_length," \
- " p.delegated_prefix_length," \
- " p.subnet_id," \
- " p.excluded_prefix," \
- " p.excluded_prefix_length," \
- " p.client_class," \
- " p.require_client_classes," \
- " p.user_context," \
- " p.modification_ts," \
- " x.option_id," \
- " x.code," \
- " x.value," \
- " x.formatted_value," \
- " x.space," \
- " x.persistent," \
- " x.dhcp6_subnet_id," \
- " x.scope_id," \
- " x.user_context," \
- " x.shared_network_name," \
- " x.pool_id," \
- " x.modification_ts," \
- " x.pd_pool_id " \
- "FROM dhcp6_pd_pool AS p " \
- server_join \
- "LEFT JOIN dhcp6_options AS x ON x.scope_id = 6 AND p.id = x.pd_pool_id " \
- #__VA_ARGS__ \
- " ORDER BY p.id, x.option_id" \
-
-#define PGSQL_GET_PD_POOL_WITH_TAG(...) \
- PGSQL_GET_PD_POOL_COMMON( \
- "INNER JOIN dhcp6_subnet_server AS s ON p.subnet_id = s.subnet_id " \
- "INNER JOIN dhcp6_server AS srv " \
- " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_PD_POOL_NO_TAG(...) \
- PGSQL_GET_PD_POOL_COMMON("", __VA_ARGS__)
+#define PGSQL_GET_PD_POOL_COMMON(server_join, ...) \
+ "SELECT" \
+ " p.id," \
+ " p.prefix," \
+ " p.prefix_length," \
+ " p.delegated_prefix_length," \
+ " p.subnet_id," \
+ " p.excluded_prefix," \
+ " p.excluded_prefix_length," \
+ " p.client_class," \
+ " p.require_client_classes," \
+ " p.user_context," \
+ " p.modification_ts," \
+ " x.option_id," \
+ " x.code," \
+ " x.value," \
+ " x.formatted_value," \
+ " x.space," \
+ " x.persistent," \
+ " x.dhcp6_subnet_id," \
+ " x.scope_id," \
+ " x.user_context," \
+ " x.shared_network_name," \
+ " x.pool_id," \
+ " x.modification_ts," \
+ " x.pd_pool_id " \
+ "FROM dhcp6_pd_pool AS p " server_join \
+ "LEFT JOIN dhcp6_options AS x ON x.scope_id = 6 AND p.id = x.pd_pool_id " #__VA_ARGS__ \
+ " ORDER BY p.id, x.option_id"
+
+#define PGSQL_GET_PD_POOL_WITH_TAG(...) \
+ PGSQL_GET_PD_POOL_COMMON("INNER JOIN dhcp6_subnet_server AS s ON p.subnet_id = s.subnet_id " \
+ "INNER JOIN dhcp6_server AS srv " \
+ " ON (s.server_id = srv.id) OR (s.server_id = 1) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_PD_POOL_NO_TAG(...) PGSQL_GET_PD_POOL_COMMON("", __VA_ARGS__)
#endif
#ifndef PGSQL_GET_SHARED_NETWORK4
-#define PGSQL_GET_SHARED_NETWORK4_COMMON(server_join, ...) \
- "SELECT" \
- " n.id," \
- " n.name," \
- " n.client_class," \
- " n.interface," \
- " n.match_client_id," \
- " n.modification_ts," \
- " n.rebind_timer," \
- " n.relay," \
- " n.renew_timer," \
- " n.require_client_classes," \
- " n.reservations_global," \
- " n.user_context," \
- " n.valid_lifetime," \
- " o.option_id," \
- " o.code," \
- " o.value," \
- " o.formatted_value," \
- " o.space," \
- " o.persistent," \
- " o.dhcp4_subnet_id," \
- " o.scope_id," \
- " o.user_context," \
- " o.shared_network_name," \
- " o.pool_id," \
- " o.modification_ts," \
- " n.calculate_tee_times," \
- " n.t1_percent," \
- " n.t2_percent," \
- " n.authoritative," \
- " n.boot_file_name," \
- " n.next_server," \
- " n.server_hostname," \
- " n.min_valid_lifetime," \
- " n.max_valid_lifetime," \
- " n.ddns_send_updates," \
- " n.ddns_override_no_update," \
- " n.ddns_override_client_update," \
- " n.ddns_replace_client_name," \
- " n.ddns_generated_prefix," \
- " n.ddns_qualifying_suffix," \
- " n.reservations_in_subnet," \
- " n.reservations_out_of_pool," \
- " n.cache_threshold," \
- " n.cache_max_age," \
- " s.tag " \
- "FROM dhcp4_shared_network AS n " \
- server_join \
- "LEFT JOIN dhcp4_options AS o ON o.scope_id = 4 AND n.name = o.shared_network_name " \
- #__VA_ARGS__ \
- " ORDER BY n.id, s.id, o.option_id"
-
-#define PGSQL_GET_SHARED_NETWORK4_NO_TAG(...) \
- PGSQL_GET_SHARED_NETWORK4_COMMON( \
- "INNER JOIN dhcp4_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "INNER JOIN dhcp4_server AS s " \
- " ON (a.server_id = s.id) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SHARED_NETWORK4_ANY(...) \
- PGSQL_GET_SHARED_NETWORK4_COMMON( \
- "LEFT JOIN dhcp4_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "LEFT JOIN dhcp4_server AS s " \
- " ON a.server_id = s.id ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SHARED_NETWORK4_UNASSIGNED(...) \
- PGSQL_GET_SHARED_NETWORK4_COMMON( \
- "LEFT JOIN dhcp4_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "LEFT JOIN dhcp4_server AS s " \
- " ON a.server_id = s.id ", \
- WHERE a.shared_network_id IS NULL __VA_ARGS__)
+#define PGSQL_GET_SHARED_NETWORK4_COMMON(server_join, ...) \
+ "SELECT" \
+ " n.id," \
+ " n.name," \
+ " n.client_class," \
+ " n.interface," \
+ " n.match_client_id," \
+ " n.modification_ts," \
+ " n.rebind_timer," \
+ " n.relay," \
+ " n.renew_timer," \
+ " n.require_client_classes," \
+ " n.reservations_global," \
+ " n.user_context," \
+ " n.valid_lifetime," \
+ " o.option_id," \
+ " o.code," \
+ " o.value," \
+ " o.formatted_value," \
+ " o.space," \
+ " o.persistent," \
+ " o.dhcp4_subnet_id," \
+ " o.scope_id," \
+ " o.user_context," \
+ " o.shared_network_name," \
+ " o.pool_id," \
+ " o.modification_ts," \
+ " n.calculate_tee_times," \
+ " n.t1_percent," \
+ " n.t2_percent," \
+ " n.authoritative," \
+ " n.boot_file_name," \
+ " n.next_server," \
+ " n.server_hostname," \
+ " n.min_valid_lifetime," \
+ " n.max_valid_lifetime," \
+ " n.ddns_send_updates," \
+ " n.ddns_override_no_update," \
+ " n.ddns_override_client_update," \
+ " n.ddns_replace_client_name," \
+ " n.ddns_generated_prefix," \
+ " n.ddns_qualifying_suffix," \
+ " n.reservations_in_subnet," \
+ " n.reservations_out_of_pool," \
+ " n.cache_threshold," \
+ " n.cache_max_age," \
+ " s.tag " \
+ "FROM dhcp4_shared_network AS n " server_join \
+ "LEFT JOIN dhcp4_options AS o ON o.scope_id = 4 AND n.name = " \
+ "o.shared_network_name " #__VA_ARGS__ " ORDER BY n.id, s.id, o.option_id"
+
+#define PGSQL_GET_SHARED_NETWORK4_NO_TAG(...) \
+ PGSQL_GET_SHARED_NETWORK4_COMMON("INNER JOIN dhcp4_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "INNER JOIN dhcp4_server AS s " \
+ " ON (a.server_id = s.id) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SHARED_NETWORK4_ANY(...) \
+ PGSQL_GET_SHARED_NETWORK4_COMMON("LEFT JOIN dhcp4_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "LEFT JOIN dhcp4_server AS s " \
+ " ON a.server_id = s.id ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SHARED_NETWORK4_UNASSIGNED(...) \
+ PGSQL_GET_SHARED_NETWORK4_COMMON("LEFT JOIN dhcp4_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "LEFT JOIN dhcp4_server AS s " \
+ " ON a.server_id = s.id ", \
+ WHERE a.shared_network_id IS NULL __VA_ARGS__)
#endif
#ifndef PGSQL_GET_SHARED_NETWORK6
-#define PGSQL_GET_SHARED_NETWORK6_COMMON(server_join, ...) \
- "SELECT" \
- " n.id," \
- " n.name," \
- " n.client_class," \
- " n.interface," \
- " n.modification_ts," \
- " n.preferred_lifetime," \
- " n.rapid_commit," \
- " n.rebind_timer," \
- " n.relay," \
- " n.renew_timer," \
- " n.require_client_classes," \
- " n.reservations_global," \
- " n.user_context," \
- " n.valid_lifetime," \
- " o.option_id," \
- " o.code," \
- " o.value," \
- " o.formatted_value," \
- " o.space," \
- " o.persistent," \
- " o.dhcp6_subnet_id," \
- " o.scope_id," \
- " o.user_context," \
- " o.shared_network_name," \
- " o.pool_id," \
- " o.modification_ts," \
- " o.pd_pool_id, " \
- " n.calculate_tee_times," \
- " n.t1_percent," \
- " n.t2_percent," \
- " n.interface_id," \
- " n.min_preferred_lifetime," \
- " n.max_preferred_lifetime," \
- " n.min_valid_lifetime," \
- " n.max_valid_lifetime," \
- " n.ddns_send_updates," \
- " n.ddns_override_no_update," \
- " n.ddns_override_client_update," \
- " n.ddns_replace_client_name," \
- " n.ddns_generated_prefix," \
- " n.ddns_qualifying_suffix," \
- " n.reservations_in_subnet," \
- " n.reservations_out_of_pool," \
- " n.cache_threshold," \
- " n.cache_max_age," \
- " s.tag " \
- "FROM dhcp6_shared_network AS n " \
- server_join \
- "LEFT JOIN dhcp6_options AS o ON o.scope_id = 4 AND n.name = o.shared_network_name " \
- #__VA_ARGS__ \
- " ORDER BY n.id, s.id, o.option_id"
-
-#define PGSQL_GET_SHARED_NETWORK6_NO_TAG(...) \
- PGSQL_GET_SHARED_NETWORK6_COMMON( \
- "INNER JOIN dhcp6_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "INNER JOIN dhcp6_server AS s " \
- " ON (a.server_id = s.id) ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SHARED_NETWORK6_ANY(...) \
- PGSQL_GET_SHARED_NETWORK6_COMMON( \
- "LEFT JOIN dhcp6_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "LEFT JOIN dhcp6_server AS s " \
- " ON a.server_id = s.id ", \
- __VA_ARGS__)
-
-#define PGSQL_GET_SHARED_NETWORK6_UNASSIGNED(...) \
- PGSQL_GET_SHARED_NETWORK6_COMMON( \
- "LEFT JOIN dhcp6_shared_network_server AS a " \
- " ON n.id = a.shared_network_id " \
- "LEFT JOIN dhcp6_server AS s " \
- " ON a.server_id = s.id ", \
- WHERE a.shared_network_id IS NULL __VA_ARGS__)
+#define PGSQL_GET_SHARED_NETWORK6_COMMON(server_join, ...) \
+ "SELECT" \
+ " n.id," \
+ " n.name," \
+ " n.client_class," \
+ " n.interface," \
+ " n.modification_ts," \
+ " n.preferred_lifetime," \
+ " n.rapid_commit," \
+ " n.rebind_timer," \
+ " n.relay," \
+ " n.renew_timer," \
+ " n.require_client_classes," \
+ " n.reservations_global," \
+ " n.user_context," \
+ " n.valid_lifetime," \
+ " o.option_id," \
+ " o.code," \
+ " o.value," \
+ " o.formatted_value," \
+ " o.space," \
+ " o.persistent," \
+ " o.dhcp6_subnet_id," \
+ " o.scope_id," \
+ " o.user_context," \
+ " o.shared_network_name," \
+ " o.pool_id," \
+ " o.modification_ts," \
+ " o.pd_pool_id, " \
+ " n.calculate_tee_times," \
+ " n.t1_percent," \
+ " n.t2_percent," \
+ " n.interface_id," \
+ " n.min_preferred_lifetime," \
+ " n.max_preferred_lifetime," \
+ " n.min_valid_lifetime," \
+ " n.max_valid_lifetime," \
+ " n.ddns_send_updates," \
+ " n.ddns_override_no_update," \
+ " n.ddns_override_client_update," \
+ " n.ddns_replace_client_name," \
+ " n.ddns_generated_prefix," \
+ " n.ddns_qualifying_suffix," \
+ " n.reservations_in_subnet," \
+ " n.reservations_out_of_pool," \
+ " n.cache_threshold," \
+ " n.cache_max_age," \
+ " s.tag " \
+ "FROM dhcp6_shared_network AS n " server_join \
+ "LEFT JOIN dhcp6_options AS o ON o.scope_id = 4 AND n.name = " \
+ "o.shared_network_name " #__VA_ARGS__ " ORDER BY n.id, s.id, o.option_id"
+
+#define PGSQL_GET_SHARED_NETWORK6_NO_TAG(...) \
+ PGSQL_GET_SHARED_NETWORK6_COMMON("INNER JOIN dhcp6_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "INNER JOIN dhcp6_server AS s " \
+ " ON (a.server_id = s.id) ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SHARED_NETWORK6_ANY(...) \
+ PGSQL_GET_SHARED_NETWORK6_COMMON("LEFT JOIN dhcp6_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "LEFT JOIN dhcp6_server AS s " \
+ " ON a.server_id = s.id ", \
+ __VA_ARGS__)
+
+#define PGSQL_GET_SHARED_NETWORK6_UNASSIGNED(...) \
+ PGSQL_GET_SHARED_NETWORK6_COMMON("LEFT JOIN dhcp6_shared_network_server AS a " \
+ " ON n.id = a.shared_network_id " \
+ "LEFT JOIN dhcp6_server AS s " \
+ " ON a.server_id = s.id ", \
+ WHERE a.shared_network_id IS NULL __VA_ARGS__)
#endif
#ifndef PGSQL_GET_OPTION_DEF
-#define PGSQL_GET_OPTION_DEF(table_prefix, ...) \
- "SELECT" \
- " d.id," \
- " d.code," \
- " d.name," \
- " d.space," \
- " d.type," \
- " d.modification_ts," \
- " d.is_array," \
- " d.encapsulate," \
- " d.record_types," \
- " d.user_context," \
- " s.tag " \
- "FROM " #table_prefix "_option_def AS d " \
+#define PGSQL_GET_OPTION_DEF(table_prefix, ...) \
+ "SELECT" \
+ " d.id," \
+ " d.code," \
+ " d.name," \
+ " d.space," \
+ " d.type," \
+ " d.modification_ts," \
+ " d.is_array," \
+ " d.encapsulate," \
+ " d.record_types," \
+ " d.user_context," \
+ " s.tag " \
+ "FROM " #table_prefix "_option_def AS d " \
"INNER JOIN " #table_prefix "_option_def_server AS a" \
- " ON d.id = a.option_def_id " \
- "INNER JOIN " #table_prefix "_server AS s " \
- " ON a.server_id = s.id " \
- "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ \
- " ORDER BY d.id"
+ " ON d.id = a.option_def_id " \
+ "INNER JOIN " #table_prefix "_server AS s " \
+ " ON a.server_id = s.id " \
+ "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ " ORDER BY d.id"
#endif
#ifndef PGSQL_GET_OPTION_COMMON
-#define PGSQL_GET_OPTION_COMMON(table_prefix, pd_pool_id, ...) \
- "SELECT" \
- " o.option_id," \
- " o.code," \
- " o.value," \
- " o.formatted_value," \
- " o.space," \
- " o.persistent," \
- " o." #table_prefix "_subnet_id," \
- " o.scope_id," \
- " o.user_context," \
- " o.shared_network_name," \
- " o.pool_id," \
- " o.modification_ts," \
- " s.tag " \
- pd_pool_id \
- "FROM " #table_prefix "_options AS o " \
- "INNER JOIN " #table_prefix "_options_server AS a" \
- " ON o.option_id = a.option_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
- "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ \
- " ORDER BY o.option_id, s.id"
-
-#define PGSQL_GET_OPTION4(...) \
- PGSQL_GET_OPTION_COMMON(dhcp4, "", __VA_ARGS__)
-#define PGSQL_GET_OPTION6(...) \
- PGSQL_GET_OPTION_COMMON(dhcp6, ", o.pd_pool_id ", __VA_ARGS__)
+#define PGSQL_GET_OPTION_COMMON(table_prefix, pd_pool_id, ...) \
+ "SELECT" \
+ " o.option_id," \
+ " o.code," \
+ " o.value," \
+ " o.formatted_value," \
+ " o.space," \
+ " o.persistent," \
+ " o." #table_prefix "_subnet_id," \
+ " o.scope_id," \
+ " o.user_context," \
+ " o.shared_network_name," \
+ " o.pool_id," \
+ " o.modification_ts," \
+ " s.tag " pd_pool_id "FROM " #table_prefix "_options AS o " \
+ "INNER JOIN " #table_prefix "_options_server AS a" \
+ " ON o.option_id = a.option_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " \
+ "WHERE (s.tag = ? OR s.id = 1) " #__VA_ARGS__ " ORDER BY o.option_id, s.id"
+
+#define PGSQL_GET_OPTION4(...) PGSQL_GET_OPTION_COMMON(dhcp4, "", __VA_ARGS__)
+#define PGSQL_GET_OPTION6(...) PGSQL_GET_OPTION_COMMON(dhcp6, ", o.pd_pool_id ", __VA_ARGS__)
#endif
#ifndef PGSQL_GET_AUDIT_ENTRIES_TIME
-#define PGSQL_GET_AUDIT_ENTRIES_TIME(table_prefix) \
- "SELECT" \
- " a.id," \
- " a.object_type," \
- " a.object_id," \
- " a.modification_type," \
- " r.modification_ts," \
- " r.id, " \
- " r.log_message " \
- "FROM " #table_prefix "_audit AS a " \
- "INNER JOIN " #table_prefix "_audit_revision AS r " \
- " ON a.revision_id = r.id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON r.server_id = s.id " \
+#define PGSQL_GET_AUDIT_ENTRIES_TIME(table_prefix) \
+ "SELECT" \
+ " a.id," \
+ " a.object_type," \
+ " a.object_id," \
+ " a.modification_type," \
+ " r.modification_ts," \
+ " r.id, " \
+ " r.log_message " \
+ "FROM " #table_prefix "_audit AS a " \
+ "INNER JOIN " #table_prefix "_audit_revision AS r " \
+ " ON a.revision_id = r.id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON r.server_id = s.id " \
"WHERE (s.tag = ? OR s.id = 1) AND ((r.modification_ts, r.id) > (?, ?))" \
" ORDER BY r.modification_ts, r.id"
#endif
#ifndef PGSQL_GET_SERVERS_COMMON
#define PGSQL_GET_SERVERS_COMMON(table_prefix, ...) \
- "SELECT" \
- " s.id," \
- " s.tag," \
- " s.description," \
- " s.modification_ts " \
- "FROM " #table_prefix "_server AS s " \
- "WHERE s.id > 1 " \
- __VA_ARGS__ \
- "ORDER BY s.id"
-#define PGSQL_GET_ALL_SERVERS(table_prefix) \
- PGSQL_GET_SERVERS_COMMON(table_prefix, "")
-#define PGSQL_GET_SERVER(table_prefix) \
- PGSQL_GET_SERVERS_COMMON(table_prefix, "AND s.tag = ? ")
+ "SELECT" \
+ " s.id," \
+ " s.tag," \
+ " s.description," \
+ " s.modification_ts " \
+ "FROM " #table_prefix "_server AS s " \
+ "WHERE s.id > 1 " __VA_ARGS__ "ORDER BY s.id"
+#define PGSQL_GET_ALL_SERVERS(table_prefix) PGSQL_GET_SERVERS_COMMON(table_prefix, "")
+#define PGSQL_GET_SERVER(table_prefix) PGSQL_GET_SERVERS_COMMON(table_prefix, "AND s.tag = ? ")
#endif
#ifndef PGSQL_INSERT_GLOBAL_PARAMETER
-#define PGSQL_INSERT_GLOBAL_PARAMETER(table_prefix) \
+#define PGSQL_INSERT_GLOBAL_PARAMETER(table_prefix) \
"INSERT INTO " #table_prefix "_global_parameter(" \
- " name," \
- " value," \
- " parameter_type," \
- " modification_ts" \
+ " name," \
+ " value," \
+ " parameter_type," \
+ " modification_ts" \
") VALUES (?, ?, ?, ?)"
#endif
#ifndef PGSQL_INSERT_GLOBAL_PARAMETER_SERVER
-#define PGSQL_INSERT_GLOBAL_PARAMETER_SERVER(table_prefix) \
+#define PGSQL_INSERT_GLOBAL_PARAMETER_SERVER(table_prefix) \
"INSERT INTO " #table_prefix "_global_parameter_server(" \
- " parameter_id," \
- " modification_ts," \
- " server_id" \
+ " parameter_id," \
+ " modification_ts," \
+ " server_id" \
") VALUES (?, ?, (SELECT id FROM " #table_prefix "_server WHERE tag = ?))"
#endif
#ifndef PGSQL_INSERT_SUBNET_SERVER
-#define PGSQL_INSERT_SUBNET_SERVER(table_prefix) \
+#define PGSQL_INSERT_SUBNET_SERVER(table_prefix) \
"INSERT INTO " #table_prefix "_subnet_server(" \
- " subnet_id," \
- " modification_ts," \
- " server_id" \
+ " subnet_id," \
+ " modification_ts," \
+ " server_id" \
") VALUES (?, ?, (SELECT id FROM " #table_prefix "_server WHERE tag = ?))"
#endif
#ifndef PGSQL_INSERT_POOL
-#define PGSQL_INSERT_POOL(table_prefix) \
+#define PGSQL_INSERT_POOL(table_prefix) \
"INSERT INTO " #table_prefix "_pool(" \
- " start_address," \
- " end_address," \
- " subnet_id," \
- " client_class," \
- " require_client_classes," \
- " user_context," \
- " modification_ts" \
+ " start_address," \
+ " end_address," \
+ " subnet_id," \
+ " client_class," \
+ " require_client_classes," \
+ " user_context," \
+ " modification_ts" \
") VALUES (?, ?, ?, ?, ?, ?, ?)"
#endif
#ifndef PGSQL_INSERT_PD_POOL
-#define PGSQL_INSERT_PD_POOL() \
+#define PGSQL_INSERT_PD_POOL() \
"INSERT INTO dhcp6_pd_pool(" \
- " prefix," \
- " prefix_length," \
+ " prefix," \
+ " prefix_length," \
" delegated_prefix_length," \
- " subnet_id," \
- " excluded_prefix," \
- " excluded_prefix_length," \
- " client_class," \
- " require_client_classes," \
- " user_context," \
- " modification_ts" \
+ " subnet_id," \
+ " excluded_prefix," \
+ " excluded_prefix_length," \
+ " client_class," \
+ " require_client_classes," \
+ " user_context," \
+ " modification_ts" \
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
#endif
#ifndef PGSQL_INSERT_SHARED_NETWORK_SERVER
-#define PGSQL_INSERT_SHARED_NETWORK_SERVER(table_prefix) \
- "INSERT INTO " #table_prefix "_shared_network_server(" \
- " shared_network_id," \
- " modification_ts," \
- " server_id" \
- ") VALUES (" \
+#define PGSQL_INSERT_SHARED_NETWORK_SERVER(table_prefix) \
+ "INSERT INTO " #table_prefix "_shared_network_server(" \
+ " shared_network_id," \
+ " modification_ts," \
+ " server_id" \
+ ") VALUES (" \
" (SELECT id FROM " #table_prefix "_shared_network WHERE name = ?), ?," \
- " (SELECT id FROM " #table_prefix "_server WHERE tag = ?)" \
+ " (SELECT id FROM " #table_prefix "_server WHERE tag = ?)" \
")"
#endif
#ifndef PGSQL_INSERT_OPTION_DEF
-#define PGSQL_INSERT_OPTION_DEF(table_prefix) \
+#define PGSQL_INSERT_OPTION_DEF(table_prefix) \
"INSERT INTO " #table_prefix "_option_def (" \
- " code," \
- " name," \
- " space," \
- " type," \
- " modification_ts," \
- " is_array," \
- " encapsulate," \
- " record_types," \
- " user_context" \
+ " code," \
+ " name," \
+ " space," \
+ " type," \
+ " modification_ts," \
+ " is_array," \
+ " encapsulate," \
+ " record_types," \
+ " user_context" \
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
#endif
#ifndef PGSQL_INSERT_OPTION_DEF_SERVER
-#define PGSQL_INSERT_OPTION_DEF_SERVER(table_prefix) \
+#define PGSQL_INSERT_OPTION_DEF_SERVER(table_prefix) \
"INSERT INTO " #table_prefix "_option_def_server(" \
- " option_def_id," \
- " modification_ts," \
- " server_id" \
+ " option_def_id," \
+ " modification_ts," \
+ " server_id" \
") VALUES (?, ?, (SELECT id FROM " #table_prefix "_server WHERE tag = ?))"
#endif
#ifndef PGSQL_INSERT_OPTION_COMMON
#define PGSQL_INSERT_OPTION_COMMON(table_prefix, pd_pool_id, last) \
- "INSERT INTO " #table_prefix "_options (" \
- " code," \
- " value," \
- " formatted_value," \
- " space," \
- " persistent," \
- " dhcp_client_class," \
- " " #table_prefix "_subnet_id," \
- " scope_id," \
- " user_context," \
- " shared_network_name," \
- " pool_id," \
- " modification_ts" \
- pd_pool_id \
- ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" last ")"
-
-#define PGSQL_INSERT_OPTION4() \
- PGSQL_INSERT_OPTION_COMMON(dhcp4, "", "")
-#define PGSQL_INSERT_OPTION6() \
- PGSQL_INSERT_OPTION_COMMON(dhcp6, ", pd_pool_id ", ", ?")
+ "INSERT INTO " #table_prefix "_options (" \
+ " code," \
+ " value," \
+ " formatted_value," \
+ " space," \
+ " persistent," \
+ " dhcp_client_class," \
+ " " #table_prefix "_subnet_id," \
+ " scope_id," \
+ " user_context," \
+ " shared_network_name," \
+ " pool_id," \
+ " modification_ts" pd_pool_id ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" last ")"
+
+#define PGSQL_INSERT_OPTION4() PGSQL_INSERT_OPTION_COMMON(dhcp4, "", "")
+#define PGSQL_INSERT_OPTION6() PGSQL_INSERT_OPTION_COMMON(dhcp6, ", pd_pool_id ", ", ?")
#endif
#ifndef PGSQL_INSERT_OPTION_SERVER
-#define PGSQL_INSERT_OPTION_SERVER(table_prefix) \
+#define PGSQL_INSERT_OPTION_SERVER(table_prefix) \
"INSERT INTO " #table_prefix "_options_server (" \
- " option_id," \
- " modification_ts," \
- " server_id" \
+ " option_id," \
+ " modification_ts," \
+ " server_id" \
") VALUES (?, ?, (SELECT id FROM " #table_prefix "_server WHERE tag = ?))"
#endif
#ifndef PGSQL_INSERT_SERVER
-#define PGSQL_INSERT_SERVER(table_prefix) \
+#define PGSQL_INSERT_SERVER(table_prefix) \
"INSERT INTO " #table_prefix "_server (" \
- " tag," \
- " description," \
- " modification_ts" \
+ " tag," \
+ " description," \
+ " modification_ts" \
") VALUES (?, ?, ?)"
#endif
#ifndef PGSQL_UPDATE_GLOBAL_PARAMETER
-#define PGSQL_UPDATE_GLOBAL_PARAMETER(table_prefix) \
- "UPDATE " #table_prefix "_global_parameter AS g " \
+#define PGSQL_UPDATE_GLOBAL_PARAMETER(table_prefix) \
+ "UPDATE " #table_prefix "_global_parameter AS g " \
"INNER JOIN " #table_prefix "_global_parameter_server AS a" \
- " ON g.id = a.parameter_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
- "SET" \
- " g.name = ?," \
- " g.value = ?," \
- " g.parameter_type = ?," \
- " g.modification_ts = ? " \
+ " ON g.id = a.parameter_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " \
+ "SET" \
+ " g.name = ?," \
+ " g.value = ?," \
+ " g.parameter_type = ?," \
+ " g.modification_ts = ? " \
"WHERE s.tag = ? AND g.name = ?"
#endif
#ifndef PGSQL_UPDATE_OPTION_DEF
-#define PGSQL_UPDATE_OPTION_DEF(table_prefix) \
- "UPDATE " #table_prefix "_option_def AS d " \
+#define PGSQL_UPDATE_OPTION_DEF(table_prefix) \
+ "UPDATE " #table_prefix "_option_def AS d " \
"INNER JOIN " #table_prefix "_option_def_server AS a" \
- " ON d.id = a.option_def_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
- "SET" \
- " d.code = ?," \
- " d.name = ?," \
- " d.space = ?," \
- " d.type = ?," \
- " d.modification_ts = ?," \
- " d.is_array = ?," \
- " d.encapsulate = ?," \
- " d.record_types = ?," \
- " d.user_context = ? " \
+ " ON d.id = a.option_def_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " \
+ "SET" \
+ " d.code = ?," \
+ " d.name = ?," \
+ " d.space = ?," \
+ " d.type = ?," \
+ " d.modification_ts = ?," \
+ " d.is_array = ?," \
+ " d.encapsulate = ?," \
+ " d.record_types = ?," \
+ " d.user_context = ? " \
"WHERE s.tag = ? AND d.code = ? AND d.space = ?"
#endif
#ifndef PGSQL_UPDATE_OPTION_COMMON
#define PGSQL_UPDATE_OPTION_COMMON(table_prefix, server_join, pd_pool_id, ...) \
- "UPDATE " #table_prefix "_options AS o " \
- server_join \
- "SET" \
- " o.code = ?," \
- " o.value = ?," \
- " o.formatted_value = ?," \
- " o.space = ?," \
- " o.persistent = ?," \
- " o.dhcp_client_class = ?," \
- " o." #table_prefix "_subnet_id = ?," \
- " o.scope_id = ?," \
- " o.user_context = ?," \
- " o.shared_network_name = ?," \
- " o.pool_id = ?," \
- " o.modification_ts = ? " \
- pd_pool_id \
- "WHERE " #__VA_ARGS__
+ "UPDATE " #table_prefix "_options AS o " server_join "SET" \
+ " o.code = ?," \
+ " o.value = ?," \
+ " o.formatted_value = ?," \
+ " o.space = ?," \
+ " o.persistent = ?," \
+ " o.dhcp_client_class = ?," \
+ " o." #table_prefix "_subnet_id = ?," \
+ " o.scope_id = ?," \
+ " o.user_context = ?," \
+ " o.shared_network_name = ?," \
+ " o.pool_id = ?," \
+ " o.modification_ts = ? " pd_pool_id "WHERE " #__VA_ARGS__
#define PGSQL_UPDATE_OPTION4_WITH_TAG(...) \
PGSQL_UPDATE_OPTION_COMMON(dhcp4, \
" ON a.server_id = s.id ", \
"", s.tag = ? __VA_ARGS__)
-#define PGSQL_UPDATE_OPTION4_NO_TAG(...) \
- PGSQL_UPDATE_OPTION_COMMON(dhcp4, "", "", __VA_ARGS__)
+#define PGSQL_UPDATE_OPTION4_NO_TAG(...) PGSQL_UPDATE_OPTION_COMMON(dhcp4, "", "", __VA_ARGS__)
#define PGSQL_UPDATE_OPTION6_WITH_TAG(...) \
PGSQL_UPDATE_OPTION_COMMON(dhcp6, \
#ifndef PGSQL_UPDATE_SERVER
#define PGSQL_UPDATE_SERVER(table_prefix) \
- "UPDATE " #table_prefix "_server " \
- "SET" \
- " tag = ?," \
- " description = ?," \
- " modification_ts = ? " \
+ "UPDATE " #table_prefix "_server " \
+ "SET" \
+ " tag = ?," \
+ " description = ?," \
+ " modification_ts = ? " \
"WHERE tag = ?"
#endif
#ifndef PGSQL_DELETE_GLOBAL_PARAMETER
-#define PGSQL_DELETE_GLOBAL_PARAMETER(table_prefix, ...) \
- "DELETE g FROM " #table_prefix "_global_parameter AS g " \
+#define PGSQL_DELETE_GLOBAL_PARAMETER(table_prefix, ...) \
+ "DELETE g FROM " #table_prefix "_global_parameter AS g " \
"INNER JOIN " #table_prefix "_global_parameter_server AS a " \
- " ON g.id = a.parameter_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON (a.server_id = s.id) " \
+ " ON g.id = a.parameter_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON (a.server_id = s.id) " \
"WHERE s.tag = ? " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_GLOBAL_PARAMETER_UNASSIGNED
#define PGSQL_DELETE_GLOBAL_PARAMETER_UNASSIGNED(table_prefix, ...) \
- "DELETE g FROM " #table_prefix "_global_parameter AS g " \
- "LEFT JOIN " #table_prefix "_global_parameter_server AS a " \
- " ON g.id = a.parameter_id " \
+ "DELETE g FROM " #table_prefix "_global_parameter AS g " \
+ "LEFT JOIN " #table_prefix "_global_parameter_server AS a " \
+ " ON g.id = a.parameter_id " \
"WHERE a.parameter_id IS NULL " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_SUBNET
-#define PGSQL_DELETE_SUBNET_COMMON(table_prefix, ...) \
- "DELETE s FROM " #table_prefix "_subnet AS s " \
+#define PGSQL_DELETE_SUBNET_COMMON(table_prefix, ...) \
+ "DELETE s FROM " #table_prefix "_subnet AS s " \
"INNER JOIN " #table_prefix "_subnet_server AS a " \
- " ON s.subnet_id = a.subnet_id " \
- "INNER JOIN " #table_prefix "_server AS srv" \
- " ON a.server_id = srv.id " \
- #__VA_ARGS__
+ " ON s.subnet_id = a.subnet_id " \
+ "INNER JOIN " #table_prefix "_server AS srv" \
+ " ON a.server_id = srv.id " #__VA_ARGS__
#define PGSQL_DELETE_SUBNET_WITH_TAG(table_prefix, ...) \
PGSQL_DELETE_SUBNET_COMMON(table_prefix, WHERE srv.tag = ? __VA_ARGS__)
#define PGSQL_DELETE_SUBNET_ANY(table_prefix, ...) \
- "DELETE s FROM " #table_prefix "_subnet AS s " \
- #__VA_ARGS__
+ "DELETE s FROM " #table_prefix "_subnet AS s " #__VA_ARGS__
#define PGSQL_DELETE_SUBNET_UNASSIGNED(table_prefix, ...) \
- "DELETE s FROM " #table_prefix "_subnet AS s " \
- "LEFT JOIN " #table_prefix "_subnet_server AS a" \
- " ON s.subnet_id = a.subnet_id " \
+ "DELETE s FROM " #table_prefix "_subnet AS s " \
+ "LEFT JOIN " #table_prefix "_subnet_server AS a" \
+ " ON s.subnet_id = a.subnet_id " \
"WHERE a.subnet_id IS NULL " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_SUBNET_SERVER
-#define PGSQL_DELETE_SUBNET_SERVER(table_prefix) \
+#define PGSQL_DELETE_SUBNET_SERVER(table_prefix) \
"DELETE FROM " #table_prefix "_subnet_server " \
"WHERE subnet_id = ?"
#endif
#ifndef PGSQL_DELETE_POOLS
-#define PGSQL_DELETE_POOLS(table_prefix) \
- "DELETE FROM " #table_prefix "_pool " \
- "WHERE subnet_id = ? OR subnet_id = " \
+#define PGSQL_DELETE_POOLS(table_prefix) \
+ "DELETE FROM " #table_prefix "_pool " \
+ "WHERE subnet_id = ? OR subnet_id = " \
"(SELECT subnet_id FROM " #table_prefix "_subnet" \
" WHERE subnet_prefix = ?)"
#endif
#ifndef PGSQL_DELETE_PD_POOLS
-#define PGSQL_DELETE_PD_POOLS() \
- "DELETE FROM dhcp6_pd_pool " \
+#define PGSQL_DELETE_PD_POOLS() \
+ "DELETE FROM dhcp6_pd_pool " \
"WHERE subnet_id = ? OR subnet_id = " \
"(SELECT subnet_id FROM dhcp6_subnet" \
" WHERE subnet_prefix = ?)"
#ifndef PGSQL_DELETE_SHARED_NETWORK_COMMON
#define PGSQL_DELETE_SHARED_NETWORK_COMMON(table_prefix, ...) \
- "DELETE n FROM " #table_prefix "_shared_network AS n " \
+ "DELETE n FROM " #table_prefix "_shared_network AS n " \
"INNER JOIN " #table_prefix "_shared_network_server AS a" \
- " ON n.id = a.shared_network_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
- #__VA_ARGS__
+ " ON n.id = a.shared_network_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " #__VA_ARGS__
#define PGSQL_DELETE_SHARED_NETWORK_WITH_TAG(table_prefix, ...) \
PGSQL_DELETE_SHARED_NETWORK_COMMON(table_prefix, WHERE s.tag = ? __VA_ARGS__)
#define PGSQL_DELETE_SHARED_NETWORK_ANY(table_prefix, ...) \
- "DELETE n FROM " #table_prefix "_shared_network AS n " \
- #__VA_ARGS__
+ "DELETE n FROM " #table_prefix "_shared_network AS n " #__VA_ARGS__
#define PGSQL_DELETE_SHARED_NETWORK_UNASSIGNED(table_prefix, ...) \
- "DELETE n FROM " #table_prefix "_shared_network AS n " \
- "LEFT JOIN " #table_prefix "_shared_network_server AS a" \
- " ON n.id = a.shared_network_id " \
+ "DELETE n FROM " #table_prefix "_shared_network AS n " \
+ "LEFT JOIN " #table_prefix "_shared_network_server AS a" \
+ " ON n.id = a.shared_network_id " \
"WHERE a.shared_network_id IS NULL " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_SHARED_NETWORK_SERVER
-#define PGSQL_DELETE_SHARED_NETWORK_SERVER(table_prefix) \
+#define PGSQL_DELETE_SHARED_NETWORK_SERVER(table_prefix) \
"DELETE FROM " #table_prefix "_shared_network_server " \
- "WHERE shared_network_id = " \
+ "WHERE shared_network_id = " \
"(SELECT id FROM " #table_prefix "_shared_network WHERE name = ?)"
#endif
#ifndef PGSQL_DELETE_OPTION_DEF
-#define PGSQL_DELETE_OPTION_DEF(table_prefix, ...) \
- "DELETE d FROM " #table_prefix "_option_def AS d " \
+#define PGSQL_DELETE_OPTION_DEF(table_prefix, ...) \
+ "DELETE d FROM " #table_prefix "_option_def AS d " \
"INNER JOIN " #table_prefix "_option_def_server AS a" \
- " ON d.id = a.option_def_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
+ " ON d.id = a.option_def_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " \
"WHERE s.tag = ? " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_OPTION_DEF_UNASSIGNED
#define PGSQL_DELETE_OPTION_DEF_UNASSIGNED(table_prefix, ...) \
- "DELETE d FROM " #table_prefix "_option_def AS d " \
- "LEFT JOIN " #table_prefix "_option_def_server AS a " \
- " ON d.id = a.option_def_id " \
+ "DELETE d FROM " #table_prefix "_option_def AS d " \
+ "LEFT JOIN " #table_prefix "_option_def_server AS a " \
+ " ON d.id = a.option_def_id " \
"WHERE a.option_def_id IS NULL " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_OPTION_WITH_TAG
#define PGSQL_DELETE_OPTION_WITH_TAG(table_prefix, ...) \
- "DELETE o FROM " #table_prefix "_options AS o " \
- "INNER JOIN " #table_prefix "_options_server AS a" \
- " ON o.option_id = a.option_id " \
- "INNER JOIN " #table_prefix "_server AS s" \
- " ON a.server_id = s.id " \
+ "DELETE o FROM " #table_prefix "_options AS o " \
+ "INNER JOIN " #table_prefix "_options_server AS a" \
+ " ON o.option_id = a.option_id " \
+ "INNER JOIN " #table_prefix "_server AS s" \
+ " ON a.server_id = s.id " \
"WHERE s.tag = ? " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_OPTION_NO_TAG
#define PGSQL_DELETE_OPTION_NO_TAG(table_prefix, ...) \
- "DELETE o FROM " #table_prefix "_options AS o " \
- #__VA_ARGS__
+ "DELETE o FROM " #table_prefix "_options AS o " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_OPTION_SUBNET_ID_PREFIX
#define PGSQL_DELETE_OPTION_SUBNET_ID_PREFIX(table_prefix) \
- "DELETE o FROM " #table_prefix "_options AS o " \
- "INNER JOIN " #table_prefix "_subnet AS s " \
- " ON s.subnet_id = o." #table_prefix "_subnet_id " \
+ "DELETE o FROM " #table_prefix "_options AS o " \
+ "INNER JOIN " #table_prefix "_subnet AS s " \
+ " ON s.subnet_id = o." #table_prefix "_subnet_id " \
"WHERE o.scope_id = 1 AND (s.subnet_id = ? OR s.subnet_prefix = ?)"
#endif
#ifndef PGSQL_DELETE_OPTION_UNASSIGNED
#define PGSQL_DELETE_OPTION_UNASSIGNED(table_prefix, ...) \
- "DELETE o FROM " #table_prefix "_options AS o " \
- "LEFT JOIN " #table_prefix "_options_server AS a " \
- " ON o.option_id = a.option_id " \
+ "DELETE o FROM " #table_prefix "_options AS o " \
+ "LEFT JOIN " #table_prefix "_options_server AS a " \
+ " ON o.option_id = a.option_id " \
"WHERE a.option_id IS NULL " #__VA_ARGS__
#endif
#ifndef PGSQL_DELETE_OPTION_POOL_RANGE
#define PGSQL_DELETE_OPTION_POOL_RANGE(table_prefix, ...) \
- "DELETE o FROM " #table_prefix "_options AS o " \
- "WHERE " #__VA_ARGS__ \
- " AND o.pool_id = " \
- " (SELECT id FROM " #table_prefix "_pool" \
+ "DELETE o FROM " #table_prefix "_options AS o " \
+ "WHERE " #__VA_ARGS__ " AND o.pool_id = " \
+ " (SELECT id FROM " #table_prefix "_pool" \
" WHERE start_address = ? AND end_address = ?)"
#endif
#ifndef PGSQL_DELETE_OPTION_PD_POOL
-#define PGSQL_DELETE_OPTION_PD_POOL(...) \
- "DELETE o FROM dhcp6_options AS o " \
- "WHERE " #__VA_ARGS__ \
- " AND o.pd_pool_id = " \
- " (SELECT id FROM dhcp6_pd_pool" \
+#define PGSQL_DELETE_OPTION_PD_POOL(...) \
+ "DELETE o FROM dhcp6_options AS o " \
+ "WHERE " #__VA_ARGS__ " AND o.pd_pool_id = " \
+ " (SELECT id FROM dhcp6_pd_pool" \
" WHERE prefix = ? AND prefix_length = ?)"
#endif
#ifndef PGSQL_DELETE_SERVER
-#define PGSQL_DELETE_SERVER(table_prefix) \
+#define PGSQL_DELETE_SERVER(table_prefix) \
"DELETE FROM " #table_prefix "_server " \
"WHERE tag = ?"
#endif
#ifndef PGSQL_DELETE_ALL_SERVERS
#define PGSQL_DELETE_ALL_SERVERS(table_prefix) \
- "DELETE FROM " #table_prefix "_server " \
+ "DELETE FROM " #table_prefix "_server " \
"WHERE id > 1"
#endif
-} // end of anonymous namespace
+} // end of anonymous namespace
-} // end of namespace isc::dhcp
-} // end of namespace isc
+} // namespace dhcp
+} // end of namespace isc
#endif
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
+
#include <cc/stamped_value.h>
#include <dhcpsrv/config_backend_dhcp4_mgr.h>
-#include <pgsql_cb_dhcp4.h>
-#include <pgsql/testutils/pgsql_schema.h>
#include <dhcpsrv/testutils/generic_backend_unittest.h>
+#include <pgsql/testutils/pgsql_schema.h>
+
#include <boost/shared_ptr.hpp>
+
#include <gtest/gtest.h>
+#include <pgsql_cb_dhcp4.h>
using namespace isc::data;
using namespace isc::dhcp;
// Should be able to create a global parameter.
StampedValuePtr server_tag = StampedValue::create("server-tag", "whale");
- ASSERT_NO_THROW(mgr.getPool()->createUpdateGlobalParameter4(pgsql, ServerSelector::ALL(),
- server_tag));
+ ASSERT_NO_THROW(
+ mgr.getPool()->createUpdateGlobalParameter4(pgsql, ServerSelector::ALL(), server_tag));
// Verify parameter can be fetched.
server_tag.reset();
ASSERT_NO_THROW(server_tag = mgr.getPool()->getGlobalParameter4(pgsql, ServerSelector::ALL(),
NoSuchDatabase);
}
-}
+} // namespace
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
-#include <pgsql_cb_dhcp4.h>
-#include <pgsql_cb_impl.h>
+
#include <database/database_connection.h>
#include <database/db_exceptions.h>
#include <database/server.h>
#include <testutils/multi_threading_utils.h>
#include <boost/shared_ptr.hpp>
+
#include <gtest/gtest.h>
#include <map>
+#include <pgsql_cb_dhcp4.h>
+#include <pgsql_cb_impl.h>
#include <sstream>
using namespace isc;
/// It exposes protected members of the @c PgSqlConfigBackendDHCPv4.
class TestPgSqlConfigBackendDHCPv4 : public PgSqlConfigBackendDHCPv4 {
public:
-
/// @brief Constructor.
///
/// @param parameters A data structure relating keywords and values
}
using PgSqlConfigBackendDHCPv4::base_impl_;
-
};
/// @brief Test fixture class for @c PgSqlConfigBackendDHCPv4.
/// database.
class PgSqlConfigBackendDHCPv4Test : public PgSqlGenericBackendTest {
public:
-
/// @brief Constructor.
PgSqlConfigBackendDHCPv4Test()
- : test_subnets_(), test_networks_(), test_option_defs_(),
- test_options_(), test_servers_(), timestamps_(), cbptr_(),
- audit_entries_() {
+ : test_subnets_(), test_networks_(), test_option_defs_(), test_options_(), test_servers_(),
+ timestamps_(), cbptr_(), audit_entries_() {
// Ensure we have the proper schema with no transient data.
createPgSQLSchema();
Subnet4Ptr subnet(new Subnet4(IOAddress("192.0.2.0"), 24, 30, 40, 60, 1024));
subnet->get4o6().setIface4o6("eth0");
- subnet->get4o6().setInterfaceId(OptionPtr(new Option(Option::V6, D6O_INTERFACE_ID,
- interface_id)));
+ subnet->get4o6().setInterfaceId(
+ OptionPtr(new Option(Option::V6, D6O_INTERFACE_ID, interface_id)));
subnet->get4o6().setSubnet4o6(IOAddress("2001:db8:1::"), 64);
subnet->setFilename("/tmp/filename");
subnet->allowClientClass("home");
subnet->addPool(pool2);
// Add several options to the subnet.
- subnet->getCfgOption()->add(test_options_[0]->option_,
- test_options_[0]->persistent_,
+ subnet->getCfgOption()->add(test_options_[0]->option_, test_options_[0]->persistent_,
test_options_[0]->space_name_);
- subnet->getCfgOption()->add(test_options_[1]->option_,
- test_options_[1]->persistent_,
+ subnet->getCfgOption()->add(test_options_[1]->option_, test_options_[1]->persistent_,
test_options_[1]->space_name_);
- subnet->getCfgOption()->add(test_options_[2]->option_,
- test_options_[2]->persistent_,
+ subnet->getCfgOption()->add(test_options_[2]->option_, test_options_[2]->persistent_,
test_options_[2]->space_name_);
test_subnets_.push_back(subnet);
pool1.reset(new Pool4(IOAddress("10.0.0.10"), IOAddress("10.0.0.20")));
subnet->addPool(pool1);
- pool1->getCfgOption()->add(test_options_[3]->option_,
- test_options_[3]->persistent_,
+ pool1->getCfgOption()->add(test_options_[3]->option_, test_options_[3]->persistent_,
test_options_[3]->space_name_);
- pool1->getCfgOption()->add(test_options_[4]->option_,
- test_options_[4]->persistent_,
+ pool1->getCfgOption()->add(test_options_[4]->option_, test_options_[4]->persistent_,
test_options_[4]->space_name_);
pool2.reset(new Pool4(IOAddress("10.0.0.50"), IOAddress("10.0.0.60")));
subnet->setDdnsSendUpdates(true);
subnet->setDdnsOverrideNoUpdate(true);
subnet->setDdnsOverrideClientUpdate(false);
- subnet->setDdnsReplaceClientNameMode(D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
+ subnet->setDdnsReplaceClientNameMode(
+ D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
subnet->setDdnsGeneratedPrefix("myhost");
subnet->setDdnsQualifyingSuffix("example.org");
- subnet->getCfgOption()->add(test_options_[0]->option_,
- test_options_[0]->persistent_,
+ subnet->getCfgOption()->add(test_options_[0]->option_, test_options_[0]->persistent_,
test_options_[0]->space_name_);
test_subnets_.push_back(subnet);
shared_network->setDdnsSendUpdates(true);
shared_network->setDdnsOverrideNoUpdate(true);
shared_network->setDdnsOverrideClientUpdate(false);
- shared_network->setDdnsReplaceClientNameMode(D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
+ shared_network->setDdnsReplaceClientNameMode(
+ D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
shared_network->setDdnsGeneratedPrefix("myhost");
shared_network->setDdnsQualifyingSuffix("example.org");
ElementPtr user_context = Element::createMap();
user_context->set("foo", Element::create("bar"));
- OptionDefinitionPtr option_def(new OptionDefinition("foo", 234,
- DHCP4_OPTION_SPACE,
- "string",
- "espace"));
+ OptionDefinitionPtr option_def(
+ new OptionDefinition("foo", 234, DHCP4_OPTION_SPACE, "string", "espace"));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("bar", 234, DHCP4_OPTION_SPACE,
- "uint32", true));
+ option_def.reset(new OptionDefinition("bar", 234, DHCP4_OPTION_SPACE, "uint32", true));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("fish", 235, DHCP4_OPTION_SPACE,
- "record", true));
+ option_def.reset(new OptionDefinition("fish", 235, DHCP4_OPTION_SPACE, "record", true));
option_def->addRecordField("uint32");
option_def->addRecordField("string");
test_option_defs_.push_back(option_def);
option_def.reset(new OptionDefinition("whale", 236, "xyz", "string"));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("foobar", 234, DHCP4_OPTION_SPACE,
- "uint64", true));
+ option_def.reset(new OptionDefinition("foobar", 234, DHCP4_OPTION_SPACE, "uint64", true));
test_option_defs_.push_back(option_def);
}
OptionDefSpaceContainer defs;
- OptionDescriptor desc =
- createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME,
- true, false, "my-boot-file");
+ OptionDescriptor desc = createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME, true,
+ false, "my-boot-file");
desc.space_name_ = DHCP4_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionUint8>(Option::V4, DHO_DEFAULT_IP_TTL,
- false, true, 64);
+ desc = createOption<OptionUint8>(Option::V4, DHO_DEFAULT_IP_TTL, false, true, 64);
desc.space_name_ = DHCP4_OPTION_SPACE;
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
desc.space_name_ = "vendor-encapsulated-options";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createAddressOption<Option4AddrLst>(254, true, true,
- "192.0.2.3");
+ desc = createAddressOption<Option4AddrLst>(254, true, true, "192.0.2.3");
desc.space_name_ = DHCP4_OPTION_SPACE;
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
desc.space_name_ = "isc";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createAddressOption<Option4AddrLst>(2, false, true, "10.0.0.5",
- "10.0.0.3", "10.0.3.4");
+ desc = createAddressOption<Option4AddrLst>(2, false, true, "10.0.0.5", "10.0.0.3",
+ "10.0.3.4");
desc.space_name_ = "isc";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME,
- true, false, "my-boot-file-2");
+ desc = createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME, true, false,
+ "my-boot-file-2");
desc.space_name_ = DHCP4_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME,
- true, false, "my-boot-file-3");
+ desc = createOption<OptionString>(Option::V4, DHO_BOOT_FILE_NAME, true, false,
+ "my-boot-file-3");
desc.space_name_ = DHCP4_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
// compare subnets, networks and pools in JSON format. In that case,
// the @c toElement functions require option definitions to generate the
// proper output.
- defs.addItem(OptionDefinitionPtr(new OptionDefinition(
- "vendor-encapsulated-1", 1,
- "vendor-encapsulated-options", "uint32")));
- defs.addItem(OptionDefinitionPtr(new OptionDefinition(
- "option-254", 254, DHCP4_OPTION_SPACE,
- "ipv4-address", true)));
+ defs.addItem(
+ OptionDefinitionPtr(new OptionDefinition("vendor-encapsulated-1", 1,
+ "vendor-encapsulated-options", "uint32")));
+ defs.addItem(OptionDefinitionPtr(
+ new OptionDefinition("option-254", 254, DHCP4_OPTION_SPACE, "ipv4-address", true)));
defs.addItem(OptionDefinitionPtr(new OptionDefinition("isc-1", 1, "isc", "empty")));
- defs.addItem(OptionDefinitionPtr(new OptionDefinition("isc-2", 2, "isc", "ipv4-address", true)));
+ defs.addItem(
+ OptionDefinitionPtr(new OptionDefinition("isc-2", 2, "isc", "ipv4-address", true)));
// Register option definitions.
LibDHCP::setRuntimeOptionDefs(defs);
/// @brief Initialize posix time values used in tests.
void initTimestamps() {
// Current time minus 1 hour to make sure it is in the past.
- timestamps_["today"] = boost::posix_time::second_clock::local_time()
- - boost::posix_time::hours(1);
+ timestamps_["today"] = boost::posix_time::second_clock::local_time() -
+ boost::posix_time::hours(1);
// One second after today.
timestamps_["after today"] = timestamps_["today"] + boost::posix_time::seconds(1);
// Yesterday.
auto& mod_time_idx = audit_entries_[server_tag].get<AuditEntryModificationTimeIdTag>();
- for (auto audit_entry_it = mod_time_idx.begin();
- audit_entry_it != mod_time_idx.end();
+ for (auto audit_entry_it = mod_time_idx.begin(); audit_entry_it != mod_time_idx.end();
++audit_entry_it) {
auto audit_entry = *audit_entry_it;
- s << audit_entry->getObjectType() << ", "
- << audit_entry->getObjectId() << ", "
+ s << audit_entry->getObjectType() << ", " << audit_entry->getObjectId() << ", "
<< static_cast<int>(audit_entry->getModificationType()) << ", "
- << audit_entry->getModificationTime() << ", "
- << audit_entry->getRevisionId() << ", "
- << audit_entry->getLogMessage()
- << std::endl;
+ << audit_entry->getModificationTime() << ", " << audit_entry->getRevisionId() << ", "
+ << audit_entry->getLogMessage() << std::endl;
}
return (s.str());
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
// It should not be possible to create a duplicate of the logical
{
SCOPED_TRACE("UPDATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::UPDATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::UPDATE, "server set");
}
// Verify that the server has been updated.
EXPECT_EQ("this is server 1 bis", returned_server->getDescription());
EXPECT_EQ(timestamps_["today"], returned_server->getModificationTime());
-
uint64_t servers_deleted = 0;
// Try to delete non-existing server.
{
SCOPED_TRACE("DELETE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::DELETE,
"deleting a server");
}
// Explicitly set modification time to make sure that the time
// returned from the database is correct.
global_parameter->setModificationTime(timestamps_["yesterday"]);
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- global_parameter);
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), global_parameter);
{
SCOPED_TRACE("CREATE audit entry for global parameter");
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::CREATE,
"global parameter set");
}
// Verify returned parameter and the modification time.
- StampedValuePtr returned_global_parameter =
- cbptr_->getGlobalParameter4(ServerSelector::ALL(), "global");
+ StampedValuePtr returned_global_parameter = cbptr_->getGlobalParameter4(ServerSelector::ALL(),
+ "global");
ASSERT_TRUE(returned_global_parameter);
EXPECT_EQ("global", returned_global_parameter->getName());
EXPECT_EQ("whale", returned_global_parameter->getValue());
// Check that the parameter is updated when selector is specified correctly.
global_parameter = StampedValue::create("global", "fish");
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- global_parameter);
- returned_global_parameter = cbptr_->getGlobalParameter4(ServerSelector::ALL(),
- "global");
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), global_parameter);
+ returned_global_parameter = cbptr_->getGlobalParameter4(ServerSelector::ALL(), "global");
ASSERT_TRUE(returned_global_parameter);
EXPECT_EQ("global", returned_global_parameter->getName());
EXPECT_EQ("fish", returned_global_parameter->getValue());
{
SCOPED_TRACE("UPDATE audit entry for the global parameter");
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::UPDATE,
"global parameter set");
}
// Should not delete parameter specified for all servers if explicit
// server name is provided.
- EXPECT_EQ(0, cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server1"),
- "global"));
+ EXPECT_EQ(0, cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server1"), "global"));
// Delete parameter and make sure it is gone.
cbptr_->deleteGlobalParameter4(ServerSelector::ALL(), "global");
- returned_global_parameter = cbptr_->getGlobalParameter4(ServerSelector::ALL(),
- "global");
+ returned_global_parameter = cbptr_->getGlobalParameter4(ServerSelector::ALL(), "global");
EXPECT_FALSE(returned_global_parameter);
{
SCOPED_TRACE("DELETE audit entry for the global parameter");
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::DELETE,
"global parameter deleted");
}
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
// This time inserting the global parameters for the server1 and server2 should
// be successful.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server1"),
- global_parameter1));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server1"), global_parameter1));
{
SCOPED_TRACE("Global parameter for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the global value.
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ONE("server1"),
- 3, 1);
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ONE("server1"), 3, 1);
}
-
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server2"),
- global_parameter2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server2"), global_parameter2));
{
SCOPED_TRACE("Global parameter for server2 is set");
// Same as in case of the server2, there should be 3 audit entries of
// which one we validate.
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ONE("server2"),
- 3, 1);
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ONE("server2"), 3, 1);
}
// The last parameter is associated with all servers.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- global_parameter3));
+ EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), global_parameter3));
{
SCOPED_TRACE("Global parameter for all servers is set");
// There should be one new audit entry for all servers. It indicates
// the insertion of the global value.
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ALL(),
- 1, 1);
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ALL(), 1, 1);
}
StampedValuePtr returned_global;
// Try to fetch the value specified for all servers.
- EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter4(ServerSelector::ALL(),
- "global")
- );
+ EXPECT_NO_THROW(returned_global = cbptr_->getGlobalParameter4(ServerSelector::ALL(), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter3->getValue(), returned_global->getValue());
ASSERT_EQ(1, returned_global->getServerTags().size());
// Try to fetch the value specified for the server1. This should override the
// value specified for all servers.
EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter4(ServerSelector::ONE("server1"),
- "global")
- );
+ returned_global = cbptr_->getGlobalParameter4(ServerSelector::ONE("server1"), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter1->getValue(), returned_global->getValue());
// The same in case of the server2.
EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter4(ServerSelector::ONE("server2"),
- "global")
- );
+ returned_global = cbptr_->getGlobalParameter4(ServerSelector::ONE("server2"), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter2->getValue(), returned_global->getValue());
ASSERT_EQ(1, returned_global->getServerTags().size());
// Try to fetch the collection of globals for the server1, server2 and server3.
// The server3 does not have an explicit value so for this server we should get
/// the value for 'all'.
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters4(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_globals.size());
// Capture the returned values into the map so as we can check the
// Try to fetch the collection of global parameters specified for all servers.
// This excludes the values specific to server1 and server2. It returns only the
// common ones.
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ALL())
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ALL()));
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
EXPECT_EQ(global_parameter3->getValue(), returned_global->getValue());
// global parameter and the global parameter itself.
EXPECT_NO_THROW(cbptr_->deleteServer4(ServerTag("server1")));
EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ONE("server1"))
- );
+ returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ONE("server1")));
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
// As a result, the value fetched for the server1 should be the one available for
// We expect two new audit entries for the server1, one indicating that the
// server has been deleted and another one indicating that the corresponding
// global value has been deleted. We check the latter entry.
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete global parameter for server1.
uint64_t deleted_num = 0;
- EXPECT_NO_THROW(deleted_num = cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server1"),
- "global"));
+ EXPECT_NO_THROW(
+ deleted_num = cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server1"), "global"));
// No parameters should be deleted. In particular, the parameter for the logical
// server 'all' should not be deleted.
EXPECT_EQ(0, deleted_num);
// Deleting the existing value for server2 should succeed.
- EXPECT_NO_THROW(deleted_num = cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server2"),
- "global"));
+ EXPECT_NO_THROW(
+ deleted_num = cbptr_->deleteGlobalParameter4(ServerSelector::ONE("server2"), "global"));
EXPECT_EQ(1, deleted_num);
// Create it again to test that deletion of all server removes this too.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server2"),
- global_parameter2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server2"), global_parameter2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers4());
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ALL())
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters4(ServerSelector::ALL()));
EXPECT_EQ(1, deleted_num);
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
// There should be 4 new audit entries. One for deleting the global, one for
// re-creating it, one for deleting the server2 and one for deleting the
// global again as a result of deleting the server2.
- testNewAuditEntry("dhcp4_global_parameter",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp4_global_parameter", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
TEST_F(PgSqlConfigBackendDHCPv4Test, getAllGlobalParameters4) {
// Create 3 parameters and put them into the database.
cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- StampedValue::create("name1", "value1"));
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
+ StampedValue::create("name1", "value1"));
+ cbptr_->createUpdateGlobalParameter4(
+ ServerSelector::ALL(),
StampedValue::create("name2", Element::create(static_cast<int64_t>(65))));
cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- StampedValue::create("name3", "value3"));
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
+ StampedValue::create("name3", "value3"));
+ cbptr_->createUpdateGlobalParameter4(
+ ServerSelector::ALL(),
StampedValue::create("name4", Element::create(static_cast<bool>(true))));
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
+ cbptr_->createUpdateGlobalParameter4(
+ ServerSelector::ALL(),
StampedValue::create("name5", Element::create(static_cast<double>(1.65))));
// Fetch all parameters.
EXPECT_TRUE((*parameters_index.find("name4"))->getBoolValue());
EXPECT_EQ(1.65, (*parameters_index.find("name5"))->getDoubleValue());
- for (auto param = parameters_index.begin(); param != parameters_index.end();
- ++param) {
+ for (auto param = parameters_index.begin(); param != parameters_index.end(); ++param) {
ASSERT_EQ(1, (*param)->getServerTags().size());
EXPECT_EQ("all", (*param)->getServerTags().begin()->get());
}
// "yesterday", "today" and "tomorrow" respectively.
StampedValuePtr value = StampedValue::create("name1", "value1");
value->setModificationTime(timestamps_["yesterday"]);
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), value);
value = StampedValue::create("name2", Element::create(static_cast<int64_t>(65)));
value->setModificationTime(timestamps_["today"]);
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), value);
value = StampedValue::create("name3", "value3");
value->setModificationTime(timestamps_["tomorrow"]);
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ALL(), value);
// Get parameters modified after "today".
auto parameters = cbptr_->getModifiedGlobalParameters4(ServerSelector::ALL(),
// Try to insert it and associate with non-existing server.
std::string msg;
try {
- cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server1"),
- global_parameter);
+ cbptr_->createUpdateGlobalParameter4(ServerSelector::ONE("server1"), global_parameter);
msg = "got no exception";
} catch (const NullKeyError& ex) {
msg = ex.what();
// Supported selectors.
Subnet4Ptr subnet = test_subnets_[0];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(),
- subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet));
subnet = test_subnets_[2];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"),
- subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet));
subnet = test_subnets_[3];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}), subnet));
// Not supported server selectors.
- EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ANY(), subnet),
- isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ANY(), subnet), isc::InvalidOperation);
// Not implemented server selectors.
- EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::UNASSIGNED(),
- subnet),
+ EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::UNASSIGNED(), subnet),
isc::NotImplemented);
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto subnet = test_subnets_[0];
auto subnet2 = test_subnets_[2];
// An attempt to add a subnet to a non-existing server (server1) should fail.
- EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet2),
NullKeyError);
// The subnet shouldn't have been added, even though one of the servers exists.
Subnet4Ptr returned_subnet;
- ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server2"),
- subnet2->getID()));
+ ASSERT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server2"), subnet2->getID()));
EXPECT_FALSE(returned_subnet);
// Insert two subnets, one for all servers and one for server2.
EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
-
EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set", ServerSelector::ONE("subnet2"),
- 2, 1);
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set",
+ ServerSelector::ONE("subnet2"), 2, 1);
}
// We are not going to support selection of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet->getID()),
isc::InvalidOperation);
- EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet->toText()),
isc::InvalidOperation);
// Test that this subnet will be fetched for various server selectors.
- auto test_get_subnet = [this, &subnet] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const std::string& expected_tag = ServerTag::ALL) {
+ auto test_get_subnet = [this, &subnet](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const std::string& expected_tag = ServerTag::ALL) {
SCOPED_TRACE(test_case_name);
// Test fetching subnet by id.
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
// Test fetching subnet by prefix.
- ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet4(server_selector,
- subnet->toText()));
+ ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet4(server_selector, subnet->toText()));
ASSERT_TRUE(returned_subnet);
ASSERT_EQ(1, returned_subnet->getServerTags().size());
EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE, "subnet set");
}
{
// Update the subnet in the database (both use the same prefix).
subnet2.reset(new Subnet4(IOAddress("192.0.3.0"), 24, 30, 40, 60, 8192));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2));
// Fetch again and verify.
returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server2"), subnet2->toText());
// with different subnets. This should throw.
// Subnets are 10.0.0.0/8 id 1024 and 192.0.3.0/24 id 8192
subnet2.reset(new Subnet4(IOAddress("10.0.0.0"), 8, 30, 40, 60, 8192));
- EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2),
+ EXPECT_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2),
DuplicateEntry);
}
EXPECT_NO_THROW(cbptr_->getSubnet4(ServerSelector::ONE("server1"), SubnetID(1)));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- SubnetID(1)),
+ EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}), SubnetID(1)),
isc::InvalidOperation);
}
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier.
- Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
EXPECT_TRUE(returned_subnet->getIface().unspecified());
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
}
-
// Test that subnet can be associated with a shared network.
TEST_F(PgSqlConfigBackendDHCPv4Test, getSubnet4SharedNetwork) {
Subnet4Ptr subnet = test_subnets_[0];
shared_network->add(subnet);
// Store shared network in the database.
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network);
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network);
// Store subnet associated with the shared network in the database.
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
// Fetch the subnet by prefix.
- Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- "192.0.2.0/24");
+ Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), "192.0.2.0/24");
ASSERT_TRUE(returned_subnet);
ASSERT_EQ(1, returned_subnet->getServerTags().size());
EXPECT_EQ("all", returned_subnet->getServerTags().begin()->get());
// Fetching the subnet for an explicitly specified server tag should
// succeed too.
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"),
- "192.0.2.0/24");
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"), "192.0.2.0/24");
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
}
EXPECT_NO_THROW(cbptr_->getSubnet4(ServerSelector::ONE("server1"), "192.0.2.0/24"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
"192.0.2.0/24"),
isc::InvalidOperation);
}
// indicate an update.
if (subnet->toText() == "10.0.0.0/8") {
SCOPED_TRACE("UPDATE audit entry for the subnet " + subnet->toText());
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE, "subnet set");
} else {
SCOPED_TRACE("CREATE audit entry for the subnet " + subnet->toText());
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
}
for (auto i = 0; i < subnets.size(); ++i, ++subnet_it) {
ASSERT_EQ(1, (*subnet_it)->getServerTags().size());
EXPECT_EQ("all", (*subnet_it)->getServerTags().begin()->get());
- EXPECT_EQ(test_subnets_[i + 1]->toElement()->str(),
- (*subnet_it)->toElement()->str());
+ EXPECT_EQ(test_subnets_[i + 1]->toElement()->str(), (*subnet_it)->toElement()->str());
}
// Attempt to remove the non existing subnet should return 0.
EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ALL(), 22));
- EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ALL(),
- "155.0.3.0/24"));
+ EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ALL(), "155.0.3.0/24"));
// All subnets should be still there.
ASSERT_EQ(test_subnets_.size() - 1, subnets.size());
// Should not delete the subnet for explicit server tag because
// our subnet is for all servers.
- EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ONE("server1"),
- test_subnets_[1]->getID()));
+ EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ONE("server1"), test_subnets_[1]->getID()));
// Also, verify that behavior when deleting by prefix.
- EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ONE("server1"),
- test_subnets_[2]->toText()));
+ EXPECT_EQ(0, cbptr_->deleteSubnet4(ServerSelector::ONE("server1"), test_subnets_[2]->toText()));
// Same for all subnets.
EXPECT_EQ(0, cbptr_->deleteAllSubnets4(ServerSelector::ONE("server1")));
// Delete first subnet by id and verify that it is gone.
- EXPECT_EQ(1, cbptr_->deleteSubnet4(ServerSelector::ALL(),
- test_subnets_[1]->getID()));
+ EXPECT_EQ(1, cbptr_->deleteSubnet4(ServerSelector::ALL(), test_subnets_[1]->getID()));
{
SCOPED_TRACE("DELETE first subnet audit entry");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::DELETE,
- "subnet deleted");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::DELETE, "subnet deleted");
}
subnets = cbptr_->getAllSubnets4(ServerSelector::ALL());
ASSERT_EQ(test_subnets_.size() - 2, subnets.size());
// Delete second subnet by prefix and verify it is gone.
- EXPECT_EQ(1, cbptr_->deleteSubnet4(ServerSelector::ALL(),
- test_subnets_[2]->toText()));
+ EXPECT_EQ(1, cbptr_->deleteSubnet4(ServerSelector::ALL(), test_subnets_[2]->toText()));
subnets = cbptr_->getAllSubnets4(ServerSelector::ALL());
ASSERT_EQ(test_subnets_.size() - 3, subnets.size());
{
SCOPED_TRACE("DELETE second subnet audit entry");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::DELETE,
- "subnet deleted");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::DELETE, "subnet deleted");
}
// Delete all.
{
SCOPED_TRACE("DELETE all subnets audit entry");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::DELETE,
"deleted all subnets");
}
}
EXPECT_NO_THROW(cbptr_->getAllSubnets4(ServerSelector::UNASSIGNED()));
EXPECT_NO_THROW(cbptr_->getAllSubnets4(ServerSelector::ALL()));
EXPECT_NO_THROW(cbptr_->getAllSubnets4(ServerSelector::ONE("server1")));
- EXPECT_NO_THROW(cbptr_->getAllSubnets4(ServerSelector::MULTIPLE({ "server1", "server2" })));
+ EXPECT_NO_THROW(cbptr_->getAllSubnets4(ServerSelector::MULTIPLE({"server1", "server2"})));
// Not supported selectors.
EXPECT_THROW(cbptr_->getAllSubnets4(ServerSelector::ANY()), isc::InvalidOperation);
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[0]));
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(),
- subnet1));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"),
- subnet2));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet3));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet1));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}), subnet3));
Subnet4Collection subnets;
// server selectors.
TEST_F(PgSqlConfigBackendDHCPv4Test, getModifiedSubnets4Selectors) {
// Supported selectors.
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::UNASSIGNED(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::ALL(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::ONE("server1"),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSubnets4(ServerSelector::UNASSIGNED(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::ALL(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSubnets4(ServerSelector::ONE("server1"), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(cbptr_->getModifiedSubnets4(ServerSelector::MULTIPLE({"server1", "server2"}),
timestamps_["yesterday"]));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getModifiedSubnets4(ServerSelector::ANY(),
- timestamps_["yesterday"]),
+ EXPECT_THROW(cbptr_->getModifiedSubnets4(ServerSelector::ANY(), timestamps_["yesterday"]),
isc::InvalidOperation);
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto subnet1 = test_subnets_[0];
auto subnet2 = test_subnets_[2];
auto subnet3 = test_subnets_[3];
- auto create_test_subnets = [&] () {
+ auto create_test_subnets = [&]() {
// Insert three subnets, one for all servers, one for server2 and one for two
// servers: server1 and server2.
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet1));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2));
EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet1)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet4(ServerSelector::ONE("server2"), subnet2)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet3)
- );
+ cbptr_->createUpdateSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}), subnet3));
};
create_test_subnets();
// Test that subnet is not deleted for a specified server selector.
- auto test_no_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet4Ptr& subnet) {
+ auto test_no_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector, const Subnet4Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->getID()));
EXPECT_EQ(0, deleted_count);
deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->toText())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->toText()));
EXPECT_EQ(0, deleted_count);
};
{
SCOPED_TRACE("Test valid but non matching server selectors");
- test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"),
- subnet1);
- test_no_delete("selector: all, actual: one", ServerSelector::ALL(),
- subnet2);
- test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(),
- subnet3);
+ test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"), subnet1);
+ test_no_delete("selector: all, actual: one", ServerSelector::ALL(), subnet2);
+ test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(), subnet3);
}
// Test successful deletion of a subnet by ID.
- auto test_delete_by_id = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet4Ptr& subnet) {
+ auto test_delete_by_id = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const Subnet4Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->getID()));
EXPECT_EQ(1, deleted_count);
EXPECT_FALSE(cbptr_->getSubnet4(server_selector, subnet->getID()));
create_test_subnets();
// Test successful deletion of a subnet by prefix.
- auto test_delete_by_prefix = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet4Ptr& subnet) {
+ auto test_delete_by_prefix = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const Subnet4Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->toText())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet4(server_selector, subnet->toText()));
EXPECT_EQ(1, deleted_count);
EXPECT_FALSE(cbptr_->getSubnet4(server_selector, subnet->toText()));
EXPECT_NO_THROW(cbptr_->deleteSubnet4(ServerSelector::ONE("server1"), SubnetID(1)));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- SubnetID(1)),
+ EXPECT_THROW(cbptr_->deleteSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ SubnetID(1)),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteSubnet4(ServerSelector::ONE("server1"), "192.0.2.0/24"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSubnet4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- "192.0.2.0/24"),
+ EXPECT_THROW(cbptr_->deleteSubnet4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ "192.0.2.0/24"),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteAllSubnets4(ServerSelector::ONE("server1")));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteAllSubnets4(ServerSelector::ANY()),
- isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteAllSubnets4(ServerSelector::MULTIPLE({ "server1", "server2" })),
+ EXPECT_THROW(cbptr_->deleteAllSubnets4(ServerSelector::ANY()), isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->deleteAllSubnets4(ServerSelector::MULTIPLE({"server1", "server2"})),
isc::InvalidOperation);
}
// Create the subnets and associate them with the server1.
auto subnet = test_subnets_[0];
auto subnet2 = test_subnets_[2];
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet2)
- );
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ONE("server1"), subnet2));
// Delete the server. The subnets should be preserved but are considered orphaned,
// i.e. do not belong to any server.
// Trying to fetch the subnet by server tag should return no result.
Subnet4Ptr returned_subnet;
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"),
- subnet->getID()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"), subnet->getID()));
EXPECT_FALSE(returned_subnet);
// The same if we use other calls.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"),
- subnet->toText()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ONE("server1"), subnet->toText()));
EXPECT_FALSE(returned_subnet);
Subnet4Collection returned_subnets;
EXPECT_NO_THROW(returned_subnets = cbptr_->getAllSubnets4(ServerSelector::ONE("server1")));
EXPECT_TRUE(returned_subnets.empty());
- EXPECT_NO_THROW(
- returned_subnets = cbptr_->getModifiedSubnets4(ServerSelector::ONE("server1"),
- timestamps_["two days ago"])
- );
+ EXPECT_NO_THROW(returned_subnets = cbptr_->getModifiedSubnets4(ServerSelector::ONE("server1"),
+ timestamps_["two days ago"]));
EXPECT_TRUE(returned_subnets.empty());
// We should get the subnet if we ask for unassigned.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::UNASSIGNED(),
- subnet->getID()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::UNASSIGNED(), subnet->getID()));
ASSERT_TRUE(returned_subnet);
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::UNASSIGNED(),
- subnet->toText()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::UNASSIGNED(), subnet->toText()));
ASSERT_TRUE(returned_subnet);
// Also if we ask for all unassigned subnets it should be returned.
ASSERT_EQ(2, returned_subnets.size());
// Same for modified subnets.
- EXPECT_NO_THROW(
- returned_subnets = cbptr_->getModifiedSubnets4(ServerSelector::UNASSIGNED(),
- timestamps_["two days ago"])
- );
+ EXPECT_NO_THROW(returned_subnets = cbptr_->getModifiedSubnets4(ServerSelector::UNASSIGNED(),
+ timestamps_["two days ago"]));
ASSERT_EQ(2, returned_subnets.size());
// If we ask for any subnet by subnet id, it should be returned too.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(),
- subnet->getID()));
+ EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(), subnet->getID()));
ASSERT_TRUE(returned_subnet);
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(),
- subnet->toText()));
+ EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(), subnet->toText()));
ASSERT_TRUE(returned_subnet);
// Deleting the subnet with the mismatched server tag should not affect our
// subnet.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(ServerSelector::ONE("server1"),
- subnet->getID())
- );
+ deleted_count = cbptr_->deleteSubnet4(ServerSelector::ONE("server1"), subnet->getID()));
EXPECT_EQ(0, deleted_count);
// Also, if we delete all subnets for server1.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSubnets4(ServerSelector::ONE("server1"))
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteAllSubnets4(ServerSelector::ONE("server1")));
EXPECT_EQ(0, deleted_count);
// We can delete this subnet when we specify ANY and the matching id.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet4(ServerSelector::ANY(), subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet4(ServerSelector::ANY(), subnet->getID()));
EXPECT_EQ(1, deleted_count);
// We can delete all subnets using UNASSIGNED selector.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSubnets4(ServerSelector::UNASSIGNED());
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteAllSubnets4(ServerSelector::UNASSIGNED()););
EXPECT_EQ(1, deleted_count);
}
// Insert subnets into the database.
for (int i = 1; i < test_subnets_.size(); ++i) {
- cbptr_->createUpdateSubnet4(ServerSelector::ALL(),
- test_subnets_[i]);
+ cbptr_->createUpdateSubnet4(ServerSelector::ALL(), test_subnets_[i]);
}
// Fetch subnets with timestamp later than today. Only one subnet
// should be returned.
- Subnet4Collection
- subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(),
- timestamps_["after today"]);
+ Subnet4Collection subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, subnets.size());
// All subnets should also be returned for explicitly specified server tag.
// Fetch subnets with timestamp later than yesterday. We should get
// two subnets.
- subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(),
- timestamps_["after yesterday"]);
+ subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(), timestamps_["after yesterday"]);
ASSERT_EQ(2, subnets.size());
// Fetch subnets with timestamp later than tomorrow. Nothing should
// be returned.
- subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(),
- timestamps_["after tomorrow"]);
+ subnets = cbptr_->getModifiedSubnets4(ServerSelector::ALL(), timestamps_["after tomorrow"]);
ASSERT_TRUE(subnets.empty());
}
TEST_F(PgSqlConfigBackendDHCPv4Test, subnetLifetime) {
// Insert new subnet with unspecified valid lifetime
Triplet<uint32_t> unspecified;
- Subnet4Ptr subnet(new Subnet4(IOAddress("192.0.2.0"), 24, 30, 40,
- unspecified, 1111));
+ Subnet4Ptr subnet(new Subnet4(IOAddress("192.0.2.0"), 24, 30, 40, unspecified, 1111));
subnet->setIface("eth1");
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier
- Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
// Verified returned and original subnets match.
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
// Update the valid lifetime.
- subnet->setValid( Triplet<uint32_t>(100, 200, 300));
+ subnet->setValid(Triplet<uint32_t>(100, 200, 300));
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
// Fetch and verify again.
}
// Fetch all subnets belonging to shared network level1.
- Subnet4Collection subnets = cbptr_->getSharedNetworkSubnets4(ServerSelector::ALL(),
- "level1");
+ Subnet4Collection subnets = cbptr_->getSharedNetworkSubnets4(ServerSelector::ALL(), "level1");
ASSERT_EQ(1, subnets.size());
// Returned subnet should match test subnet #1.
- EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(),
- (*subnets.begin())->toElement()));
+ EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(), (*subnets.begin())->toElement()));
// All subnets should also be returned for ANY server.
subnets = cbptr_->getSharedNetworkSubnets4(ServerSelector::ANY(), "level1");
ASSERT_EQ(1, subnets.size());
// Returned subnet should match test subnet #1.
- EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(),
- (*subnets.begin())->toElement()));
+ EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(), (*subnets.begin())->toElement()));
// Check server tag
ASSERT_EQ(1, (*subnets.begin())->getServerTags().size());
// Test that pools are properly updated as a result a subnet update.
TEST_F(PgSqlConfigBackendDHCPv4Test, subnetUpdatePools) {
- auto test_subnet_update = [this](const std::string& subnet_prefix,
- const SubnetID& subnet_id) {
+ auto test_subnet_update = [this](const std::string& subnet_prefix, const SubnetID& subnet_id) {
// Add the subnet with two pools.
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(),
- test_subnets_[0]));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), test_subnets_[0]));
// Make sure that the pools have been added to the database.
EXPECT_EQ(2, countRows("dhcp4_pool"));
// Create the subnet without options which updates the existing
// subnet.
- Subnet4Ptr subnet(new Subnet4(IOAddress(subnet_prefix), 24, 30, 40, 60,
- subnet_id));
+ Subnet4Ptr subnet(new Subnet4(IOAddress(subnet_prefix), 24, 30, 40, 60, subnet_id));
EXPECT_NO_THROW(cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet));
// Check that options are gone.
EXPECT_EQ(0, countRows("dhcp4_pool"));
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto shared_network = test_networks_[0];
auto shared_network2 = test_networks_[2];
// Insert two shared networks, one for all servers, and one for server2.
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server2"),
- shared_network2));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server2"), shared_network2));
// We are not going to support selection of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->getSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
test_networks_[0]->getName()),
isc::InvalidOperation);
// Test that this shared network will be fetched for various server selectors.
- auto test_get_network = [this, &shared_network] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const std::string& expected_tag = ServerTag::ALL) {
+ auto test_get_network = [this,
+ &shared_network](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const std::string& expected_tag = ServerTag::ALL) {
SCOPED_TRACE(test_case_name);
SharedNetwork4Ptr network;
- ASSERT_NO_THROW(network = cbptr_->getSharedNetwork4(server_selector,
- shared_network->getName()));
+ ASSERT_NO_THROW(
+ network = cbptr_->getSharedNetwork4(server_selector, shared_network->getName()));
ASSERT_TRUE(network);
EXPECT_GT(network->getId(), 0);
{
SCOPED_TRACE("CREATE audit entry for a shared network");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
// Update shared network in the database.
shared_network = test_networks_[1];
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network));
{
SCOPED_TRACE("testing various server selectors after update");
{
SCOPED_TRACE("UPDATE audit entry for a shared network");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
}
// The server2 specific shared network should not be returned if the
// server selector is not matching.
- EXPECT_FALSE(cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- shared_network2->getName()));
- EXPECT_FALSE(cbptr_->getSharedNetwork4(ServerSelector::ONE("server1"),
- shared_network2->getName()));
+ EXPECT_FALSE(cbptr_->getSharedNetwork4(ServerSelector::ALL(), shared_network2->getName()));
+ EXPECT_FALSE(
+ cbptr_->getSharedNetwork4(ServerSelector::ONE("server1"), shared_network2->getName()));
{
SCOPED_TRACE("testing selectors for server2 specific shared network");
EXPECT_NO_THROW(cbptr_->getSharedNetwork4(ServerSelector::ONE("server1"), "level1"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
"level1"),
isc::InvalidOperation);
}
auto shared_network = test_networks_[0];
// An attempt to insert the shared network for non-existing server should fail.
- EXPECT_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"),
- shared_network),
+ EXPECT_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network),
NullKeyError);
// Insert the server1 into the database.
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
// Insert the server2 into the database.
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network));
{
SCOPED_TRACE("CREATE audit entry for shared network and ALL servers");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network));
{
SCOPED_TRACE("CREATE audit entry for shared network and MULTIPLE servers");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
}
SharedNetwork4Ptr network;
- ASSERT_NO_THROW(network = cbptr_->getSharedNetwork4(ServerSelector::ANY(),
- shared_network->getName()));
+ ASSERT_NO_THROW(
+ network = cbptr_->getSharedNetwork4(ServerSelector::ANY(), shared_network->getName()));
ASSERT_TRUE(network);
EXPECT_TRUE(network->hasServerTag(ServerTag("server1")));
EXPECT_TRUE(network->hasServerTag(ServerTag("server2")));
// Supported selectors.
SharedNetwork4Ptr shared_network(new SharedNetwork4("all"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network));
shared_network.reset(new SharedNetwork4("one"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network));
shared_network.reset(new SharedNetwork4("multiple"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network));
// Not supported server selectors.
EXPECT_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ANY(), shared_network),
isc::InvalidOperation);
// Not implemented server selectors.
- EXPECT_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::UNASSIGNED(),
- shared_network),
+ EXPECT_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::UNASSIGNED(), shared_network),
isc::NotImplemented);
}
cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network);
// Fetch this shared network by name.
- SharedNetwork4Ptr
- returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- test_networks_[2]->getName());
+ SharedNetwork4Ptr returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
+ test_networks_[2]->getName());
ASSERT_TRUE(returned_network);
EXPECT_TRUE(returned_network->getIface().unspecified());
EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::ONE("server1"),
test_networks_[1]->getName()),
isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::MULTIPLE({"server1", "server"
+ "2"}),
test_networks_[1]->getName()),
isc::InvalidOperation);
}
// That shared network overrides the first one so the audit entry should
// indicate an update.
if ((network->getName() == "level1") && (!audit_entries_["all"].empty())) {
- SCOPED_TRACE("UPDATE audit entry for the shared network " +
- network->getName());
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ SCOPED_TRACE("UPDATE audit entry for the shared network " + network->getName());
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
} else {
- SCOPED_TRACE("CREATE audit entry for the shared network " +
- network->getName());
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::CREATE,
+ SCOPED_TRACE("CREATE audit entry for the shared network " + network->getName());
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
}
// Fetch all shared networks.
- SharedNetwork4Collection networks =
- cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
+ SharedNetwork4Collection networks = cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
ASSERT_EQ(test_networks_.size() - 1, networks.size());
// All shared networks should also be returned for explicitly specified
// See if shared networks are returned ok.
for (auto i = 0; i < networks.size(); ++i) {
- EXPECT_EQ(test_networks_[i + 1]->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(test_networks_[i + 1]->toElement()->str(), networks[i]->toElement()->str());
ASSERT_EQ(1, networks[i]->getServerTags().size());
EXPECT_EQ("all", networks[i]->getServerTags().begin()->get());
}
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), test_subnets_[3]);
// Both ways to attach a subnet are equivalent.
- Subnet4Ptr subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- test_subnets_[0]->getID());
+ Subnet4Ptr subnet = cbptr_->getSubnet4(ServerSelector::ALL(), test_subnets_[0]->getID());
ASSERT_TRUE(subnet);
EXPECT_EQ("level1", subnet->getSharedNetworkName());
{
SCOPED_TRACE("CREATE audit entry for subnets");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set", ServerSelector::ALL(), 3);
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set",
+ ServerSelector::ALL(), 3);
}
// Deleting non-existing shared network should return 0.
- EXPECT_EQ(0, cbptr_->deleteSharedNetwork4(ServerSelector::ALL(),
- "big-fish"));
+ EXPECT_EQ(0, cbptr_->deleteSharedNetwork4(ServerSelector::ALL(), "big-fish"));
// All shared networks should be still there.
ASSERT_EQ(test_networks_.size() - 1, networks.size());
{
SCOPED_TRACE("DELETE audit entry for subnets of the first shared network");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::DELETE,
"deleted all subnets for a shared network");
}
// Check that the subnet is gone..
- subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- test_subnets_[0]->getID());
+ subnet = cbptr_->getSubnet4(ServerSelector::ALL(), test_subnets_[0]->getID());
EXPECT_FALSE(subnet);
// And after the shared network itself.
- EXPECT_EQ(1, cbptr_->deleteSharedNetwork4(ServerSelector::ALL(),
- test_networks_[1]->getName()));
+ EXPECT_EQ(1, cbptr_->deleteSharedNetwork4(ServerSelector::ALL(), test_networks_[1]->getName()));
networks = cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
ASSERT_EQ(test_networks_.size() - 2, networks.size());
{
SCOPED_TRACE("DELETE audit entry for the first shared network");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::DELETE,
"shared network deleted");
}
{
SCOPED_TRACE("DELETE audit entry for the remaining two shared networks");
// The last parameter indicates that we expect two new audit entries.
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::DELETE,
"deleted all shared networks", ServerSelector::ALL(), 2);
}
// Check that subnets are still there but detached.
- subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- test_subnets_[2]->getID());
+ subnet = cbptr_->getSubnet4(ServerSelector::ALL(), test_subnets_[2]->getID());
ASSERT_TRUE(subnet);
EXPECT_TRUE(subnet->getSharedNetworkName().empty());
- subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- test_subnets_[3]->getID());
+ subnet = cbptr_->getSubnet4(ServerSelector::ALL(), test_subnets_[3]->getID());
ASSERT_TRUE(subnet);
EXPECT_TRUE(subnet->getSharedNetworkName().empty());
}
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::UNASSIGNED()));
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::ALL()));
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::ONE("server1")));
- EXPECT_NO_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::MULTIPLE({ "server1", "server2" })));
+ EXPECT_NO_THROW(
+ cbptr_->getAllSharedNetworks4(ServerSelector::MULTIPLE({"server1", "server2"})));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::ANY()),
- isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->getAllSharedNetworks4(ServerSelector::ANY()), isc::InvalidOperation);
}
// Test that shared networks with different server associations are returned.
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[0]));
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network1));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"),
- shared_network2));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network3));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network1));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network3));
SharedNetwork4Collection networks;
// Insert shared networks into the database.
for (int i = 1; i < test_networks_.size(); ++i) {
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- test_networks_[i]);
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), test_networks_[i]);
}
// Fetch shared networks with timestamp later than today. Only one
// shared network should be returned.
- SharedNetwork4Collection
- networks = cbptr_->getModifiedSharedNetworks4(ServerSelector::ALL(),
- timestamps_["after today"]);
+ SharedNetwork4Collection networks =
+ cbptr_->getModifiedSharedNetworks4(ServerSelector::ALL(), timestamps_["after today"]);
ASSERT_EQ(1, networks.size());
// Fetch shared networks with timestamp later than yesterday. We
// should get two shared networks.
networks = cbptr_->getModifiedSharedNetworks4(ServerSelector::ALL(),
- timestamps_["after yesterday"]);
+ timestamps_["after yesterday"]);
ASSERT_EQ(2, networks.size());
// Fetch shared networks with timestamp later than tomorrow. Nothing
// server selectors.
TEST_F(PgSqlConfigBackendDHCPv4Test, getModifiedSharedNetworks4Selectors) {
// Supported selectors.
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks4(ServerSelector::UNASSIGNED(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks4(ServerSelector::ALL(),
- timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks4(ServerSelector::UNASSIGNED(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks4(ServerSelector::ALL(), timestamps_["yesterday"]));
EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks4(ServerSelector::ONE("server1"),
timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ timestamps_["yesterday"]));
// Not supported selectors.
EXPECT_THROW(cbptr_->getModifiedSharedNetworks4(ServerSelector::ANY(),
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto shared_network1 = test_networks_[0];
// Insert three shared networks, one for all servers, one for server2 and
// one for two servers: server1 and server2.
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network1));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network1)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server2"), shared_network2)
- );
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server2"), shared_network2));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network3)
- );
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network3));
- auto test_no_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const SharedNetwork4Ptr& shared_network) {
+ auto test_no_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const SharedNetwork4Ptr& shared_network) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork4(server_selector,
- shared_network->getName())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork4(server_selector,
+ shared_network->getName()));
EXPECT_EQ(0, deleted_count);
};
SCOPED_TRACE("Test valid but non matching server selectors");
test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"),
shared_network1);
- test_no_delete("selector: all, actual: one", ServerSelector::ALL(),
- shared_network2);
- test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(),
- shared_network3);
+ test_no_delete("selector: all, actual: one", ServerSelector::ALL(), shared_network2);
+ test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(), shared_network3);
}
// We are not going to support deletion of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
shared_network3->getName()),
isc::InvalidOperation);
isc::NotImplemented);
// Test successful deletion of a shared network.
- auto test_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const SharedNetwork4Ptr& shared_network) {
+ auto test_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const SharedNetwork4Ptr& shared_network) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork4(server_selector,
- shared_network->getName())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork4(server_selector,
+ shared_network->getName()));
EXPECT_EQ(1, deleted_count);
- EXPECT_FALSE(cbptr_->getSharedNetwork4(server_selector,
- shared_network->getName()));
+ EXPECT_FALSE(cbptr_->getSharedNetwork4(server_selector, shared_network->getName()));
};
test_delete("all servers", ServerSelector::ALL(), shared_network1);
EXPECT_NO_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::ONE("server1"), "level1"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::MULTIPLE({ "server1", "server2" }),
- "level1"),
+ EXPECT_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::MULTIPLE({"server1", "server2"}),
+ "level1"),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteAllSharedNetworks4(ServerSelector::ONE("server1")));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteAllSharedNetworks4(ServerSelector::ANY()),
- isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteAllSharedNetworks4(ServerSelector::MULTIPLE({ "server1", "server2" })),
+ EXPECT_THROW(cbptr_->deleteAllSharedNetworks4(ServerSelector::ANY()), isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->deleteAllSharedNetworks4(ServerSelector::MULTIPLE({"server1", "server2"})),
isc::InvalidOperation);
}
auto shared_network = test_networks_[0];
auto shared_network2 = test_networks_[2];
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network)
- );
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network2)
- );
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ONE("server1"), shared_network2));
// Delete the server. The shared networks should be preserved but are
// considered orphaned, i.e. do not belong to any server.
// Trying to fetch this shared network by server tag should return no result.
SharedNetwork4Ptr returned_network;
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork4(ServerSelector::ONE("server1"),
- "level1"));
+ EXPECT_NO_THROW(
+ returned_network = cbptr_->getSharedNetwork4(ServerSelector::ONE("server1"), "level1"));
EXPECT_FALSE(returned_network);
// The same if we use other calls.
SharedNetwork4Collection returned_networks;
EXPECT_NO_THROW(
- returned_networks = cbptr_->getAllSharedNetworks4(ServerSelector::ONE("server1"))
- );
+ returned_networks = cbptr_->getAllSharedNetworks4(ServerSelector::ONE("server1")));
EXPECT_TRUE(returned_networks.empty());
EXPECT_NO_THROW(
returned_networks = cbptr_->getModifiedSharedNetworks4(ServerSelector::ONE("server1"),
- timestamps_["two days ago"])
- );
+ timestamps_["two days ago"]));
EXPECT_TRUE(returned_networks.empty());
// We should get the shared network if we ask for unassigned.
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork4(ServerSelector::UNASSIGNED(),
- "level1"));
+ EXPECT_NO_THROW(
+ returned_network = cbptr_->getSharedNetwork4(ServerSelector::UNASSIGNED(), "level1"));
ASSERT_TRUE(returned_network);
// Also if we ask for all unassigned networks it should be returned.
- EXPECT_NO_THROW(returned_networks = cbptr_->getAllSharedNetworks4(ServerSelector::UNASSIGNED()));
+ EXPECT_NO_THROW(
+ returned_networks = cbptr_->getAllSharedNetworks4(ServerSelector::UNASSIGNED()));
ASSERT_EQ(2, returned_networks.size());
// And all modified.
EXPECT_NO_THROW(
returned_networks = cbptr_->getModifiedSharedNetworks4(ServerSelector::UNASSIGNED(),
- timestamps_["two days ago"])
- );
+ timestamps_["two days ago"]));
ASSERT_EQ(2, returned_networks.size());
// If we ask for any network by name, it should be returned too.
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork4(ServerSelector::ANY(),
- "level1"));
+ EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork4(ServerSelector::ANY(), "level1"));
ASSERT_TRUE(returned_network);
// Deleting a shared network with the mismatched server tag should not affect
// our shared network.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork4(ServerSelector::ONE("server1"),
- "level1")
- );
+ deleted_count = cbptr_->deleteSharedNetwork4(ServerSelector::ONE("server1"), "level1"));
EXPECT_EQ(0, deleted_count);
// Also, if we delete all shared networks for server1.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSharedNetworks4(ServerSelector::ONE("server1"))
- );
+ deleted_count = cbptr_->deleteAllSharedNetworks4(ServerSelector::ONE("server1")));
EXPECT_EQ(0, deleted_count);
// We can delete this shared network when we specify ANY and the matching name.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork4(ServerSelector::ANY(), "level1")
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork4(ServerSelector::ANY(), "level1"));
EXPECT_EQ(1, deleted_count);
// We can delete all networks using UNASSIGNED selector.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSharedNetworks4(ServerSelector::UNASSIGNED());
- );
+ deleted_count = cbptr_->deleteAllSharedNetworks4(ServerSelector::UNASSIGNED()););
EXPECT_EQ(1, deleted_count);
}
cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), network);
// Fetch this shared network.
- SharedNetwork4Ptr returned_network =
- cbptr_->getSharedNetwork4(ServerSelector::ALL(), "foo");
+ SharedNetwork4Ptr returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(), "foo");
ASSERT_TRUE(returned_network);
// Verified returned and original shared networks match.
- EXPECT_EQ(network->toElement()->str(),
- returned_network->toElement()->str());
+ EXPECT_EQ(network->toElement()->str(), returned_network->toElement()->str());
// Update the preferred and valid lifetime.
- network->setValid( Triplet<uint32_t>(100, 200, 300));
+ network->setValid(Triplet<uint32_t>(100, 200, 300));
cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), network);
// Fetch and verify again.
returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(), "foo");
ASSERT_TRUE(returned_network);
- EXPECT_EQ(network->toElement()->str(),
- returned_network->toElement()->str());
+ EXPECT_EQ(network->toElement()->str(), returned_network->toElement()->str());
}
// Test that deleting a shared network triggers deletion of the options
// Remove the shared network. This should not affect options assigned to the
// other shared network.
- EXPECT_NO_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::ALL(),
- test_networks_[1]->getName()));
+ EXPECT_NO_THROW(
+ cbptr_->deleteSharedNetwork4(ServerSelector::ALL(), test_networks_[1]->getName()));
EXPECT_EQ(1, countRows("dhcp4_shared_network"));
EXPECT_EQ(1, countRows("dhcp4_options"));
// Delete this shared network. This should not affect the option associated
// with the remaining shared network.
- EXPECT_NO_THROW(cbptr_->deleteSharedNetwork4(ServerSelector::ALL(),
- test_networks_[0]->getName()));
+ EXPECT_NO_THROW(
+ cbptr_->deleteSharedNetwork4(ServerSelector::ALL(), test_networks_[0]->getName()));
EXPECT_EQ(1, countRows("dhcp4_shared_network"));
EXPECT_EQ(1, countRows("dhcp4_options"));
}
// Fetch this option_definition by subnet identifier.
OptionDefinitionPtr returned_option_def =
- cbptr_->getOptionDef4(ServerSelector::ALL(),
- test_option_defs_[0]->getCode(),
+ cbptr_->getOptionDef4(ServerSelector::ALL(), test_option_defs_[0]->getCode(),
test_option_defs_[0]->getOptionSpaceName());
ASSERT_TRUE(returned_option_def);
EXPECT_GT(returned_option_def->getId(), 0);
{
SCOPED_TRACE("CREATE audit entry for an option definition");
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::CREATE,
"option definition set");
}
{
SCOPED_TRACE("UPDATE audit entry for an option definition");
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::UPDATE,
"option definition set");
}
}
// An attempt to create option definition for non-existing server should
// fail.
- EXPECT_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server1"),
- option1),
+ EXPECT_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server1"), option1),
NullKeyError);
// Create two servers.
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
// This time creation of the option definition for the server1 should pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server1"),
- option1));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server1"), option1));
{
SCOPED_TRACE("option definition for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the option definition.
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ONE("server1"),
- 3, 1);
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ONE("server1"), 3, 1);
}
// Creation of the option definition for the server2 should also pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server2"),
- option2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server2"), option2));
{
SCOPED_TRACE("option definition for server2 is set");
// Same as in case of the server1, there should be 3 audit entries and
// we validate one of them.
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ONE("server2"),
- 3, 1);
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ONE("server2"), 3, 1);
}
// Finally, creation of the option definition for all servers should
// also pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ALL(),
- option3));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ALL(), option3));
{
SCOPED_TRACE("option definition for server2 is set");
// There should be one new audit entry for all servers. It logs
// the insertion of the option definition.
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ALL(),
- 1, 1);
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ALL(), 1, 1);
}
OptionDefinitionPtr returned_option_def;
// Try to fetch the option definition specified for all servers. It should
// return the third one.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef4(ServerSelector::ALL(),
- option3->getCode(),
- option3->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef4(ServerSelector::ALL(),
+ option3->getCode(),
+ option3->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option3));
// Try to fetch the option definition specified for server1. It should
// override the definition for all servers.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef4(ServerSelector::ONE("server1"),
- option1->getCode(),
- option1->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef4(ServerSelector::ONE("server1"),
+ option1->getCode(),
+ option1->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option1));
// The same in case of the server2.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef4(ServerSelector::ONE("server2"),
- option2->getCode(),
- option2->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef4(ServerSelector::ONE("server2"),
+ option2->getCode(),
+ option2->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option2));
// Try to fetch the collection of the option definitions for server1, server2
// and server3. The server3 does not have an explicit option definition, so
// for this server we should get the definition associated with "all" servers.
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs4(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs4(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_option_defs.size());
// Check that expected option definitions have been returned.
// Try to fetch the collection of options specified for all servers.
// This excludes the options specific to server1 and server2. It returns
// only the common ones.
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs4(ServerSelector::ALL());
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs4(ServerSelector::ALL());
);
ASSERT_EQ(1, returned_option_defs.size());
{
SCOPED_TRACE("DELETE audit entry for the option definition after server deletion");
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete option definition for server1.
// Create this option definition again to test that deletion of all servers
// removes it too.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server2"),
- option2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef4(ServerSelector::ONE("server2"), option2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers4());
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs4(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs4(ServerSelector::ALL()););
EXPECT_EQ(1, deleted_num);
EXPECT_EQ(1, returned_option_defs.size());
EXPECT_TRUE((*returned_option_defs.begin())->equals(*option3));
{
SCOPED_TRACE("DELETE audit entry for the option definition after deletion of"
" all servers");
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
auto name = option_def->getName();
if (name.find("bar") != std::string::npos) {
SCOPED_TRACE("UPDATE audit entry for the option definition " + name);
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::UPDATE,
"option definition set");
++updates_num;
} else {
SCOPED_TRACE("CREATE audit entry for the option definition " + name);
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::CREATE,
"option definition set");
}
}
}
}
ASSERT_TRUE(success) << "failed for option definition " << (*def)->getCode()
- << ", option space " << (*def)->getOptionSpaceName();
+ << ", option space " << (*def)->getOptionSpaceName();
}
// Deleting non-existing option definition should return 0.
- EXPECT_EQ(0, cbptr_->deleteOptionDef4(ServerSelector::ALL(),
- 99, "non-exiting-space"));
+ EXPECT_EQ(0, cbptr_->deleteOptionDef4(ServerSelector::ALL(), 99, "non-exiting-space"));
// All option definitions should be still there.
ASSERT_EQ(test_option_defs_.size() - updates_num, option_defs.size());
EXPECT_EQ(0, cbptr_->deleteAllOptionDefs4(ServerSelector::ONE("server1")));
// Delete one of the option definitions and see if it is gone.
- EXPECT_EQ(1, cbptr_->deleteOptionDef4(ServerSelector::ALL(),
- test_option_defs_[2]->getCode(),
+ EXPECT_EQ(1, cbptr_->deleteOptionDef4(ServerSelector::ALL(), test_option_defs_[2]->getCode(),
test_option_defs_[2]->getOptionSpaceName()));
- ASSERT_FALSE(cbptr_->getOptionDef4(ServerSelector::ALL(),
- test_option_defs_[2]->getCode(),
+ ASSERT_FALSE(cbptr_->getOptionDef4(ServerSelector::ALL(), test_option_defs_[2]->getCode(),
test_option_defs_[2]->getOptionSpaceName()));
{
SCOPED_TRACE("DELETE audit entry for the first option definition");
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::DELETE,
"option definition deleted");
}
{
SCOPED_TRACE("DELETE audit entries for the remaining option definitions");
// The last parameter indicates that we expect two new audit entries.
- testNewAuditEntry("dhcp4_option_def",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_option_def", AuditEntry::ModificationType::DELETE,
"deleted all option definitions", ServerSelector::ALL(), 2);
}
}
// Insert option definitions into the database.
for (int i = 1; i < test_networks_.size(); ++i) {
- cbptr_->createUpdateOptionDef4(ServerSelector::ALL(),
- test_option_defs_[i]);
+ cbptr_->createUpdateOptionDef4(ServerSelector::ALL(), test_option_defs_[i]);
}
// Fetch option definitions with timestamp later than today. Only one
// option definition should be returned.
- OptionDefContainer
- option_defs = cbptr_->getModifiedOptionDefs4(ServerSelector::ALL(),
- timestamps_["after today"]);
+ OptionDefContainer option_defs = cbptr_->getModifiedOptionDefs4(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, option_defs.size());
// Fetch option definitions with timestamp later than yesterday. We
// Fetch option definitions with timestamp later than tomorrow. Nothing
// should be returned.
option_defs = cbptr_->getModifiedOptionDefs4(ServerSelector::ALL(),
- timestamps_["after tomorrow"]);
+ timestamps_["after tomorrow"]);
ASSERT_TRUE(option_defs.empty());
}
TEST_F(PgSqlConfigBackendDHCPv4Test, createUpdateDeleteOption4) {
// Add option to the database.
OptionDescriptorPtr opt_boot_file_name = test_options_[0];
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), opt_boot_file_name);
// Make sure we can retrieve this option and that it is equal to the
// option we have inserted into the database.
OptionDescriptorPtr returned_opt_boot_file_name =
- cbptr_->getOption4(ServerSelector::ALL(),
- opt_boot_file_name->option_->getType(),
+ cbptr_->getOption4(ServerSelector::ALL(), opt_boot_file_name->option_->getType(),
opt_boot_file_name->space_name_);
ASSERT_TRUE(returned_opt_boot_file_name);
{
SCOPED_TRACE("CREATE audit entry for an option");
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::CREATE,
"global option set");
}
// Modify option and update it in the database.
opt_boot_file_name->persistent_ = !opt_boot_file_name->persistent_;
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), opt_boot_file_name);
// Retrieve the option again and make sure that updates were
// properly propagated to the database. Use explicit server selector
{
SCOPED_TRACE("UPDATE audit entry for an option");
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::UPDATE,
"global option set");
}
opt_boot_file_name->space_name_));
// Deleting option for all servers should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption4(ServerSelector::ALL(),
- opt_boot_file_name->option_->getType(),
- opt_boot_file_name->space_name_));
+ EXPECT_EQ(1,
+ cbptr_->deleteOption4(ServerSelector::ALL(), opt_boot_file_name->option_->getType(),
+ opt_boot_file_name->space_name_));
- EXPECT_FALSE(cbptr_->getOption4(ServerSelector::ALL(),
- opt_boot_file_name->option_->getType(),
+ EXPECT_FALSE(cbptr_->getOption4(ServerSelector::ALL(), opt_boot_file_name->option_->getType(),
opt_boot_file_name->space_name_));
{
SCOPED_TRACE("DELETE audit entry for an option");
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::DELETE,
"global option deleted");
}
}
OptionDescriptorPtr opt_boot_file_name2 = test_options_[6];
OptionDescriptorPtr opt_boot_file_name3 = test_options_[7];
- EXPECT_THROW(cbptr_->createUpdateOption4(ServerSelector::ONE("server1"),
- opt_boot_file_name1),
+ EXPECT_THROW(cbptr_->createUpdateOption4(ServerSelector::ONE("server1"), opt_boot_file_name1),
NullKeyError);
// Create two servers.
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer4(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp4_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp4_server", AuditEntry::ModificationType::CREATE, "server set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption4(ServerSelector::ONE("server1"),
- opt_boot_file_name1));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateOption4(ServerSelector::ONE("server1"), opt_boot_file_name1));
{
SCOPED_TRACE("global option for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the global option.
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ONE("server1"),
- 3, 1);
-
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ONE("server1"), 3, 1);
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption4(ServerSelector::ONE("server2"),
- opt_boot_file_name2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateOption4(ServerSelector::ONE("server2"), opt_boot_file_name2));
{
SCOPED_TRACE("global option for server2 is set");
// Same as in case of the server1, there should be 3 audit entries and
// we validate one of them.
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ONE("server2"),
- 3, 1);
-
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ONE("server2"), 3, 1);
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption4(ServerSelector::ALL(),
- opt_boot_file_name3));
+ EXPECT_NO_THROW(cbptr_->createUpdateOption4(ServerSelector::ALL(), opt_boot_file_name3));
{
SCOPED_TRACE("global option for all servers is set");
// There should be one new audit entry for all servers. It logs
// the insertion of the global option.
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ALL(),
- 1, 1);
-
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ALL(), 1, 1);
}
OptionDescriptorPtr returned_option;
// Try to fetch the option specified for all servers. It should return
// the third option.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption4(ServerSelector::ALL(),
- opt_boot_file_name3->option_->getType(),
- opt_boot_file_name3->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption4(ServerSelector::ALL(),
+ opt_boot_file_name3->option_->getType(),
+ opt_boot_file_name3->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_boot_file_name3, *returned_option);
// Try to fetch the option specified for the server1. It should override the
// option specified for all servers.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption4(ServerSelector::ONE("server1"),
- opt_boot_file_name1->option_->getType(),
- opt_boot_file_name1->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption4(ServerSelector::ONE("server1"),
+ opt_boot_file_name1->option_->getType(),
+ opt_boot_file_name1->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_boot_file_name1, *returned_option);
// The same in case of the server2.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption4(ServerSelector::ONE("server2"),
- opt_boot_file_name2->option_->getType(),
- opt_boot_file_name2->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption4(ServerSelector::ONE("server2"),
+ opt_boot_file_name2->option_->getType(),
+ opt_boot_file_name2->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_boot_file_name2, *returned_option);
// Try to fetch the collection of global options for the server1, server2
// and server3. The server3 does not have an explicit value so for this server
// we should get the option associated with "all" servers.
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions4(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions4(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_options.size());
// Check that expected options have been returned.
// Try to fetch the collection of options specified for all servers.
// This excludes the options specific to server1 and server2. It returns
// only the common ones.
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions4(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions4(ServerSelector::ALL()););
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_boot_file_name3, *returned_options.begin());
// Delete the server1. It should remove associations of this server with the
// option and the option itself.
EXPECT_NO_THROW(cbptr_->deleteServer4(ServerTag("server1")));
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions4(ServerSelector::ONE("server1"));
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions4(ServerSelector::ONE("server1")););
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_boot_file_name3, *returned_options.begin());
{
SCOPED_TRACE("DELETE audit entry for the global option after server deletion");
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete global option for server1.
EXPECT_EQ(1, deleted_num);
// Create this option again to test that deletion of all servers removes it too.
- EXPECT_NO_THROW(cbptr_->createUpdateOption4(ServerSelector::ONE("server2"),
- opt_boot_file_name2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateOption4(ServerSelector::ONE("server2"), opt_boot_file_name2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers4());
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions4(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions4(ServerSelector::ALL()););
EXPECT_EQ(1, deleted_num);
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_boot_file_name3, *returned_options.begin());
{
SCOPED_TRACE("DELETE audit entry for the global option after deletion of"
" all servers");
- testNewAuditEntry("dhcp4_options",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp4_options", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
// This test verifies that all global options can be retrieved.
TEST_F(PgSqlConfigBackendDHCPv4Test, getAllOptions4) {
// Add three global options to the database.
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[0]);
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[1]);
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[5]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[0]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[1]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[5]);
// Retrieve all these options.
OptionContainer returned_options = cbptr_->getAllOptions4(ServerSelector::ALL());
test_options_[5]->setModificationTime(timestamps_["today"]);
// Put options into the database.
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[0]);
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[1]);
- cbptr_->createUpdateOption4(ServerSelector::ALL(),
- test_options_[5]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[0]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[1]);
+ cbptr_->createUpdateOption4(ServerSelector::ALL(), test_options_[5]);
// Get options with the timestamp later than today. Only
// one option should be returned.
- OptionContainer returned_options =
- cbptr_->getModifiedOptions4(ServerSelector::ALL(),
- timestamps_["after today"]);
+ OptionContainer returned_options = cbptr_->getModifiedOptions4(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, returned_options.size());
// Fetching modified options with explicitly specified server selector
cbptr_->createUpdateSubnet4(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier.
- Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
{
SCOPED_TRACE("CREATE audit entry for a new subnet");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
// The inserted subnet contains two options.
ASSERT_EQ(2, countRows("dhcp4_options"));
OptionDescriptorPtr opt_boot_file_name = test_options_[0];
- cbptr_->createUpdateOption4(ServerSelector::ANY(), subnet->getID(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), subnet->getID(), opt_boot_file_name);
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
OptionDescriptor returned_opt_boot_file_name =
// entry for the entire subnet so as the server refreshes the
// subnet with the new option. Note that the server doesn't
// have means to retrieve only the newly added option.
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option set");
}
ASSERT_EQ(3, countRows("dhcp4_options"));
opt_boot_file_name->persistent_ = !opt_boot_file_name->persistent_;
- cbptr_->createUpdateOption4(ServerSelector::ANY(), subnet->getID(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), subnet->getID(), opt_boot_file_name);
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ANY(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- returned_opt_boot_file_name =
- returned_subnet->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME);
+ returned_opt_boot_file_name = returned_subnet->getCfgOption()->get(DHCP4_OPTION_SPACE,
+ DHO_BOOT_FILE_NAME);
ASSERT_TRUE(returned_opt_boot_file_name.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for an updated subnet option");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option set");
}
opt_boot_file_name->option_->getType(),
opt_boot_file_name->space_name_));
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- EXPECT_FALSE(returned_subnet->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME).option_);
+ EXPECT_FALSE(
+ returned_subnet->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME).option_);
{
SCOPED_TRACE("UPDATE audit entry for a deleted subnet option");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option deleted");
}
{
SCOPED_TRACE("CREATE audit entry for a subnet");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
// Inserted subnet has two options.
const PoolPtr pool = subnet->getPool(Lease::TYPE_V4, IOAddress("192.0.2.10"));
ASSERT_TRUE(pool);
OptionDescriptorPtr opt_boot_file_name = test_options_[0];
- cbptr_->createUpdateOption4(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_boot_file_name);
// Query for a subnet.
- Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ Subnet4Ptr returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
// The returned subnet should include our pool.
- const PoolPtr returned_pool = returned_subnet->getPool(Lease::TYPE_V4,
- IOAddress("192.0.2.10"));
+ const PoolPtr returned_pool = returned_subnet->getPool(Lease::TYPE_V4, IOAddress("192.0.2.10"));
ASSERT_TRUE(returned_pool);
// The pool should contain option we added earlier.
{
SCOPED_TRACE("UPDATE audit entry for a subnet after adding an option "
"to the pool");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"pool specific option set");
}
// Modify the option and update it in the database.
opt_boot_file_name->persistent_ = !opt_boot_file_name->persistent_;
- cbptr_->createUpdateOption4(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_boot_file_name);
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_boot_file_name);
// Fetch the subnet and the corresponding pool.
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
const PoolPtr returned_pool1 = returned_subnet->getPool(Lease::TYPE_V4,
IOAddress("192.0.2.10"));
ASSERT_TRUE(returned_pool1);
// Test that the option has been correctly updated in the database.
- returned_opt_boot_file_name =
- returned_pool1->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME);
+ returned_opt_boot_file_name = returned_pool1->getCfgOption()->get(DHCP4_OPTION_SPACE,
+ DHO_BOOT_FILE_NAME);
ASSERT_TRUE(returned_opt_boot_file_name.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for a subnet when updating pool "
"specific option");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"pool specific option set");
}
ASSERT_EQ(3, countRows("dhcp4_options"));
// Delete option for any server should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption4(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_boot_file_name->option_->getType(),
- opt_boot_file_name->space_name_));
+ EXPECT_EQ(1,
+ cbptr_->deleteOption4(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_boot_file_name->option_->getType(),
+ opt_boot_file_name->space_name_));
// Fetch the subnet and the pool from the database again to make sure
// that the option is really gone.
- returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet4(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
const PoolPtr returned_pool2 = returned_subnet->getPool(Lease::TYPE_V4,
IOAddress("192.0.2.10"));
ASSERT_TRUE(returned_pool2);
// Option should be gone.
- EXPECT_FALSE(returned_pool2->getCfgOption()->get(DHCP4_OPTION_SPACE,
- DHO_BOOT_FILE_NAME).option_);
+ EXPECT_FALSE(
+ returned_pool2->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME).option_);
{
SCOPED_TRACE("UPDATE audit entry for a subnet when deleting pool "
"specific option");
- testNewAuditEntry("dhcp4_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_subnet", AuditEntry::ModificationType::UPDATE,
"pool specific option deleted");
}
TEST_F(PgSqlConfigBackendDHCPv4Test, createUpdateDeleteSharedNetworkOption4) {
// Insert new shared network.
SharedNetwork4Ptr shared_network = test_networks_[1];
- cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- shared_network);
+ cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), shared_network);
// Fetch this shared network by name.
- SharedNetwork4Ptr returned_network =
- cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- shared_network->getName());
+ SharedNetwork4Ptr returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
+ shared_network->getName());
ASSERT_TRUE(returned_network);
{
SCOPED_TRACE("CREATE audit entry for the new shared network");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
ASSERT_EQ(0, countRows("dhcp4_options"));
OptionDescriptorPtr opt_boot_file_name = test_options_[0];
- cbptr_->createUpdateOption4(ServerSelector::ANY(),
- shared_network->getName(),
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), shared_network->getName(),
opt_boot_file_name);
- returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
OptionDescriptor returned_opt_boot_file_name =
// entry for the entire shared network so as the server refreshes the
// shared network with the new option. Note that the server doesn't
// have means to retrieve only the newly added option.
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option set");
}
ASSERT_EQ(1, countRows("dhcp4_options"));
opt_boot_file_name->persistent_ = !opt_boot_file_name->persistent_;
- cbptr_->createUpdateOption4(ServerSelector::ANY(),
- shared_network->getName(),
+ cbptr_->createUpdateOption4(ServerSelector::ANY(), shared_network->getName(),
opt_boot_file_name);
- returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
- returned_opt_boot_file_name =
- returned_network->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME);
+ returned_opt_boot_file_name = returned_network->getCfgOption()->get(DHCP4_OPTION_SPACE,
+ DHO_BOOT_FILE_NAME);
ASSERT_TRUE(returned_opt_boot_file_name.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for the updated shared network option");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option set");
}
ASSERT_EQ(1, countRows("dhcp4_options"));
// Deleting an option for any server should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption4(ServerSelector::ANY(),
- shared_network->getName(),
+ EXPECT_EQ(1, cbptr_->deleteOption4(ServerSelector::ANY(), shared_network->getName(),
opt_boot_file_name->option_->getType(),
opt_boot_file_name->space_name_));
- returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork4(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
- EXPECT_FALSE(returned_network->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME).option_);
+ EXPECT_FALSE(
+ returned_network->getCfgOption()->get(DHCP4_OPTION_SPACE, DHO_BOOT_FILE_NAME).option_);
{
SCOPED_TRACE("UPDATE audit entry for the deleted shared network option");
- testNewAuditEntry("dhcp4_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp4_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option deleted");
}
// Insert two shared networks. We insert level1 without options first,
// then level2.
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- level1_no_options));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), level1_no_options));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- level2));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), level2));
// Fetch all shared networks.
- SharedNetwork4Collection networks =
- cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
+ SharedNetwork4Collection networks = cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
ASSERT_EQ(2, networks.size());
for (auto i = 0; i < networks.size(); ++i) {
if (i == 0) {
// level1_no_options
- EXPECT_EQ(level1_no_options->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level1_no_options->toElement()->str(), networks[i]->toElement()->str());
} else {
// bar
- EXPECT_EQ(level2->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level2->toElement()->str(), networks[i]->toElement()->str());
}
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(),
- level1_options));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork4(ServerSelector::ALL(), level1_options));
// Fetch all shared networks.
networks = cbptr_->getAllSharedNetworks4(ServerSelector::ALL());
for (auto i = 0; i < networks.size(); ++i) {
if (i == 0) {
// level1_no_options
- EXPECT_EQ(level1_options->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level1_options->toElement()->str(), networks[i]->toElement()->str());
} else {
// bar
- EXPECT_EQ(level2->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level2->toElement()->str(), networks[i]->toElement()->str());
}
}
}
}
// Get all audit entries from now.
- AuditEntryCollection audit_entries =
- cbptr_->getRecentAuditEntries(server_selector, now, 0);
+ AuditEntryCollection audit_entries = cbptr_->getRecentAuditEntries(server_selector, now, 0);
// Check that partial retrieves return the right count.
auto& mod_time_idx = audit_entries.get<AuditEntryModificationTimeIdTag>();
for (auto it = mod_time_idx.begin(); it != mod_time_idx.end(); ++it) {
- size_t partial_size =
- cbptr_->getRecentAuditEntries(server_selector,
- (*it)->getModificationTime(),
- (*it)->getRevisionId()).size();
- EXPECT_EQ(partial_size + 1,
- std::distance(it, mod_time_idx.end()));
+ size_t partial_size = cbptr_
+ ->getRecentAuditEntries(server_selector,
+ (*it)->getModificationTime(),
+ (*it)->getRevisionId())
+ .size();
+ EXPECT_EQ(partial_size + 1, std::distance(it, mod_time_idx.end()));
}
}
/// @brief Method which returns invalid back end specific connection
/// string
virtual std::string invalidConnectString() {
- return (connectionString(PGSQL_VALID_TYPE, INVALID_NAME, VALID_HOST,
- VALID_USER, VALID_PASSWORD));
+ return (connectionString(PGSQL_VALID_TYPE, INVALID_NAME, VALID_HOST, VALID_USER,
+ VALID_PASSWORD));
}
/// @brief Verifies open failures do NOT invoke db lost callback
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
access = invalidConnectString();
CfgMgr::instance().clear();
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
access = invalidConnectString();
access += extra;
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()));
access = invalidConnectString();
access += extra;
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv4Mgr::instance().getPool()->getAllServers4(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
}
/// @brief Verifies that loss of connectivity to Postgres is handled correctly.
-TEST_F(PgSqlConfigBackendDHCPv4DbLostCallbackTest, testDbLostAndRecoveredAfterTimeoutCallbackMultiThreading) {
+TEST_F(PgSqlConfigBackendDHCPv4DbLostCallbackTest,
+ testDbLostAndRecoveredAfterTimeoutCallbackMultiThreading) {
MultiThreadingTest mt(true);
testDbLostAndRecoveredAfterTimeoutCallback();
}
}
/// @brief Verifies that loss of connectivity to Postgres is handled correctly.
-TEST_F(PgSqlConfigBackendDHCPv4DbLostCallbackTest, testDbLostAndFailedAfterTimeoutCallbackMultiThreading) {
+TEST_F(PgSqlConfigBackendDHCPv4DbLostCallbackTest,
+ testDbLostAndFailedAfterTimeoutCallbackMultiThreading) {
MultiThreadingTest mt(true);
testDbLostAndFailedAfterTimeoutCallback();
}
-}
+} // namespace
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
+
#include <cc/stamped_value.h>
#include <dhcpsrv/config_backend_dhcp6_mgr.h>
-#include <pgsql_cb_dhcp6.h>
-#include <pgsql/testutils/pgsql_schema.h>
#include <dhcpsrv/testutils/generic_backend_unittest.h>
+#include <pgsql/testutils/pgsql_schema.h>
+
#include <boost/shared_ptr.hpp>
+
#include <gtest/gtest.h>
+#include <pgsql_cb_dhcp6.h>
using namespace isc::data;
using namespace isc::dhcp;
// Should be able to create a global parameter.
StampedValuePtr server_tag = StampedValue::create("server-tag", "whale");
- ASSERT_NO_THROW(mgr.getPool()->createUpdateGlobalParameter6(pgsql, ServerSelector::ALL(),
- server_tag));
+ ASSERT_NO_THROW(
+ mgr.getPool()->createUpdateGlobalParameter6(pgsql, ServerSelector::ALL(), server_tag));
// Verify parameter can be fetched.
server_tag.reset();
ASSERT_NO_THROW(server_tag = mgr.getPool()->getGlobalParameter6(pgsql, ServerSelector::ALL(),
NoSuchDatabase);
}
-}
+} // namespace
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
-#include <pgsql_cb_dhcp6.h>
+
#include <asiolink/addr_utilities.h>
#include <database/database_connection.h>
#include <database/db_exceptions.h>
#include <testutils/multi_threading_utils.h>
#include <boost/shared_ptr.hpp>
+
#include <gtest/gtest.h>
#include <map>
+#include <pgsql_cb_dhcp6.h>
#include <sstream>
using namespace isc;
/// It exposes protected members of the @c PgSqlConfigBackendDHCPv6.
class TestPgSqlConfigBackendDHCPv6 : public PgSqlConfigBackendDHCPv6 {
public:
-
/// @brief Constructor.
///
/// @param parameters A data structure relating keywords and values
}
using PgSqlConfigBackendDHCPv6::base_impl_;
-
};
/// @brief Test fixture class for @c PgSqlConfigBackendDHCPv6.
/// database.
class PgSqlConfigBackendDHCPv6Test : public PgSqlGenericBackendTest {
public:
-
/// @brief Constructor.
PgSqlConfigBackendDHCPv6Test()
- : test_subnets_(), test_networks_(), test_option_defs_(),
- test_options_(), test_servers_(), timestamps_(), cbptr_(),
- audit_entries_() {
+ : test_subnets_(), test_networks_(), test_option_defs_(), test_options_(), test_servers_(),
+ timestamps_(), cbptr_(), audit_entries_() {
// Ensure we have the proper schema with no transient data.
createPgSQLSchema();
// First subnet includes all parameters.
std::string interface_id_text = "whale";
OptionBuffer interface_id(interface_id_text.begin(), interface_id_text.end());
- OptionPtr opt_interface_id(new Option(Option::V6, D6O_INTERFACE_ID,
- interface_id));
+ OptionPtr opt_interface_id(new Option(Option::V6, D6O_INTERFACE_ID, interface_id));
ElementPtr user_context = Element::createMap();
user_context->set("foo", Element::create("bar"));
- Subnet6Ptr subnet(new Subnet6(IOAddress("2001:db8::"),
- 64, 30, 40, 50, 60, 1024));
+ Subnet6Ptr subnet(new Subnet6(IOAddress("2001:db8::"), 64, 30, 40, 50, 60, 1024));
subnet->allowClientClass("home");
subnet->setIface("eth1");
subnet->setInterfaceId(opt_interface_id);
subnet->setT2Percent(0.444);
subnet->setDdnsSendUpdates(false);
- Pool6Ptr pool1(new Pool6(Lease::TYPE_NA,
- IOAddress("2001:db8::10"),
- IOAddress("2001:db8::20")));
+ Pool6Ptr pool1(
+ new Pool6(Lease::TYPE_NA, IOAddress("2001:db8::10"), IOAddress("2001:db8::20")));
subnet->addPool(pool1);
- Pool6Ptr pool2(new Pool6(Lease::TYPE_NA,
- IOAddress("2001:db8::50"),
- IOAddress("2001:db8::60")));
+ Pool6Ptr pool2(
+ new Pool6(Lease::TYPE_NA, IOAddress("2001:db8::50"), IOAddress("2001:db8::60")));
subnet->addPool(pool2);
- Pool6Ptr pdpool1(new Pool6(Lease::TYPE_PD,
- IOAddress("2001:db8:a::"), 48, 64));
+ Pool6Ptr pdpool1(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:a::"), 48, 64));
subnet->addPool(pdpool1);
- Pool6Ptr pdpool2(new Pool6(Lease::TYPE_PD,
- IOAddress("2001:db8:b::"), 48, 64));
+ Pool6Ptr pdpool2(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:b::"), 48, 64));
subnet->addPool(pdpool2);
// Add several options to the subnet.
- subnet->getCfgOption()->add(test_options_[0]->option_,
- test_options_[0]->persistent_,
+ subnet->getCfgOption()->add(test_options_[0]->option_, test_options_[0]->persistent_,
test_options_[0]->space_name_);
- subnet->getCfgOption()->add(test_options_[1]->option_,
- test_options_[1]->persistent_,
+ subnet->getCfgOption()->add(test_options_[1]->option_, test_options_[1]->persistent_,
test_options_[1]->space_name_);
- subnet->getCfgOption()->add(test_options_[2]->option_,
- test_options_[2]->persistent_,
+ subnet->getCfgOption()->add(test_options_[2]->option_, test_options_[2]->persistent_,
test_options_[2]->space_name_);
test_subnets_.push_back(subnet);
// Adding another subnet with the same subnet id to test
// cases that this second instance can override existing
// subnet instance.
- subnet.reset(new Subnet6(IOAddress("2001:db8:1::"),
- 48, 20, 30, 40, 50, 1024));
+ subnet.reset(new Subnet6(IOAddress("2001:db8:1::"), 48, 20, 30, 40, 50, 1024));
- pool1.reset(new Pool6(Lease::TYPE_NA,
- IOAddress("2001:db8:1::10"),
- IOAddress("2001:db8:1::20")));
+ pool1.reset(
+ new Pool6(Lease::TYPE_NA, IOAddress("2001:db8:1::10"), IOAddress("2001:db8:1::20")));
subnet->addPool(pool1);
- pool1->getCfgOption()->add(test_options_[3]->option_,
- test_options_[3]->persistent_,
+ pool1->getCfgOption()->add(test_options_[3]->option_, test_options_[3]->persistent_,
test_options_[3]->space_name_);
- pool1->getCfgOption()->add(test_options_[4]->option_,
- test_options_[4]->persistent_,
+ pool1->getCfgOption()->add(test_options_[4]->option_, test_options_[4]->persistent_,
test_options_[4]->space_name_);
- pool2.reset(new Pool6(Lease::TYPE_NA,
- IOAddress("2001:db8:1::50"),
- IOAddress("2001:db8:1::60")));
+ pool2.reset(
+ new Pool6(Lease::TYPE_NA, IOAddress("2001:db8:1::50"), IOAddress("2001:db8:1::60")));
subnet->addPool(pool2);
pool2->allowClientClass("work");
user_context->set("bar", Element::create("foo"));
pool2->setContext(user_context);
- pdpool1.reset(new Pool6(IOAddress("2001:db8:c::"), 48, 64,
- IOAddress("2001:db8:c::1"), 96));
+ pdpool1.reset(new Pool6(IOAddress("2001:db8:c::"), 48, 64, IOAddress("2001:db8:c::1"), 96));
subnet->addPool(pdpool1);
- pdpool1->getCfgOption()->add(test_options_[3]->option_,
- test_options_[3]->persistent_,
+ pdpool1->getCfgOption()->add(test_options_[3]->option_, test_options_[3]->persistent_,
test_options_[3]->space_name_);
- pdpool1->getCfgOption()->add(test_options_[4]->option_,
- test_options_[4]->persistent_,
+ pdpool1->getCfgOption()->add(test_options_[4]->option_, test_options_[4]->persistent_,
test_options_[4]->space_name_);
// Create the prefix delegation pool with an excluded prefix.
- pdpool2.reset(new Pool6(IOAddress("2001:db8:d::"), 48, 64,
- IOAddress("2001:db8:d::2000"), 120));
+ pdpool2.reset(
+ new Pool6(IOAddress("2001:db8:d::"), 48, 64, IOAddress("2001:db8:d::2000"), 120));
subnet->addPool(pdpool2);
test_subnets_.push_back(subnet);
- subnet.reset(new Subnet6(IOAddress("2001:db8:3::"),
- 64, 20, 30, 40, 50, 2048));
+ subnet.reset(new Subnet6(IOAddress("2001:db8:3::"), 64, 20, 30, 40, 50, 2048));
Triplet<uint32_t> null_timer;
subnet->setPreferred(null_timer);
subnet->setT1(null_timer);
subnet->setDdnsSendUpdates(true);
subnet->setDdnsOverrideNoUpdate(true);
subnet->setDdnsOverrideClientUpdate(false);
- subnet->setDdnsReplaceClientNameMode(D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
+ subnet->setDdnsReplaceClientNameMode(
+ D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
subnet->setDdnsGeneratedPrefix("myhost");
subnet->setDdnsQualifyingSuffix("example.org");
- subnet->getCfgOption()->add(test_options_[0]->option_,
- test_options_[0]->persistent_,
+ subnet->getCfgOption()->add(test_options_[0]->option_, test_options_[0]->persistent_,
test_options_[0]->space_name_);
test_subnets_.push_back(subnet);
// Add a subnet with all defaults.
- subnet.reset(new Subnet6(IOAddress("2001:db8:4::"), 64,
- Triplet<uint32_t>(), Triplet<uint32_t>(),
- Triplet<uint32_t>(), Triplet<uint32_t>(),
+ subnet.reset(new Subnet6(IOAddress("2001:db8:4::"), 64, Triplet<uint32_t>(),
+ Triplet<uint32_t>(), Triplet<uint32_t>(), Triplet<uint32_t>(),
4096));
test_subnets_.push_back(subnet);
}
user_context->set("foo", Element::create("bar"));
std::string interface_id_text = "fish";
- OptionBuffer interface_id(interface_id_text.begin(),
- interface_id_text.end());
- OptionPtr opt_interface_id(new Option(Option::V6, D6O_INTERFACE_ID,
- interface_id));
+ OptionBuffer interface_id(interface_id_text.begin(), interface_id_text.end());
+ OptionPtr opt_interface_id(new Option(Option::V6, D6O_INTERFACE_ID, interface_id));
SharedNetwork6Ptr shared_network(new SharedNetwork6("level1"));
shared_network->allowClientClass("foo");
shared_network->setDdnsSendUpdates(true);
shared_network->setDdnsOverrideNoUpdate(true);
shared_network->setDdnsOverrideClientUpdate(false);
- shared_network->setDdnsReplaceClientNameMode(D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
+ shared_network->setDdnsReplaceClientNameMode(
+ D2ClientConfig::ReplaceClientNameMode::RCM_WHEN_PRESENT);
shared_network->setDdnsGeneratedPrefix("myhost");
shared_network->setDdnsQualifyingSuffix("example.org");
ElementPtr user_context = Element::createMap();
user_context->set("foo", Element::create("bar"));
- OptionDefinitionPtr option_def(new OptionDefinition("foo", 1234,
- DHCP6_OPTION_SPACE,
- "string",
- "espace"));
+ OptionDefinitionPtr option_def(
+ new OptionDefinition("foo", 1234, DHCP6_OPTION_SPACE, "string", "espace"));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("bar", 1234, DHCP6_OPTION_SPACE,
- "uint32", true));
+ option_def.reset(new OptionDefinition("bar", 1234, DHCP6_OPTION_SPACE, "uint32", true));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("fish", 5235, DHCP6_OPTION_SPACE,
- "record", true));
+ option_def.reset(new OptionDefinition("fish", 5235, DHCP6_OPTION_SPACE, "record", true));
option_def->addRecordField("uint32");
option_def->addRecordField("string");
test_option_defs_.push_back(option_def);
option_def.reset(new OptionDefinition("whale", 20236, "xyz", "string"));
test_option_defs_.push_back(option_def);
- option_def.reset(new OptionDefinition("bar", 1234, DHCP6_OPTION_SPACE,
- "uint64", true));
+ option_def.reset(new OptionDefinition("bar", 1234, DHCP6_OPTION_SPACE, "uint64", true));
test_option_defs_.push_back(option_def);
}
OptionDefSpaceContainer defs;
- OptionDescriptor desc =
- createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE,
- true, false, "my-timezone");
+ OptionDescriptor desc = createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE, true,
+ false, "my-timezone");
desc.space_name_ = DHCP6_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionUint8>(Option::V6, D6O_PREFERENCE,
- false, true, 64);
+ desc = createOption<OptionUint8>(Option::V6, D6O_PREFERENCE, false, true, 64);
desc.space_name_ = DHCP6_OPTION_SPACE;
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
desc.space_name_ = "vendor-encapsulated-options";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createAddressOption<Option6AddrLst>(1254, true, true,
- "2001:db8::3");
+ desc = createAddressOption<Option6AddrLst>(1254, true, true, "2001:db8::3");
desc.space_name_ = DHCP6_OPTION_SPACE;
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
desc.space_name_ = "isc";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createAddressOption<Option6AddrLst>(2, false, true,
- "2001:db8:1::5",
- "2001:db8:1::3",
+ desc = createAddressOption<Option6AddrLst>(2, false, true, "2001:db8:1::5", "2001:db8:1::3",
"2001:db8:3::4");
desc.space_name_ = "isc";
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE,
- true, false, "my-timezone-2");
+ desc = createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE, true, false,
+ "my-timezone-2");
desc.space_name_ = DHCP6_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
- desc = createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE,
- true, false, "my-timezone-3");
+ desc = createOption<OptionString>(Option::V6, D6O_NEW_POSIX_TIMEZONE, true, false,
+ "my-timezone-3");
desc.space_name_ = DHCP6_OPTION_SPACE;
desc.setContext(user_context);
test_options_.push_back(OptionDescriptorPtr(new OptionDescriptor(desc)));
// compare subnets, networks and pools in JSON format. In that case,
// the @c toElement functions require option definitions to generate the
// proper output.
- defs.addItem(OptionDefinitionPtr(new OptionDefinition(
- "vendor-encapsulated-1", 1,
- "vendor-encapsulated-options", "uint32")));
- defs.addItem(OptionDefinitionPtr(new OptionDefinition(
- "option-1254", 1254, DHCP6_OPTION_SPACE,
- "ipv6-address", true)));
+ defs.addItem(
+ OptionDefinitionPtr(new OptionDefinition("vendor-encapsulated-1", 1,
+ "vendor-encapsulated-options", "uint32")));
+ defs.addItem(OptionDefinitionPtr(
+ new OptionDefinition("option-1254", 1254, DHCP6_OPTION_SPACE, "ipv6-address", true)));
defs.addItem(OptionDefinitionPtr(new OptionDefinition("isc-1", 1, "isc", "empty")));
- defs.addItem(OptionDefinitionPtr(new OptionDefinition("isc-2", 2, "isc", "ipv6-address", true)));
+ defs.addItem(
+ OptionDefinitionPtr(new OptionDefinition("isc-2", 2, "isc", "ipv6-address", true)));
// Register option definitions.
LibDHCP::setRuntimeOptionDefs(defs);
/// @brief Initialize posix time values used in tests.
void initTimestamps() {
// Current time minus 1 hour to make sure it is in the past.
- timestamps_["today"] = boost::posix_time::second_clock::local_time()
- - boost::posix_time::hours(1);
+ timestamps_["today"] = boost::posix_time::second_clock::local_time() -
+ boost::posix_time::hours(1);
// One second after today.
timestamps_["after today"] = timestamps_["today"] + boost::posix_time::seconds(1);
// Yesterday.
auto& mod_time_idx = audit_entries_[server_tag].get<AuditEntryModificationTimeIdTag>();
- for (auto audit_entry_it = mod_time_idx.begin();
- audit_entry_it != mod_time_idx.end();
+ for (auto audit_entry_it = mod_time_idx.begin(); audit_entry_it != mod_time_idx.end();
++audit_entry_it) {
auto audit_entry = *audit_entry_it;
- s << audit_entry->getObjectType() << ", "
- << audit_entry->getObjectId() << ", "
+ s << audit_entry->getObjectType() << ", " << audit_entry->getObjectId() << ", "
<< static_cast<int>(audit_entry->getModificationType()) << ", "
- << audit_entry->getModificationTime() << ", "
- << audit_entry->getRevisionId() << ", "
- << audit_entry->getLogMessage()
- << std::endl;
+ << audit_entry->getModificationTime() << ", " << audit_entry->getRevisionId() << ", "
+ << audit_entry->getLogMessage() << std::endl;
}
return (s.str());
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
// It should not be possible to create a duplicate of the logical
{
SCOPED_TRACE("UPDATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::UPDATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::UPDATE, "server set");
}
// Verify that the server has been updated.
EXPECT_EQ("this is server 1 bis", returned_server->getDescription());
EXPECT_EQ(timestamps_["today"], returned_server->getModificationTime());
-
uint64_t servers_deleted = 0;
// Try to delete non-existing server.
{
SCOPED_TRACE("DELETE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::DELETE,
"deleting a server");
}
// Explicitly set modification time to make sure that the time
// returned from the database is correct.
global_parameter->setModificationTime(timestamps_["yesterday"]);
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- global_parameter);
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), global_parameter);
{
SCOPED_TRACE("CREATE audit entry for global parameter");
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::CREATE,
"global parameter set");
}
// Verify returned parameter and the modification time.
- StampedValuePtr returned_global_parameter =
- cbptr_->getGlobalParameter6(ServerSelector::ALL(), "global");
+ StampedValuePtr returned_global_parameter = cbptr_->getGlobalParameter6(ServerSelector::ALL(),
+ "global");
ASSERT_TRUE(returned_global_parameter);
EXPECT_EQ("global", returned_global_parameter->getName());
EXPECT_EQ("whale", returned_global_parameter->getValue());
// Check that the parameter is updated when selector is specified correctly.
global_parameter = StampedValue::create("global", "fish");
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- global_parameter);
- returned_global_parameter = cbptr_->getGlobalParameter6(ServerSelector::ALL(),
- "global");
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), global_parameter);
+ returned_global_parameter = cbptr_->getGlobalParameter6(ServerSelector::ALL(), "global");
ASSERT_TRUE(returned_global_parameter);
EXPECT_EQ("global", returned_global_parameter->getName());
EXPECT_EQ("fish", returned_global_parameter->getValue());
{
SCOPED_TRACE("UPDATE audit entry for the global parameter");
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::UPDATE,
"global parameter set");
}
// Should not delete parameter specified for all servers if explicit
// server name is provided.
- EXPECT_EQ(0, cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server1"),
- "global"));
+ EXPECT_EQ(0, cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server1"), "global"));
// Delete parameter and make sure it is gone.
cbptr_->deleteGlobalParameter6(ServerSelector::ALL(), "global");
- returned_global_parameter = cbptr_->getGlobalParameter6(ServerSelector::ALL(),
- "global");
+ returned_global_parameter = cbptr_->getGlobalParameter6(ServerSelector::ALL(), "global");
EXPECT_FALSE(returned_global_parameter);
{
SCOPED_TRACE("DELETE audit entry for the global parameter");
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::DELETE,
"global parameter deleted");
}
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
// This time inserting the global parameters for the server1 and server2 should
// be successful.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server1"),
- global_parameter1));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server1"), global_parameter1));
{
SCOPED_TRACE("Global parameter for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the global value.
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ONE("server1"),
- 3, 1);
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ONE("server1"), 3, 1);
}
-
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server2"),
- global_parameter2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server2"), global_parameter2));
{
SCOPED_TRACE("Global parameter for server2 is set");
// Same as in case of the server2, there should be 3 audit entries of
// which one we validate.
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ONE("server2"),
- 3, 1);
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ONE("server2"), 3, 1);
}
// The last parameter is associated with all servers.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- global_parameter3));
+ EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), global_parameter3));
{
SCOPED_TRACE("Global parameter for all servers is set");
// There should be one new audit entry for all servers. It indicates
// the insertion of the global value.
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::CREATE,
- "global parameter set",
- ServerSelector::ALL(),
- 1, 1);
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::CREATE,
+ "global parameter set", ServerSelector::ALL(), 1, 1);
}
StampedValuePtr returned_global;
// Try to fetch the value specified for all servers.
- EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter6(ServerSelector::ALL(),
- "global")
- );
+ EXPECT_NO_THROW(returned_global = cbptr_->getGlobalParameter6(ServerSelector::ALL(), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter3->getValue(), returned_global->getValue());
ASSERT_EQ(1, returned_global->getServerTags().size());
// Try to fetch the value specified for the server1. This should override the
// value specified for all servers.
EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter6(ServerSelector::ONE("server1"),
- "global")
- );
+ returned_global = cbptr_->getGlobalParameter6(ServerSelector::ONE("server1"), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter1->getValue(), returned_global->getValue());
// The same in case of the server2.
EXPECT_NO_THROW(
- returned_global = cbptr_->getGlobalParameter6(ServerSelector::ONE("server2"),
- "global")
- );
+ returned_global = cbptr_->getGlobalParameter6(ServerSelector::ONE("server2"), "global"));
ASSERT_TRUE(returned_global);
EXPECT_EQ(global_parameter2->getValue(), returned_global->getValue());
ASSERT_EQ(1, returned_global->getServerTags().size());
// Try to fetch the collection of globals for the server1, server2 and server3.
// The server3 does not have an explicit value so for this server we should get
/// the value for 'all'.
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters6(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_globals.size());
// Capture the returned values into the map so as we can check the
// Try to fetch the collection of global parameters specified for all servers.
// This excludes the values specific to server1 and server2. It returns only the
// common ones.
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ALL())
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ALL()));
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
EXPECT_EQ(global_parameter3->getValue(), returned_global->getValue());
// global parameter and the global parameter itself.
EXPECT_NO_THROW(cbptr_->deleteServer6(ServerTag("server1")));
EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ONE("server1"))
- );
+ returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ONE("server1")));
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
// As a result, the value fetched for the server1 should be the one available for
// We expect two new audit entries for the server1, one indicating that the
// server has been deleted and another one indicating that the corresponding
// global value has been deleted. We check the latter entry.
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete global parameter for server1.
uint64_t deleted_num = 0;
- EXPECT_NO_THROW(deleted_num = cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server1"),
- "global"));
+ EXPECT_NO_THROW(
+ deleted_num = cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server1"), "global"));
// No parameters should be deleted. In particular, the parameter for the logical
// server 'all' should not be deleted.
EXPECT_EQ(0, deleted_num);
// Deleting the existing value for server2 should succeed.
- EXPECT_NO_THROW(deleted_num = cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server2"),
- "global"));
+ EXPECT_NO_THROW(
+ deleted_num = cbptr_->deleteGlobalParameter6(ServerSelector::ONE("server2"), "global"));
EXPECT_EQ(1, deleted_num);
// Create it again to test that deletion of all server removes this too.
- EXPECT_NO_THROW(cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server2"),
- global_parameter2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server2"), global_parameter2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers6());
- EXPECT_NO_THROW(
- returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ALL())
- );
+ EXPECT_NO_THROW(returned_globals = cbptr_->getAllGlobalParameters6(ServerSelector::ALL()));
EXPECT_EQ(1, deleted_num);
ASSERT_EQ(1, returned_globals.size());
returned_global = *returned_globals.begin();
// There should be 4 new audit entries. One for deleting the global, one for
// re-creating it, one for deleting the server2 and one for deleting the
// global again as a result of deleting the server2.
- testNewAuditEntry("dhcp6_global_parameter",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp6_global_parameter", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
TEST_F(PgSqlConfigBackendDHCPv6Test, getAllGlobalParameters6) {
// Create 3 parameters and put them into the database.
cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- StampedValue::create("name1", "value1"));
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
+ StampedValue::create("name1", "value1"));
+ cbptr_->createUpdateGlobalParameter6(
+ ServerSelector::ALL(),
StampedValue::create("name2", Element::create(static_cast<int64_t>(65))));
cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- StampedValue::create("name3", "value3"));
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
+ StampedValue::create("name3", "value3"));
+ cbptr_->createUpdateGlobalParameter6(
+ ServerSelector::ALL(),
StampedValue::create("name4", Element::create(static_cast<bool>(true))));
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
+ cbptr_->createUpdateGlobalParameter6(
+ ServerSelector::ALL(),
StampedValue::create("name5", Element::create(static_cast<double>(1.65))));
// Fetch all parameters.
const auto& parameters_index = parameters.get<StampedValueNameIndexTag>();
- for (auto param = parameters_index.begin(); param != parameters_index.end();
- ++param) {
+ for (auto param = parameters_index.begin(); param != parameters_index.end(); ++param) {
ASSERT_EQ(1, (*param)->getServerTags().size());
EXPECT_EQ("all", (*param)->getServerTags().begin()->get());
}
// "yesterday", "today" and "tomorrow" respectively.
StampedValuePtr value = StampedValue::create("name1", "value1");
value->setModificationTime(timestamps_["yesterday"]);
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), value);
value = StampedValue::create("name2", Element::create(static_cast<int64_t>(65)));
value->setModificationTime(timestamps_["today"]);
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), value);
value = StampedValue::create("name3", "value3");
value->setModificationTime(timestamps_["tomorrow"]);
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(),
- value);
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ALL(), value);
// Get parameters modified after "today".
auto parameters = cbptr_->getModifiedGlobalParameters6(ServerSelector::ALL(),
// Try to insert it and associate with non-existing server.
std::string msg;
try {
- cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server1"),
- global_parameter);
+ cbptr_->createUpdateGlobalParameter6(ServerSelector::ONE("server1"), global_parameter);
msg = "got no exception";
} catch (const NullKeyError& ex) {
msg = ex.what();
// Supported selectors.
Subnet6Ptr subnet = test_subnets_[0];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(),
- subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet));
subnet = test_subnets_[2];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"),
- subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet));
subnet = test_subnets_[3];
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}), subnet));
// Not supported server selectors.
- EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ANY(), subnet),
- isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ANY(), subnet), isc::InvalidOperation);
// Not implemented server selectors.
- EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::UNASSIGNED(),
- subnet),
+ EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::UNASSIGNED(), subnet),
isc::NotImplemented);
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto subnet = test_subnets_[0];
auto subnet2 = test_subnets_[2];
// An attempt to add a subnet to a non-existing server (server1) should fail.
- EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet2),
NullKeyError);
// The subnet shouldn't have been added, even though one of the servers exists.
Subnet6Ptr returned_subnet;
- ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server2"),
- subnet2->getID()));
+ ASSERT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server2"), subnet2->getID()));
EXPECT_FALSE(returned_subnet);
// Insert two subnets, one for all servers and one for server2.
EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
-
EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set", ServerSelector::ONE("subnet2"),
- 2, 1);
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set",
+ ServerSelector::ONE("subnet2"), 2, 1);
}
// We are not going to support selection of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet->getID()),
isc::InvalidOperation);
- EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
subnet->toText()),
isc::InvalidOperation);
// Test that this subnet will be fetched for various server selectors.
- auto test_get_subnet = [this, &subnet] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const std::string& expected_tag = ServerTag::ALL) {
+ auto test_get_subnet = [this, &subnet](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const std::string& expected_tag = ServerTag::ALL) {
SCOPED_TRACE(test_case_name);
// Test fetching subnet by id.
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
// Test fetching subnet by prefix.
- ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet6(server_selector,
- subnet->toText()));
+ ASSERT_NO_THROW(returned_subnet = cbptr_->getSubnet6(server_selector, subnet->toText()));
ASSERT_TRUE(returned_subnet);
ASSERT_EQ(1, returned_subnet->getServerTags().size());
EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet));
{
SCOPED_TRACE("CREATE audit entry for the subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE, "subnet set");
}
{
EXPECT_FALSE(cbptr_->getSubnet6(ServerSelector::ONE("server1"), subnet2->toText()));
// Update the subnet in the database (both use the same prefix).
- subnet2.reset(new Subnet6(IOAddress("2001:db8:3::"),
- 64, 30, 40, 50, 80, 8192));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2));
+ subnet2.reset(new Subnet6(IOAddress("2001:db8:3::"), 64, 30, 40, 50, 80, 8192));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2));
// Fetch again and verify.
returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server2"), subnet2->toText());
// Update the subnet when it conflicts same id and same prefix both
// with different subnets. This should throw.
// Subnets are 2001:db8:1::/48 id 1024 and 2001:db8:3::/64 id 8192
- subnet2.reset(new Subnet6(IOAddress("2001:db8:1::"),
- 48, 30, 40, 50, 80, 8192));
- EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2),
+ subnet2.reset(new Subnet6(IOAddress("2001:db8:1::"), 48, 30, 40, 50, 80, 8192));
+ EXPECT_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2),
DuplicateEntry);
}
EXPECT_NO_THROW(cbptr_->getSubnet6(ServerSelector::ONE("server1"), SubnetID(1)));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- SubnetID(1)),
+ EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}), SubnetID(1)),
isc::InvalidOperation);
}
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier.
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
EXPECT_TRUE(returned_subnet->getIface().unspecified());
// The easiest way to verify whether the returned subnet matches the inserted
// subnet is to convert both to text.
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
-
}
// Test that subnet can be associated with a shared network.
shared_network->add(subnet);
// Store shared network in the database.
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network);
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network);
// Store subnet associated with the shared network in the database.
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
// Fetch the subnet by prefix.
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- "2001:db8::/64");
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), "2001:db8::/64");
ASSERT_TRUE(returned_subnet);
ASSERT_EQ(1, returned_subnet->getServerTags().size());
EXPECT_EQ("all", returned_subnet->getServerTags().begin()->get());
// Fetching the subnet for an explicitly specified server tag should
// succeed too.
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"),
- "2001:db8::/64");
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"), "2001:db8::/64");
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
}
EXPECT_NO_THROW(cbptr_->getSubnet6(ServerSelector::ONE("server1"), "192.0.2.0/26"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
"192.0.2.0/26"),
isc::InvalidOperation);
}
// indicate an update.
if (subnet->toText() == "2001:db8:1::/48") {
SCOPED_TRACE("UPDATE audit entry for the subnet " + subnet->toText());
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE, "subnet set");
} else {
SCOPED_TRACE("CREATE audit entry for the subnet " + subnet->toText());
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
}
// See if the subnets are returned ok.
auto subnet_it = subnets.begin();
for (auto i = 0; i < subnets.size(); ++i, ++subnet_it) {
- EXPECT_EQ(test_subnets_[i + 1]->toElement()->str(),
- (*subnet_it)->toElement()->str());
+ EXPECT_EQ(test_subnets_[i + 1]->toElement()->str(), (*subnet_it)->toElement()->str());
ASSERT_EQ(1, (*subnet_it)->getServerTags().size());
EXPECT_EQ("all", (*subnet_it)->getServerTags().begin()->get());
}
// Attempt to remove the non existing subnet should return 0.
EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ALL(), 22));
- EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ALL(),
- "2001:db8:555::/64"));
+ EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ALL(), "2001:db8:555::/64"));
// All subnets should be still there.
ASSERT_EQ(test_subnets_.size() - 1, subnets.size());
// Should not delete the subnet for explicit server tag because
// our subnet is for all servers.
- EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ONE("server1"),
- test_subnets_[1]->getID()));
+ EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ONE("server1"), test_subnets_[1]->getID()));
// Also, verify that behavior when deleting by prefix.
- EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ONE("server1"),
- test_subnets_[2]->toText()));
+ EXPECT_EQ(0, cbptr_->deleteSubnet6(ServerSelector::ONE("server1"), test_subnets_[2]->toText()));
// Same for all subnets.
EXPECT_EQ(0, cbptr_->deleteAllSubnets6(ServerSelector::ONE("server1")));
// Delete first subnet by id and verify that it is gone.
- EXPECT_EQ(1, cbptr_->deleteSubnet6(ServerSelector::ALL(),
- test_subnets_[1]->getID()));
+ EXPECT_EQ(1, cbptr_->deleteSubnet6(ServerSelector::ALL(), test_subnets_[1]->getID()));
{
SCOPED_TRACE("DELETE first subnet audit entry");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::DELETE,
- "subnet deleted");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::DELETE, "subnet deleted");
}
subnets = cbptr_->getAllSubnets6(ServerSelector::ALL());
ASSERT_EQ(test_subnets_.size() - 2, subnets.size());
// Delete second subnet by prefix and verify it is gone.
- EXPECT_EQ(1, cbptr_->deleteSubnet6(ServerSelector::ALL(),
- test_subnets_[2]->toText()));
+ EXPECT_EQ(1, cbptr_->deleteSubnet6(ServerSelector::ALL(), test_subnets_[2]->toText()));
subnets = cbptr_->getAllSubnets6(ServerSelector::ALL());
ASSERT_EQ(test_subnets_.size() - 3, subnets.size());
{
SCOPED_TRACE("DELETE second subnet audit entry");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::DELETE,
- "subnet deleted");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::DELETE, "subnet deleted");
}
// Delete all.
{
SCOPED_TRACE("DELETE all subnets audit entry");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::DELETE,
"deleted all subnets");
}
}
EXPECT_NO_THROW(cbptr_->getAllSubnets6(ServerSelector::UNASSIGNED()));
EXPECT_NO_THROW(cbptr_->getAllSubnets6(ServerSelector::ALL()));
EXPECT_NO_THROW(cbptr_->getAllSubnets6(ServerSelector::ONE("server1")));
- EXPECT_NO_THROW(cbptr_->getAllSubnets6(ServerSelector::MULTIPLE({ "server1", "server2" })));
+ EXPECT_NO_THROW(cbptr_->getAllSubnets6(ServerSelector::MULTIPLE({"server1", "server2"})));
// Not supported selectors.
EXPECT_THROW(cbptr_->getAllSubnets6(ServerSelector::ANY()), isc::InvalidOperation);
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[0]));
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(),
- subnet1));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"),
- subnet2));
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet3));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet1));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}), subnet3));
Subnet6Collection subnets;
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto subnet1 = test_subnets_[0];
auto subnet2 = test_subnets_[2];
auto subnet3 = test_subnets_[3];
- auto create_test_subnets = [&] () {
+ auto create_test_subnets = [&]() {
// Insert three subnets, one for all servers, one for server2 and one for two
// servers: server1 and server2.
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet1));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2));
EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet1)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet6(ServerSelector::ONE("server2"), subnet2)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- subnet3)
- );
+ cbptr_->createUpdateSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}), subnet3));
};
create_test_subnets();
// Test that subnet is not deleted for a specified server selector.
- auto test_no_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet6Ptr& subnet) {
+ auto test_no_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector, const Subnet6Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->getID()));
EXPECT_EQ(0, deleted_count);
deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->toText())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->toText()));
EXPECT_EQ(0, deleted_count);
};
{
SCOPED_TRACE("Test valid but non matching server selectors");
- test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"),
- subnet1);
- test_no_delete("selector: all, actual: one", ServerSelector::ALL(),
- subnet2);
- test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(),
- subnet3);
+ test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"), subnet1);
+ test_no_delete("selector: all, actual: one", ServerSelector::ALL(), subnet2);
+ test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(), subnet3);
}
// Test successful deletion of a subnet by ID.
- auto test_delete_by_id = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet6Ptr& subnet) {
+ auto test_delete_by_id = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const Subnet6Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->getID()));
EXPECT_EQ(1, deleted_count);
EXPECT_FALSE(cbptr_->getSubnet6(server_selector, subnet->getID()));
create_test_subnets();
// Test successful deletion of a subnet by prefix.
- auto test_delete_by_prefix = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const Subnet6Ptr& subnet) {
+ auto test_delete_by_prefix = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const Subnet6Ptr& subnet) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->toText())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet6(server_selector, subnet->toText()));
EXPECT_EQ(1, deleted_count);
EXPECT_FALSE(cbptr_->getSubnet6(server_selector, subnet->toText()));
EXPECT_NO_THROW(cbptr_->deleteSubnet6(ServerSelector::ONE("server1"), SubnetID(1)));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- SubnetID(1)),
+ EXPECT_THROW(cbptr_->deleteSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ SubnetID(1)),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteSubnet6(ServerSelector::ONE("server1"), "192.0.2.0/26"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSubnet6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- "192.0.2.0/26"),
+ EXPECT_THROW(cbptr_->deleteSubnet6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ "192.0.2.0/26"),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteAllSubnets6(ServerSelector::ONE("server1")));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteAllSubnets6(ServerSelector::ANY()),
- isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteAllSubnets6(ServerSelector::MULTIPLE({ "server1", "server2" })),
+ EXPECT_THROW(cbptr_->deleteAllSubnets6(ServerSelector::ANY()), isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->deleteAllSubnets6(ServerSelector::MULTIPLE({"server1", "server2"})),
isc::InvalidOperation);
}
// Create the subnets and associate them with the server1.
auto subnet = test_subnets_[0];
auto subnet2 = test_subnets_[2];
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet2)
- );
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ONE("server1"), subnet2));
// Delete the server. The subnets should be preserved but are considered orphaned,
// i.e. do not belong to any server.
// Trying to fetch the subnet by server tag should return no result.
Subnet6Ptr returned_subnet;
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"),
- subnet->getID()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"), subnet->getID()));
EXPECT_FALSE(returned_subnet);
// The same if we use other calls.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"),
- subnet->toText()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ONE("server1"), subnet->toText()));
EXPECT_FALSE(returned_subnet);
Subnet6Collection returned_subnets;
EXPECT_NO_THROW(returned_subnets = cbptr_->getAllSubnets6(ServerSelector::ONE("server1")));
EXPECT_TRUE(returned_subnets.empty());
- EXPECT_NO_THROW(
- returned_subnets = cbptr_->getModifiedSubnets6(ServerSelector::ONE("server1"),
- timestamps_["two days ago"])
- );
+ EXPECT_NO_THROW(returned_subnets = cbptr_->getModifiedSubnets6(ServerSelector::ONE("server1"),
+ timestamps_["two days ago"]));
EXPECT_TRUE(returned_subnets.empty());
// We should get the subnet if we ask for unassigned.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::UNASSIGNED(),
- subnet->getID()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::UNASSIGNED(), subnet->getID()));
ASSERT_TRUE(returned_subnet);
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::UNASSIGNED(),
- subnet->toText()));
+ EXPECT_NO_THROW(
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::UNASSIGNED(), subnet->toText()));
ASSERT_TRUE(returned_subnet);
// Also if we ask for all unassigned subnets it should be returned.
ASSERT_EQ(2, returned_subnets.size());
// Same for modified subnets.
- EXPECT_NO_THROW(
- returned_subnets = cbptr_->getModifiedSubnets6(ServerSelector::UNASSIGNED(),
- timestamps_["two days ago"])
- );
+ EXPECT_NO_THROW(returned_subnets = cbptr_->getModifiedSubnets6(ServerSelector::UNASSIGNED(),
+ timestamps_["two days ago"]));
ASSERT_EQ(2, returned_subnets.size());
// If we ask for any subnet by subnet id, it should be returned too.
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ANY(),
- subnet->getID()));
+ EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ANY(), subnet->getID()));
ASSERT_TRUE(returned_subnet);
- EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ANY(),
- subnet->toText()));
+ EXPECT_NO_THROW(returned_subnet = cbptr_->getSubnet6(ServerSelector::ANY(), subnet->toText()));
ASSERT_TRUE(returned_subnet);
// Deleting the subnet with the mismatched server tag should not affect our
// subnet.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(ServerSelector::ONE("server1"),
- subnet->getID())
- );
+ deleted_count = cbptr_->deleteSubnet6(ServerSelector::ONE("server1"), subnet->getID()));
EXPECT_EQ(0, deleted_count);
// Also, if we delete all subnets for server1.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSubnets6(ServerSelector::ONE("server1"))
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteAllSubnets6(ServerSelector::ONE("server1")));
EXPECT_EQ(0, deleted_count);
// We can delete this subnet when we specify ANY and the matching id.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSubnet6(ServerSelector::ANY(), subnet->getID())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSubnet6(ServerSelector::ANY(), subnet->getID()));
EXPECT_EQ(1, deleted_count);
// We can delete all subnets using UNASSIGNED selector.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSubnets6(ServerSelector::UNASSIGNED());
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteAllSubnets6(ServerSelector::UNASSIGNED()););
EXPECT_EQ(1, deleted_count);
}
// Insert subnets into the database.
for (int i = 1; i < test_subnets_.size(); ++i) {
- cbptr_->createUpdateSubnet6(ServerSelector::ALL(),
- test_subnets_[i]);
+ cbptr_->createUpdateSubnet6(ServerSelector::ALL(), test_subnets_[i]);
}
// Fetch subnets with timestamp later than today. Only one subnet
// should be returned.
- Subnet6Collection
- subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(),
- timestamps_["after today"]);
+ Subnet6Collection subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, subnets.size());
// All subnets should also be returned for explicitly specified server tag.
// Fetch subnets with timestamp later than yesterday. We should get
// two subnets.
- subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(),
- timestamps_["after yesterday"]);
+ subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(), timestamps_["after yesterday"]);
ASSERT_EQ(2, subnets.size());
// Fetch subnets with timestamp later than tomorrow. Nothing should
// be returned.
- subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(),
- timestamps_["after tomorrow"]);
+ subnets = cbptr_->getModifiedSubnets6(ServerSelector::ALL(), timestamps_["after tomorrow"]);
ASSERT_TRUE(subnets.empty());
}
// server selectors.
TEST_F(PgSqlConfigBackendDHCPv6Test, getModifiedSubnets6Selectors) {
// Supported selectors.
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::UNASSIGNED(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::ALL(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::ONE("server1"),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSubnets6(ServerSelector::UNASSIGNED(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::ALL(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSubnets6(ServerSelector::ONE("server1"), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(cbptr_->getModifiedSubnets6(ServerSelector::MULTIPLE({"server1", "server2"}),
timestamps_["yesterday"]));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getModifiedSubnets6(ServerSelector::ANY(),
- timestamps_["yesterday"]),
+ EXPECT_THROW(cbptr_->getModifiedSubnets6(ServerSelector::ANY(), timestamps_["yesterday"]),
isc::InvalidOperation);
}
TEST_F(PgSqlConfigBackendDHCPv6Test, subnetLifetime) {
// Insert new subnet with unspecified valid lifetime
Triplet<uint32_t> unspecified;
- Subnet6Ptr subnet(new Subnet6(IOAddress("2001:db8::"), 64, 30, 40,
- unspecified, unspecified, 1111));
+ Subnet6Ptr subnet(
+ new Subnet6(IOAddress("2001:db8::"), 64, 30, 40, unspecified, unspecified, 1111));
subnet->setIface("eth1");
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
// Verified returned and original subnets match.
EXPECT_EQ(subnet->toElement()->str(), returned_subnet->toElement()->str());
// Update the preferred and valid lifetime.
- subnet->setPreferred( Triplet<uint32_t>(100, 200, 300));
- subnet->setValid( Triplet<uint32_t>(200, 300, 400));
+ subnet->setPreferred(Triplet<uint32_t>(100, 200, 300));
+ subnet->setValid(Triplet<uint32_t>(200, 300, 400));
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
// Fetch and verify again.
}
// Fetch all subnets belonging to shared network level1.
- Subnet6Collection subnets = cbptr_->getSharedNetworkSubnets6(ServerSelector::ALL(),
- "level1");
+ Subnet6Collection subnets = cbptr_->getSharedNetworkSubnets6(ServerSelector::ALL(), "level1");
ASSERT_EQ(1, subnets.size());
// Returned subnet should match test subnet #1.
- EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(),
- (*subnets.begin())->toElement()));
+ EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(), (*subnets.begin())->toElement()));
// All subnets should also be returned for ANY server.
subnets = cbptr_->getSharedNetworkSubnets6(ServerSelector::ANY(), "level1");
ASSERT_EQ(1, subnets.size());
// Returned subnet should match test subnet #1.
- EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(),
- (*subnets.begin())->toElement()));
+ EXPECT_TRUE(isEquivalent(test_subnets_[1]->toElement(), (*subnets.begin())->toElement()));
// Fetch all subnets belonging to shared network level2.
subnets = cbptr_->getSharedNetworkSubnets6(ServerSelector::ALL(), "level2");
// Test that pools are properly updated as a result a subnet update.
TEST_F(PgSqlConfigBackendDHCPv6Test, subnetUpdatePools) {
- auto test_subnet_update = [this](const std::string& subnet_prefix,
- const SubnetID& subnet_id) {
+ auto test_subnet_update = [this](const std::string& subnet_prefix, const SubnetID& subnet_id) {
// Add the subnet with two address pools and two prefix delegation
// pools.
- EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(),
- test_subnets_[0]));
+ EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), test_subnets_[0]));
// Make sure that the pools have been added to the database.
EXPECT_EQ(2, countRows("dhcp6_pool"));
EXPECT_EQ(2, countRows("dhcp6_pd_pool"));
// Create the subnet without options which updates the existing
// subnet.
- Subnet6Ptr subnet(new Subnet6(IOAddress(subnet_prefix), 64, 30, 60, 50, 60,
- subnet_id));
+ Subnet6Ptr subnet(new Subnet6(IOAddress(subnet_prefix), 64, 30, 60, 50, 60, subnet_id));
EXPECT_NO_THROW(cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet));
// Check that options are gone.
EXPECT_EQ(0, countRows("dhcp6_pool"));
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto shared_network = test_networks_[0];
auto shared_network2 = test_networks_[2];
// Insert two shared networks, one for all servers, and one for server2.
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server2"),
- shared_network2));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server2"), shared_network2));
// We are not going to support selection of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->getSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
test_networks_[0]->getName()),
isc::InvalidOperation);
// Test that this shared network will be fetched for various server selectors.
- auto test_get_network = [this, &shared_network] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const std::string& expected_tag = ServerTag::ALL) {
+ auto test_get_network = [this,
+ &shared_network](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const std::string& expected_tag = ServerTag::ALL) {
SCOPED_TRACE(test_case_name);
SharedNetwork6Ptr network;
- ASSERT_NO_THROW(network = cbptr_->getSharedNetwork6(server_selector,
- shared_network->getName()));
+ ASSERT_NO_THROW(
+ network = cbptr_->getSharedNetwork6(server_selector, shared_network->getName()));
ASSERT_TRUE(network);
EXPECT_GT(network->getId(), 0);
{
SCOPED_TRACE("CREATE audit entry for a shared network");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
// Update shared network in the database.
shared_network = test_networks_[1];
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network));
{
SCOPED_TRACE("testing various server selectors after update");
{
SCOPED_TRACE("UPDATE audit entry for a shared network");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
}
// The server2 specific shared network should not be returned if the
// server selector is not matching.
- EXPECT_FALSE(cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- shared_network2->getName()));
- EXPECT_FALSE(cbptr_->getSharedNetwork6(ServerSelector::ONE("server1"),
- shared_network2->getName()));
+ EXPECT_FALSE(cbptr_->getSharedNetwork6(ServerSelector::ALL(), shared_network2->getName()));
+ EXPECT_FALSE(
+ cbptr_->getSharedNetwork6(ServerSelector::ONE("server1"), shared_network2->getName()));
{
SCOPED_TRACE("testing selectors for server2 specific shared network");
EXPECT_NO_THROW(cbptr_->getSharedNetwork6(ServerSelector::ONE("server1"), "level1"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->getSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
"level1"),
isc::InvalidOperation);
}
auto shared_network = test_networks_[0];
// An attempt to insert the shared network for non-existing server should fail.
- EXPECT_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"),
- shared_network),
+ EXPECT_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network),
NullKeyError);
// Insert the server1 into the database.
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
// Insert the server2 into the database.
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network));
{
SCOPED_TRACE("CREATE audit entry for shared network and ALL servers");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network));
{
SCOPED_TRACE("UPDATE audit entry for shared network and MULTIPLE servers");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
}
SharedNetwork6Ptr network;
- ASSERT_NO_THROW(network = cbptr_->getSharedNetwork6(ServerSelector::ANY(),
- shared_network->getName()));
+ ASSERT_NO_THROW(
+ network = cbptr_->getSharedNetwork6(ServerSelector::ANY(), shared_network->getName()));
ASSERT_TRUE(network);
EXPECT_TRUE(network->hasServerTag(ServerTag("server1")));
EXPECT_TRUE(network->hasServerTag(ServerTag("server2")));
// Supported selectors.
SharedNetwork6Ptr shared_network(new SharedNetwork6("all"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network));
shared_network.reset(new SharedNetwork6("one"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network));
shared_network.reset(new SharedNetwork6("multiple"));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network));
// Not supported server selectors.
EXPECT_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ANY(), shared_network),
isc::InvalidOperation);
// Not implemented server selectors.
- EXPECT_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::UNASSIGNED(),
- shared_network),
+ EXPECT_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::UNASSIGNED(), shared_network),
isc::NotImplemented);
}
cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network);
// Fetch this shared network by name.
- SharedNetwork6Ptr
- returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- test_networks_[2]->getName());
+ SharedNetwork6Ptr returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
+ test_networks_[2]->getName());
ASSERT_TRUE(returned_network);
EXPECT_TRUE(returned_network->getIface().unspecified());
EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::ONE("server1"),
test_networks_[1]->getName()),
isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::MULTIPLE({"server1", "server"
+ "2"}),
test_networks_[1]->getName()),
isc::InvalidOperation);
}
// That shared network overrides the first one so the audit entry should
// indicate an update.
if ((network->getName() == "level1") && (!audit_entries_["all"].empty())) {
- SCOPED_TRACE("UPDATE audit entry for the shared network " +
- network->getName());
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ SCOPED_TRACE("UPDATE audit entry for the shared network " + network->getName());
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network set");
} else {
- SCOPED_TRACE("CREATE audit entry for the shared network " +
- network->getName());
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::CREATE,
+ SCOPED_TRACE("CREATE audit entry for the shared network " + network->getName());
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
}
// Fetch all shared networks.
- SharedNetwork6Collection networks =
- cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
+ SharedNetwork6Collection networks = cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
ASSERT_EQ(test_networks_.size() - 1, networks.size());
// All shared networks should also be returned for explicitly specified
// See if shared networks are returned ok.
for (auto i = 0; i < networks.size(); ++i) {
- EXPECT_EQ(test_networks_[i + 1]->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(test_networks_[i + 1]->toElement()->str(), networks[i]->toElement()->str());
ASSERT_EQ(1, networks[i]->getServerTags().size());
EXPECT_EQ("all", networks[i]->getServerTags().begin()->get());
}
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), test_subnets_[3]);
// Both ways to attach a subnet are equivalent.
- Subnet6Ptr subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- test_subnets_[0]->getID());
+ Subnet6Ptr subnet = cbptr_->getSubnet6(ServerSelector::ALL(), test_subnets_[0]->getID());
ASSERT_TRUE(subnet);
EXPECT_EQ("level1", subnet->getSharedNetworkName());
{
SCOPED_TRACE("CREATE audit entry for subnets");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set", ServerSelector::ALL(), 3);
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set",
+ ServerSelector::ALL(), 3);
}
// Deleting non-existing shared network should return 0.
- EXPECT_EQ(0, cbptr_->deleteSharedNetwork6(ServerSelector::ALL(),
- "big-fish"));
+ EXPECT_EQ(0, cbptr_->deleteSharedNetwork6(ServerSelector::ALL(), "big-fish"));
// All shared networks should be still there.
ASSERT_EQ(test_networks_.size() - 1, networks.size());
{
SCOPED_TRACE("DELETE audit entry for subnets of the first shared network");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::DELETE,
"deleted all subnets for a shared network");
}
// Check that the subnet is gone..
- subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- test_subnets_[0]->getID());
+ subnet = cbptr_->getSubnet6(ServerSelector::ALL(), test_subnets_[0]->getID());
EXPECT_FALSE(subnet);
// And after the shared network itself.
- EXPECT_EQ(1, cbptr_->deleteSharedNetwork6(ServerSelector::ALL(),
- test_networks_[1]->getName()));
+ EXPECT_EQ(1, cbptr_->deleteSharedNetwork6(ServerSelector::ALL(), test_networks_[1]->getName()));
networks = cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
ASSERT_EQ(test_networks_.size() - 2, networks.size());
{
SCOPED_TRACE("DELETE audit entry for the first shared network");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::DELETE,
"shared network deleted");
}
{
SCOPED_TRACE("DELETE audit entry for the remaining two shared networks");
// The last parameter indicates that we expect two new audit entries.
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::DELETE,
- "deleted all shared networks",
- ServerSelector::ALL(), 2);
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::DELETE,
+ "deleted all shared networks", ServerSelector::ALL(), 2);
}
// Check that subnets are still there but detached.
- subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- test_subnets_[2]->getID());
+ subnet = cbptr_->getSubnet6(ServerSelector::ALL(), test_subnets_[2]->getID());
ASSERT_TRUE(subnet);
EXPECT_TRUE(subnet->getSharedNetworkName().empty());
- subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- test_subnets_[3]->getID());
+ subnet = cbptr_->getSubnet6(ServerSelector::ALL(), test_subnets_[3]->getID());
ASSERT_TRUE(subnet);
EXPECT_TRUE(subnet->getSharedNetworkName().empty());
}
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::UNASSIGNED()));
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::ALL()));
EXPECT_NO_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::ONE("server1")));
- EXPECT_NO_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::MULTIPLE({ "server1", "server2" })));
+ EXPECT_NO_THROW(
+ cbptr_->getAllSharedNetworks6(ServerSelector::MULTIPLE({"server1", "server2"})));
// Not supported selectors.
- EXPECT_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::ANY()),
- isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->getAllSharedNetworks6(ServerSelector::ANY()), isc::InvalidOperation);
}
// Test that shared networks with different server associations are returned.
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[0]));
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network1));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"),
- shared_network2));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network3));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network1));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network2));
+ EXPECT_NO_THROW(
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network3));
SharedNetwork6Collection networks;
// Insert shared networks into the database.
for (int i = 1; i < test_networks_.size(); ++i) {
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- test_networks_[i]);
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), test_networks_[i]);
}
// Fetch shared networks with timestamp later than today. Only one
// shared network should be returned.
- SharedNetwork6Collection
- networks = cbptr_->getModifiedSharedNetworks6(ServerSelector::ALL(),
- timestamps_["after today"]);
+ SharedNetwork6Collection networks =
+ cbptr_->getModifiedSharedNetworks6(ServerSelector::ALL(), timestamps_["after today"]);
ASSERT_EQ(1, networks.size());
// Fetch shared networks with timestamp later than yesterday. We
// should get two shared networks.
networks = cbptr_->getModifiedSharedNetworks6(ServerSelector::ALL(),
- timestamps_["after yesterday"]);
+ timestamps_["after yesterday"]);
ASSERT_EQ(2, networks.size());
// Fetch shared networks with timestamp later than tomorrow. Nothing
// server selectors.
TEST_F(PgSqlConfigBackendDHCPv6Test, getModifiedSharedNetworks6Selectors) {
// Supported selectors.
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks6(ServerSelector::UNASSIGNED(),
- timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks6(ServerSelector::ALL(),
- timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks6(ServerSelector::UNASSIGNED(), timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks6(ServerSelector::ALL(), timestamps_["yesterday"]));
EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks6(ServerSelector::ONE("server1"),
timestamps_["yesterday"]));
- EXPECT_NO_THROW(cbptr_->getModifiedSharedNetworks6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- timestamps_["yesterday"]));
+ EXPECT_NO_THROW(
+ cbptr_->getModifiedSharedNetworks6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ timestamps_["yesterday"]));
// Not supported selectors.
EXPECT_THROW(cbptr_->getModifiedSharedNetworks6(ServerSelector::ANY(),
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[0]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("CREATE audit entry for server");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
auto shared_network1 = test_networks_[0];
auto shared_network3 = test_networks_[3];
// Insert two shared networks, one for all servers, and one for server2.
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network1));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network1)
- );
- EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server2"), shared_network2)
- );
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server2"), shared_network2));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- shared_network3)
- );
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ shared_network3));
- auto test_no_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const SharedNetwork6Ptr& shared_network) {
+ auto test_no_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const SharedNetwork6Ptr& shared_network) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork6(server_selector,
- shared_network->getName())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork6(server_selector,
+ shared_network->getName()));
EXPECT_EQ(0, deleted_count);
};
SCOPED_TRACE("Test valid but non matching server selectors");
test_no_delete("selector: one, actual: all", ServerSelector::ONE("server2"),
shared_network1);
- test_no_delete("selector: all, actual: one", ServerSelector::ALL(),
- shared_network2);
- test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(),
- shared_network3);
+ test_no_delete("selector: all, actual: one", ServerSelector::ALL(), shared_network2);
+ test_no_delete("selector: all, actual: multiple", ServerSelector::ALL(), shared_network3);
}
// We are not going to support deletion of a single entry for multiple servers.
- EXPECT_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+ EXPECT_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
shared_network3->getName()),
isc::InvalidOperation);
isc::NotImplemented);
// Test successful deletion of a shared network.
- auto test_delete = [this] (const std::string& test_case_name,
- const ServerSelector& server_selector,
- const SharedNetwork6Ptr& shared_network) {
+ auto test_delete = [this](const std::string& test_case_name,
+ const ServerSelector& server_selector,
+ const SharedNetwork6Ptr& shared_network) {
SCOPED_TRACE(test_case_name);
uint64_t deleted_count = 0;
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork6(server_selector,
- shared_network->getName())
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork6(server_selector,
+ shared_network->getName()));
EXPECT_EQ(1, deleted_count);
- EXPECT_FALSE(cbptr_->getSharedNetwork6(server_selector,
- shared_network->getName()));
+ EXPECT_FALSE(cbptr_->getSharedNetwork6(server_selector, shared_network->getName()));
};
test_delete("all servers", ServerSelector::ALL(), shared_network1);
EXPECT_NO_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::ONE("server1"), "level1"));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::MULTIPLE({ "server1", "server2" }),
- "level1"),
+ EXPECT_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::MULTIPLE({"server1", "server2"}),
+ "level1"),
isc::InvalidOperation);
// Not implemented selectors.
EXPECT_NO_THROW(cbptr_->deleteAllSharedNetworks6(ServerSelector::ONE("server1")));
// Not supported selectors.
- EXPECT_THROW(cbptr_->deleteAllSharedNetworks6(ServerSelector::ANY()),
- isc::InvalidOperation);
- EXPECT_THROW(cbptr_->deleteAllSharedNetworks6(ServerSelector::MULTIPLE({ "server1", "server2" })),
+ EXPECT_THROW(cbptr_->deleteAllSharedNetworks6(ServerSelector::ANY()), isc::InvalidOperation);
+ EXPECT_THROW(cbptr_->deleteAllSharedNetworks6(ServerSelector::MULTIPLE({"server1", "server2"})),
isc::InvalidOperation);
}
auto shared_network = test_networks_[0];
auto shared_network2 = test_networks_[2];
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network)
- );
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network));
EXPECT_NO_THROW(
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network2)
- );
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ONE("server1"), shared_network2));
// Delete the server. The shared networks should be preserved but are
// considered orphaned, i.e. do not belong to any server.
// Trying to fetch this shared network by server tag should return no result.
SharedNetwork6Ptr returned_network;
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork6(ServerSelector::ONE("server1"),
- "level1"));
+ EXPECT_NO_THROW(
+ returned_network = cbptr_->getSharedNetwork6(ServerSelector::ONE("server1"), "level1"));
EXPECT_FALSE(returned_network);
// The same if we use other calls.
SharedNetwork6Collection returned_networks;
EXPECT_NO_THROW(
- returned_networks = cbptr_->getAllSharedNetworks6(ServerSelector::ONE("server1"))
- );
+ returned_networks = cbptr_->getAllSharedNetworks6(ServerSelector::ONE("server1")));
EXPECT_TRUE(returned_networks.empty());
EXPECT_NO_THROW(
returned_networks = cbptr_->getModifiedSharedNetworks6(ServerSelector::ONE("server1"),
- timestamps_["two days ago"])
- );
+ timestamps_["two days ago"]));
EXPECT_TRUE(returned_networks.empty());
// We should get the shared network if we ask for unassigned.
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork6(ServerSelector::UNASSIGNED(),
- "level1"));
+ EXPECT_NO_THROW(
+ returned_network = cbptr_->getSharedNetwork6(ServerSelector::UNASSIGNED(), "level1"));
ASSERT_TRUE(returned_network);
// Also if we ask for all unassigned networks it should be returned.
- EXPECT_NO_THROW(returned_networks = cbptr_->getAllSharedNetworks6(ServerSelector::UNASSIGNED()));
+ EXPECT_NO_THROW(
+ returned_networks = cbptr_->getAllSharedNetworks6(ServerSelector::UNASSIGNED()));
ASSERT_EQ(2, returned_networks.size());
// And all modified.
EXPECT_NO_THROW(
returned_networks = cbptr_->getModifiedSharedNetworks6(ServerSelector::UNASSIGNED(),
- timestamps_["two days ago"])
- );
+ timestamps_["two days ago"]));
ASSERT_EQ(2, returned_networks.size());
// If we ask for any network by name, it should be returned too.
- EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork6(ServerSelector::ANY(),
- "level1"));
+ EXPECT_NO_THROW(returned_network = cbptr_->getSharedNetwork6(ServerSelector::ANY(), "level1"));
ASSERT_TRUE(returned_network);
// Deleting a shared network with the mismatched server tag should not affect
// our shared network.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork6(ServerSelector::ONE("server1"),
- "level1")
- );
+ deleted_count = cbptr_->deleteSharedNetwork6(ServerSelector::ONE("server1"), "level1"));
EXPECT_EQ(0, deleted_count);
// Also, if we delete all shared networks for server1.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSharedNetworks6(ServerSelector::ONE("server1"))
- );
+ deleted_count = cbptr_->deleteAllSharedNetworks6(ServerSelector::ONE("server1")));
EXPECT_EQ(0, deleted_count);
// We can delete this shared network when we specify ANY and the matching name.
- EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteSharedNetwork6(ServerSelector::ANY(), "level1")
- );
+ EXPECT_NO_THROW(deleted_count = cbptr_->deleteSharedNetwork6(ServerSelector::ANY(), "level1"));
EXPECT_EQ(1, deleted_count);
// We can delete all second networks using UNASSIGNED selector.
EXPECT_NO_THROW(
- deleted_count = cbptr_->deleteAllSharedNetworks6(ServerSelector::UNASSIGNED());
- );
+ deleted_count = cbptr_->deleteAllSharedNetworks6(ServerSelector::UNASSIGNED()););
EXPECT_EQ(1, deleted_count);
}
cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), network);
// Fetch this shared network.
- SharedNetwork6Ptr returned_network =
- cbptr_->getSharedNetwork6(ServerSelector::ALL(), "foo");
+ SharedNetwork6Ptr returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(), "foo");
ASSERT_TRUE(returned_network);
// Verified returned and original shared networks match.
- EXPECT_EQ(network->toElement()->str(),
- returned_network->toElement()->str());
+ EXPECT_EQ(network->toElement()->str(), returned_network->toElement()->str());
// Update the preferred and valid lifetime.
- network->setPreferred( Triplet<uint32_t>(100, 200, 300));
- network->setValid( Triplet<uint32_t>(200, 300, 400));
+ network->setPreferred(Triplet<uint32_t>(100, 200, 300));
+ network->setValid(Triplet<uint32_t>(200, 300, 400));
cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), network);
// Fetch and verify again.
returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(), "foo");
ASSERT_TRUE(returned_network);
- EXPECT_EQ(network->toElement()->str(),
- returned_network->toElement()->str());
+ EXPECT_EQ(network->toElement()->str(), returned_network->toElement()->str());
}
// Test that deleting a shared network triggers deletion of the options
// Remove the shared network. This should not affect options assigned to the
// other shared network.
- EXPECT_NO_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::ALL(),
- test_networks_[1]->getName()));
+ EXPECT_NO_THROW(
+ cbptr_->deleteSharedNetwork6(ServerSelector::ALL(), test_networks_[1]->getName()));
EXPECT_EQ(1, countRows("dhcp6_shared_network"));
EXPECT_EQ(1, countRows("dhcp6_options"));
// Delete this shared network. This should not affect the option associated
// with the remaining shared network.
- EXPECT_NO_THROW(cbptr_->deleteSharedNetwork6(ServerSelector::ALL(),
- test_networks_[0]->getName()));
+ EXPECT_NO_THROW(
+ cbptr_->deleteSharedNetwork6(ServerSelector::ALL(), test_networks_[0]->getName()));
EXPECT_EQ(1, countRows("dhcp6_shared_network"));
EXPECT_EQ(1, countRows("dhcp6_options"));
}
// Fetch this option_definition by subnet identifier.
OptionDefinitionPtr returned_option_def =
- cbptr_->getOptionDef6(ServerSelector::ALL(),
- test_option_defs_[0]->getCode(),
+ cbptr_->getOptionDef6(ServerSelector::ALL(), test_option_defs_[0]->getCode(),
test_option_defs_[0]->getOptionSpaceName());
ASSERT_TRUE(returned_option_def);
EXPECT_GT(returned_option_def->getId(), 0);
{
SCOPED_TRACE("CREATE audit entry for an option definition");
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::CREATE,
"option definition set");
}
{
SCOPED_TRACE("UPDATE audit entry for an option definition");
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::UPDATE,
"option definition set");
}
}
// An attempt to create option definition for non-existing server should
// fail.
- EXPECT_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server1"),
- option1),
+ EXPECT_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server1"), option1),
NullKeyError);
// Create two servers.
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
// This time creation of the option definition for the server1 should pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server1"),
- option1));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server1"), option1));
{
SCOPED_TRACE("option definition for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the option definition.
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ONE("server1"),
- 3, 1);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ONE("server1"), 3, 1);
}
// Creation of the option definition for the server2 should also pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server2"),
- option2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server2"), option2));
{
SCOPED_TRACE("option definition for server2 is set");
// Same as in case of the server1, there should be 3 audit entries and
// we validate one of them.
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ONE("server2"),
- 3, 1);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ONE("server2"), 3, 1);
}
// Finally, creation of the option definition for all servers should
// also pass.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ALL(),
- option3));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ALL(), option3));
{
SCOPED_TRACE("option definition for server2 is set");
// There should be one new audit entry for all servers. It logs
// the insertion of the option definition.
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::CREATE,
- "option definition set",
- ServerSelector::ALL(),
- 1, 1);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::CREATE,
+ "option definition set", ServerSelector::ALL(), 1, 1);
}
OptionDefinitionPtr returned_option_def;
// Try to fetch the option definition specified for all servers. It should
// return the third one.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef6(ServerSelector::ALL(),
- option3->getCode(),
- option3->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef6(ServerSelector::ALL(),
+ option3->getCode(),
+ option3->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option3));
// Try to fetch the option definition specified for server1. It should
// override the definition for all servers.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef6(ServerSelector::ONE("server1"),
- option1->getCode(),
- option1->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef6(ServerSelector::ONE("server1"),
+ option1->getCode(),
+ option1->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option1));
// The same in case of the server2.
- EXPECT_NO_THROW(
- returned_option_def = cbptr_->getOptionDef6(ServerSelector::ONE("server2"),
- option2->getCode(),
- option2->getOptionSpaceName())
- );
+ EXPECT_NO_THROW(returned_option_def = cbptr_->getOptionDef6(ServerSelector::ONE("server2"),
+ option2->getCode(),
+ option2->getOptionSpaceName()));
ASSERT_TRUE(returned_option_def);
EXPECT_TRUE(returned_option_def->equals(*option2));
// Try to fetch the collection of the option definitions for server1, server2
// and server3. The server3 does not have an explicit option definition, so
// for this server we should get the definition associated with "all" servers.
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs6(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs6(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_option_defs.size());
// Check that expected option definitions have been returned.
// Try to fetch the collection of options specified for all servers.
// This excludes the options specific to server1 and server2. It returns
// only the common ones.
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs6(ServerSelector::ALL());
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs6(ServerSelector::ALL());
);
ASSERT_EQ(1, returned_option_defs.size());
{
SCOPED_TRACE("DELETE audit entry for the option definition after server deletion");
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete option definition for server1.
// Create this option definition again to test that deletion of all servers
// removes it too.
- EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server2"),
- option2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOptionDef6(ServerSelector::ONE("server2"), option2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers6());
- EXPECT_NO_THROW(
- returned_option_defs = cbptr_->getAllOptionDefs6(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_option_defs = cbptr_->getAllOptionDefs6(ServerSelector::ALL()););
EXPECT_EQ(1, deleted_num);
EXPECT_EQ(1, returned_option_defs.size());
EXPECT_TRUE((*returned_option_defs.begin())->equals(*option3));
{
SCOPED_TRACE("DELETE audit entry for the option definition after deletion of"
" all servers");
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
// That option definition overrides the first one so the audit entry should
// indicate an update.
if (option_def->getName() == "bar") {
- SCOPED_TRACE("UPDATE audit entry for the option definition " +
- option_def->getName());
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::UPDATE,
+ SCOPED_TRACE("UPDATE audit entry for the option definition " + option_def->getName());
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::UPDATE,
"option definition set");
++updates_num;
} else {
- SCOPED_TRACE("CREATE audit entry for the option definition " +
- option_def->getName());
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::CREATE,
+ SCOPED_TRACE("CREATE audit entry for the option definition " + option_def->getName());
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::CREATE,
"option definition set");
}
}
}
}
ASSERT_TRUE(success) << "failed for option definition " << (*def)->getCode()
- << ", option space " << (*def)->getOptionSpaceName();
+ << ", option space " << (*def)->getOptionSpaceName();
}
// Deleting non-existing option definition should return 0.
- EXPECT_EQ(0, cbptr_->deleteOptionDef6(ServerSelector::ALL(),
- 99, "non-exiting-space"));
+ EXPECT_EQ(0, cbptr_->deleteOptionDef6(ServerSelector::ALL(), 99, "non-exiting-space"));
// All option definitions should be still there.
ASSERT_EQ(test_option_defs_.size() - updates_num, option_defs.size());
EXPECT_EQ(0, cbptr_->deleteAllOptionDefs6(ServerSelector::ONE("server1")));
// Delete one of the option definitions and see if it is gone.
- EXPECT_EQ(1, cbptr_->deleteOptionDef6(ServerSelector::ALL(),
- test_option_defs_[2]->getCode(),
+ EXPECT_EQ(1, cbptr_->deleteOptionDef6(ServerSelector::ALL(), test_option_defs_[2]->getCode(),
test_option_defs_[2]->getOptionSpaceName()));
- ASSERT_FALSE(cbptr_->getOptionDef6(ServerSelector::ALL(),
- test_option_defs_[2]->getCode(),
+ ASSERT_FALSE(cbptr_->getOptionDef6(ServerSelector::ALL(), test_option_defs_[2]->getCode(),
test_option_defs_[2]->getOptionSpaceName()));
{
SCOPED_TRACE("DELETE audit entry for the first option definition");
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::DELETE,
"option definition deleted");
}
{
SCOPED_TRACE("DELETE audit entries for the remaining option definitions");
// The last parameter indicates that we expect two new audit entries.
- testNewAuditEntry("dhcp6_option_def",
- AuditEntry::ModificationType::DELETE,
- "deleted all option definitions",
- ServerSelector::ALL(), 2);
+ testNewAuditEntry("dhcp6_option_def", AuditEntry::ModificationType::DELETE,
+ "deleted all option definitions", ServerSelector::ALL(), 2);
}
}
// Insert option definitions into the database.
for (int i = 1; i < test_networks_.size(); ++i) {
- cbptr_->createUpdateOptionDef6(ServerSelector::ALL(),
- test_option_defs_[i]);
+ cbptr_->createUpdateOptionDef6(ServerSelector::ALL(), test_option_defs_[i]);
}
// Fetch option definitions with timestamp later than today. Only one
// option definition should be returned.
- OptionDefContainer
- option_defs = cbptr_->getModifiedOptionDefs6(ServerSelector::ALL(),
- timestamps_["after today"]);
+ OptionDefContainer option_defs = cbptr_->getModifiedOptionDefs6(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, option_defs.size());
// Fetch option definitions with timestamp later than yesterday. We
// Fetch option definitions with timestamp later than tomorrow. Nothing
// should be returned.
option_defs = cbptr_->getModifiedOptionDefs6(ServerSelector::ALL(),
- timestamps_["after tomorrow"]);
+ timestamps_["after tomorrow"]);
ASSERT_TRUE(option_defs.empty());
}
TEST_F(PgSqlConfigBackendDHCPv6Test, createUpdateDeleteOption6) {
// Add option to the database.
OptionDescriptorPtr opt_posix_timezone = test_options_[0];
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), opt_posix_timezone);
// Make sure we can retrieve this option and that it is equal to the
// option we have inserted into the database.
OptionDescriptorPtr returned_opt_posix_timezone =
- cbptr_->getOption6(ServerSelector::ALL(),
- opt_posix_timezone->option_->getType(),
+ cbptr_->getOption6(ServerSelector::ALL(), opt_posix_timezone->option_->getType(),
opt_posix_timezone->space_name_);
ASSERT_TRUE(returned_opt_posix_timezone);
{
SCOPED_TRACE("verify created option");
- testOptionsEquivalent(*opt_posix_timezone,
- *returned_opt_posix_timezone);
+ testOptionsEquivalent(*opt_posix_timezone, *returned_opt_posix_timezone);
}
{
SCOPED_TRACE("CREATE audit entry for an option");
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::CREATE,
"global option set");
}
// Modify option and update it in the database.
opt_posix_timezone->persistent_ = !opt_posix_timezone->persistent_;
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), opt_posix_timezone);
// Retrieve the option again and make sure that updates were
// properly propagated to the database. Use explicit server selector
{
SCOPED_TRACE("verify updated option");
- testOptionsEquivalent(*opt_posix_timezone,
- *returned_opt_posix_timezone);
+ testOptionsEquivalent(*opt_posix_timezone, *returned_opt_posix_timezone);
}
{
SCOPED_TRACE("UPDATE audit entry for an option");
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::UPDATE,
"global option set");
}
opt_posix_timezone->space_name_));
// Deleting option for all servers should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ALL(),
- opt_posix_timezone->option_->getType(),
- opt_posix_timezone->space_name_));
+ EXPECT_EQ(1,
+ cbptr_->deleteOption6(ServerSelector::ALL(), opt_posix_timezone->option_->getType(),
+ opt_posix_timezone->space_name_));
- EXPECT_FALSE(cbptr_->getOption6(ServerSelector::ALL(),
- opt_posix_timezone->option_->getType(),
+ EXPECT_FALSE(cbptr_->getOption6(ServerSelector::ALL(), opt_posix_timezone->option_->getType(),
opt_posix_timezone->space_name_));
{
SCOPED_TRACE("DELETE audit entry for an option");
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::DELETE,
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::DELETE,
"global option deleted");
}
}
OptionDescriptorPtr opt_timezone2 = test_options_[6];
OptionDescriptorPtr opt_timezone3 = test_options_[7];
- EXPECT_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server1"),
- opt_timezone1),
+ EXPECT_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server1"), opt_timezone1),
NullKeyError);
// Create two servers.
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[1]));
{
SCOPED_TRACE("server1 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
EXPECT_NO_THROW(cbptr_->createUpdateServer6(test_servers_[2]));
{
SCOPED_TRACE("server2 is created");
- testNewAuditEntry("dhcp6_server",
- AuditEntry::ModificationType::CREATE,
- "server set");
+ testNewAuditEntry("dhcp6_server", AuditEntry::ModificationType::CREATE, "server set");
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server1"),
- opt_timezone1));
+ EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server1"), opt_timezone1));
{
SCOPED_TRACE("global option for server1 is set");
// The value of 3 means there should be 3 audit entries available for the
// server1, two that indicate creation of the servers and one that we
// validate, which sets the global option.
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ONE("server1"),
- 3, 1);
-
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ONE("server1"), 3, 1);
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server2"),
- opt_timezone2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server2"), opt_timezone2));
{
SCOPED_TRACE("global option for server2 is set");
// Same as in case of the server1, there should be 3 audit entries and
// we validate one of them.
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ONE("server2"),
- 3, 1);
-
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ONE("server2"), 3, 1);
}
- EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ALL(),
- opt_timezone3));
+ EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ALL(), opt_timezone3));
{
SCOPED_TRACE("global option for all servers is set");
// There should be one new audit entry for all servers. It logs
// the insertion of the global option.
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::CREATE,
- "global option set",
- ServerSelector::ALL(),
- 1, 1);
-
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::CREATE,
+ "global option set", ServerSelector::ALL(), 1, 1);
}
OptionDescriptorPtr returned_option;
// Try to fetch the option specified for all servers. It should return
// the third option.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption6(ServerSelector::ALL(),
- opt_timezone3->option_->getType(),
- opt_timezone3->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption6(ServerSelector::ALL(),
+ opt_timezone3->option_->getType(),
+ opt_timezone3->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_timezone3, *returned_option);
// Try to fetch the option specified for the server1. It should override the
// option specified for all servers.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption6(ServerSelector::ONE("server1"),
- opt_timezone1->option_->getType(),
- opt_timezone1->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption6(ServerSelector::ONE("server1"),
+ opt_timezone1->option_->getType(),
+ opt_timezone1->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_timezone1, *returned_option);
// The same in case of the server2.
- EXPECT_NO_THROW(
- returned_option = cbptr_->getOption6(ServerSelector::ONE("server2"),
- opt_timezone2->option_->getType(),
- opt_timezone2->space_name_);
- );
+ EXPECT_NO_THROW(returned_option = cbptr_->getOption6(ServerSelector::ONE("server2"),
+ opt_timezone2->option_->getType(),
+ opt_timezone2->space_name_););
ASSERT_TRUE(returned_option);
testOptionsEquivalent(*opt_timezone2, *returned_option);
// Try to fetch the collection of global options for the server1, server2
// and server3. The server3 does not have an explicit value so for this server
// we should get the option associated with "all" servers.
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions6(ServerSelector::
- MULTIPLE({ "server1", "server2",
- "server3" }));
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions6(
+ ServerSelector::MULTIPLE({"server1", "server2", "server3"})););
ASSERT_EQ(3, returned_options.size());
// Check that expected options have been returned.
// Try to fetch the collection of options specified for all servers.
// This excludes the options specific to server1 and server2. It returns
// only the common ones.
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions6(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions6(ServerSelector::ALL()););
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_timezone3, *returned_options.begin());
// Delete the server1. It should remove associations of this server with the
// option and the option itself.
EXPECT_NO_THROW(cbptr_->deleteServer6(ServerTag("server1")));
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions6(ServerSelector::ONE("server1"));
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions6(ServerSelector::ONE("server1")););
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_timezone3, *returned_options.begin());
{
SCOPED_TRACE("DELETE audit entry for the global option after server deletion");
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::DELETE,
- "deleting a server", ServerSelector::ONE("server1"),
- 2, 1);
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::DELETE,
+ "deleting a server", ServerSelector::ONE("server1"), 2, 1);
}
// Attempt to delete global option for server1.
EXPECT_EQ(1, deleted_num);
// Create this option again to test that deletion of all servers removes it too.
- EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server2"),
- opt_timezone2));
+ EXPECT_NO_THROW(cbptr_->createUpdateOption6(ServerSelector::ONE("server2"), opt_timezone2));
// Delete all servers, except 'all'.
EXPECT_NO_THROW(deleted_num = cbptr_->deleteAllServers6());
- EXPECT_NO_THROW(
- returned_options = cbptr_->getAllOptions6(ServerSelector::ALL());
- );
+ EXPECT_NO_THROW(returned_options = cbptr_->getAllOptions6(ServerSelector::ALL()););
EXPECT_EQ(1, deleted_num);
ASSERT_EQ(1, returned_options.size());
testOptionsEquivalent(*opt_timezone3, *returned_options.begin());
{
SCOPED_TRACE("DELETE audit entry for the global option after deletion of"
" all servers");
- testNewAuditEntry("dhcp6_options",
- AuditEntry::ModificationType::DELETE,
- "deleting all servers", ServerSelector::ONE("server2"),
- 4, 1);
+ testNewAuditEntry("dhcp6_options", AuditEntry::ModificationType::DELETE,
+ "deleting all servers", ServerSelector::ONE("server2"), 4, 1);
}
}
// This test verifies that all global options can be retrieved.
TEST_F(PgSqlConfigBackendDHCPv6Test, getAllOptions6) {
// Add three global options to the database.
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[0]);
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[1]);
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[5]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[0]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[1]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[5]);
// Retrieve all these options.
OptionContainer returned_options = cbptr_->getAllOptions6(ServerSelector::ALL());
test_options_[5]->setModificationTime(timestamps_["today"]);
// Put options into the database.
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[0]);
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[1]);
- cbptr_->createUpdateOption6(ServerSelector::ALL(),
- test_options_[5]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[0]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[1]);
+ cbptr_->createUpdateOption6(ServerSelector::ALL(), test_options_[5]);
// Get options with the timestamp later than today. Only
// one option should be returned.
- OptionContainer returned_options =
- cbptr_->getModifiedOptions6(ServerSelector::ALL(),
- timestamps_["after today"]);
+ OptionContainer returned_options = cbptr_->getModifiedOptions6(ServerSelector::ALL(),
+ timestamps_["after today"]);
ASSERT_EQ(1, returned_options.size());
// Fetching modified options with explicitly specified server selector
cbptr_->createUpdateSubnet6(ServerSelector::ALL(), subnet);
// Fetch this subnet by subnet identifier.
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
{
SCOPED_TRACE("CREATE audit entry for a new subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
// The inserted subnet contains four options.
ASSERT_EQ(4, countRows("dhcp6_options"));
OptionDescriptorPtr opt_posix_timezone = test_options_[0];
- cbptr_->createUpdateOption6(ServerSelector::ANY(), subnet->getID(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), subnet->getID(), opt_posix_timezone);
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
OptionDescriptor returned_opt_posix_timezone =
// entry for the entire subnet so as the server refreshes the
// subnet with the new option. Note that the server doesn't
// have means to retrieve only the newly added option.
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option set");
}
ASSERT_EQ(5, countRows("dhcp6_options"));
opt_posix_timezone->persistent_ = !opt_posix_timezone->persistent_;
- cbptr_->createUpdateOption6(ServerSelector::ANY(), subnet->getID(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), subnet->getID(), opt_posix_timezone);
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- returned_opt_posix_timezone =
- returned_subnet->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE);
+ returned_opt_posix_timezone = returned_subnet->getCfgOption()->get(DHCP6_OPTION_SPACE,
+ D6O_NEW_POSIX_TIMEZONE);
ASSERT_TRUE(returned_opt_posix_timezone.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for an updated subnet option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option set");
}
opt_posix_timezone->option_->getType(),
opt_posix_timezone->space_name_));
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- EXPECT_FALSE(returned_subnet->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
+ EXPECT_FALSE(
+ returned_subnet->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
{
SCOPED_TRACE("UPDATE audit entry for a deleted subnet option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"subnet specific option deleted");
}
{
SCOPED_TRACE("CREATE audit entry for a subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
// Inserted subnet has four options.
ASSERT_EQ(4, countRows("dhcp6_options"));
// Add an option into the pool.
- const PoolPtr pool = subnet->getPool(Lease::TYPE_NA,
- IOAddress("2001:db8::10"));
+ const PoolPtr pool = subnet->getPool(Lease::TYPE_NA, IOAddress("2001:db8::10"));
ASSERT_TRUE(pool);
OptionDescriptorPtr opt_posix_timezone = test_options_[0];
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_posix_timezone);
// Query for a subnet.
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
// The returned subnet should include our pool.
{
SCOPED_TRACE("UPDATE audit entry for a subnet after adding an option "
"to the address pool");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"address pool specific option set");
}
// Modify the option and update it in the database.
opt_posix_timezone->persistent_ = !opt_posix_timezone->persistent_;
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_posix_timezone);
// Fetch the subnet and the corresponding pool.
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
const PoolPtr returned_pool1 = returned_subnet->getPool(Lease::TYPE_NA,
IOAddress("2001:db8::10"));
ASSERT_TRUE(returned_pool1);
// Test that the option has been correctly updated in the database.
- returned_opt_posix_timezone =
- returned_pool1->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE);
+ returned_opt_posix_timezone = returned_pool1->getCfgOption()->get(DHCP6_OPTION_SPACE,
+ D6O_NEW_POSIX_TIMEZONE);
ASSERT_TRUE(returned_opt_posix_timezone.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for a subnet when updating "
"address pool specific option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"address pool specific option set");
}
ASSERT_EQ(5, countRows("dhcp6_options"));
// Delete option for any server should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ANY(),
- pool->getFirstAddress(),
- pool->getLastAddress(),
- opt_posix_timezone->option_->getType(),
- opt_posix_timezone->space_name_));
+ EXPECT_EQ(1,
+ cbptr_->deleteOption6(ServerSelector::ANY(), pool->getFirstAddress(),
+ pool->getLastAddress(), opt_posix_timezone->option_->getType(),
+ opt_posix_timezone->space_name_));
// Fetch the subnet and the pool from the database again to make sure
// that the option is really gone.
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
const PoolPtr returned_pool2 = returned_subnet->getPool(Lease::TYPE_NA,
IOAddress("2001:db8::10"));
ASSERT_TRUE(returned_pool2);
// Option should be gone.
- EXPECT_FALSE(returned_pool2->getCfgOption()->get(DHCP6_OPTION_SPACE,
- D6O_NEW_POSIX_TIMEZONE).option_);
+ EXPECT_FALSE(
+ returned_pool2->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
{
SCOPED_TRACE("UPDATE audit entry for a subnet when deleting "
"address pool specific option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"address pool specific option deleted");
}
{
SCOPED_TRACE("CREATE audit entry for a subnet");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::CREATE,
- "subnet set");
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::CREATE, "subnet set");
}
// Inserted subnet has four options.
ASSERT_EQ(4, countRows("dhcp6_options"));
// Add an option into the pd pool.
- const PoolPtr pd_pool = subnet->getPool(Lease::TYPE_PD,
- IOAddress("2001:db8:a:10::"));
+ const PoolPtr pd_pool = subnet->getPool(Lease::TYPE_PD, IOAddress("2001:db8:a:10::"));
ASSERT_TRUE(pd_pool);
OptionDescriptorPtr opt_posix_timezone = test_options_[0];
- int pd_pool_len = prefixLengthFromRange(pd_pool->getFirstAddress(),
- pd_pool->getLastAddress());
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- pd_pool->getFirstAddress(),
- static_cast<uint8_t>(pd_pool_len),
- opt_posix_timezone);
+ int pd_pool_len = prefixLengthFromRange(pd_pool->getFirstAddress(), pd_pool->getLastAddress());
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), pd_pool->getFirstAddress(),
+ static_cast<uint8_t>(pd_pool_len), opt_posix_timezone);
// Query for a subnet.
- Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ Subnet6Ptr returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
// The returned subnet should include our pool.
- const PoolPtr returned_pd_pool =
- returned_subnet->getPool(Lease::TYPE_PD, IOAddress("2001:db8:a:10::"));
+ const PoolPtr returned_pd_pool = returned_subnet->getPool(Lease::TYPE_PD,
+ IOAddress("2001:db8:a:10::"));
ASSERT_TRUE(returned_pd_pool);
// The pd pool should contain option we added earlier.
OptionDescriptor returned_opt_posix_timezone =
- returned_pd_pool->getCfgOption()->get(DHCP6_OPTION_SPACE,
- D6O_NEW_POSIX_TIMEZONE);
+ returned_pd_pool->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE);
ASSERT_TRUE(returned_opt_posix_timezone.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for a subnet after adding an option "
"to the prefix delegation pool");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"prefix delegation pool specific option set");
}
// Modify the option and update it in the database.
opt_posix_timezone->persistent_ = !opt_posix_timezone->persistent_;
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- pd_pool->getFirstAddress(),
- static_cast<uint8_t>(pd_pool_len),
- opt_posix_timezone);
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), pd_pool->getFirstAddress(),
+ static_cast<uint8_t>(pd_pool_len), opt_posix_timezone);
// Fetch the subnet and the corresponding pd pool.
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- const PoolPtr returned_pd_pool1 =
- returned_subnet->getPool(Lease::TYPE_PD, IOAddress("2001:db8:a:10::"));
+ const PoolPtr returned_pd_pool1 = returned_subnet->getPool(Lease::TYPE_PD,
+ IOAddress("2001:db8:a:10::"));
ASSERT_TRUE(returned_pd_pool1);
// Test that the option has been correctly updated in the database.
- returned_opt_posix_timezone =
- returned_pd_pool1->getCfgOption()->get(DHCP6_OPTION_SPACE,
- D6O_NEW_POSIX_TIMEZONE);
+ returned_opt_posix_timezone = returned_pd_pool1->getCfgOption()->get(DHCP6_OPTION_SPACE,
+ D6O_NEW_POSIX_TIMEZONE);
ASSERT_TRUE(returned_opt_posix_timezone.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for a subnet when updating "
"prefix delegation pool specific option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"prefix delegation pool specific option set");
}
ASSERT_EQ(5, countRows("dhcp6_options"));
// Delete option for any server should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ANY(),
- pd_pool->getFirstAddress(),
+ EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ANY(), pd_pool->getFirstAddress(),
static_cast<uint8_t>(pd_pool_len),
opt_posix_timezone->option_->getType(),
opt_posix_timezone->space_name_));
// Fetch the subnet and the pool from the database again to make sure
// that the option is really gone.
- returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(),
- subnet->getID());
+ returned_subnet = cbptr_->getSubnet6(ServerSelector::ALL(), subnet->getID());
ASSERT_TRUE(returned_subnet);
- const PoolPtr returned_pd_pool2 =
- returned_subnet->getPool(Lease::TYPE_PD, IOAddress("2001:db8:a:10::"));
+ const PoolPtr returned_pd_pool2 = returned_subnet->getPool(Lease::TYPE_PD,
+ IOAddress("2001:db8:a:10::"));
ASSERT_TRUE(returned_pd_pool2);
// Option should be gone.
- EXPECT_FALSE(returned_pd_pool2->getCfgOption()->get(DHCP6_OPTION_SPACE,
- D6O_NEW_POSIX_TIMEZONE).option_);
+ EXPECT_FALSE(
+ returned_pd_pool2->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
{
SCOPED_TRACE("UPDATE audit entry for a subnet when deleting "
"prefix delegation pool specific option");
- testNewAuditEntry("dhcp6_subnet",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_subnet", AuditEntry::ModificationType::UPDATE,
"prefix delegation pool specific option deleted");
}
TEST_F(PgSqlConfigBackendDHCPv6Test, createUpdateDeleteSharedNetworkOption6) {
// Insert new shared network.
SharedNetwork6Ptr shared_network = test_networks_[1];
- cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- shared_network);
+ cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), shared_network);
// Fetch this shared network by name.
- SharedNetwork6Ptr returned_network =
- cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- shared_network->getName());
+ SharedNetwork6Ptr returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
+ shared_network->getName());
ASSERT_TRUE(returned_network);
{
SCOPED_TRACE("CREATE audit entry for the new shared network");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::CREATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::CREATE,
"shared network set");
}
ASSERT_EQ(0, countRows("dhcp6_options"));
OptionDescriptorPtr opt_posix_timezone = test_options_[0];
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- shared_network->getName(),
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), shared_network->getName(),
opt_posix_timezone);
- returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
OptionDescriptor returned_opt_posix_timezone =
// entry for the entire shared network so as the server refreshes the
// shared network with the new option. Note that the server doesn't
// have means to retrieve only the newly added option.
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option set");
}
ASSERT_EQ(1, countRows("dhcp6_options"));
opt_posix_timezone->persistent_ = !opt_posix_timezone->persistent_;
- cbptr_->createUpdateOption6(ServerSelector::ANY(),
- shared_network->getName(),
+ cbptr_->createUpdateOption6(ServerSelector::ANY(), shared_network->getName(),
opt_posix_timezone);
- returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
- returned_opt_posix_timezone =
- returned_network->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE);
+ returned_opt_posix_timezone = returned_network->getCfgOption()->get(DHCP6_OPTION_SPACE,
+ D6O_NEW_POSIX_TIMEZONE);
ASSERT_TRUE(returned_opt_posix_timezone.option_);
{
{
SCOPED_TRACE("UPDATE audit entry for the updated shared network option");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option set");
}
ASSERT_EQ(1, countRows("dhcp6_options"));
// Deleting an option for any server should succeed.
- EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ANY(),
- shared_network->getName(),
+ EXPECT_EQ(1, cbptr_->deleteOption6(ServerSelector::ANY(), shared_network->getName(),
opt_posix_timezone->option_->getType(),
opt_posix_timezone->space_name_));
- returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(),
- shared_network->getName());
+ returned_network = cbptr_->getSharedNetwork6(ServerSelector::ALL(), shared_network->getName());
ASSERT_TRUE(returned_network);
- EXPECT_FALSE(returned_network->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
+ EXPECT_FALSE(
+ returned_network->getCfgOption()->get(DHCP6_OPTION_SPACE, D6O_NEW_POSIX_TIMEZONE).option_);
{
SCOPED_TRACE("UPDATE audit entry for the deleted shared network option");
- testNewAuditEntry("dhcp6_shared_network",
- AuditEntry::ModificationType::UPDATE,
+ testNewAuditEntry("dhcp6_shared_network", AuditEntry::ModificationType::UPDATE,
"shared network specific option deleted");
}
// Insert two shared networks. We insert level1 without options first,
// then level2.
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- level1_no_options));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), level1_no_options));
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- level2));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), level2));
// Fetch all shared networks.
- SharedNetwork6Collection networks =
- cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
+ SharedNetwork6Collection networks = cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
ASSERT_EQ(2, networks.size());
for (auto i = 0; i < networks.size(); ++i) {
if (i == 0) {
// level1_no_options
- EXPECT_EQ(level1_no_options->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level1_no_options->toElement()->str(), networks[i]->toElement()->str());
} else {
// bar
- EXPECT_EQ(level2->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level2->toElement()->str(), networks[i]->toElement()->str());
}
}
- EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(),
- level1_options));
+ EXPECT_NO_THROW(cbptr_->createUpdateSharedNetwork6(ServerSelector::ALL(), level1_options));
// Fetch all shared networks.
networks = cbptr_->getAllSharedNetworks6(ServerSelector::ALL());
for (auto i = 0; i < networks.size(); ++i) {
if (i == 0) {
// level1_no_options
- EXPECT_EQ(level1_options->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level1_options->toElement()->str(), networks[i]->toElement()->str());
} else {
// bar
- EXPECT_EQ(level2->toElement()->str(),
- networks[i]->toElement()->str());
+ EXPECT_EQ(level2->toElement()->str(), networks[i]->toElement()->str());
}
}
}
}
// Get all audit entries from now.
- AuditEntryCollection audit_entries =
- cbptr_->getRecentAuditEntries(server_selector, now, 0);
+ AuditEntryCollection audit_entries = cbptr_->getRecentAuditEntries(server_selector, now, 0);
// Check that partial retrieves return the right count.
auto& mod_time_idx = audit_entries.get<AuditEntryModificationTimeIdTag>();
for (auto it = mod_time_idx.begin(); it != mod_time_idx.end(); ++it) {
- size_t partial_size =
- cbptr_->getRecentAuditEntries(server_selector,
- (*it)->getModificationTime(),
- (*it)->getRevisionId()).size();
- EXPECT_EQ(partial_size + 1,
- std::distance(it, mod_time_idx.end()));
+ size_t partial_size = cbptr_
+ ->getRecentAuditEntries(server_selector,
+ (*it)->getModificationTime(),
+ (*it)->getRevisionId())
+ .size();
+ EXPECT_EQ(partial_size + 1, std::distance(it, mod_time_idx.end()));
}
}
/// @brief Method which returns invalid back end specific connection
/// string
virtual std::string invalidConnectString() {
- return (connectionString(PGSQL_VALID_TYPE, INVALID_NAME, VALID_HOST,
- VALID_USER, VALID_PASSWORD));
+ return (connectionString(PGSQL_VALID_TYPE, INVALID_NAME, VALID_HOST, VALID_USER,
+ VALID_PASSWORD));
}
/// @brief Verifies open failures do NOT invoke db lost callback
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
access = invalidConnectString();
CfgMgr::instance().clear();
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
access = invalidConnectString();
access += extra;
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
// Verify we can execute a query. We don't care about the answer.
ServerCollection servers;
- ASSERT_NO_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
+ ASSERT_NO_THROW(
+ servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()));
access = invalidConnectString();
access += extra;
config_ctl_info.reset(new ConfigControlInfo());
config_ctl_info->addConfigDatabase(access);
CfgMgr::instance().getCurrentCfg()->setConfigControlInfo(config_ctl_info);
- const ConfigDbInfoList& cfg = CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
+ const ConfigDbInfoList& cfg =
+ CfgMgr::instance().getCurrentCfg()->getConfigControlInfo()->getConfigDatabases();
(const_cast<ConfigDbInfoList&>(cfg))[0].setAccessString(access, true);
// Now close the sql socket out from under backend client
ASSERT_EQ(0, close(sql_socket));
// A query should fail with DbConnectionUnusable.
- ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(BackendSelector()),
+ ASSERT_THROW(servers = ConfigBackendDHCPv6Mgr::instance().getPool()->getAllServers6(
+ BackendSelector()),
DbConnectionUnusable);
io_service_->poll();
}
/// @brief Verifies that loss of connectivity to Postgres is handled correctly.
-TEST_F(PgSqlConfigBackendDHCPv6DbLostCallbackTest, testDbLostAndRecoveredAfterTimeoutCallbackMultiThreading) {
+TEST_F(PgSqlConfigBackendDHCPv6DbLostCallbackTest,
+ testDbLostAndRecoveredAfterTimeoutCallbackMultiThreading) {
MultiThreadingTest mt(true);
testDbLostAndRecoveredAfterTimeoutCallback();
}
}
/// @brief Verifies that loss of connectivity to Postgres is handled correctly.
-TEST_F(PgSqlConfigBackendDHCPv6DbLostCallbackTest, testDbLostAndFailedAfterTimeoutCallbackMultiThreading) {
+TEST_F(PgSqlConfigBackendDHCPv6DbLostCallbackTest,
+ testDbLostAndFailedAfterTimeoutCallbackMultiThreading) {
MultiThreadingTest mt(true);
testDbLostAndFailedAfterTimeoutCallback();
}
-}
+} // namespace
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
-#include <pgsql_cb_impl.h>
-#include <gtest/gtest.h>
+
#include <dhcpsrv/testutils/pgsql_generic_backend_unittest.h>
+
+#include <gtest/gtest.h>
+#include <pgsql_cb_impl.h>
#include <vector>
using namespace isc::db;
namespace {
-typedef PsqlBindArrayPtr (tripletFunc) (const Triplet<uint32_t>& triplet);
+typedef PsqlBindArrayPtr(tripletFunc)(const Triplet<uint32_t>& triplet);
-class PgsqlConfigBackendTest: public PgSqlGenericBackendTest {
+class PgsqlConfigBackendTest : public PgSqlGenericBackendTest {
public:
- PgsqlConfigBackendTest(): PgSqlGenericBackendTest() {
+ PgsqlConfigBackendTest() : PgSqlGenericBackendTest() {
DatabaseConnection::ParameterMap params;
params["name"] = "keatest";
params["password"] = "keatest";
params["user"] = "keatest";
cbptr_.reset(new PgSqlConfigBackendImpl(params, 0));
-
}
/// @brief checks if specified triplet generating function stores the values properly.
// the createBinding function takes the default value of a triplet.
TEST_F(PgsqlConfigBackendTest, createBinding) {
- tripletFunc &f = PgSqlConfigBackendImpl::createBinding;
+ tripletFunc& f = PgSqlConfigBackendImpl::createBinding;
std::vector<uint32_t> exp;
// Case 1: empty triplet creates empty binding
// the createBinding function takes the default value of a triplet.
TEST_F(PgsqlConfigBackendTest, createMinBinding) {
- tripletFunc &f = PgSqlConfigBackendImpl::createMinBinding;
+ tripletFunc& f = PgSqlConfigBackendImpl::createMinBinding;
std::vector<uint32_t> exp;
// Case 1: empty triplet creates empty binding
// the createBinding function takes the default value of a triplet.
TEST_F(PgsqlConfigBackendTest, createMaxBinding) {
- tripletFunc &f = PgSqlConfigBackendImpl::createMaxBinding;
+ tripletFunc& f = PgSqlConfigBackendImpl::createMaxBinding;
std::vector<uint32_t> exp;
// Case 1: empty triplet creates empty binding
checkBinding(f, Triplet<uint32_t>(111, 222, 333), exp);
}
-
-}
+} // namespace
#include <config.h>
#include <log/logger_support.h>
+
#include <gtest/gtest.h>
int
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
+
#include <hooks/hooks.h>
extern "C" {
/// @brief returns Kea hooks version.
-int version() {
+int
+version() {
return (KEA_HOOKS_VERSION);
}
-
}