blob: 557f597862b36666cd8080d4a5f92ba3520ac7e7 [file] [log] [blame]
tierno7edb6752016-03-21 17:37:52 +01001#!/bin/bash
2
3##
4# Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
5# This file is part of openmano
6# All Rights Reserved.
7#
8# Licensed under the Apache License, Version 2.0 (the "License"); you may
9# not use this file except in compliance with the License. You may obtain
10# a copy of the License at
11#
12# http://www.apache.org/licenses/LICENSE-2.0
13#
14# Unless required by applicable law or agreed to in writing, software
15# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17# License for the specific language governing permissions and limitations
18# under the License.
19#
20# For those usages not covered by the Apache License, Version 2.0 please
21# contact with: nfvlabs@tid.es
22##
23
24#
25#Upgrade/Downgrade openmano database preserving the content
26#
27
28DBUSER="mano"
29DBPASS=""
tierno993781b2017-07-10 09:46:36 +020030DEFAULT_DBPASS="manopw"
tierno11f81f62017-04-27 17:22:14 +020031DBHOST=""
tierno7edb6752016-03-21 17:37:52 +010032DBPORT="3306"
33DBNAME="mano_db"
tierno11f81f62017-04-27 17:22:14 +020034QUIET_MODE=""
35#TODO update it with the last database version
tiernof1ba57e2017-09-07 12:23:19 +020036LAST_DB_VERSION=25
tierno7edb6752016-03-21 17:37:52 +010037
38# Detect paths
39MYSQL=$(which mysql)
40AWK=$(which awk)
41GREP=$(which grep)
tierno7edb6752016-03-21 17:37:52 +010042
43function usage(){
tierno11f81f62017-04-27 17:22:14 +020044 echo -e "Usage: $0 OPTIONS [version]"
45 echo -e " Upgrades/Downgrades openmano database preserving the content."\
46 "If [version] is not provided, it is upgraded to the last version"
tierno7edb6752016-03-21 17:37:52 +010047 echo -e " OPTIONS"
48 echo -e " -u USER database user. '$DBUSER' by default. Prompts if DB access fails"
tierno11f81f62017-04-27 17:22:14 +020049 echo -e " -p PASS database password. If missing it tries without and '$DEFAULT_DBPASS' password before prompting"
tierno7edb6752016-03-21 17:37:52 +010050 echo -e " -P PORT database port. '$DBPORT' by default"
tierno11f81f62017-04-27 17:22:14 +020051 echo -e " -h HOST database host. 'localhost' by default"
tierno7edb6752016-03-21 17:37:52 +010052 echo -e " -d NAME database name. '$DBNAME' by default. Prompts if DB access fails"
tierno11f81f62017-04-27 17:22:14 +020053 echo -e " -q --quiet: Do not prompt for credentials and exit if cannot access to database"
tierno7edb6752016-03-21 17:37:52 +010054 echo -e " --help shows this help"
55}
56
tierno11f81f62017-04-27 17:22:14 +020057while getopts ":u:p:P:h:d:q-:" o; do
tierno7edb6752016-03-21 17:37:52 +010058 case "${o}" in
59 u)
60 DBUSER="$OPTARG"
61 ;;
62 p)
63 DBPASS="$OPTARG"
64 ;;
65 P)
66 DBPORT="$OPTARG"
67 ;;
68 d)
69 DBNAME="$OPTARG"
70 ;;
71 h)
72 DBHOST="$OPTARG"
73 ;;
tierno11f81f62017-04-27 17:22:14 +020074 q)
75 export QUIET_MODE=yes
76 ;;
tierno7edb6752016-03-21 17:37:52 +010077 -)
78 [ "${OPTARG}" == "help" ] && usage && exit 0
tierno11f81f62017-04-27 17:22:14 +020079 [ "${OPTARG}" == "quiet" ] && export QUIET_MODE=yes && continue
80 echo "Invalid option: '--$OPTARG'. Type --help for more information" >&2
tierno7edb6752016-03-21 17:37:52 +010081 exit 1
tierno11f81f62017-04-27 17:22:14 +020082 ;;
tierno7edb6752016-03-21 17:37:52 +010083 \?)
tierno11f81f62017-04-27 17:22:14 +020084 echo "Invalid option: '-$OPTARG'. Type --help for more information" >&2
tierno7edb6752016-03-21 17:37:52 +010085 exit 1
86 ;;
87 :)
tierno11f81f62017-04-27 17:22:14 +020088 echo "Option '-$OPTARG' requires an argument. Type --help for more information" >&2
tierno7edb6752016-03-21 17:37:52 +010089 exit 1
90 ;;
91 *)
92 usage >&2
tierno11f81f62017-04-27 17:22:14 +020093 exit 1
tierno7edb6752016-03-21 17:37:52 +010094 ;;
95 esac
96done
97shift $((OPTIND-1))
98
tierno11f81f62017-04-27 17:22:14 +020099DB_VERSION=$1
tierno7edb6752016-03-21 17:37:52 +0100100
tierno11f81f62017-04-27 17:22:14 +0200101if [ -n "$DB_VERSION" ] ; then
102 # check it is a number and an allowed one
103 [ "$DB_VERSION" -eq "$DB_VERSION" ] 2>/dev/null ||
104 ! echo "parameter 'version' requires a integer value" >&2 || exit 1
105 if [ "$DB_VERSION" -lt 0 ] || [ "$DB_VERSION" -gt "$LAST_DB_VERSION" ] ; then
106 echo "parameter 'version' requires a valid database version between '0' and '$LAST_DB_VERSION'"\
107 "If you need an upper version, get a newer version of this script '$0'" >&2
108 exit 1
109 fi
110else
111 DB_VERSION="$LAST_DB_VERSION"
tierno7edb6752016-03-21 17:37:52 +0100112fi
tierno7edb6752016-03-21 17:37:52 +0100113
tierno11f81f62017-04-27 17:22:14 +0200114# Creating temporary file
garciadeblas89b3d842016-09-19 15:18:33 +0200115TEMPFILE="$(mktemp -q --tmpdir "migratemanodb.XXXXXX")"
garciadeblas4b3b4462016-09-27 11:16:14 +0200116trap 'rm -f "$TEMPFILE"' EXIT
garciadeblas89b3d842016-09-19 15:18:33 +0200117chmod 0600 "$TEMPFILE"
tiernoa4d321c2016-10-24 08:47:46 +0000118DEF_EXTRA_FILE_PARAM="--defaults-extra-file=$TEMPFILE"
tierno11f81f62017-04-27 17:22:14 +0200119echo -e "[client]\n user='${DBUSER}'\n password='$DBPASS'\n host='$DBHOST'\n port='$DBPORT'" > "$TEMPFILE"
tiernoa4d321c2016-10-24 08:47:46 +0000120
tierno11f81f62017-04-27 17:22:14 +0200121# Check and ask for database user password
122FIRST_TRY="yes"
123while ! DB_ERROR=`mysql "$DEF_EXTRA_FILE_PARAM" $DBNAME -e "quit" 2>&1 >/dev/null`
tierno7edb6752016-03-21 17:37:52 +0100124do
tierno11f81f62017-04-27 17:22:14 +0200125 # if password is not provided, try silently with $DEFAULT_DBPASS before exit or prompt for credentials
126 [[ -n "$FIRST_TRY" ]] && [[ -z "$DBPASS" ]] && DBPASS="$DEFAULT_DBPASS" &&
127 echo -e "[client]\n user='${DBUSER}'\n password='$DBPASS'\n host='$DBHOST'\n port='$DBPORT'" > "$TEMPFILE" &&
128 continue
129 echo "$DB_ERROR"
130 [[ -n "$QUIET_MODE" ]] && echo -e "Invalid database credentials!!!" >&2 && exit 1
131 echo -e "Provide database name and credentials (Ctrl+c to abort):"
132 read -e -p " mysql database name($DBNAME): " KK
133 [ -n "$KK" ] && DBNAME="$KK"
134 read -e -p " mysql user($DBUSER): " KK
135 [ -n "$KK" ] && DBUSER="$KK"
136 read -e -s -p " mysql password: " DBPASS
137 echo -e "[client]\n user='${DBUSER}'\n password='$DBPASS'\n host='$DBHOST'\n port='$DBPORT'" > "$TEMPFILE"
138 FIRST_TRY=""
139 echo
tierno7edb6752016-03-21 17:37:52 +0100140done
141
tierno11f81f62017-04-27 17:22:14 +0200142DBCMD="mysql $DEF_EXTRA_FILE_PARAM $DBNAME"
tierno7edb6752016-03-21 17:37:52 +0100143#echo DBCMD $DBCMD
144
145#GET DATABASE VERSION
146#check that the database seems a openmano database
147if ! echo -e "show create table vnfs;\nshow create table scenarios" | $DBCMD >/dev/null 2>&1
148then
149 echo " database $DBNAME does not seem to be an openmano database" >&2
tierno952ab002017-09-07 12:58:23 +0200150 exit 1;
tierno7edb6752016-03-21 17:37:52 +0100151fi
152
153if ! echo 'show create table schema_version;' | $DBCMD >/dev/null 2>&1
154then
155 DATABASE_VER="0.0"
156 DATABASE_VER_NUM=0
tierno11f81f62017-04-27 17:22:14 +0200157else
tierno7edb6752016-03-21 17:37:52 +0100158 DATABASE_VER_NUM=`echo "select max(version_int) from schema_version;" | $DBCMD | tail -n+2`
159 DATABASE_VER=`echo "select version from schema_version where version_int='$DATABASE_VER_NUM';" | $DBCMD | tail -n+2`
tierno11f81f62017-04-27 17:22:14 +0200160 [ "$DATABASE_VER_NUM" -lt 0 -o "$DATABASE_VER_NUM" -gt 100 ] &&
tierno952ab002017-09-07 12:58:23 +0200161 echo " Error can not get database version ($DATABASE_VER?)" >&2 && exit 1
tierno7edb6752016-03-21 17:37:52 +0100162 #echo "_${DATABASE_VER_NUM}_${DATABASE_VER}"
163fi
164
tierno11f81f62017-04-27 17:22:14 +0200165[ "$DATABASE_VER_NUM" -gt "$LAST_DB_VERSION" ] &&
166 echo "Database has been upgraded with a newer version of this script. Use this version to downgrade" >&2 &&
167 exit 1
tierno7edb6752016-03-21 17:37:52 +0100168
169#GET DATABASE TARGET VERSION
tierno11f81f62017-04-27 17:22:14 +0200170#DB_VERSION=0
171#[ $OPENMANO_VER_NUM -ge 2002 ] && DB_VERSION=1 #0.2.2 => 1
172#[ $OPENMANO_VER_NUM -ge 2005 ] && DB_VERSION=2 #0.2.5 => 2
173#[ $OPENMANO_VER_NUM -ge 3003 ] && DB_VERSION=3 #0.3.3 => 3
174#[ $OPENMANO_VER_NUM -ge 3005 ] && DB_VERSION=4 #0.3.5 => 4
175#[ $OPENMANO_VER_NUM -ge 4001 ] && DB_VERSION=5 #0.4.1 => 5
176#[ $OPENMANO_VER_NUM -ge 4002 ] && DB_VERSION=6 #0.4.2 => 6
177#[ $OPENMANO_VER_NUM -ge 4003 ] && DB_VERSION=7 #0.4.3 => 7
178#[ $OPENMANO_VER_NUM -ge 4032 ] && DB_VERSION=8 #0.4.32=> 8
179#[ $OPENMANO_VER_NUM -ge 4033 ] && DB_VERSION=9 #0.4.33=> 9
180#[ $OPENMANO_VER_NUM -ge 4036 ] && DB_VERSION=10 #0.4.36=> 10
181#[ $OPENMANO_VER_NUM -ge 4043 ] && DB_VERSION=11 #0.4.43=> 11
182#[ $OPENMANO_VER_NUM -ge 4046 ] && DB_VERSION=12 #0.4.46=> 12
183#[ $OPENMANO_VER_NUM -ge 4047 ] && DB_VERSION=13 #0.4.47=> 13
184#[ $OPENMANO_VER_NUM -ge 4057 ] && DB_VERSION=14 #0.4.57=> 14
185#[ $OPENMANO_VER_NUM -ge 4059 ] && DB_VERSION=15 #0.4.59=> 15
186#[ $OPENMANO_VER_NUM -ge 5002 ] && DB_VERSION=16 #0.5.2 => 16
187#[ $OPENMANO_VER_NUM -ge 5003 ] && DB_VERSION=17 #0.5.3 => 17
188#[ $OPENMANO_VER_NUM -ge 5004 ] && DB_VERSION=18 #0.5.4 => 18
189#[ $OPENMANO_VER_NUM -ge 5005 ] && DB_VERSION=19 #0.5.5 => 19
190#[ $OPENMANO_VER_NUM -ge 5009 ] && DB_VERSION=20 #0.5.9 => 20
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200191#[ $OPENMANO_VER_NUM -ge 5015 ] && DB_VERSION=21 #0.5.15 => 21
garciadeblas97a50f62017-07-05 11:42:44 +0200192#[ $OPENMANO_VER_NUM -ge 5016 ] && DB_VERSION=22 #0.5.16 => 22
tierno5a3273c2017-08-29 11:43:46 +0200193#[ $OPENMANO_VER_NUM -ge 5020 ] && DB_VERSION=23 #0.5.20 => 23
tierno8e690322017-08-10 15:58:50 +0200194#[ $OPENMANO_VER_NUM -ge 5021 ] && DB_VERSION=24 #0.5.21 => 24
tiernof1ba57e2017-09-07 12:23:19 +0200195#[ $OPENMANO_VER_NUM -ge 5022 ] && DB_VERSION=25 #0.5.22 => 25
tierno7edb6752016-03-21 17:37:52 +0100196#TODO ... put next versions here
197
tierno7edb6752016-03-21 17:37:52 +0100198function upgrade_to_1(){
tierno11f81f62017-04-27 17:22:14 +0200199 # echo " upgrade database from version 0.0 to version 0.1"
tierno7edb6752016-03-21 17:37:52 +0100200 echo " CREATE TABLE \`schema_version\`"
tierno952ab002017-09-07 12:58:23 +0200201 sql "CREATE TABLE \`schema_version\` (
tierno7edb6752016-03-21 17:37:52 +0100202 \`version_int\` INT NOT NULL COMMENT 'version as a number. Must not contain gaps',
203 \`version\` VARCHAR(20) NOT NULL COMMENT 'version as a text',
204 \`openmano_ver\` VARCHAR(20) NOT NULL COMMENT 'openmano version',
205 \`comments\` VARCHAR(2000) NULL COMMENT 'changes to database',
206 \`date\` DATE NULL,
207 PRIMARY KEY (\`version_int\`)
208 )
209 COMMENT='database schema control version'
210 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200211 ENGINE=InnoDB;"
212 sql "INSERT INTO \`schema_version\` (\`version_int\`, \`version\`, \`openmano_ver\`, \`comments\`, \`date\`)
213 VALUES (1, '0.1', '0.2.2', 'insert schema_version', '2015-05-08');"
tierno7edb6752016-03-21 17:37:52 +0100214}
215function downgrade_from_1(){
tierno11f81f62017-04-27 17:22:14 +0200216 # echo " downgrade database from version 0.1 to version 0.0"
tierno7edb6752016-03-21 17:37:52 +0100217 echo " DROP TABLE \`schema_version\`"
tierno952ab002017-09-07 12:58:23 +0200218 sql "DROP TABLE \`schema_version\`;"
tierno7edb6752016-03-21 17:37:52 +0100219}
220function upgrade_to_2(){
tierno11f81f62017-04-27 17:22:14 +0200221 # echo " upgrade database from version 0.1 to version 0.2"
tierno7edb6752016-03-21 17:37:52 +0100222 echo " Add columns user/passwd to table 'vim_tenants'"
tierno952ab002017-09-07 12:58:23 +0200223 sql "ALTER TABLE vim_tenants ADD COLUMN user VARCHAR(36) NULL COMMENT 'Credentials for vim' AFTER created,
224 ADD COLUMN passwd VARCHAR(50) NULL COMMENT 'Credentials for vim' AFTER user;"
tierno7edb6752016-03-21 17:37:52 +0100225 echo " Add table 'images' and 'datacenters_images'"
tierno952ab002017-09-07 12:58:23 +0200226 sql "CREATE TABLE images (
tierno7edb6752016-03-21 17:37:52 +0100227 uuid VARCHAR(36) NOT NULL,
228 name VARCHAR(50) NOT NULL,
229 location VARCHAR(200) NOT NULL,
230 description VARCHAR(100) NULL,
231 metadata VARCHAR(400) NULL,
232 PRIMARY KEY (uuid),
233 UNIQUE INDEX location (location) )
234 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200235 ENGINE=InnoDB;"
236 sql "CREATE TABLE datacenters_images (
tierno7edb6752016-03-21 17:37:52 +0100237 id INT NOT NULL AUTO_INCREMENT,
238 image_id VARCHAR(36) NOT NULL,
239 datacenter_id VARCHAR(36) NOT NULL,
240 vim_id VARCHAR(36) NOT NULL,
241 PRIMARY KEY (id),
242 CONSTRAINT FK__images FOREIGN KEY (image_id) REFERENCES images (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
243 CONSTRAINT FK__datacenters_i FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
244 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200245 ENGINE=InnoDB;"
tierno7edb6752016-03-21 17:37:52 +0100246 echo " migrate data from table 'vms' into 'images'"
tierno952ab002017-09-07 12:58:23 +0200247 sql "INSERT INTO images (uuid, name, location) SELECT DISTINCT vim_image_id, vim_image_id, image_path FROM vms;"
248 sql "INSERT INTO datacenters_images (image_id, datacenter_id, vim_id)
249 SELECT DISTINCT vim_image_id, datacenters.uuid, vim_image_id FROM vms JOIN datacenters;"
tierno7edb6752016-03-21 17:37:52 +0100250 echo " Add table 'flavors' and 'datacenter_flavors'"
tierno952ab002017-09-07 12:58:23 +0200251 sql "CREATE TABLE flavors (
tierno7edb6752016-03-21 17:37:52 +0100252 uuid VARCHAR(36) NOT NULL,
253 name VARCHAR(50) NOT NULL,
254 description VARCHAR(100) NULL,
255 disk SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
256 ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
257 vcpus SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
258 extended VARCHAR(2000) NULL DEFAULT NULL COMMENT 'Extra description json format of needed resources and pining, orginized in sets per numa',
259 PRIMARY KEY (uuid) )
260 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200261 ENGINE=InnoDB;"
262 sql "CREATE TABLE datacenters_flavors (
tierno7edb6752016-03-21 17:37:52 +0100263 id INT NOT NULL AUTO_INCREMENT,
264 flavor_id VARCHAR(36) NOT NULL,
265 datacenter_id VARCHAR(36) NOT NULL,
266 vim_id VARCHAR(36) NOT NULL,
267 PRIMARY KEY (id),
268 CONSTRAINT FK__flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
269 CONSTRAINT FK__datacenters_f FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
270 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200271 ENGINE=InnoDB;"
tierno7edb6752016-03-21 17:37:52 +0100272 echo " migrate data from table 'vms' into 'flavors'"
tierno952ab002017-09-07 12:58:23 +0200273 sql "INSERT INTO flavors (uuid, name) SELECT DISTINCT vim_flavor_id, vim_flavor_id FROM vms;"
274 sql "INSERT INTO datacenters_flavors (flavor_id, datacenter_id, vim_id)
275 SELECT DISTINCT vim_flavor_id, datacenters.uuid, vim_flavor_id FROM vms JOIN datacenters;"
276 sql "ALTER TABLE vms ALTER vim_flavor_id DROP DEFAULT, ALTER vim_image_id DROP DEFAULT;
tierno7edb6752016-03-21 17:37:52 +0100277 ALTER TABLE vms CHANGE COLUMN vim_flavor_id flavor_id VARCHAR(36) NOT NULL COMMENT 'Link to flavor table' AFTER vnf_id,
278 CHANGE COLUMN vim_image_id image_id VARCHAR(36) NOT NULL COMMENT 'Link to image table' AFTER flavor_id,
279 ADD CONSTRAINT FK_vms_images FOREIGN KEY (image_id) REFERENCES images (uuid),
tierno952ab002017-09-07 12:58:23 +0200280 ADD CONSTRAINT FK_vms_flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid);"
281 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (2, '0.2', '0.2.5', 'new tables images,flavors', '2015-07-13');"
tierno7edb6752016-03-21 17:37:52 +0100282
283}
284
285function downgrade_from_2(){
tierno11f81f62017-04-27 17:22:14 +0200286 # echo " downgrade database from version 0.2 to version 0.1"
tierno7edb6752016-03-21 17:37:52 +0100287 echo " migrate back data from 'datacenters_images' 'datacenters_flavors' into 'vms'"
tierno952ab002017-09-07 12:58:23 +0200288 sql "ALTER TABLE vms ALTER image_id DROP DEFAULT, ALTER flavor_id DROP DEFAULT;
tierno7edb6752016-03-21 17:37:52 +0100289 ALTER TABLE vms CHANGE COLUMN flavor_id vim_flavor_id VARCHAR(36) NOT NULL COMMENT 'Flavor ID in the VIM DB' AFTER vnf_id,
290 CHANGE COLUMN image_id vim_image_id VARCHAR(36) NOT NULL COMMENT 'Image ID in the VIM DB' AFTER vim_flavor_id,
291 DROP FOREIGN KEY FK_vms_flavors, DROP INDEX FK_vms_flavors,
tierno952ab002017-09-07 12:58:23 +0200292 DROP FOREIGN KEY FK_vms_images, DROP INDEX FK_vms_images;"
tierno7edb6752016-03-21 17:37:52 +0100293# echo "UPDATE v SET v.vim_image_id=di.vim_id
294# FROM vms as v INNER JOIN images as i ON v.vim_image_id=i.uuid
tierno952ab002017-09-07 12:58:23 +0200295# INNER JOIN datacenters_images as di ON i.uuid=di.image_id;"
tierno7edb6752016-03-21 17:37:52 +0100296 echo " Delete columns 'user/passwd' from 'vim_tenants'"
tierno952ab002017-09-07 12:58:23 +0200297 sql "ALTER TABLE vim_tenants DROP COLUMN user, DROP COLUMN passwd; "
tierno7edb6752016-03-21 17:37:52 +0100298 echo " delete tables 'datacenter_images', 'images'"
tierno952ab002017-09-07 12:58:23 +0200299 sql "DROP TABLE \`datacenters_images\`;"
300 sql "DROP TABLE \`images\`;"
tierno7edb6752016-03-21 17:37:52 +0100301 echo " delete tables 'datacenter_flavors', 'flavors'"
tierno952ab002017-09-07 12:58:23 +0200302 sql "DROP TABLE \`datacenters_flavors\`;"
303 sql "DROP TABLE \`flavors\`;"
304 sql "DELETE FROM schema_version WHERE version_int='2';"
tierno7edb6752016-03-21 17:37:52 +0100305}
306
307function upgrade_to_3(){
tierno11f81f62017-04-27 17:22:14 +0200308 # echo " upgrade database from version 0.2 to version 0.3"
tierno7edb6752016-03-21 17:37:52 +0100309 echo " Change table 'logs', 'uuids"
tierno952ab002017-09-07 12:58:23 +0200310 sql "ALTER TABLE logs CHANGE COLUMN related related VARCHAR(36) NOT NULL COMMENT 'Relevant element for the log' AFTER nfvo_tenant_id;"
311 sql "ALTER TABLE uuids CHANGE COLUMN used_at used_at VARCHAR(36) NULL DEFAULT NULL COMMENT 'Table that uses this UUID' AFTER created_at;"
tierno7edb6752016-03-21 17:37:52 +0100312 echo " Add column created to table 'datacenters_images' and 'datacenters_flavors'"
313 for table in datacenters_images datacenters_flavors
314 do
tierno952ab002017-09-07 12:58:23 +0200315 sql "ALTER TABLE $table ADD COLUMN created ENUM('true','false') NOT NULL DEFAULT 'false'
316 COMMENT 'Indicates if it has been created by openmano, or already existed' AFTER vim_id;"
tierno7edb6752016-03-21 17:37:52 +0100317 done
tierno952ab002017-09-07 12:58:23 +0200318 sql "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(2000) NULL DEFAULT NULL AFTER description;"
tierno7edb6752016-03-21 17:37:52 +0100319 echo " Allow null to column 'vim_interface_id' in 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200320 sql "ALTER TABLE instance_interfaces CHANGE COLUMN vim_interface_id vim_interface_id VARCHAR(36) NULL DEFAULT NULL COMMENT 'vim identity for that interface' AFTER interface_id; "
tierno7edb6752016-03-21 17:37:52 +0100321 echo " Add column config to table 'datacenters'"
tierno952ab002017-09-07 12:58:23 +0200322 sql "ALTER TABLE datacenters ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL COMMENT 'extra config information in json' AFTER vim_url_admin;
323 "
tierno7edb6752016-03-21 17:37:52 +0100324 echo " Add column datacenter_id to table 'vim_tenants'"
tierno952ab002017-09-07 12:58:23 +0200325 sql "ALTER TABLE vim_tenants ADD COLUMN datacenter_id VARCHAR(36) NULL COMMENT 'Datacenter of this tenant' AFTER uuid,
326 DROP INDEX name, DROP INDEX vim_tenant_id;"
327 sql "ALTER TABLE vim_tenants CHANGE COLUMN name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL COMMENT 'tenant name at VIM' AFTER datacenter_id,
328 CHANGE COLUMN vim_tenant_id vim_tenant_id VARCHAR(36) NULL DEFAULT NULL COMMENT 'Tenant ID at VIM' AFTER vim_tenant_name;"
tierno7edb6752016-03-21 17:37:52 +0100329 echo "UPDATE vim_tenants as vt LEFT JOIN tenants_datacenters as td ON vt.uuid=td.vim_tenant_id
tierno952ab002017-09-07 12:58:23 +0200330 SET vt.datacenter_id=td.datacenter_id;"
331 sql "DELETE FROM vim_tenants WHERE datacenter_id is NULL;"
332 sql "ALTER TABLE vim_tenants ALTER datacenter_id DROP DEFAULT;
tierno7edb6752016-03-21 17:37:52 +0100333 ALTER TABLE vim_tenants
tierno952ab002017-09-07 12:58:23 +0200334 CHANGE COLUMN datacenter_id datacenter_id VARCHAR(36) NOT NULL COMMENT 'Datacenter of this tenant' AFTER uuid;"
335 sql "ALTER TABLE vim_tenants ADD CONSTRAINT FK_vim_tenants_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid)
336 ON UPDATE CASCADE ON DELETE CASCADE;"
tierno7edb6752016-03-21 17:37:52 +0100337
tierno952ab002017-09-07 12:58:23 +0200338 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (3, '0.3', '0.3.3', 'alter vim_tenant tables', '2015-07-28');"
tierno7edb6752016-03-21 17:37:52 +0100339}
340
341
342function downgrade_from_3(){
tierno11f81f62017-04-27 17:22:14 +0200343 # echo " downgrade database from version 0.3 to version 0.2"
tierno7edb6752016-03-21 17:37:52 +0100344 echo " Change back table 'logs', 'uuids'"
tierno952ab002017-09-07 12:58:23 +0200345 sql "ALTER TABLE logs CHANGE COLUMN related related ENUM('nfvo_tenants','datacenters','vim_tenants','tenants_datacenters','vnfs','vms','interfaces','nets','scenarios','sce_vnfs','sce_interfaces','sce_nets','instance_scenarios','instance_vnfs','instance_vms','instance_nets','instance_interfaces') NOT NULL COMMENT 'Relevant element for the log' AFTER nfvo_tenant_id;"
346 sql "ALTER TABLE uuids CHANGE COLUMN used_at used_at ENUM('nfvo_tenants','datacenters','vim_tenants','vnfs','vms','interfaces','nets','scenarios','sce_vnfs','sce_interfaces','sce_nets','instance_scenarios','instance_vnfs','instance_vms','instance_nets','instance_interfaces') NULL DEFAULT NULL COMMENT 'Table that uses this UUID' AFTER created_at;"
tierno7edb6752016-03-21 17:37:52 +0100347 echo " Delete column created from table 'datacenters_images' and 'datacenters_flavors'"
348 for table in datacenters_images datacenters_flavors
349 do
tierno952ab002017-09-07 12:58:23 +0200350 sql "ALTER TABLE $table DROP COLUMN created;"
tierno7edb6752016-03-21 17:37:52 +0100351 done
tierno952ab002017-09-07 12:58:23 +0200352 sql "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(400) NULL DEFAULT NULL AFTER description;"
tierno7edb6752016-03-21 17:37:52 +0100353 echo " Deny back null to column 'vim_interface_id' in 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200354 sql "ALTER TABLE instance_interfaces CHANGE COLUMN vim_interface_id vim_interface_id VARCHAR(36) NOT NULL COMMENT 'vim identity for that interface' AFTER interface_id; "
tierno7edb6752016-03-21 17:37:52 +0100355 echo " Delete column config to table 'datacenters'"
tierno952ab002017-09-07 12:58:23 +0200356 sql "ALTER TABLE datacenters DROP COLUMN config;"
tierno7edb6752016-03-21 17:37:52 +0100357 echo " Delete column datacenter_id to table 'vim_tenants'"
tierno952ab002017-09-07 12:58:23 +0200358 sql "ALTER TABLE vim_tenants DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_vim_tenants_datacenters;"
359 sql "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name name VARCHAR(36) NULL DEFAULT NULL COMMENT '' AFTER uuid"
360 sql "ALTER TABLE vim_tenants ALTER name DROP DEFAULT;"
361 sql "ALTER TABLE vim_tenants CHANGE COLUMN name name VARCHAR(36) NOT NULL AFTER uuid" || ! echo "Warning changing column name at vim_tenants!"
362 sql "ALTER TABLE vim_tenants ADD UNIQUE INDEX name (name);" || ! echo "Warning add unique index name at vim_tenants!"
363 sql "ALTER TABLE vim_tenants ALTER vim_tenant_id DROP DEFAULT;"
364 sql "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_id vim_tenant_id VARCHAR(36) NOT NULL COMMENT 'Tenant ID in the VIM DB' AFTER name;" ||
365 ! echo "Warning changing column vim_tenant_id at vim_tenants!"
366 sql "ALTER TABLE vim_tenants ADD UNIQUE INDEX vim_tenant_id (vim_tenant_id);" ||
367 ! echo "Warning add unique index vim_tenant_id at vim_tenants!"
368 sql "DELETE FROM schema_version WHERE version_int='3';"
tierno7edb6752016-03-21 17:37:52 +0100369}
370
371function upgrade_to_4(){
tierno11f81f62017-04-27 17:22:14 +0200372 # echo " upgrade database from version 0.3 to version 0.4"
tierno7edb6752016-03-21 17:37:52 +0100373 echo " Enlarge graph field at tables 'sce_vnfs', 'sce_nets'"
374 for table in sce_vnfs sce_nets
375 do
tierno952ab002017-09-07 12:58:23 +0200376 sql "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;"
tierno7edb6752016-03-21 17:37:52 +0100377 done
tierno952ab002017-09-07 12:58:23 +0200378 sql "ALTER TABLE datacenters CHANGE COLUMN type type VARCHAR(36) NOT NULL DEFAULT 'openvim' AFTER description;"
379 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (4, '0.4', '0.3.5', 'enlarge graph field at sce_vnfs/nets', '2015-10-20');"
tierno7edb6752016-03-21 17:37:52 +0100380}
381
382function downgrade_from_4(){
tierno11f81f62017-04-27 17:22:14 +0200383 # echo " downgrade database from version 0.4 to version 0.3"
tierno7edb6752016-03-21 17:37:52 +0100384 echo " Shorten back graph field at tables 'sce_vnfs', 'sce_nets'"
385 for table in sce_vnfs sce_nets
386 do
tierno952ab002017-09-07 12:58:23 +0200387 sql "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;"
tierno7edb6752016-03-21 17:37:52 +0100388 done
tierno952ab002017-09-07 12:58:23 +0200389 sql "ALTER TABLE datacenters CHANGE COLUMN type type ENUM('openvim','openstack') NOT NULL DEFAULT 'openvim' AFTER description;"
390 sql "DELETE FROM schema_version WHERE version_int='4';"
tierno7edb6752016-03-21 17:37:52 +0100391}
392
393function upgrade_to_5(){
tierno11f81f62017-04-27 17:22:14 +0200394 # echo " upgrade database from version 0.4 to version 0.5"
tierno7edb6752016-03-21 17:37:52 +0100395 echo " Add 'mac' field for bridge interfaces in table 'interfaces'"
tierno952ab002017-09-07 12:58:23 +0200396 sql "ALTER TABLE interfaces ADD COLUMN mac CHAR(18) NULL DEFAULT NULL AFTER model;"
397 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (5, '0.5', '0.4.1', 'Add mac address for bridge interfaces', '2015-12-14');"
tierno7edb6752016-03-21 17:37:52 +0100398}
399function downgrade_from_5(){
tierno11f81f62017-04-27 17:22:14 +0200400 # echo " downgrade database from version 0.5 to version 0.4"
tierno7edb6752016-03-21 17:37:52 +0100401 echo " Remove 'mac' field for bridge interfaces in table 'interfaces'"
tierno952ab002017-09-07 12:58:23 +0200402 sql "ALTER TABLE interfaces DROP COLUMN mac;"
403 sql "DELETE FROM schema_version WHERE version_int='5';"
tierno7edb6752016-03-21 17:37:52 +0100404}
405
406function upgrade_to_6(){
tierno11f81f62017-04-27 17:22:14 +0200407 # echo " upgrade database from version 0.5 to version 0.6"
tierno7edb6752016-03-21 17:37:52 +0100408 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
tierno952ab002017-09-07 12:58:23 +0200409 sql "ALTER TABLE vnfs ADD COLUMN descriptor TEXT NULL DEFAULT NULL COMMENT 'Original text descriptor used for create the VNF' AFTER class;"
410 sql "ALTER TABLE scenarios ADD COLUMN descriptor TEXT NULL DEFAULT NULL COMMENT 'Original text descriptor used for create the scenario' AFTER modified_at;"
tierno7edb6752016-03-21 17:37:52 +0100411 echo " Add 'last_error', 'vim_info' to 'instance_vms', 'instance_nets'"
tierno952ab002017-09-07 12:58:23 +0200412 sql "ALTER TABLE instance_vms ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;"
413 sql "ALTER TABLE instance_vms ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;"
414 sql "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE','INACTIVE','BUILD','ERROR','VIM_ERROR','PAUSED','SUSPENDED','DELETED') NOT NULL DEFAULT 'BUILD' AFTER vim_vm_id;"
415 sql "ALTER TABLE instance_nets ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;"
416 sql "ALTER TABLE instance_nets ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;"
417 sql "ALTER TABLE instance_nets CHANGE COLUMN status status ENUM('ACTIVE','DOWN','BUILD','ERROR','VIM_ERROR','INACTIVE','DELETED') NOT NULL DEFAULT 'BUILD' AFTER instance_scenario_id;"
tierno7edb6752016-03-21 17:37:52 +0100418 echo " Add 'mac_address', 'ip_address', 'vim_info' to 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200419 sql "ALTER TABLE instance_interfaces ADD COLUMN mac_address VARCHAR(32) NULL DEFAULT NULL AFTER vim_interface_id, ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER mac_address, ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER ip_address;"
tierno7edb6752016-03-21 17:37:52 +0100420 echo " Add 'sce_vnf_id','datacenter_id','vim_tenant_id' field to 'instance_vnfs'"
tierno952ab002017-09-07 12:58:23 +0200421 sql "ALTER TABLE instance_vnfs ADD COLUMN sce_vnf_id VARCHAR(36) NULL DEFAULT NULL AFTER vnf_id, ADD CONSTRAINT FK_instance_vnfs_sce_vnfs FOREIGN KEY (sce_vnf_id) REFERENCES sce_vnfs (uuid) ON UPDATE CASCADE ON DELETE SET NULL;"
422 sql "ALTER TABLE instance_vnfs ADD COLUMN vim_tenant_id VARCHAR(36) NULL DEFAULT NULL AFTER sce_vnf_id, ADD CONSTRAINT FK_instance_vnfs_vim_tenants FOREIGN KEY (vim_tenant_id) REFERENCES vim_tenants (uuid) ON UPDATE RESTRICT ON DELETE RESTRICT;"
423 sql "ALTER TABLE instance_vnfs ADD COLUMN datacenter_id VARCHAR(36) NULL DEFAULT NULL AFTER vim_tenant_id, ADD CONSTRAINT FK_instance_vnfs_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE RESTRICT ON DELETE RESTRICT;"
tierno7edb6752016-03-21 17:37:52 +0100424 echo " Add 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field to 'instance_nets'"
tierno952ab002017-09-07 12:58:23 +0200425 sql "ALTER TABLE instance_nets ADD COLUMN sce_net_id VARCHAR(36) NULL DEFAULT NULL AFTER instance_scenario_id, ADD CONSTRAINT FK_instance_nets_sce_nets FOREIGN KEY (sce_net_id) REFERENCES sce_nets (uuid) ON UPDATE CASCADE ON DELETE SET NULL;"
426 sql "ALTER TABLE instance_nets ADD COLUMN net_id VARCHAR(36) NULL DEFAULT NULL AFTER sce_net_id, ADD CONSTRAINT FK_instance_nets_nets FOREIGN KEY (net_id) REFERENCES nets (uuid) ON UPDATE CASCADE ON DELETE SET NULL;"
427 sql "ALTER TABLE instance_nets ADD COLUMN vim_tenant_id VARCHAR(36) NULL DEFAULT NULL AFTER net_id, ADD CONSTRAINT FK_instance_nets_vim_tenants FOREIGN KEY (vim_tenant_id) REFERENCES vim_tenants (uuid) ON UPDATE RESTRICT ON DELETE RESTRICT;"
428 sql "ALTER TABLE instance_nets ADD COLUMN datacenter_id VARCHAR(36) NULL DEFAULT NULL AFTER vim_tenant_id, ADD CONSTRAINT FK_instance_nets_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE RESTRICT ON DELETE RESTRICT;"
429 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (6, '0.6', '0.4.2', 'Adding VIM status info', '2015-12-22');"
tierno7edb6752016-03-21 17:37:52 +0100430}
431function downgrade_from_6(){
tierno11f81f62017-04-27 17:22:14 +0200432 # echo " downgrade database from version 0.6 to version 0.5"
tierno7edb6752016-03-21 17:37:52 +0100433 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
tierno952ab002017-09-07 12:58:23 +0200434 sql "ALTER TABLE vnfs DROP COLUMN descriptor;"
435 sql "ALTER TABLE scenarios DROP COLUMN descriptor;"
tierno7edb6752016-03-21 17:37:52 +0100436 echo " Remove 'last_error', 'vim_info' from 'instance_vms', 'instance_nets'"
tierno952ab002017-09-07 12:58:23 +0200437 sql "ALTER TABLE instance_vms DROP COLUMN error_msg, DROP COLUMN vim_info;"
438 sql "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE','PAUSED','INACTIVE','CREATING','ERROR','DELETING') NOT NULL DEFAULT 'CREATING' AFTER vim_vm_id;"
439 sql "ALTER TABLE instance_nets DROP COLUMN error_msg, DROP COLUMN vim_info;"
440 sql "ALTER TABLE instance_nets CHANGE COLUMN status status ENUM('ACTIVE','DOWN','BUILD','ERROR') NOT NULL DEFAULT 'BUILD' AFTER instance_scenario_id;"
tierno7edb6752016-03-21 17:37:52 +0100441 echo " Remove 'mac_address', 'ip_address', 'vim_info' from 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200442 sql "ALTER TABLE instance_interfaces DROP COLUMN mac_address, DROP COLUMN ip_address, DROP COLUMN vim_info;"
tierno7edb6752016-03-21 17:37:52 +0100443 echo " Remove 'sce_vnf_id','datacenter_id','vim_tenant_id' field from 'instance_vnfs'"
tierno952ab002017-09-07 12:58:23 +0200444 sql "ALTER TABLE instance_vnfs DROP COLUMN sce_vnf_id, DROP FOREIGN KEY FK_instance_vnfs_sce_vnfs;"
445 sql "ALTER TABLE instance_vnfs DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_vnfs_vim_tenants;"
446 sql "ALTER TABLE instance_vnfs DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_vnfs_datacenters;"
tierno7edb6752016-03-21 17:37:52 +0100447 echo " Remove 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field from 'instance_nets'"
tierno952ab002017-09-07 12:58:23 +0200448 sql "ALTER TABLE instance_nets DROP COLUMN sce_net_id, DROP FOREIGN KEY FK_instance_nets_sce_nets;"
449 sql "ALTER TABLE instance_nets DROP COLUMN net_id, DROP FOREIGN KEY FK_instance_nets_nets;"
450 sql "ALTER TABLE instance_nets DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_nets_vim_tenants;"
451 sql "ALTER TABLE instance_nets DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_nets_datacenters;"
452 sql "DELETE FROM schema_version WHERE version_int='6';"
tierno7edb6752016-03-21 17:37:52 +0100453}
454
455function upgrade_to_7(){
tierno11f81f62017-04-27 17:22:14 +0200456 # echo " upgrade database from version 0.6 to version 0.7"
tierno7edb6752016-03-21 17:37:52 +0100457 echo " Change created_at, modified_at from timestamp to unix float at all database"
458 for table in datacenters datacenter_nets instance_nets instance_scenarios instance_vms instance_vnfs interfaces nets nfvo_tenants scenarios sce_interfaces sce_nets sce_vnfs tenants_datacenters vim_tenants vms vnfs uuids
459 do
460 echo -en " $table \r"
tierno952ab002017-09-07 12:58:23 +0200461 sql "ALTER TABLE $table ADD COLUMN created_at_ DOUBLE NOT NULL after created_at;"
462 echo "UPDATE $table SET created_at_=unix_timestamp(created_at);"
463 sql "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at DOUBLE NOT NULL;"
464 [[ $table == uuids ]] || sql "ALTER TABLE $table CHANGE COLUMN modified_at modified_at DOUBLE NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100465 done
466
467 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
tierno952ab002017-09-07 12:58:23 +0200468 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (7, '0.7', '0.4.3', 'Changing created_at time at database', '2016-01-25');"
tierno7edb6752016-03-21 17:37:52 +0100469}
470function downgrade_from_7(){
tierno11f81f62017-04-27 17:22:14 +0200471 # echo " downgrade database from version 0.7 to version 0.6"
tierno7edb6752016-03-21 17:37:52 +0100472 echo " Change back created_at, modified_at from unix float to timestamp at all database"
473 for table in datacenters datacenter_nets instance_nets instance_scenarios instance_vms instance_vnfs interfaces nets nfvo_tenants scenarios sce_interfaces sce_nets sce_vnfs tenants_datacenters vim_tenants vms vnfs uuids
474 do
475 echo -en " $table \r"
tierno952ab002017-09-07 12:58:23 +0200476 sql "ALTER TABLE $table ADD COLUMN created_at_ TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP after created_at;"
477 echo "UPDATE $table SET created_at_=from_unixtime(created_at);"
478 sql "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;"
479 [[ $table == uuids ]] || sql "ALTER TABLE $table CHANGE COLUMN modified_at modified_at TIMESTAMP NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100480 done
481 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
tierno952ab002017-09-07 12:58:23 +0200482 sql "DELETE FROM schema_version WHERE version_int='7';"
tierno7edb6752016-03-21 17:37:52 +0100483}
484
485function upgrade_to_8(){
tierno11f81f62017-04-27 17:22:14 +0200486 # echo " upgrade database from version 0.7 to version 0.8"
tierno7edb6752016-03-21 17:37:52 +0100487 echo " Change enalarge name, description to 255 at all database"
488 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
489 do
490 echo -en " $table \r"
tierno952ab002017-09-07 12:58:23 +0200491 sql "ALTER TABLE $table CHANGE COLUMN name name VARCHAR(255) NOT NULL;"
492 sql "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(255) NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100493 done
494 echo -en " interfaces \r"
tierno952ab002017-09-07 12:58:23 +0200495 sql "ALTER TABLE interfaces CHANGE COLUMN internal_name internal_name VARCHAR(255) NOT NULL, CHANGE COLUMN external_name external_name VARCHAR(255) NULL DEFAULT NULL;"
496 sql "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100497 echo -en " vim_tenants \r"
tierno952ab002017-09-07 12:58:23 +0200498 sql "ALTER TABLE vim_tenants CHANGE COLUMN user user VARCHAR(64) NULL DEFAULT NULL, CHANGE COLUMN passwd passwd VARCHAR(64) NULL DEFAULT NULL;"
499 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (8, '0.8', '0.4.32', 'Enlarging name at database', '2016-02-01');"
tierno7edb6752016-03-21 17:37:52 +0100500}
501function downgrade_from_8(){
tierno11f81f62017-04-27 17:22:14 +0200502 # echo " downgrade database from version 0.8 to version 0.7"
tierno7edb6752016-03-21 17:37:52 +0100503 echo " Change back name,description to shorter length at all database"
504 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
505 do
506 name_length=50
507 [[ $table == flavors ]] || [[ $table == images ]] || name_length=36
508 echo -en " $table \r"
tierno952ab002017-09-07 12:58:23 +0200509 sql "ALTER TABLE $table CHANGE COLUMN name name VARCHAR($name_length) NOT NULL;"
510 sql "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(100) NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100511 done
512 echo -en " interfaces \r"
tierno952ab002017-09-07 12:58:23 +0200513 sql "ALTER TABLE interfaces CHANGE COLUMN internal_name internal_name VARCHAR(25) NOT NULL, CHANGE COLUMN external_name external_name VARCHAR(25) NULL DEFAULT NULL;"
tierno7edb6752016-03-21 17:37:52 +0100514 echo -en " vim_tenants \r"
tierno952ab002017-09-07 12:58:23 +0200515 sql "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL;"
516 sql "ALTER TABLE vim_tenants CHANGE COLUMN user user VARCHAR(36) NULL DEFAULT NULL, CHANGE COLUMN passwd passwd VARCHAR(50) NULL DEFAULT NULL;"
517 sql "DELETE FROM schema_version WHERE version_int='8';"
tierno7edb6752016-03-21 17:37:52 +0100518}
519function upgrade_to_9(){
tierno11f81f62017-04-27 17:22:14 +0200520 # echo " upgrade database from version 0.8 to version 0.9"
tierno7edb6752016-03-21 17:37:52 +0100521 echo " Add more status to 'instance_vms'"
tierno952ab002017-09-07 12:58:23 +0200522 sql "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE:NoMgmtIP','ACTIVE','INACTIVE','BUILD','ERROR','VIM_ERROR','PAUSED','SUSPENDED','DELETED') NOT NULL DEFAULT 'BUILD';"
523 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (9, '0.9', '0.4.33', 'Add ACTIVE:NoMgmtIP to instance_vms table', '2016-02-05');"
tierno7edb6752016-03-21 17:37:52 +0100524}
525function downgrade_from_9(){
tierno11f81f62017-04-27 17:22:14 +0200526 # echo " downgrade database from version 0.9 to version 0.8"
tierno7edb6752016-03-21 17:37:52 +0100527 echo " Add more status to 'instance_vms'"
tierno952ab002017-09-07 12:58:23 +0200528 sql "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE','INACTIVE','BUILD','ERROR','VIM_ERROR','PAUSED','SUSPENDED','DELETED') NOT NULL DEFAULT 'BUILD';"
529 sql "DELETE FROM schema_version WHERE version_int='9';"
tierno7edb6752016-03-21 17:37:52 +0100530}
531function upgrade_to_10(){
tierno11f81f62017-04-27 17:22:14 +0200532 # echo " upgrade database from version 0.9 to version 0.10"
tierno7edb6752016-03-21 17:37:52 +0100533 echo " add tenant to 'vnfs'"
tierno952ab002017-09-07 12:58:23 +0200534 sql "ALTER TABLE vnfs ADD COLUMN tenant_id VARCHAR(36) NULL DEFAULT NULL AFTER name, ADD CONSTRAINT FK_vnfs_nfvo_tenants FOREIGN KEY (tenant_id) REFERENCES nfvo_tenants (uuid) ON UPDATE CASCADE ON DELETE SET NULL, CHANGE COLUMN public public ENUM('true','false') NOT NULL DEFAULT 'false' AFTER physical, DROP INDEX name, DROP INDEX path, DROP COLUMN path;"
535 sql "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;"
536 sql "ALTER TABLE scenarios CHANGE COLUMN nfvo_tenant_id tenant_id VARCHAR(36) NULL DEFAULT NULL after name, ADD CONSTRAINT FK_scenarios_nfvo_tenants FOREIGN KEY (tenant_id) REFERENCES nfvo_tenants (uuid);"
537 sql "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;"
538 sql "ALTER TABLE instance_scenarios CHANGE COLUMN nfvo_tenant_id tenant_id VARCHAR(36) NULL DEFAULT NULL after name, ADD CONSTRAINT FK_instance_scenarios_nfvo_tenants FOREIGN KEY (tenant_id) REFERENCES nfvo_tenants (uuid);"
tierno7edb6752016-03-21 17:37:52 +0100539 echo " rename 'vim_tenants' table to 'datacenter_tenants'"
tierno952ab002017-09-07 12:58:23 +0200540 echo "RENAME TABLE vim_tenants TO datacenter_tenants;"
tierno7edb6752016-03-21 17:37:52 +0100541 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
542 do
543 NULL="NOT NULL"
544 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
tierno952ab002017-09-07 12:58:23 +0200545 sql "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_vim_tenants;"
546 sql "ALTER TABLE ${table} ALTER vim_tenant_id DROP DEFAULT;"
547 sql "ALTER TABLE ${table} CHANGE COLUMN vim_tenant_id datacenter_tenant_id VARCHAR(36) ${NULL} AFTER datacenter_id, ADD CONSTRAINT FK_${table}_datacenter_tenants FOREIGN KEY (datacenter_tenant_id) REFERENCES datacenter_tenants (uuid); "
tierno7edb6752016-03-21 17:37:52 +0100548 done
tierno952ab002017-09-07 12:58:23 +0200549 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (10, '0.10', '0.4.36', 'tenant management of vnfs,scenarios', '2016-03-08');"
tierno7edb6752016-03-21 17:37:52 +0100550}
551
552function downgrade_from_10(){
tierno11f81f62017-04-27 17:22:14 +0200553 # echo " downgrade database from version 0.10 to version 0.9"
tierno7edb6752016-03-21 17:37:52 +0100554 echo " remove tenant from 'vnfs'"
tierno952ab002017-09-07 12:58:23 +0200555 sql "ALTER TABLE vnfs DROP COLUMN tenant_id, DROP FOREIGN KEY FK_vnfs_nfvo_tenants, ADD UNIQUE INDEX name (name), ADD COLUMN path VARCHAR(100) NULL DEFAULT NULL COMMENT 'Path where the YAML descriptor of the VNF can be found. NULL if it is a physical network function.' AFTER name, ADD UNIQUE INDEX path (path), CHANGE COLUMN public public ENUM('true','false') NOT NULL DEFAULT 'true' AFTER physical;"
556 sql "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;"
557 sql "ALTER TABLE scenarios CHANGE COLUMN tenant_id nfvo_tenant_id VARCHAR(36) NULL DEFAULT NULL after name, ADD CONSTRAINT FK_scenarios_nfvo_tenants FOREIGN KEY (nfvo_tenant_id) REFERENCES nfvo_tenants (uuid);"
558 sql "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;"
559 sql "ALTER TABLE instance_scenarios CHANGE COLUMN tenant_id nfvo_tenant_id VARCHAR(36) NULL DEFAULT NULL after name, ADD CONSTRAINT FK_instance_scenarios_nfvo_tenants FOREIGN KEY (nfvo_tenant_id) REFERENCES nfvo_tenants (uuid);"
tierno7edb6752016-03-21 17:37:52 +0100560 echo " rename back 'datacenter_tenants' table to 'vim_tenants'"
tierno952ab002017-09-07 12:58:23 +0200561 echo "RENAME TABLE datacenter_tenants TO vim_tenants;"
tierno7edb6752016-03-21 17:37:52 +0100562 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
563 do
tierno952ab002017-09-07 12:58:23 +0200564 sql "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_datacenter_tenants;"
tierno7edb6752016-03-21 17:37:52 +0100565 NULL="NOT NULL"
566 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
tierno952ab002017-09-07 12:58:23 +0200567 sql "ALTER TABLE ${table} ALTER datacenter_tenant_id DROP DEFAULT;"
568 sql "ALTER TABLE ${table} CHANGE COLUMN datacenter_tenant_id vim_tenant_id VARCHAR(36) $NULL AFTER datacenter_id, ADD CONSTRAINT FK_${table}_vim_tenants FOREIGN KEY (vim_tenant_id) REFERENCES vim_tenants (uuid); "
tierno7edb6752016-03-21 17:37:52 +0100569 done
tierno952ab002017-09-07 12:58:23 +0200570 sql "DELETE FROM schema_version WHERE version_int='10';"
tierno7edb6752016-03-21 17:37:52 +0100571}
572
tiernocea279c2016-07-18 12:36:49 +0200573function upgrade_to_11(){
tierno11f81f62017-04-27 17:22:14 +0200574 # echo " upgrade database from version 0.10 to version 0.11"
tiernocea279c2016-07-18 12:36:49 +0200575 echo " remove unique name at 'scenarios', 'instance_scenarios'"
tierno952ab002017-09-07 12:58:23 +0200576 sql "ALTER TABLE scenarios DROP INDEX name;"
577 sql "ALTER TABLE instance_scenarios DROP INDEX name;"
578 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (11, '0.11', '0.4.43', 'remove unique name at scenarios,instance_scenarios', '2016-07-18');"
tiernocea279c2016-07-18 12:36:49 +0200579}
580function downgrade_from_11(){
tierno11f81f62017-04-27 17:22:14 +0200581 # echo " downgrade database from version 0.11 to version 0.10"
tiernocea279c2016-07-18 12:36:49 +0200582 echo " add unique name at 'scenarios', 'instance_scenarios'"
tierno952ab002017-09-07 12:58:23 +0200583 sql "ALTER TABLE scenarios ADD UNIQUE INDEX name (name);"
584 sql "ALTER TABLE instance_scenarios ADD UNIQUE INDEX name (name);"
585 sql "DELETE FROM schema_version WHERE version_int='11';"
tiernocea279c2016-07-18 12:36:49 +0200586}
587
garciadeblas0c317ee2016-08-29 12:33:06 +0200588function upgrade_to_12(){
tierno11f81f62017-04-27 17:22:14 +0200589 # echo " upgrade database from version 0.11 to version 0.12"
garciadeblas0c317ee2016-08-29 12:33:06 +0200590 echo " create ip_profiles table, with foreign keys to all nets tables, and add ip_address column to 'interfaces' and 'sce_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200591 sql "CREATE TABLE IF NOT EXISTS ip_profiles (
garciadeblas0c317ee2016-08-29 12:33:06 +0200592 id INT(11) NOT NULL AUTO_INCREMENT,
593 net_id VARCHAR(36) NULL DEFAULT NULL,
594 sce_net_id VARCHAR(36) NULL DEFAULT NULL,
595 instance_net_id VARCHAR(36) NULL DEFAULT NULL,
596 ip_version ENUM('IPv4','IPv6') NOT NULL DEFAULT 'IPv4',
597 subnet_address VARCHAR(64) NULL DEFAULT NULL,
598 gateway_address VARCHAR(64) NULL DEFAULT NULL,
garciadeblas0c317ee2016-08-29 12:33:06 +0200599 dns_address VARCHAR(64) NULL DEFAULT NULL,
600 dhcp_enabled ENUM('true','false') NOT NULL DEFAULT 'true',
601 dhcp_start_address VARCHAR(64) NULL DEFAULT NULL,
602 dhcp_count INT(11) NULL DEFAULT NULL,
603 PRIMARY KEY (id),
604 CONSTRAINT FK_ipprofiles_nets FOREIGN KEY (net_id) REFERENCES nets (uuid) ON DELETE CASCADE,
605 CONSTRAINT FK_ipprofiles_scenets FOREIGN KEY (sce_net_id) REFERENCES sce_nets (uuid) ON DELETE CASCADE,
606 CONSTRAINT FK_ipprofiles_instancenets FOREIGN KEY (instance_net_id) REFERENCES instance_nets (uuid) ON DELETE CASCADE )
607 COMMENT='Table containing the IP parameters of a network, either a net, a sce_net or and instance_net.'
608 COLLATE='utf8_general_ci'
tierno952ab002017-09-07 12:58:23 +0200609 ENGINE=InnoDB;"
610 sql "ALTER TABLE interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER mac;"
611 sql "ALTER TABLE sce_interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER interface_id;"
612 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (12, '0.12', '0.4.46', 'create ip_profiles table, with foreign keys to all nets tables, and add ip_address column to interfaces and sce_interfaces', '2016-08-29');"
garciadeblas0c317ee2016-08-29 12:33:06 +0200613}
614function downgrade_from_12(){
tierno11f81f62017-04-27 17:22:14 +0200615 # echo " downgrade database from version 0.12 to version 0.11"
garciadeblas0c317ee2016-08-29 12:33:06 +0200616 echo " delete ip_profiles table, and remove ip_address column in 'interfaces' and 'sce_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200617 sql "DROP TABLE ip_profiles;"
618 sql "ALTER TABLE interfaces DROP COLUMN ip_address;"
619 sql "ALTER TABLE sce_interfaces DROP COLUMN ip_address;"
620 sql "DELETE FROM schema_version WHERE version_int='12';"
garciadeblas0c317ee2016-08-29 12:33:06 +0200621}
622
tiernoa4e1a6e2016-08-31 14:19:40 +0200623function upgrade_to_13(){
tierno11f81f62017-04-27 17:22:14 +0200624 # echo " upgrade database from version 0.12 to version 0.13"
tiernoa4e1a6e2016-08-31 14:19:40 +0200625 echo " add cloud_config at 'scenarios', 'instance_scenarios'"
tierno952ab002017-09-07 12:58:23 +0200626 sql "ALTER TABLE scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER descriptor;"
627 sql "ALTER TABLE instance_scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER modified_at;"
628 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (13, '0.13', '0.4.47', 'insert cloud-config at scenarios,instance_scenarios', '2016-08-30');"
tiernoa4e1a6e2016-08-31 14:19:40 +0200629}
tiernobe41e222016-09-02 15:16:13 +0200630function downgrade_from_13(){
tierno11f81f62017-04-27 17:22:14 +0200631 # echo " downgrade database from version 0.13 to version 0.12"
tiernoa4e1a6e2016-08-31 14:19:40 +0200632 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
tierno952ab002017-09-07 12:58:23 +0200633 sql "ALTER TABLE scenarios DROP COLUMN cloud_config;"
634 sql "ALTER TABLE instance_scenarios DROP COLUMN cloud_config;"
635 sql "DELETE FROM schema_version WHERE version_int='13';"
tiernoa4e1a6e2016-08-31 14:19:40 +0200636}
637
tierno66345bc2016-09-26 11:37:55 +0200638function upgrade_to_14(){
tierno11f81f62017-04-27 17:22:14 +0200639 # echo " upgrade database from version 0.13 to version 0.14"
tierno66345bc2016-09-26 11:37:55 +0200640 echo " remove unique index vim_net_id, instance_scenario_id at table 'instance_nets'"
tierno952ab002017-09-07 12:58:23 +0200641 sql "ALTER TABLE instance_nets DROP INDEX vim_net_id_instance_scenario_id;"
642 sql "ALTER TABLE instance_nets CHANGE COLUMN external created ENUM('true','false') NOT NULL DEFAULT 'false' COMMENT 'Created or already exists at VIM' AFTER multipoint;"
643 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (14, '0.14', '0.4.57', 'remove unique index vim_net_id, instance_scenario_id', '2016-09-26');"
tierno66345bc2016-09-26 11:37:55 +0200644}
645function downgrade_from_14(){
tierno11f81f62017-04-27 17:22:14 +0200646 # echo " downgrade database from version 0.14 to version 0.13"
tierno66345bc2016-09-26 11:37:55 +0200647 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
tierno952ab002017-09-07 12:58:23 +0200648 sql "ALTER TABLE instance_nets ADD UNIQUE INDEX vim_net_id_instance_scenario_id (vim_net_id, instance_scenario_id);"
649 sql "ALTER TABLE instance_nets CHANGE COLUMN created external ENUM('true','false') NOT NULL DEFAULT 'false' COMMENT 'If external, means that it already exists at VIM' AFTER multipoint;"
650 sql "DELETE FROM schema_version WHERE version_int='14';"
tierno66345bc2016-09-26 11:37:55 +0200651}
tiernoa4e1a6e2016-08-31 14:19:40 +0200652
garciadeblasb69fa9f2016-09-28 12:04:10 +0200653function upgrade_to_15(){
tierno11f81f62017-04-27 17:22:14 +0200654 # echo " upgrade database from version 0.14 to version 0.15"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200655 echo " add columns 'universal_name' and 'checksum' at table 'images', add unique index universal_name_checksum, and change location to allow NULL; change column 'image_path' in table 'vms' to allow NULL"
tierno952ab002017-09-07 12:58:23 +0200656 sql "ALTER TABLE images ADD COLUMN checksum VARCHAR(32) NULL DEFAULT NULL AFTER name;"
657 sql "ALTER TABLE images ALTER location DROP DEFAULT;"
658 sql "ALTER TABLE images ADD COLUMN universal_name VARCHAR(255) NULL AFTER name, CHANGE COLUMN location location VARCHAR(200) NULL AFTER checksum, ADD UNIQUE INDEX universal_name_checksum (universal_name, checksum);"
659 sql "ALTER TABLE vms ALTER image_path DROP DEFAULT;"
660 sql "ALTER TABLE vms CHANGE COLUMN image_path image_path VARCHAR(100) NULL COMMENT 'Path where the image of the VM is located' AFTER image_id;"
661 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (15, '0.15', '0.4.59', 'add columns universal_name and checksum at table images, add unique index universal_name_checksum, and change location to allow NULL; change column image_path in table vms to allow NULL', '2016-09-27');"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200662}
663function downgrade_from_15(){
tierno11f81f62017-04-27 17:22:14 +0200664 # echo " downgrade database from version 0.15 to version 0.14"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200665 echo " remove columns 'universal_name' and 'checksum' from table 'images', remove index universal_name_checksum, change location NOT NULL; change column 'image_path' in table 'vms' to NOT NULL"
tierno952ab002017-09-07 12:58:23 +0200666 sql "ALTER TABLE images DROP INDEX universal_name_checksum;"
667 sql "ALTER TABLE images ALTER location DROP DEFAULT;"
668 sql "ALTER TABLE images CHANGE COLUMN location location VARCHAR(200) NOT NULL AFTER checksum;"
669 sql "ALTER TABLE images DROP COLUMN universal_name;"
670 sql "ALTER TABLE images DROP COLUMN checksum;"
671 sql "ALTER TABLE vms ALTER image_path DROP DEFAULT;"
672 sql "ALTER TABLE vms CHANGE COLUMN image_path image_path VARCHAR(100) NOT NULL COMMENT 'Path where the image of the VM is located' AFTER image_id;"
673 sql "DELETE FROM schema_version WHERE version_int='15';"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200674}
675
tierno8008c3a2016-10-13 15:34:28 +0000676function upgrade_to_16(){
tierno11f81f62017-04-27 17:22:14 +0200677 # echo " upgrade database from version 0.15 to version 0.16"
tierno8008c3a2016-10-13 15:34:28 +0000678 echo " add column 'config' at table 'datacenter_tenants', enlarge 'vim_tenant_name/id'"
tierno952ab002017-09-07 12:58:23 +0200679 sql "ALTER TABLE datacenter_tenants ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL AFTER passwd;"
680 sql "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(256) NULL DEFAULT NULL AFTER datacenter_id;"
681 sql "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_id vim_tenant_id VARCHAR(256) NULL DEFAULT NULL COMMENT 'Tenant ID at VIM' AFTER vim_tenant_name;"
682 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (16, '0.16', '0.5.2', 'enlarge vim_tenant_name and id. New config at datacenter_tenants', '2016-10-11');"
tierno8008c3a2016-10-13 15:34:28 +0000683}
684function downgrade_from_16(){
tierno11f81f62017-04-27 17:22:14 +0200685 # echo " downgrade database from version 0.16 to version 0.15"
tierno8008c3a2016-10-13 15:34:28 +0000686 echo " remove column 'config' at table 'datacenter_tenants', restoring lenght 'vim_tenant_name/id'"
tierno952ab002017-09-07 12:58:23 +0200687 sql "ALTER TABLE datacenter_tenants DROP COLUMN config;"
688 sql "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL AFTER datacenter_id;"
689 sql "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_id vim_tenant_id VARCHAR(36) NULL DEFAULT NULL COMMENT 'Tenant ID at VIM' AFTER vim_tenant_name;"
690 sql "DELETE FROM schema_version WHERE version_int='16';"
tierno8008c3a2016-10-13 15:34:28 +0000691}
692
montesmoreno0c8def02016-12-22 12:16:23 +0000693function upgrade_to_17(){
tierno11f81f62017-04-27 17:22:14 +0200694 # echo " upgrade database from version 0.16 to version 0.17"
montesmoreno0c8def02016-12-22 12:16:23 +0000695 echo " add column 'extended' at table 'datacenter_flavors'"
tierno952ab002017-09-07 12:58:23 +0200696 sql "ALTER TABLE datacenters_flavors ADD extended varchar(2000) NULL COMMENT 'Extra description json format of additional devices';"
697 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (17, '0.17', '0.5.3', 'Extra description json format of additional devices in datacenter_flavors', '2016-12-20');"
montesmoreno0c8def02016-12-22 12:16:23 +0000698}
699function downgrade_from_17(){
tierno11f81f62017-04-27 17:22:14 +0200700 # echo " downgrade database from version 0.17 to version 0.16"
montesmoreno0c8def02016-12-22 12:16:23 +0000701 echo " remove column 'extended' from table 'datacenter_flavors'"
tierno952ab002017-09-07 12:58:23 +0200702 sql "ALTER TABLE datacenters_flavors DROP COLUMN extended;"
703 sql "DELETE FROM schema_version WHERE version_int='17';"
montesmoreno0c8def02016-12-22 12:16:23 +0000704}
705
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000706function upgrade_to_18(){
tierno11f81f62017-04-27 17:22:14 +0200707 # echo " upgrade database from version 0.17 to version 0.18"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000708 echo " add columns 'floating_ip' and 'port_security' at tables 'interfaces' and 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200709 sql "ALTER TABLE interfaces ADD floating_ip BOOL DEFAULT 0 NOT NULL COMMENT 'Indicates if a floating_ip must be associated to this interface';"
710 sql "ALTER TABLE interfaces ADD port_security BOOL DEFAULT 1 NOT NULL COMMENT 'Indicates if port security must be enabled or disabled. By default it is enabled';"
711 sql "ALTER TABLE instance_interfaces ADD floating_ip BOOL DEFAULT 0 NOT NULL COMMENT 'Indicates if a floating_ip must be associated to this interface';"
712 sql "ALTER TABLE instance_interfaces ADD port_security BOOL DEFAULT 1 NOT NULL COMMENT 'Indicates if port security must be enabled or disabled. By default it is enabled';"
713 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (18, '0.18', '0.5.4', 'Add columns \'floating_ip\' and \'port_security\' at tables \'interfaces\' and \'instance_interfaces\'', '2017-01-09');"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000714}
715function downgrade_from_18(){
tierno11f81f62017-04-27 17:22:14 +0200716 # echo " downgrade database from version 0.18 to version 0.17"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000717 echo " remove columns 'floating_ip' and 'port_security' from tables 'interfaces' and 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200718 sql "ALTER TABLE interfaces DROP COLUMN floating_ip;"
719 sql "ALTER TABLE interfaces DROP COLUMN port_security;"
720 sql "ALTER TABLE instance_interfaces DROP COLUMN floating_ip;"
721 sql "ALTER TABLE instance_interfaces DROP COLUMN port_security;"
722 sql "DELETE FROM schema_version WHERE version_int='18';"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000723}
724
tierno36c0b172017-01-12 18:32:28 +0100725function upgrade_to_19(){
tierno11f81f62017-04-27 17:22:14 +0200726 # echo " upgrade database from version 0.18 to version 0.19"
tierno36c0b172017-01-12 18:32:28 +0100727 echo " add column 'boot_data' at table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200728 sql "ALTER TABLE vms ADD COLUMN boot_data TEXT NULL DEFAULT NULL AFTER image_path;"
729 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (19, '0.19', '0.5.5', 'Extra Boot-data content at VNFC (vms)', '2017-01-11');"
tierno36c0b172017-01-12 18:32:28 +0100730}
731function downgrade_from_19(){
tierno11f81f62017-04-27 17:22:14 +0200732 # echo " downgrade database from version 0.19 to version 0.18"
tierno36c0b172017-01-12 18:32:28 +0100733 echo " remove column 'boot_data' from table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200734 sql "ALTER TABLE vms DROP COLUMN boot_data;"
735 sql "DELETE FROM schema_version WHERE version_int='19';"
tierno36c0b172017-01-12 18:32:28 +0100736}
737
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100738function upgrade_to_20(){
tierno11f81f62017-04-27 17:22:14 +0200739 # echo " upgrade database from version 0.19 to version 0.20"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100740 echo " add column 'sdn_net_id' at table 'instance_nets' and columns 'sdn_port_id', 'compute_node', 'pci' and 'vlan' to table 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200741 sql "ALTER TABLE instance_nets ADD sdn_net_id varchar(36) DEFAULT NULL NULL COMMENT 'Network id in ovim';"
742 sql "ALTER TABLE instance_interfaces ADD sdn_port_id varchar(36) DEFAULT NULL NULL COMMENT 'Port id in ovim';"
743 sql "ALTER TABLE instance_interfaces ADD compute_node varchar(100) DEFAULT NULL NULL COMMENT 'Compute node id used to specify the SDN port mapping';"
744 sql "ALTER TABLE instance_interfaces ADD pci varchar(12) DEFAULT NULL NULL COMMENT 'PCI of the physical port in the host';"
745 sql "ALTER TABLE instance_interfaces ADD vlan SMALLINT UNSIGNED DEFAULT NULL NULL COMMENT 'VLAN tag used by the port';"
746 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (20, '0.20', '0.5.9', 'Added columns to store dataplane connectivity info', '2017-03-13');"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100747}
748function downgrade_from_20(){
tierno11f81f62017-04-27 17:22:14 +0200749 # echo " downgrade database from version 0.20 to version 0.19"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100750 echo " remove column 'sdn_net_id' at table 'instance_nets' and columns 'sdn_port_id', 'compute_node', 'pci' and 'vlan' to table 'instance_interfaces'"
tierno952ab002017-09-07 12:58:23 +0200751 sql "ALTER TABLE instance_nets DROP COLUMN sdn_net_id;"
752 sql "ALTER TABLE instance_interfaces DROP COLUMN vlan;"
753 sql "ALTER TABLE instance_interfaces DROP COLUMN pci;"
754 sql "ALTER TABLE instance_interfaces DROP COLUMN compute_node;"
755 sql "ALTER TABLE instance_interfaces DROP COLUMN sdn_port_id;"
756 sql "DELETE FROM schema_version WHERE version_int='20';"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100757}
758
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200759function upgrade_to_21(){
760 # echo " upgrade database from version 0.20 to version 0.21"
761 echo " edit 'instance_nets' to allow instance_scenario_id=None"
tierno952ab002017-09-07 12:58:23 +0200762 sql "ALTER TABLE instance_nets MODIFY COLUMN instance_scenario_id varchar(36) NULL;"
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200763 echo " enlarge column 'dns_address' at table 'ip_profiles'"
tierno952ab002017-09-07 12:58:23 +0200764 sql "ALTER TABLE ip_profiles MODIFY dns_address varchar(255) DEFAULT NULL NULL "\
765 "comment 'dns ip list separated by semicolon';"
766 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (21, '0.21', '0.5.15', 'Edit instance_nets to allow instance_scenario_id=None and enlarge column dns_address at table ip_profiles', '2017-06-02');"
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200767}
768function downgrade_from_21(){
769 # echo " downgrade database from version 0.21 to version 0.20"
770 echo " edit 'instance_nets' to disallow instance_scenario_id=None"
771 #Delete all lines with a instance_scenario_id=NULL in order to disable this option
tierno952ab002017-09-07 12:58:23 +0200772 sql "DELETE FROM instance_nets WHERE instance_scenario_id IS NULL;"
773 sql "ALTER TABLE instance_nets MODIFY COLUMN instance_scenario_id varchar(36) NOT NULL;"
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200774 echo " shorten column 'dns_address' at table 'ip_profiles'"
tierno952ab002017-09-07 12:58:23 +0200775 sql "ALTER TABLE ip_profiles MODIFY dns_address varchar(64) DEFAULT NULL NULL;"
776 sql "DELETE FROM schema_version WHERE version_int='21';"
Pablo Montes Moreno6aa0b2b2017-05-23 18:33:12 +0200777}
778
garciadeblas97a50f62017-07-05 11:42:44 +0200779function upgrade_to_22(){
780 # echo " upgrade database from version 0.21 to version 0.22"
781 echo " Changed type of ram in 'flavors' from SMALLINT to MEDIUMINT"
tierno952ab002017-09-07 12:58:23 +0200782 sql "ALTER TABLE flavors CHANGE COLUMN ram ram MEDIUMINT(7) UNSIGNED NULL DEFAULT NULL AFTER disk;"
783 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (22, '0.22', '0.5.16', 'Changed type of ram in flavors from SMALLINT to MEDIUMINT', '2017-06-02');"
garciadeblas97a50f62017-07-05 11:42:44 +0200784}
785function downgrade_from_22(){
786 # echo " downgrade database from version 0.22 to version 0.21"
787 echo " Changed type of ram in 'flavors' from MEDIUMINT to SMALLINT"
tierno952ab002017-09-07 12:58:23 +0200788 sql "ALTER TABLE flavors CHANGE COLUMN ram ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL AFTER disk;"
789 sql "DELETE FROM schema_version WHERE version_int='22';"
garciadeblas97a50f62017-07-05 11:42:44 +0200790}
791
mirabal29356312017-07-27 12:21:22 +0200792function upgrade_to_23(){
793 # echo " upgrade database from version 0.22 to version 0.23"
794 echo " add column 'availability_zone' at table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200795 sql "ALTER TABLE mano_db.vms ADD COLUMN availability_zone VARCHAR(255) NULL AFTER modified_at;"
796 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (23, '0.23', '0.5.20',"\
797 "'Changed type of ram in flavors from SMALLINT to MEDIUMINT', '2017-08-29');"
mirabal29356312017-07-27 12:21:22 +0200798}
799function downgrade_from_23(){
800 # echo " downgrade database from version 0.23 to version 0.22"
801 echo " remove column 'availability_zone' from table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200802 sql "ALTER TABLE mano_db.vms DROP COLUMN availability_zone;"
803 sql "DELETE FROM schema_version WHERE version_int='23';"
mirabal29356312017-07-27 12:21:22 +0200804}
805
tierno8e690322017-08-10 15:58:50 +0200806function upgrade_to_24(){
807 # echo " upgrade database from version 0.23 to version 0.24"
808 echo " Add 'count' to table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200809 sql "ALTER TABLE vms ADD COLUMN count SMALLINT NOT NULL DEFAULT '1' AFTER vnf_id;"
810 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) "\
811 "VALUES (24, '0.24', '0.5.21', 'Added vnfd fields', '2017-08-29');"
tierno8e690322017-08-10 15:58:50 +0200812}
813function downgrade_from_24(){
814 # echo " downgrade database from version 0.24 to version 0.23"
815 echo " Remove 'count' from table 'vms'"
tierno952ab002017-09-07 12:58:23 +0200816 sql "ALTER TABLE vms DROP COLUMN count;"
817 sql "DELETE FROM schema_version WHERE version_int='24';"
tierno8e690322017-08-10 15:58:50 +0200818}
tiernof1ba57e2017-09-07 12:23:19 +0200819function upgrade_to_25(){
820 # echo " upgrade database from version 0.24 to version 0.25"
821 echo " Add 'osm_id','short_name','vendor' to tables 'vnfs', 'scenarios'"
822 for table in vnfs scenarios; do
823 sql "ALTER TABLE $table ADD COLUMN osm_id VARCHAR(255) NULL AFTER uuid, "\
824 "ADD UNIQUE INDEX osm_id_tenant_id (osm_id, tenant_id), "\
825 "ADD COLUMN short_name VARCHAR(255) NULL AFTER name, "\
826 "ADD COLUMN vendor VARCHAR(255) NULL AFTER description;"
827 done
828 sql "ALTER TABLE vnfs ADD COLUMN mgmt_access VARCHAR(2000) NULL AFTER vendor;"
829 sql "ALTER TABLE vms ADD COLUMN osm_id VARCHAR(255) NULL AFTER uuid;"
830 sql "ALTER TABLE sce_vnfs ADD COLUMN member_vnf_index SMALLINT(6) NULL DEFAULT NULL AFTER uuid;"
831 echo " Add 'security_group' to table 'ip_profiles'"
832 sql "ALTER TABLE ip_profiles ADD COLUMN security_group VARCHAR(255) NULL DEFAULT NULL AFTER dhcp_count;"
833
834 sql "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) "\
835 "VALUES (25, '0.25', '0.5.22', 'Added osm_id to vnfs,scenarios', '2017-09-01');"
836}
837function downgrade_from_25(){
838 # echo " downgrade database from version 0.25 to version 0.24"
839 echo " Remove 'osm_id','short_name','vendor' from tables 'vnfs', 'scenarios'"
840 for table in vnfs scenarios; do
841 sql "ALTER TABLE $table DROP INDEX osm_id_tenant_id, DROP COLUMN osm_id, "\
842 "DROP COLUMN short_name, DROP COLUMN vendor;"
843 done
844 sql "ALTER TABLE vnfs DROP COLUMN mgmt_access;"
845 sql "ALTER TABLE vms DROP COLUMN osm_id;"
846 sql "ALTER TABLE sce_vnfs DROP COLUMN member_vnf_index;"
847 echo " Remove 'security_group' from table 'ip_profiles'"
848 sql "ALTER TABLE ip_profiles DROP COLUMN security_group;"
849
850 sql "DELETE FROM schema_version WHERE version_int='25';"
851}
tierno8e690322017-08-10 15:58:50 +0200852
tierno7edb6752016-03-21 17:37:52 +0100853function upgrade_to_X(){
854 echo " change 'datacenter_nets'"
tierno952ab002017-09-07 12:58:23 +0200855 sql "ALTER TABLE datacenter_nets ADD COLUMN vim_tenant_id VARCHAR(36) NOT NULL AFTER datacenter_id, DROP INDEX name_datacenter_id, ADD UNIQUE INDEX name_datacenter_id (name, datacenter_id, vim_tenant_id);"
tierno7edb6752016-03-21 17:37:52 +0100856}
857function downgrade_from_X(){
858 echo " Change back 'datacenter_nets'"
tierno952ab002017-09-07 12:58:23 +0200859 sql "ALTER TABLE datacenter_nets DROP COLUMN vim_tenant_id, DROP INDEX name_datacenter_id, ADD UNIQUE INDEX name_datacenter_id (name, datacenter_id);"
tierno7edb6752016-03-21 17:37:52 +0100860}
tierno952ab002017-09-07 12:58:23 +0200861#TODO ... put functions here
tierno7edb6752016-03-21 17:37:52 +0100862
tierno11f81f62017-04-27 17:22:14 +0200863# echo "db version = "${DATABASE_VER_NUM}
tierno952ab002017-09-07 12:58:23 +0200864[ $DB_VERSION -eq $DATABASE_VER_NUM ] && echo " current database version '$DATABASE_VER_NUM' is ok" && exit 0
865
866# Create a backup database content
867TEMPFILE2="$(mktemp -q --tmpdir "backupdb.XXXXXX.sql")"
868trap 'rm -f "$TEMPFILE2"' EXIT
869mysqldump $DEF_EXTRA_FILE_PARAM --add-drop-table --add-drop-database --routines --databases $DBNAME > $TEMPFILE2
870
871function rollback_db()
872{
873 cat $TEMPFILE2 | mysql $DEF_EXTRA_FILE_PARAM && echo " Rollback database OK" ||
874 echo " Rollback database FAIL"
875 exit 1
876}
877
878function sql() # send a sql command
879{
880 echo "$*" | $DBCMD || ! echo " ERROR. Aborted!" || rollback_db
881 return 0
882}
883
tierno7edb6752016-03-21 17:37:52 +0100884#UPGRADE DATABASE step by step
tierno11f81f62017-04-27 17:22:14 +0200885while [ $DB_VERSION -gt $DATABASE_VER_NUM ]
tierno7edb6752016-03-21 17:37:52 +0100886do
tierno11f81f62017-04-27 17:22:14 +0200887 echo " upgrade database from version '$DATABASE_VER_NUM' to '$((DATABASE_VER_NUM+1))'"
tierno7edb6752016-03-21 17:37:52 +0100888 DATABASE_VER_NUM=$((DATABASE_VER_NUM+1))
889 upgrade_to_${DATABASE_VER_NUM}
890 #FILE_="${DIRNAME}/upgrade_to_${DATABASE_VER_NUM}.sh"
891 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to upgrade" >&2 && exit -1
892 #$FILE_ || exit -1 # if fail return
893done
894
895#DOWNGRADE DATABASE step by step
tierno11f81f62017-04-27 17:22:14 +0200896while [ $DB_VERSION -lt $DATABASE_VER_NUM ]
tierno7edb6752016-03-21 17:37:52 +0100897do
tierno11f81f62017-04-27 17:22:14 +0200898 echo " downgrade database from version '$DATABASE_VER_NUM' to '$((DATABASE_VER_NUM-1))'"
tierno7edb6752016-03-21 17:37:52 +0100899 #FILE_="${DIRNAME}/downgrade_from_${DATABASE_VER_NUM}.sh"
900 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to downgrade" >&2 && exit -1
901 #$FILE_ || exit -1 # if fail return
902 downgrade_from_${DATABASE_VER_NUM}
903 DATABASE_VER_NUM=$((DATABASE_VER_NUM-1))
904done
905
906#echo done
907