]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[897-add-infinite-valid-lifetime] Checkpoint: todo MySQL CB hook
authorFrancis Dupont <fdupont@isc.org>
Wed, 11 Sep 2019 13:36:32 +0000 (15:36 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 11 Sep 2019 13:36:32 +0000 (15:36 +0200)
configure.ac
src/bin/admin/tests/mysql_tests.sh.in
src/lib/mysql/mysql_constants.h
src/share/database/scripts/mysql/Makefile.am
src/share/database/scripts/mysql/dhcpdb_create.mysql
src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh.in [new file with mode: 0644]

index 8f78ac2426f1eb399679efde676ffd1759b5b1fd..beb3c4cc45aab6a9235742d0e588c4a7f61d4c17 100755 (executable)
@@ -1812,6 +1812,7 @@ AC_CONFIG_FILES([Makefile
                  src/share/database/scripts/mysql/upgrade_7.0_to_8.0.sh
                  src/share/database/scripts/mysql/upgrade_8.0_to_8.1.sh
                  src/share/database/scripts/mysql/upgrade_8.1_to_8.2.sh
+                 src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh
                  src/share/database/scripts/mysql/wipe_data.sh
                  src/share/database/scripts/pgsql/Makefile
                  src/share/database/scripts/pgsql/upgrade_1.0_to_2.0.sh
index 0823b754c41d0fa147f95e5b963ca73d4ab2e819..4ce12ca718552f7367108f8551e36fc5ba88de43 100644 (file)
@@ -258,7 +258,7 @@ mysql_upgrade_test() {
 
     assert_str_eq "1.0" ${version} "Expected kea-admin to return %s, returned value was %s"
 
-    # Ok, we have a 1.0 database. Let's upgrade it to 8.2
+    # Ok, we have a 1.0 database. Let's upgrade it to 9.0
     ${keaadmin} db-upgrade mysql -u $db_user -p $db_password -n $db_name -d $db_scripts_dir
     ERRCODE=$?
 
@@ -721,10 +721,6 @@ EOF
     qry="select client_class, require_client_classes, user_context from dhcp6_pool"
     run_statement "dhcp6_pool" "$qry"
 
-    # Verify upgraded schema reports version 8.2
-    version=$(${keaadmin} db-version mysql -u $db_user -p $db_password -n $db_name -d $db_scripts_dir)
-    assert_str_eq "8.2" ${version} "Expected kea-admin to return %s, returned value was %s"
-
     # Verify that dhcp4_option_def column name is is_array
     qry="select is_array from dhcp4_option_def"
     run_statement "dhcp4_option_def verify is_array column" "$qry"
@@ -733,6 +729,28 @@ EOF
     qry="select is_array from dhcp6_option_def"
     run_statement "dhcp6_option_def verify is_array column" "$qry"
 
+    # Verify upgraded schema reports version 9.0
+    version=$(${keaadmin} db-version mysql -u $db_user -p $db_password -n $db_name -d $db_scripts_dir)
+    assert_str_eq "9.0" ${version} "Expected kea-admin to return %s, returned value was %s"
+
+    # New allow_static_leases columns
+
+    # table dhcp4_shared_network
+    qry="select allow_static_leases from dhcp4_shared_network"
+    run_statement "dhcp4_shared_network" "$qry"
+
+    # table: dhcp4_subnet
+    qry="select allow_static_leases from dhcp4_subnet"
+    run_statement "dhcp4_subnet" "$qry"
+
+    # table dhcp6_shared_network
+    qry="select allow_static_leases from dhcp6_shared_network"
+    run_statement "dhcp6_shared_network" "$qry"
+
+    # table: dhcp6_subnet
+    qry="select allow_static_leases from dhcp6_subnet"
+    run_statement "dhcp6_subnet" "$qry"
+
     # Let's wipe the whole database
     mysql_wipe
 
index d83a8116c9ee0eab63dc3a48fde4f9031e43456e..f7ddbba6b45e213371a00c2fa654e0f3a830d3ae 100644 (file)
@@ -51,8 +51,8 @@ const int MLM_MYSQL_FETCH_FAILURE = 0;
 
 /// @name Current database schema version values.
 //@{
-const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 8;
-const uint32_t MYSQL_SCHEMA_VERSION_MINOR = 2;
+const uint32_t MYSQL_SCHEMA_VERSION_MAJOR = 9;
+const uint32_t MYSQL_SCHEMA_VERSION_MINOR = 0;
 
 //@}
 
index 6370f95af90a50540be134368fc002b4880c2a11..786552afafd9f53cb10d927b92b21d1e2358add1 100644 (file)
@@ -15,6 +15,7 @@ sqlscripts_DATA += upgrade_6.0_to_7.0.sh
 sqlscripts_DATA += upgrade_7.0_to_8.0.sh
 sqlscripts_DATA += upgrade_8.0_to_8.1.sh
 sqlscripts_DATA += upgrade_8.1_to_8.2.sh
+sqlscripts_DATA += upgrade_8.2_to_9.0.sh
 sqlscripts_DATA += wipe_data.sh
 
 DISTCLEANFILES = upgrade_1.0_to_2.0.sh
@@ -28,6 +29,7 @@ DISTCLEANFILES += upgrade_5.2_to_6.0.sh
 DISTCLEANFILES += upgrade_6.0_to_7.0.sh
 DISTCLEANFILES += upgrade_7.0_to_8.0.sh
 DISTCLEANFILES += upgrade_8.1_to_8.2.sh
+DISTCLEANFILES += upgrade_8.2_to_9.0.sh
 DISTCLEANFILES += wipe_data.sh
 
 EXTRA_DIST = ${sqlscripts_DATA}
index 2acfafa601f2eec9ea58673a18656aa543def4ae..2edfb43abdf5108868b6521aa9ed777dca5c9e10 100644 (file)
@@ -2782,6 +2782,24 @@ SET version = '8', minor = '2';
 
 # This line concludes database upgrade to version 8.2.
 
+# Add allow_static_leases columns
+ALTER TABLE dhcp4_shared_network
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+# Update the schema version number
+UPDATE schema_version
+SET version = '9', minor = '0';
+
+# This line concludes database upgrade to version 9.0.
 
 # Notes:
 #
diff --git a/src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh.in b/src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh.in
new file mode 100644 (file)
index 0000000..91dbf9b
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+prefix=@prefix@
+# Include utilities. Use installed version if available and
+# use build version if it isn't.
+if [ -e @datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh ]; then
+    . @datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh
+else
+    . @abs_top_builddir@/src/bin/admin/admin-utils.sh
+fi
+
+VERSION=`mysql_version "$@"`
+
+if [ "$VERSION" != "8.2" ]; then
+    printf "This script upgrades 8.2 to 9.0. Reported version is $VERSION. Skipping upgrade.\n"
+    exit 0
+fi
+
+mysql "$@" <<EOF
+
+# Add allow_static_leases columns
+ALTER TABLE dhcp4_shared_network
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp4_subnet
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp6_shared_network
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+ALTER TABLE dhcp6_subnet
+    ADD COLUMN allow_static_leases TINYINT(1) DEFAULT NULL;
+
+# Update the schema version number
+UPDATE schema_version
+SET version = '9', minor = '0';
+
+# This line concludes database upgrade to version 9.0.
+
+EOF
+
+RESULT=$?
+
+exit $?