]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3663] Add ddns ttl columns to mysql schema
authorThomas Markwalder <tmark@isc.org>
Mon, 9 Dec 2024 19:54:43 +0000 (14:54 -0500)
committerThomas Markwalder <tmark@isc.org>
Mon, 16 Dec 2024 15:29:10 +0000 (10:29 -0500)
src/share/database/scripts/mysql/upgrade_027_to_028.sh.in
    new file

src/bin/admin/tests/mysql_tests.sh.in
    mysql_upgrade_27_to_28_test() - new test

src/lib/mysql/mysql_constants.h
   schema version bump

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

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

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

index 5c7542b8ac5d630291bd1eba09a320d260d6fcfd..8b19d20ac6cf9f7da1dc4822d485c2b95f5c057e 100644 (file)
@@ -1826,6 +1826,8 @@ AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_025_to_026.sh],
                 [chmod +x src/share/database/scripts/mysql/upgrade_025_to_026.sh])
 AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_026_to_027.sh],
                 [chmod +x src/share/database/scripts/mysql/upgrade_026_to_027.sh])
+AC_CONFIG_FILES([src/share/database/scripts/mysql/upgrade_027_to_028.sh],
+                [chmod +x src/share/database/scripts/mysql/upgrade_027_to_028.sh])
 AC_CONFIG_FILES([src/share/database/scripts/mysql/wipe_data.sh],
                 [chmod +x src/share/database/scripts/mysql/wipe_data.sh])
 AC_CONFIG_FILES([src/share/database/scripts/pgsql/Makefile])
index 386f94b5307e920868e9c519bb8a6afbc12c92aa..1768ba085ac7a0c3dde90c2d881f59077628d51c 100644 (file)
@@ -992,6 +992,33 @@ mysql_upgrade_26_to_27_test() {
     check_table_column client_classes dhcp6_pd_pool
 }
 
+mysql_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
+}
+
 mysql_upgrade_test() {
 
     test_start "mysql.upgrade"
@@ -1013,7 +1040,7 @@ mysql_upgrade_test() {
 
     # Verify that the upgraded schema reports the latest version.
     version=$("${kea_admin}" db-version mysql -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"
 
     # Let's check that the new tables are indeed there.
 
@@ -1691,6 +1718,9 @@ SET @disable_audit = 0"
     # Check upgrade from 26.0 to 27.0.
     mysql_upgrade_26_to_27_test
 
+    # Check upgrade from 27.0 to 28.0.
+    mysql_upgrade_27_to_28_test
+
     # Let's wipe the whole database
     mysql_wipe
 
index 7d2d640730c92fb161c9325f311fafe59b9ca4b4..a5e2787499be501e99bb68be5db07f6d60a8c6ab 100644 (file)
@@ -52,7 +52,7 @@ const int MLM_MYSQL_FETCH_FAILURE = 0;
 
 /// @name Current database schema version values.
 //@{
-const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 27;
+const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 28;
 const uint32_t MYSQL_SCHEMA_VERSION_MINOR = 0;
 
 //@}
index e67addfeb89b035501fa90fd5b4600cc110e2c45..892cfe31907209b8439d9bab5c1db717924f81fb 100644 (file)
@@ -35,4 +35,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 bedb59088b73960ed42117f9a83108a1e53125a7..ff312fb6d48004e4fe0c7393bbc48b9cb71b22fc 100644 (file)
@@ -46,6 +46,7 @@ mysql_SCRIPTS += upgrade_023_to_024.sh
 mysql_SCRIPTS += upgrade_024_to_025.sh
 mysql_SCRIPTS += upgrade_025_to_026.sh
 mysql_SCRIPTS += upgrade_026_to_027.sh
+mysql_SCRIPTS += upgrade_027_to_028.sh
 mysql_SCRIPTS += wipe_data.sh
 
 DISTCLEANFILES = ${mysql_SCRIPTS}
index c363b52a8413f9e9a7a0e052321e9bbe96f228e0..87f1d2da386d9f9dd1d5a272dd65ee50ae3e276c 100644 (file)
@@ -6131,6 +6131,38 @@ UPDATE schema_version
 
 -- 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         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) 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.
+
 # Notes:
 #
 # Indexes
diff --git a/src/share/database/scripts/mysql/upgrade_027_to_028.sh.in b/src/share/database/scripts/mysql/upgrade_027_to_028.sh.in
new file mode 100644 (file)
index 0000000..afa9f2e
--- /dev/null
@@ -0,0 +1,89 @@
+#!/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/mysql"; 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
+
+# Check version.
+version=$(mysql_version "${@}")
+if test "${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
+
+# Get the schema name from database argument. We need this to
+# query information_schema for the right database.
+for arg in "${@}"
+do
+    if ! printf '%s' "${arg}" | grep -Eq -- '^--'
+    then
+        schema="$arg"
+        break
+    fi
+done
+
+# Make sure we have the schema.
+if [ -z "$schema" ]
+then
+    printf "Could not find database schema name in cmd line args: %s\n" "${*}"
+    exit 255
+fi
+
+mysql "$@" <<EOF
+
+-- 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         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN ddns_ttl_percent FLOAT DEFAULT NULL,
+    ADD COLUMN ddns_ttl         INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_min     INT(10) DEFAULT NULL,
+    ADD COLUMN ddns_ttl_max     INT(10) 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.
+
+EOF