From: Marcin Siodelski Date: Tue, 9 Apr 2019 09:17:34 +0000 (+0200) Subject: [#103,!289] MySQL Config Backend tags configuration elements with db ids. X-Git-Tag: Kea-1.6.0-beta~273 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41c4a891d358e2feba547e1464738afb82304670;p=thirdparty%2Fkea.git [#103,!289] MySQL Config Backend tags configuration elements with db ids. --- diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc index 786fe0ebaf..bd3e2c5cb4 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc @@ -1038,6 +1038,7 @@ public: last_network_id = out_bindings[0]->getInteger(); last_network.reset(new SharedNetwork4(out_bindings[1]->getString())); + last_network->setId(last_network_id); // client_class if (!out_bindings[2]->amNull()) { diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc index 8ac602aa8a..7ed30a279c 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc @@ -334,6 +334,9 @@ MySqlConfigBackendImpl::getOptionDefs(const int index, // space last_def->setOptionSpaceName(out_bindings[3]->getStringOrDefault("")); + // id + last_def->setId(last_def_id); + // record_types ElementPtr record_types_element = out_bindings[8]->getJSON(); if (record_types_element) { @@ -628,6 +631,11 @@ MySqlConfigBackendImpl::processOptionRow(const Option::Universe& universe, desc->space_name_ = space; desc->setModificationTime((*(first_binding + 11))->getTimestamp()); + // Set database id for the option. + if (!(*first_binding)->amNull()) { + desc->setId((*first_binding)->getInteger()); + } + return (desc); } diff --git a/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc b/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc index 6036d020b9..ab215a3069 100644 --- a/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc +++ b/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc @@ -1002,6 +1002,8 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getSharedNetwork4) { test_networks_[0]->getName()); ASSERT_TRUE(returned_network); + EXPECT_GT(returned_network->getId(), 0); + // The easiest way to verify whether the returned shared network matches the // inserted shared network is to convert both to text. EXPECT_EQ(shared_network->toElement()->str(), @@ -1267,6 +1269,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getOptionDef4) { test_option_defs_[0]->getCode(), test_option_defs_[0]->getOptionSpaceName()); ASSERT_TRUE(returned_option_def); + EXPECT_GT(returned_option_def->getId(), 0); EXPECT_TRUE(returned_option_def->equals(*option_def)); @@ -1532,6 +1535,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getAllOptions4) { auto option0 = index.find(test_options_[0]->option_->getType()); ASSERT_FALSE(option0 == index.end()); testOptionsEquivalent(*test_options_[0], *option0); + EXPECT_GT(option0->getId(), 0); } { @@ -1539,6 +1543,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getAllOptions4) { auto option1 = index.find(test_options_[1]->option_->getType()); ASSERT_FALSE(option1 == index.end()); testOptionsEquivalent(*test_options_[1], *option1); + EXPECT_GT(option1->getId(), 0); } { @@ -1546,6 +1551,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getAllOptions4) { auto option5 = index.find(test_options_[5]->option_->getType()); ASSERT_FALSE(option5 == index.end()); testOptionsEquivalent(*test_options_[5], *option5); + EXPECT_GT(option5->getId(), 0); } } @@ -1623,6 +1629,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, createUpdateDeleteSubnetOption4) { { SCOPED_TRACE("verify returned option"); testOptionsEquivalent(*opt_boot_file_name, returned_opt_boot_file_name); + EXPECT_GT(returned_opt_boot_file_name.getId(), 0); } { @@ -1725,6 +1732,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, createUpdateDeletePoolOption4) { { SCOPED_TRACE("verify returned pool option"); testOptionsEquivalent(*opt_boot_file_name, returned_opt_boot_file_name); + EXPECT_GT(returned_opt_boot_file_name.getId(), 0); } { @@ -1842,6 +1850,7 @@ TEST_F(MySqlConfigBackendDHCPv4Test, createUpdateDeleteSharedNetworkOption4) { { SCOPED_TRACE("verify returned option"); testOptionsEquivalent(*opt_boot_file_name, returned_opt_boot_file_name); + EXPECT_GT(returned_opt_boot_file_name.getId(), 0); } {