+ sql "ALTER TABLE nets ADD UNIQUE INDEX type_vlan (type, vlan);"
+ sql "DELETE FROM schema_version WHERE version_int = '18';"
+}
+
+function upgrade_to_19(){
+ echo " Add 'keyfile' to 'hosts'"
+ sql "ALTER TABLE hosts ADD COLUMN keyfile VARCHAR(255) NULL DEFAULT NULL AFTER password;"
+ sql "INSERT INTO schema_version (version_int, version, openvim_ver, comments, date) "\
+ "VALUES (19, '0.19', '0.5.15', 'Add keyfile to hosts', '2017-05-23');"
+}
+
+function downgrade_from_19(){
+ echo " Delete 'keyfile' from 'hosts'"
+ sql "ALTER TABLE hosts DROP COLUMN keyfile;"
+ sql "DELETE FROM schema_version WHERE version_int = '19';"
+}
+
+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';"
+}
+
+function upgrade_to_23(){
+ echo " Add 'hypervisor' and 'os_type' column to 'instances' table"
+ sql "ALTER TABLE instances ADD COLUMN hypervisor enum('kvm','xen-unik','xenhvm') NOT NULL DEFAULT 'kvm' AFTER flavor_id;"
+ sql "ALTER TABLE instances ADD COLUMN os_image_type VARCHAR(24) NOT NULL DEFAULT 'other' AFTER hypervisor;"
+ echo " Add 'hypervisors' column to 'hosts' table"
+ sql "ALTER TABLE hosts ADD COLUMN hypervisors VARCHAR(255) NOT NULL DEFAULT 'kvm' AFTER features;"
+ sql "INSERT INTO schema_version (version_int, version, openvim_ver, comments, date) "\
+ "VALUES (23, '0.23', '0.5.24', 'Add hypervisor, os_type to instances and add hypervisors to hosts', '2018-03-20');"
+}
+
+function downgrade_from_23(){
+ echo " Remove 'hypervisor' and 'os_type' column from 'instances' table"
+ sql "ALTER TABLE instances DROP COLUMN hypervisor;"
+ sql "ALTER TABLE instances DROP COLUMN os_image_type;"
+ echo " Remove 'hypervisors' column from 'hosts' table"
+ sql "ALTER TABLE hosts DROP COLUMN hypervisors;"
+ sql "DELETE FROM schema_version WHERE version_int = '23';"