+function upgrade_to_20(){
+ echo " Add 'image_size' to 'instance_devices'"
+ sql "ALTER TABLE instance_devices ADD COLUMN image_size INT NULL DEFAULT NULL AFTER dev;"
+ sql "INSERT INTO schema_version (version_int, version, openvim_ver, comments, date) "\
+ "VALUES (20, '0.20', '0.5.17', 'Add image_size to instance_devices', '2017-06-01');"
+}
+
+function downgrade_from_20(){
+ echo " Delete 'image_size' from 'instance_devices'"
+ sql "ALTER TABLE instance_devices DROP COLUMN image_size;"
+ sql "DELETE FROM schema_version WHERE version_int = '20';"
+}
+
+function upgrade_to_21(){
+ echo " Add 'routes', 'links' and 'dns' to 'nets'"
+ sql "ALTER TABLE nets ADD COLUMN dns VARCHAR(255) NULL AFTER gateway_ip, "\
+ "ADD COLUMN links TEXT(2000) NULL AFTER dns, "\
+ "ADD COLUMN routes TEXT(2000) NULL AFTER links;"
+ sql "INSERT INTO schema_version (version_int, version, openvim_ver, comments, date) "\
+ "VALUES (21, '0.21', '0.5.18', 'Add routes, links and dns to inets', '2017-06-21');"
+}
+
+function downgrade_from_21(){
+ echo " Delete 'routes', 'links' and 'dns' to 'nets'"
+ sql "ALTER TABLE nets DROP COLUMN dns, DROP COLUMN links, DROP COLUMN routes;"
+ sql "DELETE FROM schema_version WHERE version_int = '21';"
+}
+
+function upgrade_to_22(){
+ echo " Changed type of ram in 'flavors' from SMALLINT to MEDIUMINT"
+ sql "ALTER TABLE flavors CHANGE COLUMN ram ram MEDIUMINT(7) UNSIGNED NULL DEFAULT NULL AFTER disk;"
+ sql "INSERT INTO schema_version (version_int, version, openvim_ver, comments, date) "\
+ "VALUES (22, '0.22', '0.5.21', 'Changed type of ram in flavors from SMALLINT to MEDIUMINT', '2017-11-14');"
+}
+
+function downgrade_from_22(){
+ echo " Changed type of ram in 'flavors' from MEDIUMINT to SMALLINT"
+ sql "ALTER TABLE flavors CHANGE COLUMN ram ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL AFTER disk;"
+ sql "DELETE FROM schema_version WHERE version_int = '22';"
+}
+
+# TODO ... put functions here
+
+# echo "db version = "${DATABASE_VER_NUM}
+[ $DB_VERSION -eq $DATABASE_VER_NUM ] && echo " current database version '$DATABASE_VER_NUM' is ok" && exit 0
+
+# Create a backup database content
+TEMPFILE2="$(mktemp -q --tmpdir "backupdb.XXXXXX.sql")"
+trap 'rm -f "$TEMPFILE2"' EXIT
+mysqldump $DEF_EXTRA_FILE_PARAM --add-drop-table --add-drop-database --routines --databases $DBNAME > $TEMPFILE2
+
+function rollback_db()
+{
+ cat $TEMPFILE2 | mysql $DEF_EXTRA_FILE_PARAM && echo " Aborted! Rollback database OK" ||
+ echo " Aborted! Rollback database FAIL"
+ exit 1
+}
+
+function sql() # send a sql command
+{
+ echo "$*" | $DBCMD || ! echo " ERROR with command '$*'" || rollback_db
+ return 0
+}