From: Francis Dupont Date: Wed, 11 Sep 2019 13:36:32 +0000 (+0200) Subject: [897-add-infinite-valid-lifetime] Checkpoint: todo MySQL CB hook X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b56cc224a32918957634e533dfe9bea8c0a5b5b;p=thirdparty%2Fkea.git [897-add-infinite-valid-lifetime] Checkpoint: todo MySQL CB hook --- diff --git a/configure.ac b/configure.ac index 8f78ac2426..beb3c4cc45 100755 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/src/bin/admin/tests/mysql_tests.sh.in b/src/bin/admin/tests/mysql_tests.sh.in index 0823b754c4..4ce12ca718 100644 --- a/src/bin/admin/tests/mysql_tests.sh.in +++ b/src/bin/admin/tests/mysql_tests.sh.in @@ -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 diff --git a/src/lib/mysql/mysql_constants.h b/src/lib/mysql/mysql_constants.h index d83a8116c9..f7ddbba6b4 100644 --- a/src/lib/mysql/mysql_constants.h +++ b/src/lib/mysql/mysql_constants.h @@ -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; //@} diff --git a/src/share/database/scripts/mysql/Makefile.am b/src/share/database/scripts/mysql/Makefile.am index 6370f95af9..786552afaf 100644 --- a/src/share/database/scripts/mysql/Makefile.am +++ b/src/share/database/scripts/mysql/Makefile.am @@ -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} diff --git a/src/share/database/scripts/mysql/dhcpdb_create.mysql b/src/share/database/scripts/mysql/dhcpdb_create.mysql index 2acfafa601..2edfb43abd 100644 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@ -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 index 0000000000..91dbf9bbef --- /dev/null +++ b/src/share/database/scripts/mysql/upgrade_8.2_to_9.0.sh.in @@ -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 "$@" <