mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-04 07:55:18 +00:00
[#396,!205] Audit revision timestamp is set by Kea.
This commit is contained in:
@@ -755,8 +755,7 @@ public:
|
|||||||
// no new audit revisions are created in any subsequent calls.
|
// no new audit revisions are created in any subsequent calls.
|
||||||
ScopedAuditRevision audit_revision(this,
|
ScopedAuditRevision audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "subnet set", true);
|
||||||
"subnet set", true);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@@ -872,8 +871,7 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, log_message, cascade_delete);
|
||||||
log_message, cascade_delete);
|
|
||||||
|
|
||||||
auto count = deleteFromTable(index, server_selector, operation, keys...);
|
auto count = deleteFromTable(index, server_selector, operation, keys...);
|
||||||
|
|
||||||
@@ -1166,8 +1164,7 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "shared network set", true);
|
||||||
"shared network set", true);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@@ -1281,8 +1278,7 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "global option set", false);
|
||||||
"global option set", false);
|
|
||||||
|
|
||||||
if (existing_option) {
|
if (existing_option) {
|
||||||
in_bindings.push_back(MySqlBinding::createString(tag));
|
in_bindings.push_back(MySqlBinding::createString(tag));
|
||||||
@@ -1352,8 +1348,8 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "subnet specific option set",
|
||||||
"subnet specific option set", cascade_update);
|
cascade_update);
|
||||||
|
|
||||||
if (existing_option) {
|
if (existing_option) {
|
||||||
in_bindings.push_back(MySqlBinding::createString(tag));
|
in_bindings.push_back(MySqlBinding::createString(tag));
|
||||||
@@ -1441,8 +1437,8 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "pool specific option set",
|
||||||
"pool specific option set", cascade_update);
|
cascade_update);
|
||||||
|
|
||||||
if (existing_option) {
|
if (existing_option) {
|
||||||
in_bindings.push_back(MySqlBinding::createString(tag));
|
in_bindings.push_back(MySqlBinding::createString(tag));
|
||||||
@@ -1512,8 +1508,7 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "shared network specific option set",
|
||||||
"shared network specific option set",
|
|
||||||
cascade_update);
|
cascade_update);
|
||||||
|
|
||||||
if (existing_option) {
|
if (existing_option) {
|
||||||
@@ -1837,8 +1832,7 @@ public:
|
|||||||
ScopedAuditRevision
|
ScopedAuditRevision
|
||||||
audit_revision(this,
|
audit_revision(this,
|
||||||
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
server_selector,
|
server_selector, "option definition set",
|
||||||
"option definition set",
|
|
||||||
true);
|
true);
|
||||||
|
|
||||||
if (existing_definition) {
|
if (existing_definition) {
|
||||||
@@ -2053,7 +2047,7 @@ TaggedStatementArray;
|
|||||||
/// retrieve data from the database.
|
/// retrieve data from the database.
|
||||||
TaggedStatementArray tagged_statements = { {
|
TaggedStatementArray tagged_statements = { {
|
||||||
{ MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
{ MySqlConfigBackendDHCPv4Impl::CREATE_AUDIT_REVISION,
|
||||||
"CALL createAuditRevisionDHCP4(?, ?, ?)"
|
"CALL createAuditRevisionDHCP4(?, ?, ?, ?)"
|
||||||
},
|
},
|
||||||
|
|
||||||
// Select global parameter by name.
|
// Select global parameter by name.
|
||||||
|
@@ -32,7 +32,9 @@ ScopedAuditRevision::ScopedAuditRevision(MySqlConfigBackendImpl* impl,
|
|||||||
const std::string& log_message,
|
const std::string& log_message,
|
||||||
bool cascade_transaction)
|
bool cascade_transaction)
|
||||||
: impl_(impl) {
|
: impl_(impl) {
|
||||||
impl_->createAuditRevision(index, server_selector, log_message,
|
impl_->createAuditRevision(index, server_selector,
|
||||||
|
boost::posix_time::microsec_clock::local_time(),
|
||||||
|
log_message,
|
||||||
cascade_transaction);
|
cascade_transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +88,7 @@ MySqlConfigBackendImpl::~MySqlConfigBackendImpl() {
|
|||||||
void
|
void
|
||||||
MySqlConfigBackendImpl::createAuditRevision(const int index,
|
MySqlConfigBackendImpl::createAuditRevision(const int index,
|
||||||
const ServerSelector& server_selector,
|
const ServerSelector& server_selector,
|
||||||
|
const boost::posix_time::ptime& audit_ts,
|
||||||
const std::string& log_message,
|
const std::string& log_message,
|
||||||
const bool cascade_transaction) {
|
const bool cascade_transaction) {
|
||||||
// Do not touch existing audit revision in case of the cascade update.
|
// Do not touch existing audit revision in case of the cascade update.
|
||||||
@@ -97,6 +100,7 @@ MySqlConfigBackendImpl::createAuditRevision(const int index,
|
|||||||
"audit revision");
|
"audit revision");
|
||||||
|
|
||||||
MySqlBindingCollection in_bindings = {
|
MySqlBindingCollection in_bindings = {
|
||||||
|
MySqlBinding::createTimestamp(audit_ts),
|
||||||
MySqlBinding::createString(tag),
|
MySqlBinding::createString(tag),
|
||||||
MySqlBinding::createString(log_message),
|
MySqlBinding::createString(log_message),
|
||||||
MySqlBinding::createInteger<uint8_t>(static_cast<uint8_t>(cascade_transaction))
|
MySqlBinding::createInteger<uint8_t>(static_cast<uint8_t>(cascade_transaction))
|
||||||
|
@@ -171,6 +171,8 @@ public:
|
|||||||
///
|
///
|
||||||
/// @param index query index.
|
/// @param index query index.
|
||||||
/// @param server_selector Server selector.
|
/// @param server_selector Server selector.
|
||||||
|
/// @param audit_ts Timestamp to be associated with the audit
|
||||||
|
/// revision.
|
||||||
/// @param log_message log message to be used for the audit revision.
|
/// @param log_message log message to be used for the audit revision.
|
||||||
/// @param cascade_transaction Boolean value indicating whether the
|
/// @param cascade_transaction Boolean value indicating whether the
|
||||||
/// configuration modification is performed as part of the ownining
|
/// configuration modification is performed as part of the ownining
|
||||||
@@ -179,6 +181,7 @@ public:
|
|||||||
/// audit entry for the owning element should be created.
|
/// audit entry for the owning element should be created.
|
||||||
void createAuditRevision(const int index,
|
void createAuditRevision(const int index,
|
||||||
const db::ServerSelector& server_selector,
|
const db::ServerSelector& server_selector,
|
||||||
|
const boost::posix_time::ptime& audit_ts,
|
||||||
const std::string& log_message,
|
const std::string& log_message,
|
||||||
const bool cascade_transaction);
|
const bool cascade_transaction);
|
||||||
|
|
||||||
|
@@ -296,6 +296,9 @@ public:
|
|||||||
timestamps_["tomorrow"] = timestamps_["today"] + boost::posix_time::hours(24);
|
timestamps_["tomorrow"] = timestamps_["today"] + boost::posix_time::hours(24);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief Logs audit entries in the @c audit_entries_ member.
|
||||||
|
///
|
||||||
|
/// This function is called in case of an error.
|
||||||
std::string logExistingAuditEntries() {
|
std::string logExistingAuditEntries() {
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
// Copyright (C) 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
//
|
//
|
||||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -80,7 +80,7 @@ public:
|
|||||||
OptionDescriptor(const OptionPtr& opt, bool persist,
|
OptionDescriptor(const OptionPtr& opt, bool persist,
|
||||||
const std::string& formatted_value = "",
|
const std::string& formatted_value = "",
|
||||||
data::ConstElementPtr user_context = data::ConstElementPtr())
|
data::ConstElementPtr user_context = data::ConstElementPtr())
|
||||||
: option_(opt), persistent_(persist),
|
: data::StampedElement(), option_(opt), persistent_(persist),
|
||||||
formatted_value_(formatted_value),
|
formatted_value_(formatted_value),
|
||||||
space_name_() {
|
space_name_() {
|
||||||
setContext(user_context);
|
setContext(user_context);
|
||||||
@@ -90,14 +90,15 @@ public:
|
|||||||
///
|
///
|
||||||
/// @param persist if true option is always sent.
|
/// @param persist if true option is always sent.
|
||||||
OptionDescriptor(bool persist)
|
OptionDescriptor(bool persist)
|
||||||
: option_(OptionPtr()), persistent_(persist),
|
: data::StampedElement(), option_(OptionPtr()), persistent_(persist),
|
||||||
formatted_value_(), space_name_() {};
|
formatted_value_(), space_name_() {};
|
||||||
|
|
||||||
/// @brief Constructor.
|
/// @brief Constructor.
|
||||||
///
|
///
|
||||||
/// @param desc descriptor
|
/// @param desc descriptor
|
||||||
OptionDescriptor(const OptionDescriptor& desc)
|
OptionDescriptor(const OptionDescriptor& desc)
|
||||||
: option_(desc.option_), persistent_(desc.persistent_),
|
: data::StampedElement(), option_(desc.option_),
|
||||||
|
persistent_(desc.persistent_),
|
||||||
formatted_value_(desc.formatted_value_),
|
formatted_value_(desc.formatted_value_),
|
||||||
space_name_(desc.space_name_) {
|
space_name_(desc.space_name_) {
|
||||||
setContext(desc.getContext());
|
setContext(desc.getContext());
|
||||||
|
@@ -1459,6 +1459,8 @@ ALTER TABLE dhcp4_audit
|
|||||||
-- data in the database, e.g. when new subnet is added.
|
-- data in the database, e.g. when new subnet is added.
|
||||||
--
|
--
|
||||||
-- Parameters:
|
-- Parameters:
|
||||||
|
-- - audit_ts timestamp to be associated with the audit
|
||||||
|
-- revision.
|
||||||
-- - server_tag is used to retrieve the server_id which
|
-- - server_tag is used to retrieve the server_id which
|
||||||
-- associates the changes applied with the particular
|
-- associates the changes applied with the particular
|
||||||
-- server or all servers.
|
-- server or all servers.
|
||||||
@@ -1478,14 +1480,15 @@ ALTER TABLE dhcp4_audit
|
|||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
DROP PROCEDURE IF EXISTS createAuditRevisionDHCP4;
|
DROP PROCEDURE IF EXISTS createAuditRevisionDHCP4;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE createAuditRevisionDHCP4(IN server_tag VARCHAR(256),
|
CREATE PROCEDURE createAuditRevisionDHCP4(IN audit_ts TIMESTAMP(6),
|
||||||
|
IN server_tag VARCHAR(256),
|
||||||
IN audit_log_message TEXT,
|
IN audit_log_message TEXT,
|
||||||
IN cascade_transaction TINYINT(1))
|
IN cascade_transaction TINYINT(1))
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE srv_id BIGINT(20);
|
DECLARE srv_id BIGINT(20);
|
||||||
SELECT id INTO srv_id FROM dhcp4_server WHERE tag = server_tag;
|
SELECT id INTO srv_id FROM dhcp4_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (NOW(), srv_id, audit_log_message);
|
VALUES (audit_ts, srv_id, audit_log_message);
|
||||||
SET @audit_revision_id = LAST_INSERT_ID();
|
SET @audit_revision_id = LAST_INSERT_ID();
|
||||||
SET @cascade_transaction = cascade_transaction;
|
SET @cascade_transaction = cascade_transaction;
|
||||||
END $$
|
END $$
|
||||||
|
@@ -142,6 +142,8 @@ ALTER TABLE dhcp4_audit
|
|||||||
# data in the database, e.g. when new subnet is added.
|
# data in the database, e.g. when new subnet is added.
|
||||||
--
|
--
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
# - audit_ts timestamp to be associated with the audit
|
||||||
|
# revision.
|
||||||
# - server_tag is used to retrieve the server_id which
|
# - server_tag is used to retrieve the server_id which
|
||||||
# associates the changes applied with the particular
|
# associates the changes applied with the particular
|
||||||
# server or all servers.
|
# server or all servers.
|
||||||
@@ -161,14 +163,15 @@ ALTER TABLE dhcp4_audit
|
|||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
DROP PROCEDURE IF EXISTS createAuditRevisionDHCP4;
|
DROP PROCEDURE IF EXISTS createAuditRevisionDHCP4;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE createAuditRevisionDHCP4(IN server_tag VARCHAR(256),
|
CREATE PROCEDURE createAuditRevisionDHCP4(IN audit_ts TIMESTAMP(6),
|
||||||
|
IN server_tag VARCHAR(256),
|
||||||
IN audit_log_message TEXT,
|
IN audit_log_message TEXT,
|
||||||
IN cascade_transaction TINYINT(1))
|
IN cascade_transaction TINYINT(1))
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE srv_id BIGINT(20);
|
DECLARE srv_id BIGINT(20);
|
||||||
SELECT id INTO srv_id FROM dhcp4_server WHERE tag = server_tag;
|
SELECT id INTO srv_id FROM dhcp4_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (NOW(), srv_id, audit_log_message);
|
VALUES (audit_ts, srv_id, audit_log_message);
|
||||||
SET @audit_revision_id = LAST_INSERT_ID();
|
SET @audit_revision_id = LAST_INSERT_ID();
|
||||||
SET @cascade_transaction = cascade_transaction;
|
SET @cascade_transaction = cascade_transaction;
|
||||||
END $$
|
END $$
|
||||||
|
Reference in New Issue
Block a user