blob: 27e7a899a657d11d151c510234edfce08aec3dd3 [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=""
tierno11f81f62017-04-27 17:22:14 +020030DEFAULT_DBPASS="maopw"
31DBHOST=""
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
36LAST_DB_VERSION=20
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
150 exit -1;
151fi
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 ] &&
161 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
tierno7edb6752016-03-21 17:37:52 +0100191#TODO ... put next versions here
192
tierno7edb6752016-03-21 17:37:52 +0100193function upgrade_to_1(){
tierno11f81f62017-04-27 17:22:14 +0200194 # echo " upgrade database from version 0.0 to version 0.1"
tierno7edb6752016-03-21 17:37:52 +0100195 echo " CREATE TABLE \`schema_version\`"
196 echo "CREATE TABLE \`schema_version\` (
197 \`version_int\` INT NOT NULL COMMENT 'version as a number. Must not contain gaps',
198 \`version\` VARCHAR(20) NOT NULL COMMENT 'version as a text',
199 \`openmano_ver\` VARCHAR(20) NOT NULL COMMENT 'openmano version',
200 \`comments\` VARCHAR(2000) NULL COMMENT 'changes to database',
201 \`date\` DATE NULL,
202 PRIMARY KEY (\`version_int\`)
203 )
204 COMMENT='database schema control version'
205 COLLATE='utf8_general_ci'
206 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
207 echo "INSERT INTO \`schema_version\` (\`version_int\`, \`version\`, \`openmano_ver\`, \`comments\`, \`date\`)
208 VALUES (1, '0.1', '0.2.2', 'insert schema_version', '2015-05-08');" | $DBCMD
209}
210function downgrade_from_1(){
tierno11f81f62017-04-27 17:22:14 +0200211 # echo " downgrade database from version 0.1 to version 0.0"
tierno7edb6752016-03-21 17:37:52 +0100212 echo " DROP TABLE \`schema_version\`"
213 echo "DROP TABLE \`schema_version\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
214}
215function upgrade_to_2(){
tierno11f81f62017-04-27 17:22:14 +0200216 # echo " upgrade database from version 0.1 to version 0.2"
tierno7edb6752016-03-21 17:37:52 +0100217 echo " Add columns user/passwd to table 'vim_tenants'"
218 echo "ALTER TABLE vim_tenants ADD COLUMN user VARCHAR(36) NULL COMMENT 'Credentials for vim' AFTER created,
219 ADD COLUMN passwd VARCHAR(50) NULL COMMENT 'Credentials for vim' AFTER user;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
220 echo " Add table 'images' and 'datacenters_images'"
221 echo "CREATE TABLE images (
222 uuid VARCHAR(36) NOT NULL,
223 name VARCHAR(50) NOT NULL,
224 location VARCHAR(200) NOT NULL,
225 description VARCHAR(100) NULL,
226 metadata VARCHAR(400) NULL,
227 PRIMARY KEY (uuid),
228 UNIQUE INDEX location (location) )
229 COLLATE='utf8_general_ci'
230 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
231 echo "CREATE TABLE datacenters_images (
232 id INT NOT NULL AUTO_INCREMENT,
233 image_id VARCHAR(36) NOT NULL,
234 datacenter_id VARCHAR(36) NOT NULL,
235 vim_id VARCHAR(36) NOT NULL,
236 PRIMARY KEY (id),
237 CONSTRAINT FK__images FOREIGN KEY (image_id) REFERENCES images (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
238 CONSTRAINT FK__datacenters_i FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
239 COLLATE='utf8_general_ci'
240 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
241 echo " migrate data from table 'vms' into 'images'"
242 echo "INSERT INTO images (uuid, name, location) SELECT DISTINCT vim_image_id, vim_image_id, image_path FROM vms;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
243 echo "INSERT INTO datacenters_images (image_id, datacenter_id, vim_id)
244 SELECT DISTINCT vim_image_id, datacenters.uuid, vim_image_id FROM vms JOIN datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
245 echo " Add table 'flavors' and 'datacenter_flavors'"
246 echo "CREATE TABLE flavors (
247 uuid VARCHAR(36) NOT NULL,
248 name VARCHAR(50) NOT NULL,
249 description VARCHAR(100) NULL,
250 disk SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
251 ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
252 vcpus SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
253 extended VARCHAR(2000) NULL DEFAULT NULL COMMENT 'Extra description json format of needed resources and pining, orginized in sets per numa',
254 PRIMARY KEY (uuid) )
255 COLLATE='utf8_general_ci'
256 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
257 echo "CREATE TABLE datacenters_flavors (
258 id INT NOT NULL AUTO_INCREMENT,
259 flavor_id VARCHAR(36) NOT NULL,
260 datacenter_id VARCHAR(36) NOT NULL,
261 vim_id VARCHAR(36) NOT NULL,
262 PRIMARY KEY (id),
263 CONSTRAINT FK__flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
264 CONSTRAINT FK__datacenters_f FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
265 COLLATE='utf8_general_ci'
266 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
267 echo " migrate data from table 'vms' into 'flavors'"
268 echo "INSERT INTO flavors (uuid, name) SELECT DISTINCT vim_flavor_id, vim_flavor_id FROM vms;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
269 echo "INSERT INTO datacenters_flavors (flavor_id, datacenter_id, vim_id)
270 SELECT DISTINCT vim_flavor_id, datacenters.uuid, vim_flavor_id FROM vms JOIN datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
271 echo "ALTER TABLE vms ALTER vim_flavor_id DROP DEFAULT, ALTER vim_image_id DROP DEFAULT;
272 ALTER TABLE vms CHANGE COLUMN vim_flavor_id flavor_id VARCHAR(36) NOT NULL COMMENT 'Link to flavor table' AFTER vnf_id,
273 CHANGE COLUMN vim_image_id image_id VARCHAR(36) NOT NULL COMMENT 'Link to image table' AFTER flavor_id,
274 ADD CONSTRAINT FK_vms_images FOREIGN KEY (image_id) REFERENCES images (uuid),
275 ADD CONSTRAINT FK_vms_flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid);
276 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
277 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
278
279}
280
281function downgrade_from_2(){
tierno11f81f62017-04-27 17:22:14 +0200282 # echo " downgrade database from version 0.2 to version 0.1"
tierno7edb6752016-03-21 17:37:52 +0100283 echo " migrate back data from 'datacenters_images' 'datacenters_flavors' into 'vms'"
284 echo "ALTER TABLE vms ALTER image_id DROP DEFAULT, ALTER flavor_id DROP DEFAULT;
285 ALTER TABLE vms CHANGE COLUMN flavor_id vim_flavor_id VARCHAR(36) NOT NULL COMMENT 'Flavor ID in the VIM DB' AFTER vnf_id,
286 CHANGE COLUMN image_id vim_image_id VARCHAR(36) NOT NULL COMMENT 'Image ID in the VIM DB' AFTER vim_flavor_id,
287 DROP FOREIGN KEY FK_vms_flavors, DROP INDEX FK_vms_flavors,
288 DROP FOREIGN KEY FK_vms_images, DROP INDEX FK_vms_images;
289 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
290# echo "UPDATE v SET v.vim_image_id=di.vim_id
291# FROM vms as v INNER JOIN images as i ON v.vim_image_id=i.uuid
292# INNER JOIN datacenters_images as di ON i.uuid=di.image_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
293 echo " Delete columns 'user/passwd' from 'vim_tenants'"
294 echo "ALTER TABLE vim_tenants DROP COLUMN user, DROP COLUMN passwd; " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
295 echo " delete tables 'datacenter_images', 'images'"
296 echo "DROP TABLE \`datacenters_images\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
297 echo "DROP TABLE \`images\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
298 echo " delete tables 'datacenter_flavors', 'flavors'"
299 echo "DROP TABLE \`datacenters_flavors\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
300 echo "DROP TABLE \`flavors\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
301 echo "DELETE FROM schema_version WHERE version_int='2';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
302}
303
304function upgrade_to_3(){
tierno11f81f62017-04-27 17:22:14 +0200305 # echo " upgrade database from version 0.2 to version 0.3"
tierno7edb6752016-03-21 17:37:52 +0100306 echo " Change table 'logs', 'uuids"
307 echo "ALTER TABLE logs CHANGE COLUMN related related VARCHAR(36) NOT NULL COMMENT 'Relevant element for the log' AFTER nfvo_tenant_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
308 echo "ALTER TABLE uuids CHANGE COLUMN used_at used_at VARCHAR(36) NULL DEFAULT NULL COMMENT 'Table that uses this UUID' AFTER created_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
309 echo " Add column created to table 'datacenters_images' and 'datacenters_flavors'"
310 for table in datacenters_images datacenters_flavors
311 do
312 echo "ALTER TABLE $table ADD COLUMN created ENUM('true','false') NOT NULL DEFAULT 'false'
313 COMMENT 'Indicates if it has been created by openmano, or already existed' AFTER vim_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
314 done
315 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(2000) NULL DEFAULT NULL AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
316 echo " Allow null to column 'vim_interface_id' in 'instance_interfaces'"
317 echo "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; " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
318 echo " Add column config to table 'datacenters'"
319 echo "ALTER TABLE datacenters ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL COMMENT 'extra config information in json' AFTER vim_url_admin;
320 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
321 echo " Add column datacenter_id to table 'vim_tenants'"
322 echo "ALTER TABLE vim_tenants ADD COLUMN datacenter_id VARCHAR(36) NULL COMMENT 'Datacenter of this tenant' AFTER uuid,
323 DROP INDEX name, DROP INDEX vim_tenant_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
324 echo "ALTER TABLE vim_tenants CHANGE COLUMN name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL COMMENT 'tenant name at VIM' AFTER datacenter_id,
325 CHANGE COLUMN vim_tenant_id vim_tenant_id VARCHAR(36) NULL DEFAULT NULL COMMENT 'Tenant ID at VIM' AFTER vim_tenant_name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
326 echo "UPDATE vim_tenants as vt LEFT JOIN tenants_datacenters as td ON vt.uuid=td.vim_tenant_id
327 SET vt.datacenter_id=td.datacenter_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
328 echo "DELETE FROM vim_tenants WHERE datacenter_id is NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
329 echo "ALTER TABLE vim_tenants ALTER datacenter_id DROP DEFAULT;
330 ALTER TABLE vim_tenants
331 CHANGE COLUMN datacenter_id datacenter_id VARCHAR(36) NOT NULL COMMENT 'Datacenter of this tenant' AFTER uuid;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
332 echo "ALTER TABLE vim_tenants ADD CONSTRAINT FK_vim_tenants_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid)
333 ON UPDATE CASCADE ON DELETE CASCADE;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
334
335 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
336}
337
338
339function downgrade_from_3(){
tierno11f81f62017-04-27 17:22:14 +0200340 # echo " downgrade database from version 0.3 to version 0.2"
tierno7edb6752016-03-21 17:37:52 +0100341 echo " Change back table 'logs', 'uuids'"
342 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
343 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
344 echo " Delete column created from table 'datacenters_images' and 'datacenters_flavors'"
345 for table in datacenters_images datacenters_flavors
346 do
347 echo "ALTER TABLE $table DROP COLUMN created;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
348 done
349 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(400) NULL DEFAULT NULL AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
350 echo " Deny back null to column 'vim_interface_id' in 'instance_interfaces'"
351 echo "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; " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
352 echo " Delete column config to table 'datacenters'"
353 echo "ALTER TABLE datacenters DROP COLUMN config;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
354 echo " Delete column datacenter_id to table 'vim_tenants'"
355 echo "ALTER TABLE vim_tenants DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_vim_tenants_datacenters;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
356 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name name VARCHAR(36) NULL DEFAULT NULL COMMENT '' AFTER uuid"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
357 echo "ALTER TABLE vim_tenants ALTER name DROP DEFAULT;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
358 echo "ALTER TABLE vim_tenants CHANGE COLUMN name name VARCHAR(36) NOT NULL AFTER uuid"| $DBCMD || ! echo "Warning changing column name at vim_tenants!"
359 echo "ALTER TABLE vim_tenants ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "Warning add unique index name at vim_tenants!"
360 echo "ALTER TABLE vim_tenants ALTER vim_tenant_id DROP DEFAULT;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
361 echo "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;"| $DBCMD || ! echo "Warning changing column vim_tenant_id at vim_tenants!"
362 echo "ALTER TABLE vim_tenants ADD UNIQUE INDEX vim_tenant_id (vim_tenant_id);" | $DBCMD || ! echo "Warning add unique index vim_tenant_id at vim_tenants!"
363 echo "DELETE FROM schema_version WHERE version_int='3';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
364}
365
366function upgrade_to_4(){
tierno11f81f62017-04-27 17:22:14 +0200367 # echo " upgrade database from version 0.3 to version 0.4"
tierno7edb6752016-03-21 17:37:52 +0100368 echo " Enlarge graph field at tables 'sce_vnfs', 'sce_nets'"
369 for table in sce_vnfs sce_nets
370 do
371 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
372 done
373 echo "ALTER TABLE datacenters CHANGE COLUMN type type VARCHAR(36) NOT NULL DEFAULT 'openvim' AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
374 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
375}
376
377function downgrade_from_4(){
tierno11f81f62017-04-27 17:22:14 +0200378 # echo " downgrade database from version 0.4 to version 0.3"
tierno7edb6752016-03-21 17:37:52 +0100379 echo " Shorten back graph field at tables 'sce_vnfs', 'sce_nets'"
380 for table in sce_vnfs sce_nets
381 do
382 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
383 done
384 echo "ALTER TABLE datacenters CHANGE COLUMN type type ENUM('openvim','openstack') NOT NULL DEFAULT 'openvim' AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
385 echo "DELETE FROM schema_version WHERE version_int='4';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
386}
387
388function upgrade_to_5(){
tierno11f81f62017-04-27 17:22:14 +0200389 # echo " upgrade database from version 0.4 to version 0.5"
tierno7edb6752016-03-21 17:37:52 +0100390 echo " Add 'mac' field for bridge interfaces in table 'interfaces'"
391 echo "ALTER TABLE interfaces ADD COLUMN mac CHAR(18) NULL DEFAULT NULL AFTER model;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
392 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
393}
394function downgrade_from_5(){
tierno11f81f62017-04-27 17:22:14 +0200395 # echo " downgrade database from version 0.5 to version 0.4"
tierno7edb6752016-03-21 17:37:52 +0100396 echo " Remove 'mac' field for bridge interfaces in table 'interfaces'"
397 echo "ALTER TABLE interfaces DROP COLUMN mac;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
398 echo "DELETE FROM schema_version WHERE version_int='5';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
399}
400
401function upgrade_to_6(){
tierno11f81f62017-04-27 17:22:14 +0200402 # echo " upgrade database from version 0.5 to version 0.6"
tierno7edb6752016-03-21 17:37:52 +0100403 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
404 echo "ALTER TABLE vnfs ADD COLUMN descriptor TEXT NULL DEFAULT NULL COMMENT 'Original text descriptor used for create the VNF' AFTER class;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
405 echo "ALTER TABLE scenarios ADD COLUMN descriptor TEXT NULL DEFAULT NULL COMMENT 'Original text descriptor used for create the scenario' AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
406 echo " Add 'last_error', 'vim_info' to 'instance_vms', 'instance_nets'"
407 echo "ALTER TABLE instance_vms ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
408 echo "ALTER TABLE instance_vms ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
409 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
410 echo "ALTER TABLE instance_nets ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
411 echo "ALTER TABLE instance_nets ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
412 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
413 echo " Add 'mac_address', 'ip_address', 'vim_info' to 'instance_interfaces'"
414 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
415 echo " Add 'sce_vnf_id','datacenter_id','vim_tenant_id' field to 'instance_vnfs'"
416 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
417 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
418 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
419 echo " Add 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field to 'instance_nets'"
420 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
421 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
422 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
423 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
424 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
425}
426function downgrade_from_6(){
tierno11f81f62017-04-27 17:22:14 +0200427 # echo " downgrade database from version 0.6 to version 0.5"
tierno7edb6752016-03-21 17:37:52 +0100428 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
429 echo "ALTER TABLE vnfs DROP COLUMN descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
430 echo "ALTER TABLE scenarios DROP COLUMN descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
431 echo " Remove 'last_error', 'vim_info' from 'instance_vms', 'instance_nets'"
432 echo "ALTER TABLE instance_vms DROP COLUMN error_msg, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
433 echo "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE','PAUSED','INACTIVE','CREATING','ERROR','DELETING') NOT NULL DEFAULT 'CREATING' AFTER vim_vm_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
434 echo "ALTER TABLE instance_nets DROP COLUMN error_msg, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
435 echo "ALTER TABLE instance_nets CHANGE COLUMN status status ENUM('ACTIVE','DOWN','BUILD','ERROR') NOT NULL DEFAULT 'BUILD' AFTER instance_scenario_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
436 echo " Remove 'mac_address', 'ip_address', 'vim_info' from 'instance_interfaces'"
437 echo "ALTER TABLE instance_interfaces DROP COLUMN mac_address, DROP COLUMN ip_address, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
438 echo " Remove 'sce_vnf_id','datacenter_id','vim_tenant_id' field from 'instance_vnfs'"
439 echo "ALTER TABLE instance_vnfs DROP COLUMN sce_vnf_id, DROP FOREIGN KEY FK_instance_vnfs_sce_vnfs;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
440 echo "ALTER TABLE instance_vnfs DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_vnfs_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
441 echo "ALTER TABLE instance_vnfs DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_vnfs_datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
442 echo " Remove 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field from 'instance_nets'"
443 echo "ALTER TABLE instance_nets DROP COLUMN sce_net_id, DROP FOREIGN KEY FK_instance_nets_sce_nets;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
444 echo "ALTER TABLE instance_nets DROP COLUMN net_id, DROP FOREIGN KEY FK_instance_nets_nets;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
445 echo "ALTER TABLE instance_nets DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_nets_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
446 echo "ALTER TABLE instance_nets DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_nets_datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
447 echo "DELETE FROM schema_version WHERE version_int='6';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
448}
449
450function upgrade_to_7(){
tierno11f81f62017-04-27 17:22:14 +0200451 # echo " upgrade database from version 0.6 to version 0.7"
tierno7edb6752016-03-21 17:37:52 +0100452 echo " Change created_at, modified_at from timestamp to unix float at all database"
453 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
454 do
455 echo -en " $table \r"
456 echo "ALTER TABLE $table ADD COLUMN created_at_ DOUBLE NOT NULL after created_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
457 echo "UPDATE $table SET created_at_=unix_timestamp(created_at);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
458 echo "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at DOUBLE NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
459 [[ $table == uuids ]] || echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at DOUBLE NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
460 done
461
462 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
463 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
464}
465function downgrade_from_7(){
tierno11f81f62017-04-27 17:22:14 +0200466 # echo " downgrade database from version 0.7 to version 0.6"
tierno7edb6752016-03-21 17:37:52 +0100467 echo " Change back created_at, modified_at from unix float to timestamp at all database"
468 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
469 do
470 echo -en " $table \r"
tierno7edb6752016-03-21 17:37:52 +0100471 echo "ALTER TABLE $table ADD COLUMN created_at_ TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP after created_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
472 echo "UPDATE $table SET created_at_=from_unixtime(created_at);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
473 echo "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
474 [[ $table == uuids ]] || echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at TIMESTAMP NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
475 done
476 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
477 echo "DELETE FROM schema_version WHERE version_int='7';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
478}
479
480function upgrade_to_8(){
tierno11f81f62017-04-27 17:22:14 +0200481 # echo " upgrade database from version 0.7 to version 0.8"
tierno7edb6752016-03-21 17:37:52 +0100482 echo " Change enalarge name, description to 255 at all database"
483 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
484 do
485 echo -en " $table \r"
486 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR(255) NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
487 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(255) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
488 done
489 echo -en " interfaces \r"
490 echo "ALTER TABLE interfaces CHANGE COLUMN internal_name internal_name VARCHAR(255) NOT NULL, CHANGE COLUMN external_name external_name VARCHAR(255) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
491 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
492 echo -en " vim_tenants \r"
493 echo "ALTER TABLE vim_tenants CHANGE COLUMN user user VARCHAR(64) NULL DEFAULT NULL, CHANGE COLUMN passwd passwd VARCHAR(64) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
494 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
495}
496function downgrade_from_8(){
tierno11f81f62017-04-27 17:22:14 +0200497 # echo " downgrade database from version 0.8 to version 0.7"
tierno7edb6752016-03-21 17:37:52 +0100498 echo " Change back name,description to shorter length at all database"
499 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
500 do
501 name_length=50
502 [[ $table == flavors ]] || [[ $table == images ]] || name_length=36
503 echo -en " $table \r"
504 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR($name_length) NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
505 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(100) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
506 done
507 echo -en " interfaces \r"
508 echo "ALTER TABLE interfaces CHANGE COLUMN internal_name internal_name VARCHAR(25) NOT NULL, CHANGE COLUMN external_name external_name VARCHAR(25) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
509 echo -en " vim_tenants \r"
510 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
511 echo "ALTER TABLE vim_tenants CHANGE COLUMN user user VARCHAR(36) NULL DEFAULT NULL, CHANGE COLUMN passwd passwd VARCHAR(50) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
512 echo "DELETE FROM schema_version WHERE version_int='8';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
513}
514function upgrade_to_9(){
tierno11f81f62017-04-27 17:22:14 +0200515 # echo " upgrade database from version 0.8 to version 0.9"
tierno7edb6752016-03-21 17:37:52 +0100516 echo " Add more status to 'instance_vms'"
517 echo "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE:NoMgmtIP','ACTIVE','INACTIVE','BUILD','ERROR','VIM_ERROR','PAUSED','SUSPENDED','DELETED') NOT NULL DEFAULT 'BUILD';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
518 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
519}
520function downgrade_from_9(){
tierno11f81f62017-04-27 17:22:14 +0200521 # echo " downgrade database from version 0.9 to version 0.8"
tierno7edb6752016-03-21 17:37:52 +0100522 echo " Add more status to 'instance_vms'"
523 echo "ALTER TABLE instance_vms CHANGE COLUMN status status ENUM('ACTIVE','INACTIVE','BUILD','ERROR','VIM_ERROR','PAUSED','SUSPENDED','DELETED') NOT NULL DEFAULT 'BUILD';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
524 echo "DELETE FROM schema_version WHERE version_int='9';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
525}
526function upgrade_to_10(){
tierno11f81f62017-04-27 17:22:14 +0200527 # echo " upgrade database from version 0.9 to version 0.10"
tierno7edb6752016-03-21 17:37:52 +0100528 echo " add tenant to 'vnfs'"
529 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
530 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
531 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
532 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
533 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
534 echo " rename 'vim_tenants' table to 'datacenter_tenants'"
535 echo "RENAME TABLE vim_tenants TO datacenter_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
536 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
537 do
538 NULL="NOT NULL"
539 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
540 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
541 echo "ALTER TABLE ${table} ALTER vim_tenant_id DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
542 echo "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); " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
543 done
544 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
545}
546
547function downgrade_from_10(){
tierno11f81f62017-04-27 17:22:14 +0200548 # echo " downgrade database from version 0.10 to version 0.9"
tierno7edb6752016-03-21 17:37:52 +0100549 echo " remove tenant from 'vnfs'"
550 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
551 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
552 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
553 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
554 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
555 echo " rename back 'datacenter_tenants' table to 'vim_tenants'"
556 echo "RENAME TABLE datacenter_tenants TO vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
557 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
558 do
559 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_datacenter_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
560 NULL="NOT NULL"
561 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
562 echo "ALTER TABLE ${table} ALTER datacenter_tenant_id DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
563 echo "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); " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
564 done
565 echo "DELETE FROM schema_version WHERE version_int='10';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
566}
567
tiernocea279c2016-07-18 12:36:49 +0200568function upgrade_to_11(){
tierno11f81f62017-04-27 17:22:14 +0200569 # echo " upgrade database from version 0.10 to version 0.11"
tiernocea279c2016-07-18 12:36:49 +0200570 echo " remove unique name at 'scenarios', 'instance_scenarios'"
571 echo "ALTER TABLE scenarios DROP INDEX name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
572 echo "ALTER TABLE instance_scenarios DROP INDEX name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
573 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
574}
575function downgrade_from_11(){
tierno11f81f62017-04-27 17:22:14 +0200576 # echo " downgrade database from version 0.11 to version 0.10"
tiernocea279c2016-07-18 12:36:49 +0200577 echo " add unique name at 'scenarios', 'instance_scenarios'"
578 echo "ALTER TABLE scenarios ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
579 echo "ALTER TABLE instance_scenarios ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
580 echo "DELETE FROM schema_version WHERE version_int='11';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
581}
582
garciadeblas0c317ee2016-08-29 12:33:06 +0200583function upgrade_to_12(){
tierno11f81f62017-04-27 17:22:14 +0200584 # echo " upgrade database from version 0.11 to version 0.12"
garciadeblas0c317ee2016-08-29 12:33:06 +0200585 echo " create ip_profiles table, with foreign keys to all nets tables, and add ip_address column to 'interfaces' and 'sce_interfaces'"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200586 echo "CREATE TABLE IF NOT EXISTS ip_profiles (
garciadeblas0c317ee2016-08-29 12:33:06 +0200587 id INT(11) NOT NULL AUTO_INCREMENT,
588 net_id VARCHAR(36) NULL DEFAULT NULL,
589 sce_net_id VARCHAR(36) NULL DEFAULT NULL,
590 instance_net_id VARCHAR(36) NULL DEFAULT NULL,
591 ip_version ENUM('IPv4','IPv6') NOT NULL DEFAULT 'IPv4',
592 subnet_address VARCHAR(64) NULL DEFAULT NULL,
593 gateway_address VARCHAR(64) NULL DEFAULT NULL,
garciadeblas0c317ee2016-08-29 12:33:06 +0200594 dns_address VARCHAR(64) NULL DEFAULT NULL,
595 dhcp_enabled ENUM('true','false') NOT NULL DEFAULT 'true',
596 dhcp_start_address VARCHAR(64) NULL DEFAULT NULL,
597 dhcp_count INT(11) NULL DEFAULT NULL,
598 PRIMARY KEY (id),
599 CONSTRAINT FK_ipprofiles_nets FOREIGN KEY (net_id) REFERENCES nets (uuid) ON DELETE CASCADE,
600 CONSTRAINT FK_ipprofiles_scenets FOREIGN KEY (sce_net_id) REFERENCES sce_nets (uuid) ON DELETE CASCADE,
601 CONSTRAINT FK_ipprofiles_instancenets FOREIGN KEY (instance_net_id) REFERENCES instance_nets (uuid) ON DELETE CASCADE )
602 COMMENT='Table containing the IP parameters of a network, either a net, a sce_net or and instance_net.'
603 COLLATE='utf8_general_ci'
604 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
605 echo "ALTER TABLE interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER mac;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
606 echo "ALTER TABLE sce_interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER interface_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
garciadeblas9f8456e2016-09-05 05:02:59 +0200607 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
garciadeblas0c317ee2016-08-29 12:33:06 +0200608}
609function downgrade_from_12(){
tierno11f81f62017-04-27 17:22:14 +0200610 # echo " downgrade database from version 0.12 to version 0.11"
garciadeblas0c317ee2016-08-29 12:33:06 +0200611 echo " delete ip_profiles table, and remove ip_address column in 'interfaces' and 'sce_interfaces'"
612 echo "DROP TABLE ip_profiles;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
613 echo "ALTER TABLE interfaces DROP COLUMN ip_address;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
614 echo "ALTER TABLE sce_interfaces DROP COLUMN ip_address;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
615 echo "DELETE FROM schema_version WHERE version_int='12';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
616}
617
tiernoa4e1a6e2016-08-31 14:19:40 +0200618function upgrade_to_13(){
tierno11f81f62017-04-27 17:22:14 +0200619 # echo " upgrade database from version 0.12 to version 0.13"
tiernoa4e1a6e2016-08-31 14:19:40 +0200620 echo " add cloud_config at 'scenarios', 'instance_scenarios'"
621 echo "ALTER TABLE scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
622 echo "ALTER TABLE instance_scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
623 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
624}
tiernobe41e222016-09-02 15:16:13 +0200625function downgrade_from_13(){
tierno11f81f62017-04-27 17:22:14 +0200626 # echo " downgrade database from version 0.13 to version 0.12"
tiernoa4e1a6e2016-08-31 14:19:40 +0200627 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
628 echo "ALTER TABLE scenarios DROP COLUMN cloud_config;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
629 echo "ALTER TABLE instance_scenarios DROP COLUMN cloud_config;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
630 echo "DELETE FROM schema_version WHERE version_int='13';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
631}
632
tierno66345bc2016-09-26 11:37:55 +0200633function upgrade_to_14(){
tierno11f81f62017-04-27 17:22:14 +0200634 # echo " upgrade database from version 0.13 to version 0.14"
tierno66345bc2016-09-26 11:37:55 +0200635 echo " remove unique index vim_net_id, instance_scenario_id at table 'instance_nets'"
636 echo "ALTER TABLE instance_nets DROP INDEX vim_net_id_instance_scenario_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
637 echo "ALTER TABLE instance_nets CHANGE COLUMN external created ENUM('true','false') NOT NULL DEFAULT 'false' COMMENT 'Created or already exists at VIM' AFTER multipoint;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
638 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
639}
640function downgrade_from_14(){
tierno11f81f62017-04-27 17:22:14 +0200641 # echo " downgrade database from version 0.14 to version 0.13"
tierno66345bc2016-09-26 11:37:55 +0200642 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
643 echo "ALTER TABLE instance_nets ADD UNIQUE INDEX vim_net_id_instance_scenario_id (vim_net_id, instance_scenario_id);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
644 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
645 echo "DELETE FROM schema_version WHERE version_int='14';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
646}
tiernoa4e1a6e2016-08-31 14:19:40 +0200647
garciadeblasb69fa9f2016-09-28 12:04:10 +0200648function upgrade_to_15(){
tierno11f81f62017-04-27 17:22:14 +0200649 # echo " upgrade database from version 0.14 to version 0.15"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200650 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"
651 echo "ALTER TABLE images ADD COLUMN checksum VARCHAR(32) NULL DEFAULT NULL AFTER name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
652 echo "ALTER TABLE images ALTER location DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
653 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
654 echo "ALTER TABLE vms ALTER image_path DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
655 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
656 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
657}
658function downgrade_from_15(){
tierno11f81f62017-04-27 17:22:14 +0200659 # echo " downgrade database from version 0.15 to version 0.14"
garciadeblasb69fa9f2016-09-28 12:04:10 +0200660 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"
661 echo "ALTER TABLE images DROP INDEX universal_name_checksum;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
662 echo "ALTER TABLE images ALTER location DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
663 echo "ALTER TABLE images CHANGE COLUMN location location VARCHAR(200) NOT NULL AFTER checksum;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
664 echo "ALTER TABLE images DROP COLUMN universal_name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
665 echo "ALTER TABLE images DROP COLUMN checksum;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
666 echo "ALTER TABLE vms ALTER image_path DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
667 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
668 echo "DELETE FROM schema_version WHERE version_int='15';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
669}
670
tierno8008c3a2016-10-13 15:34:28 +0000671function upgrade_to_16(){
tierno11f81f62017-04-27 17:22:14 +0200672 # echo " upgrade database from version 0.15 to version 0.16"
tierno8008c3a2016-10-13 15:34:28 +0000673 echo " add column 'config' at table 'datacenter_tenants', enlarge 'vim_tenant_name/id'"
674 echo "ALTER TABLE datacenter_tenants ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL AFTER passwd;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
675 echo "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(256) NULL DEFAULT NULL AFTER datacenter_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
676 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
677 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
678}
679function downgrade_from_16(){
tierno11f81f62017-04-27 17:22:14 +0200680 # echo " downgrade database from version 0.16 to version 0.15"
tierno8008c3a2016-10-13 15:34:28 +0000681 echo " remove column 'config' at table 'datacenter_tenants', restoring lenght 'vim_tenant_name/id'"
montesmoreno0c8def02016-12-22 12:16:23 +0000682 echo "ALTER TABLE datacenter_tenants DROP COLUMN config;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
tierno8008c3a2016-10-13 15:34:28 +0000683 echo "ALTER TABLE datacenter_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL AFTER datacenter_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
684 echo "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;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
685 echo "DELETE FROM schema_version WHERE version_int='16';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
686}
687
montesmoreno0c8def02016-12-22 12:16:23 +0000688function upgrade_to_17(){
tierno11f81f62017-04-27 17:22:14 +0200689 # echo " upgrade database from version 0.16 to version 0.17"
montesmoreno0c8def02016-12-22 12:16:23 +0000690 echo " add column 'extended' at table 'datacenter_flavors'"
691 echo "ALTER TABLE datacenters_flavors ADD extended varchar(2000) NULL COMMENT 'Extra description json format of additional devices';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
692 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
693}
694function downgrade_from_17(){
tierno11f81f62017-04-27 17:22:14 +0200695 # echo " downgrade database from version 0.17 to version 0.16"
montesmoreno0c8def02016-12-22 12:16:23 +0000696 echo " remove column 'extended' from table 'datacenter_flavors'"
697 echo "ALTER TABLE datacenters_flavors DROP COLUMN extended;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
698 echo "DELETE FROM schema_version WHERE version_int='17';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
699}
700
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000701function upgrade_to_18(){
tierno11f81f62017-04-27 17:22:14 +0200702 # echo " upgrade database from version 0.17 to version 0.18"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000703 echo " add columns 'floating_ip' and 'port_security' at tables 'interfaces' and 'instance_interfaces'"
704 echo "ALTER TABLE interfaces ADD floating_ip BOOL DEFAULT 0 NOT NULL COMMENT 'Indicates if a floating_ip must be associated to this interface';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
705 echo "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';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
706 echo "ALTER TABLE instance_interfaces ADD floating_ip BOOL DEFAULT 0 NOT NULL COMMENT 'Indicates if a floating_ip must be associated to this interface';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
707 echo "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';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
708 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
709}
710function downgrade_from_18(){
tierno11f81f62017-04-27 17:22:14 +0200711 # echo " downgrade database from version 0.18 to version 0.17"
montesmoreno2a1fc4e2017-01-09 16:46:04 +0000712 echo " remove columns 'floating_ip' and 'port_security' from tables 'interfaces' and 'instance_interfaces'"
713 echo "ALTER TABLE interfaces DROP COLUMN floating_ip;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
714 echo "ALTER TABLE interfaces DROP COLUMN port_security;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
715 echo "ALTER TABLE instance_interfaces DROP COLUMN floating_ip;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
716 echo "ALTER TABLE instance_interfaces DROP COLUMN port_security;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
717 echo "DELETE FROM schema_version WHERE version_int='18';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
718}
719
tierno36c0b172017-01-12 18:32:28 +0100720function upgrade_to_19(){
tierno11f81f62017-04-27 17:22:14 +0200721 # echo " upgrade database from version 0.18 to version 0.19"
tierno36c0b172017-01-12 18:32:28 +0100722 echo " add column 'boot_data' at table 'vms'"
723 echo "ALTER TABLE vms ADD COLUMN boot_data TEXT NULL DEFAULT NULL AFTER image_path;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
724 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
725}
726function downgrade_from_19(){
tierno11f81f62017-04-27 17:22:14 +0200727 # echo " downgrade database from version 0.19 to version 0.18"
tierno36c0b172017-01-12 18:32:28 +0100728 echo " remove column 'boot_data' from table 'vms'"
729 echo "ALTER TABLE vms DROP COLUMN boot_data;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
730 echo "DELETE FROM schema_version WHERE version_int='19';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
731}
732
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100733function upgrade_to_20(){
tierno11f81f62017-04-27 17:22:14 +0200734 # echo " upgrade database from version 0.19 to version 0.20"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100735 echo " add column 'sdn_net_id' at table 'instance_nets' and columns 'sdn_port_id', 'compute_node', 'pci' and 'vlan' to table 'instance_interfaces'"
736 echo "ALTER TABLE instance_nets ADD sdn_net_id varchar(36) DEFAULT NULL NULL COMMENT 'Network id in ovim';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
737 echo "ALTER TABLE instance_interfaces ADD sdn_port_id varchar(36) DEFAULT NULL NULL COMMENT 'Port id in ovim';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
738 echo "ALTER TABLE instance_interfaces ADD compute_node varchar(100) DEFAULT NULL NULL COMMENT 'Compute node id used to specify the SDN port mapping';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
739 echo "ALTER TABLE instance_interfaces ADD pci varchar(12) DEFAULT NULL NULL COMMENT 'PCI of the physical port in the host';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
740 echo "ALTER TABLE instance_interfaces ADD vlan SMALLINT UNSIGNED DEFAULT NULL NULL COMMENT 'VLAN tag used by the port';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
741 echo "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');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
742}
743function downgrade_from_20(){
tierno11f81f62017-04-27 17:22:14 +0200744 # echo " downgrade database from version 0.20 to version 0.19"
Pablo Montes Moreno3fbff9b2017-03-08 11:28:15 +0100745 echo " remove column 'sdn_net_id' at table 'instance_nets' and columns 'sdn_port_id', 'compute_node', 'pci' and 'vlan' to table 'instance_interfaces'"
746 echo "ALTER TABLE instance_nets DROP COLUMN sdn_net_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
747 echo "ALTER TABLE instance_interfaces DROP COLUMN vlan;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
748 echo "ALTER TABLE instance_interfaces DROP COLUMN pci;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
749 echo "ALTER TABLE instance_interfaces DROP COLUMN compute_node;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
750 echo "ALTER TABLE instance_interfaces DROP COLUMN sdn_port_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
751 echo "DELETE FROM schema_version WHERE version_int='20';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
752}
753
tierno7edb6752016-03-21 17:37:52 +0100754function upgrade_to_X(){
755 echo " change 'datacenter_nets'"
756 echo "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);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
757}
758function downgrade_from_X(){
759 echo " Change back 'datacenter_nets'"
760 echo "ALTER TABLE datacenter_nets DROP COLUMN vim_tenant_id, DROP INDEX name_datacenter_id, ADD UNIQUE INDEX name_datacenter_id (name, datacenter_id);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
761}
762#TODO ... put funtions here
763
tierno11f81f62017-04-27 17:22:14 +0200764# echo "db version = "${DATABASE_VER_NUM}
765[ $DB_VERSION -eq $DATABASE_VER_NUM ] && echo " current database version '$DATABASE_VER_NUM' is ok"
tierno7edb6752016-03-21 17:37:52 +0100766#UPGRADE DATABASE step by step
tierno11f81f62017-04-27 17:22:14 +0200767while [ $DB_VERSION -gt $DATABASE_VER_NUM ]
tierno7edb6752016-03-21 17:37:52 +0100768do
tierno11f81f62017-04-27 17:22:14 +0200769 echo " upgrade database from version '$DATABASE_VER_NUM' to '$((DATABASE_VER_NUM+1))'"
tierno7edb6752016-03-21 17:37:52 +0100770 DATABASE_VER_NUM=$((DATABASE_VER_NUM+1))
771 upgrade_to_${DATABASE_VER_NUM}
772 #FILE_="${DIRNAME}/upgrade_to_${DATABASE_VER_NUM}.sh"
773 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to upgrade" >&2 && exit -1
774 #$FILE_ || exit -1 # if fail return
775done
776
777#DOWNGRADE DATABASE step by step
tierno11f81f62017-04-27 17:22:14 +0200778while [ $DB_VERSION -lt $DATABASE_VER_NUM ]
tierno7edb6752016-03-21 17:37:52 +0100779do
tierno11f81f62017-04-27 17:22:14 +0200780 echo " downgrade database from version '$DATABASE_VER_NUM' to '$((DATABASE_VER_NUM-1))'"
tierno7edb6752016-03-21 17:37:52 +0100781 #FILE_="${DIRNAME}/downgrade_from_${DATABASE_VER_NUM}.sh"
782 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to downgrade" >&2 && exit -1
783 #$FILE_ || exit -1 # if fail return
784 downgrade_from_${DATABASE_VER_NUM}
785 DATABASE_VER_NUM=$((DATABASE_VER_NUM-1))
786done
787
788#echo done
789