]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3663] Add ddns ttl columns to pgsql schema
authorThomas Markwalder <tmark@isc.org>
Tue, 10 Dec 2024 13:41:48 +0000 (08:41 -0500)
committerThomas Markwalder <tmark@isc.org>
Mon, 16 Dec 2024 15:31:44 +0000 (10:31 -0500)
    src/share/database/scripts/pgsql/upgrade_027_to_028.sh.in
        new file - adds ddns-ttl* columns to network and subnet tables

    src/bin/admin/tests/pgsql_tests.sh.in
        pgsql_upgrade_27_to_28_test() - new test

    src/lib/pgsql/pgsql_connection.h
       schema version bump

    configure.ac
    src/share/database/scripts/pgsql/.gitignore
    src/share/database/scripts/pgsql/Makefile.am
        added new upgrade file

    src/share/database/scripts/pgsql/dhcpdb_create.pgsql
        Add ddns-ttl* columns to network and subnet tables

configure.ac
src/bin/admin/tests/pgsql_tests.sh.in
src/lib/pgsql/pgsql_connection.h
src/share/database/scripts/pgsql/.gitignore
src/share/database/scripts/pgsql/Makefile.am
src/share/database/scripts/pgsql/dhcpdb_create.pgsql
src/share/database/scripts/pgsql/upgrade_027_to_028.sh.in [new file with mode: 0644]

index 8b19d20ac6cf9f7da1dc4822d485c2b95f5c057e..8f6760e25ced3d29672c0a3c4db15d430a902a15 100644 (file)
@@ -1895,6 +1895,8 @@ AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_025_to_026.sh],
                 [chmod +x src/share/database/scripts/pgsql/upgrade_025_to_026.sh])
 AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_026_to_027.sh],
                 [chmod +x src/share/database/scripts/pgsql/upgrade_026_to_027.sh])
+AC_CONFIG_FILES([src/share/database/scripts/pgsql/upgrade_027_to_028.sh],
+                [chmod +x src/share/database/scripts/pgsql/upgrade_027_to_028.sh])
 AC_CONFIG_FILES([src/share/database/scripts/pgsql/wipe_data.sh],
                 [chmod +x src/share/database/scripts/pgsql/wipe_data.sh])
 AC_CONFIG_FILES([src/share/yang/Makefile])
index d9620c8d2fb0faef5706c138f6ad14bba6daee54..55acd51fffa86abb6d4272cd25dd1c062d299aa1 100644 (file)
@@ -155,7 +155,7 @@ pgsql_db_version_test() {
     run_command \
         "${kea_admin}" db-version pgsql -u "${db_user}" -p "${db_password}" -n "${db_name}"
     version="${OUTPUT}"
-    assert_str_eq "27.0" "${version}" "Expected kea-admin to return %s, returned value was %s"
+    assert_str_eq "28.0" "${version}" "Expected kea-admin to return %s, returned value was %s"
 
     # Let's wipe the whole database
     pgsql_wipe
@@ -1083,6 +1083,33 @@ pgsql_upgrade_26_to_27_test() {
     check_table_column client_classes dhcp6_pd_pool
 }
 
+pgsql_upgrade_27_to_28_test() {
+
+    # check ddns ttl fields were added to dhcp4_shared_network
+    check_table_column ddns_ttl_percent dhcp4_shared_network
+    check_table_column ddns_ttl dhcp4_shared_network
+    check_table_column ddns_ttl_min dhcp4_shared_network
+    check_table_column ddns_ttl_max dhcp4_shared_network
+
+    # check ddns ttl fields were added to dhcp4_subnet
+    check_table_column ddns_ttl_percent dhcp4_subnet
+    check_table_column ddns_ttl dhcp4_subnet
+    check_table_column ddns_ttl_min dhcp4_subnet
+    check_table_column ddns_ttl_max dhcp4_subnet
+
+    # check ddns ttl fields were added to dhcp6_shared_network
+    check_table_column ddns_ttl_percent dhcp6_shared_network
+    check_table_column ddns_ttl dhcp6_shared_network
+    check_table_column ddns_ttl_min dhcp6_shared_network
+    check_table_column ddns_ttl_max dhcp6_shared_network
+
+    # check ddns ttl fields were added to dhcp6_subnet
+    check_table_column ddns_ttl_percent dhcp6_subnet
+    check_table_column ddns_ttl dhcp6_subnet
+    check_table_column ddns_ttl_min dhcp6_subnet
+   check_table_column ddns_ttl_max dhcp6_subnet
+}
+
 pgsql_upgrade_test() {
     test_start "pgsql.upgrade"
 
@@ -1101,7 +1128,7 @@ pgsql_upgrade_test() {
 
     # Verify upgraded schema reports the latest version.
     version=$("${kea_admin}" db-version pgsql -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}")
-    assert_str_eq "27.0" "${version}" 'Expected kea-admin to return %s, returned value was %s'
+    assert_str_eq "28.0" "${version}" 'Expected kea-admin to return %s, returned value was %s'
 
     # Check 1.0 to 2.0 upgrade
     pgsql_upgrade_1_0_to_2_0_test
@@ -1175,6 +1202,9 @@ pgsql_upgrade_test() {
     # Check 26 to 27 upgrade
     pgsql_upgrade_26_to_27_test
 
+    # Check 27 to 28 upgrade
+    pgsql_upgrade_27_to_28_test
+
     # Let's wipe the whole database
     pgsql_wipe
 
index 73cad7142663e1306afc6527b4a2abf0afb33e26..aeae99f503618f669809489cbbfdf5cf1753e061 100644 (file)
@@ -18,7 +18,7 @@ namespace isc {
 namespace db {
 
 /// @brief Define the PostgreSQL backend version.
-const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 27;
+const uint32_t PGSQL_SCHEMA_VERSION_MAJOR = 28;
 const uint32_t PGSQL_SCHEMA_VERSION_MINOR = 0;
 
 // Maximum number of parameters that can be used a statement
index f77ce459a05ccb6dda9afe5149a936f1ec9a47e5..50299b57e0661b21669d74ec35018516cba7581e 100644 (file)
@@ -30,4 +30,5 @@
 /upgrade_024_to_025.sh
 /upgrade_025_to_026.sh
 /upgrade_026_to_027.sh
+/upgrade_027_to_028.sh
 /wipe_data.sh
index 25614f3b3acab8fca281d3b1b750eea068f4e686..c0b6f9504d0fff09983ff26c55b198c11a62d2ab 100644 (file)
@@ -41,6 +41,7 @@ pgsql_SCRIPTS += upgrade_023_to_024.sh
 pgsql_SCRIPTS += upgrade_024_to_025.sh
 pgsql_SCRIPTS += upgrade_025_to_026.sh
 pgsql_SCRIPTS += upgrade_026_to_027.sh
+pgsql_SCRIPTS += upgrade_027_to_028.sh
 pgsql_SCRIPTS += wipe_data.sh
 
 DISTCLEANFILES = ${pgsql_SCRIPTS}
index 0350ce87bc6fbc61cbed26babdfe0a969945b5a7..83ec6969daf7daaaeee6c77d26ec2b6cc2583533 100644 (file)
@@ -6588,6 +6588,40 @@ SELECT set_config('kea.disable_audit', 'false', false);
 UPDATE schema_version
     SET version = '27', minor = '0';
 
+-- This line concludes the schema upgrade to version 27.0.
+
+-- This line starts the schema upgrade to version 28.0.
+
+ALTER TABLE dhcp4_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+-- Update the schema version number.
+UPDATE schema_version
+    SET version = '28', minor = '0';
+
+-- This line concludes the schema upgrade to version 28.0.
+
 -- Commit the script transaction.
 COMMIT;
 
diff --git a/src/share/database/scripts/pgsql/upgrade_027_to_028.sh.in b/src/share/database/scripts/pgsql/upgrade_027_to_028.sh.in
new file mode 100644 (file)
index 0000000..f7ce305
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# Copyright (C) 2024 Internet Systems Consortium, Inc. ("ISC")
+#
+# 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
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Exit with error if commands exit with non-zero and if undefined variables are
+# used.
+set -eu
+
+# shellcheck disable=SC2034
+# SC2034: ... appears unused. Verify use (or export if used externally).
+prefix="@prefix@"
+
+# Include utilities based on location of this script. Check for sources first,
+# so that the unexpected situations with weird paths fall on the default
+# case of installed.
+script_path=$(cd "$(dirname "${0}")" && pwd)
+if test "${script_path}" = "@abs_top_builddir@/src/share/database/scripts/pgsql"; then
+    # shellcheck source=./src/bin/admin/admin-utils.sh.in
+    . "@abs_top_builddir@/src/bin/admin/admin-utils.sh"
+else
+    # shellcheck source=./src/bin/admin/admin-utils.sh.in
+    . "@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"
+fi
+
+VERSION=$(pgsql_version "$@")
+
+if [ "$VERSION" != "27.0" ]; then
+    printf 'This script upgrades 27.0 to 28.0. '
+    printf 'Reported version is %s. Skipping upgrade.\n' "${VERSION}"
+    exit 0
+fi
+
+psql "$@" >/dev/null <<EOF
+START TRANSACTION;
+
+-- This line starts the schema upgrade to version 28.0.
+
+ALTER TABLE dhcp4_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     BIGINT DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     BIGINT DEFAULT NULL;
+
+-- Update the schema version number.
+UPDATE schema_version
+    SET version = '28', minor = '0';
+
+-- This line concludes the schema upgrade to version 28.0.
+
+-- Commit the script transaction.
+COMMIT;
+
+EOF