v0.4.48 multisite implementation
[osm/RO.git] / database_utils / migrate_mano_db.sh
1 #!/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
28 DBUSER="mano"
29 DBPASS=""
30 DBHOST="localhost"
31 DBPORT="3306"
32 DBNAME="mano_db"
33
34 # Detect paths
35 MYSQL=$(which mysql)
36 AWK=$(which awk)
37 GREP=$(which grep)
38 DIRNAME=`dirname $0`
39
40 function usage(){
41 echo -e "Usage: $0 OPTIONS [{openmano_version}]"
42 echo -e " Upgrades/Downgrades openmano database preserving the content"
43 echo -e " if openmano_version is not provided it tries to get from openmanod.py using relative path"
44 echo -e " OPTIONS"
45 echo -e " -u USER database user. '$DBUSER' by default. Prompts if DB access fails"
46 echo -e " -p PASS database password. 'No password' by default. Prompts if DB access fails"
47 echo -e " -P PORT database port. '$DBPORT' by default"
48 echo -e " -h HOST database host. '$DBHOST' by default"
49 echo -e " -d NAME database name. '$DBNAME' by default. Prompts if DB access fails"
50 echo -e " --help shows this help"
51 }
52
53 while getopts ":u:p:P:h:d:-:" o; do
54 case "${o}" in
55 u)
56 DBUSER="$OPTARG"
57 ;;
58 p)
59 DBPASS="$OPTARG"
60 ;;
61 P)
62 DBPORT="$OPTARG"
63 ;;
64 d)
65 DBNAME="$OPTARG"
66 ;;
67 h)
68 DBHOST="$OPTARG"
69 ;;
70 -)
71 [ "${OPTARG}" == "help" ] && usage && exit 0
72 echo "Invalid option: --$OPTARG" >&2 && usage >&2
73 exit 1
74 ;;
75 \?)
76 echo "Invalid option: -$OPTARG" >&2 && usage >&2
77 exit 1
78 ;;
79 :)
80 echo "Option -$OPTARG requires an argument." >&2 && usage >&2
81 exit 1
82 ;;
83 *)
84 usage >&2
85 exit -1
86 ;;
87 esac
88 done
89 shift $((OPTIND-1))
90
91
92 #GET OPENMANO VERSION
93 OPENMANO_VER="$1"
94 if [ -z "$OPENMANO_VER" ]
95 then
96 OPENMANO_VER=`${DIRNAME}/../openmanod.py -v`
97 OPENMANO_VER=${OPENMANO_VER%%-r*}
98 OPENMANO_VER=${OPENMANO_VER##*version }
99 echo " Detected openmano version $OPENMANO_VER"
100 fi
101 VERSION_1=`echo $OPENMANO_VER | cut -f 1 -d"."`
102 VERSION_2=`echo $OPENMANO_VER | cut -f 2 -d"."`
103 VERSION_3=`echo $OPENMANO_VER | cut -f 3 -d"."`
104 if ! [ "$VERSION_1" -ge 0 -a "$VERSION_2" -ge 0 -a "$VERSION_3" -ge 0 ] 2>/dev/null
105 then
106 [ -n "$1" ] && echo "Invalid openmano version '$1', expected 'X.X.X'" >&2
107 [ -z "$1" ] && echo "Can not get openmano version" >&2
108 exit -1
109 fi
110 OPENMANO_VER_NUM=`printf "%d%03d%03d" ${VERSION_1} ${VERSION_2} ${VERSION_3}`
111
112 #check and ask for database user password
113 DBUSER_="-u$DBUSER"
114 [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS"
115 DBHOST_="-h$DBHOST"
116 DBPORT_="-P$DBPORT"
117 while ! echo ";" | mysql $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ $DBNAME >/dev/null 2>&1
118 do
119 [ -n "$logintry" ] && echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)"
120 [ -z "$logintry" ] && echo -e "\nProvide database name and credentials"
121 read -e -p "mysql database name($DBNAME): " KK
122 [ -n "$KK" ] && DBNAME="$KK"
123 read -e -p "mysql user($DBUSER): " KK
124 [ -n "$KK" ] && DBUSER="$KK" && DBUSER_="-u$DBUSER"
125 read -e -s -p "mysql password: " DBPASS
126 [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS"
127 [ -z "$DBPASS" ] && DBPASS_=""
128 logintry="yes"
129 echo
130 done
131
132 DBCMD="mysql $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ $DBNAME"
133 #echo DBCMD $DBCMD
134
135 #GET DATABASE VERSION
136 #check that the database seems a openmano database
137 if ! echo -e "show create table vnfs;\nshow create table scenarios" | $DBCMD >/dev/null 2>&1
138 then
139 echo " database $DBNAME does not seem to be an openmano database" >&2
140 exit -1;
141 fi
142
143 if ! echo 'show create table schema_version;' | $DBCMD >/dev/null 2>&1
144 then
145 DATABASE_VER="0.0"
146 DATABASE_VER_NUM=0
147 else
148 DATABASE_VER_NUM=`echo "select max(version_int) from schema_version;" | $DBCMD | tail -n+2`
149 DATABASE_VER=`echo "select version from schema_version where version_int='$DATABASE_VER_NUM';" | $DBCMD | tail -n+2`
150 [ "$DATABASE_VER_NUM" -lt 0 -o "$DATABASE_VER_NUM" -gt 100 ] && echo " Error can not get database version ($DATABASE_VER?)" >&2 && exit -1
151 #echo "_${DATABASE_VER_NUM}_${DATABASE_VER}"
152 fi
153
154
155 #GET DATABASE TARGET VERSION
156 DATABASE_TARGET_VER_NUM=0
157 [ $OPENMANO_VER_NUM -ge 2002 ] && DATABASE_TARGET_VER_NUM=1 #0.2.2 => 1
158 [ $OPENMANO_VER_NUM -ge 2005 ] && DATABASE_TARGET_VER_NUM=2 #0.2.5 => 2
159 [ $OPENMANO_VER_NUM -ge 3003 ] && DATABASE_TARGET_VER_NUM=3 #0.3.3 => 3
160 [ $OPENMANO_VER_NUM -ge 3005 ] && DATABASE_TARGET_VER_NUM=4 #0.3.5 => 4
161 [ $OPENMANO_VER_NUM -ge 4001 ] && DATABASE_TARGET_VER_NUM=5 #0.4.1 => 5
162 [ $OPENMANO_VER_NUM -ge 4002 ] && DATABASE_TARGET_VER_NUM=6 #0.4.2 => 6
163 [ $OPENMANO_VER_NUM -ge 4003 ] && DATABASE_TARGET_VER_NUM=7 #0.4.3 => 7
164 [ $OPENMANO_VER_NUM -ge 4032 ] && DATABASE_TARGET_VER_NUM=8 #0.4.32=> 8
165 [ $OPENMANO_VER_NUM -ge 4033 ] && DATABASE_TARGET_VER_NUM=9 #0.4.33=> 9
166 [ $OPENMANO_VER_NUM -ge 4036 ] && DATABASE_TARGET_VER_NUM=10 #0.4.36=> 10
167 [ $OPENMANO_VER_NUM -ge 4043 ] && DATABASE_TARGET_VER_NUM=11 #0.4.43=> 11
168 [ $OPENMANO_VER_NUM -ge 4046 ] && DATABASE_TARGET_VER_NUM=12 #0.4.46=> 12
169 [ $OPENMANO_VER_NUM -ge 4047 ] && DATABASE_TARGET_VER_NUM=13 #0.4.47=> 13
170 #TODO ... put next versions here
171
172
173 function upgrade_to_1(){
174 echo " upgrade database from version 0.0 to version 0.1"
175 echo " CREATE TABLE \`schema_version\`"
176 echo "CREATE TABLE \`schema_version\` (
177 \`version_int\` INT NOT NULL COMMENT 'version as a number. Must not contain gaps',
178 \`version\` VARCHAR(20) NOT NULL COMMENT 'version as a text',
179 \`openmano_ver\` VARCHAR(20) NOT NULL COMMENT 'openmano version',
180 \`comments\` VARCHAR(2000) NULL COMMENT 'changes to database',
181 \`date\` DATE NULL,
182 PRIMARY KEY (\`version_int\`)
183 )
184 COMMENT='database schema control version'
185 COLLATE='utf8_general_ci'
186 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
187 echo "INSERT INTO \`schema_version\` (\`version_int\`, \`version\`, \`openmano_ver\`, \`comments\`, \`date\`)
188 VALUES (1, '0.1', '0.2.2', 'insert schema_version', '2015-05-08');" | $DBCMD
189 }
190 function downgrade_from_1(){
191 echo " downgrade database from version 0.1 to version 0.0"
192 echo " DROP TABLE \`schema_version\`"
193 echo "DROP TABLE \`schema_version\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
194 }
195 function upgrade_to_2(){
196 echo " upgrade database from version 0.1 to version 0.2"
197 echo " Add columns user/passwd to table 'vim_tenants'"
198 echo "ALTER TABLE vim_tenants ADD COLUMN user VARCHAR(36) NULL COMMENT 'Credentials for vim' AFTER created,
199 ADD COLUMN passwd VARCHAR(50) NULL COMMENT 'Credentials for vim' AFTER user;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
200 echo " Add table 'images' and 'datacenters_images'"
201 echo "CREATE TABLE images (
202 uuid VARCHAR(36) NOT NULL,
203 name VARCHAR(50) NOT NULL,
204 location VARCHAR(200) NOT NULL,
205 description VARCHAR(100) NULL,
206 metadata VARCHAR(400) NULL,
207 PRIMARY KEY (uuid),
208 UNIQUE INDEX location (location) )
209 COLLATE='utf8_general_ci'
210 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
211 echo "CREATE TABLE datacenters_images (
212 id INT NOT NULL AUTO_INCREMENT,
213 image_id VARCHAR(36) NOT NULL,
214 datacenter_id VARCHAR(36) NOT NULL,
215 vim_id VARCHAR(36) NOT NULL,
216 PRIMARY KEY (id),
217 CONSTRAINT FK__images FOREIGN KEY (image_id) REFERENCES images (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
218 CONSTRAINT FK__datacenters_i FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
219 COLLATE='utf8_general_ci'
220 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
221 echo " migrate data from table 'vms' into 'images'"
222 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
223 echo "INSERT INTO datacenters_images (image_id, datacenter_id, vim_id)
224 SELECT DISTINCT vim_image_id, datacenters.uuid, vim_image_id FROM vms JOIN datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
225 echo " Add table 'flavors' and 'datacenter_flavors'"
226 echo "CREATE TABLE flavors (
227 uuid VARCHAR(36) NOT NULL,
228 name VARCHAR(50) NOT NULL,
229 description VARCHAR(100) NULL,
230 disk SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
231 ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
232 vcpus SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
233 extended VARCHAR(2000) NULL DEFAULT NULL COMMENT 'Extra description json format of needed resources and pining, orginized in sets per numa',
234 PRIMARY KEY (uuid) )
235 COLLATE='utf8_general_ci'
236 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
237 echo "CREATE TABLE datacenters_flavors (
238 id INT NOT NULL AUTO_INCREMENT,
239 flavor_id VARCHAR(36) NOT NULL,
240 datacenter_id VARCHAR(36) NOT NULL,
241 vim_id VARCHAR(36) NOT NULL,
242 PRIMARY KEY (id),
243 CONSTRAINT FK__flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
244 CONSTRAINT FK__datacenters_f FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
245 COLLATE='utf8_general_ci'
246 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
247 echo " migrate data from table 'vms' into 'flavors'"
248 echo "INSERT INTO flavors (uuid, name) SELECT DISTINCT vim_flavor_id, vim_flavor_id FROM vms;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
249 echo "INSERT INTO datacenters_flavors (flavor_id, datacenter_id, vim_id)
250 SELECT DISTINCT vim_flavor_id, datacenters.uuid, vim_flavor_id FROM vms JOIN datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
251 echo "ALTER TABLE vms ALTER vim_flavor_id DROP DEFAULT, ALTER vim_image_id DROP DEFAULT;
252 ALTER TABLE vms CHANGE COLUMN vim_flavor_id flavor_id VARCHAR(36) NOT NULL COMMENT 'Link to flavor table' AFTER vnf_id,
253 CHANGE COLUMN vim_image_id image_id VARCHAR(36) NOT NULL COMMENT 'Link to image table' AFTER flavor_id,
254 ADD CONSTRAINT FK_vms_images FOREIGN KEY (image_id) REFERENCES images (uuid),
255 ADD CONSTRAINT FK_vms_flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid);
256 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
257 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
258
259 }
260
261 function downgrade_from_2(){
262 echo " downgrade database from version 0.2 to version 0.1"
263 echo " migrate back data from 'datacenters_images' 'datacenters_flavors' into 'vms'"
264 echo "ALTER TABLE vms ALTER image_id DROP DEFAULT, ALTER flavor_id DROP DEFAULT;
265 ALTER TABLE vms CHANGE COLUMN flavor_id vim_flavor_id VARCHAR(36) NOT NULL COMMENT 'Flavor ID in the VIM DB' AFTER vnf_id,
266 CHANGE COLUMN image_id vim_image_id VARCHAR(36) NOT NULL COMMENT 'Image ID in the VIM DB' AFTER vim_flavor_id,
267 DROP FOREIGN KEY FK_vms_flavors, DROP INDEX FK_vms_flavors,
268 DROP FOREIGN KEY FK_vms_images, DROP INDEX FK_vms_images;
269 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
270 # echo "UPDATE v SET v.vim_image_id=di.vim_id
271 # FROM vms as v INNER JOIN images as i ON v.vim_image_id=i.uuid
272 # INNER JOIN datacenters_images as di ON i.uuid=di.image_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
273 echo " Delete columns 'user/passwd' from 'vim_tenants'"
274 echo "ALTER TABLE vim_tenants DROP COLUMN user, DROP COLUMN passwd; " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
275 echo " delete tables 'datacenter_images', 'images'"
276 echo "DROP TABLE \`datacenters_images\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
277 echo "DROP TABLE \`images\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
278 echo " delete tables 'datacenter_flavors', 'flavors'"
279 echo "DROP TABLE \`datacenters_flavors\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
280 echo "DROP TABLE \`flavors\`;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
281 echo "DELETE FROM schema_version WHERE version_int='2';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
282 }
283
284 function upgrade_to_3(){
285 echo " upgrade database from version 0.2 to version 0.3"
286 echo " Change table 'logs', 'uuids"
287 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
288 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
289 echo " Add column created to table 'datacenters_images' and 'datacenters_flavors'"
290 for table in datacenters_images datacenters_flavors
291 do
292 echo "ALTER TABLE $table ADD COLUMN created ENUM('true','false') NOT NULL DEFAULT 'false'
293 COMMENT 'Indicates if it has been created by openmano, or already existed' AFTER vim_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
294 done
295 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(2000) NULL DEFAULT NULL AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
296 echo " Allow null to column 'vim_interface_id' in 'instance_interfaces'"
297 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
298 echo " Add column config to table 'datacenters'"
299 echo "ALTER TABLE datacenters ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL COMMENT 'extra config information in json' AFTER vim_url_admin;
300 " | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
301 echo " Add column datacenter_id to table 'vim_tenants'"
302 echo "ALTER TABLE vim_tenants ADD COLUMN datacenter_id VARCHAR(36) NULL COMMENT 'Datacenter of this tenant' AFTER uuid,
303 DROP INDEX name, DROP INDEX vim_tenant_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
304 echo "ALTER TABLE vim_tenants CHANGE COLUMN name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL COMMENT 'tenant name at VIM' AFTER datacenter_id,
305 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
306 echo "UPDATE vim_tenants as vt LEFT JOIN tenants_datacenters as td ON vt.uuid=td.vim_tenant_id
307 SET vt.datacenter_id=td.datacenter_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
308 echo "DELETE FROM vim_tenants WHERE datacenter_id is NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
309 echo "ALTER TABLE vim_tenants ALTER datacenter_id DROP DEFAULT;
310 ALTER TABLE vim_tenants
311 CHANGE COLUMN datacenter_id datacenter_id VARCHAR(36) NOT NULL COMMENT 'Datacenter of this tenant' AFTER uuid;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
312 echo "ALTER TABLE vim_tenants ADD CONSTRAINT FK_vim_tenants_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid)
313 ON UPDATE CASCADE ON DELETE CASCADE;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
314
315 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
316 }
317
318
319 function downgrade_from_3(){
320 echo " downgrade database from version 0.3 to version 0.2"
321 echo " Change back table 'logs', 'uuids'"
322 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
323 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
324 echo " Delete column created from table 'datacenters_images' and 'datacenters_flavors'"
325 for table in datacenters_images datacenters_flavors
326 do
327 echo "ALTER TABLE $table DROP COLUMN created;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
328 done
329 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(400) NULL DEFAULT NULL AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
330 echo " Deny back null to column 'vim_interface_id' in 'instance_interfaces'"
331 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
332 echo " Delete column config to table 'datacenters'"
333 echo "ALTER TABLE datacenters DROP COLUMN config;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
334 echo " Delete column datacenter_id to table 'vim_tenants'"
335 echo "ALTER TABLE vim_tenants DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_vim_tenants_datacenters;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
336 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
337 echo "ALTER TABLE vim_tenants ALTER name DROP DEFAULT;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
338 echo "ALTER TABLE vim_tenants CHANGE COLUMN name name VARCHAR(36) NOT NULL AFTER uuid"| $DBCMD || ! echo "Warning changing column name at vim_tenants!"
339 echo "ALTER TABLE vim_tenants ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "Warning add unique index name at vim_tenants!"
340 echo "ALTER TABLE vim_tenants ALTER vim_tenant_id DROP DEFAULT;"| $DBCMD || ! echo "ERROR. Aborted!" || exit -1
341 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!"
342 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!"
343 echo "DELETE FROM schema_version WHERE version_int='3';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
344 }
345
346 function upgrade_to_4(){
347 echo " upgrade database from version 0.3 to version 0.4"
348 echo " Enlarge graph field at tables 'sce_vnfs', 'sce_nets'"
349 for table in sce_vnfs sce_nets
350 do
351 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
352 done
353 echo "ALTER TABLE datacenters CHANGE COLUMN type type VARCHAR(36) NOT NULL DEFAULT 'openvim' AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
354 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
355 }
356
357 function downgrade_from_4(){
358 echo " downgrade database from version 0.4 to version 0.3"
359 echo " Shorten back graph field at tables 'sce_vnfs', 'sce_nets'"
360 for table in sce_vnfs sce_nets
361 do
362 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
363 done
364 echo "ALTER TABLE datacenters CHANGE COLUMN type type ENUM('openvim','openstack') NOT NULL DEFAULT 'openvim' AFTER description;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
365 echo "DELETE FROM schema_version WHERE version_int='4';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
366 }
367
368 function upgrade_to_5(){
369 echo " upgrade database from version 0.4 to version 0.5"
370 echo " Add 'mac' field for bridge interfaces in table 'interfaces'"
371 echo "ALTER TABLE interfaces ADD COLUMN mac CHAR(18) NULL DEFAULT NULL AFTER model;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
372 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
373 }
374 function downgrade_from_5(){
375 echo " downgrade database from version 0.5 to version 0.4"
376 echo " Remove 'mac' field for bridge interfaces in table 'interfaces'"
377 echo "ALTER TABLE interfaces DROP COLUMN mac;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
378 echo "DELETE FROM schema_version WHERE version_int='5';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
379 }
380
381 function upgrade_to_6(){
382 echo " upgrade database from version 0.5 to version 0.6"
383 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
384 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
385 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
386 echo " Add 'last_error', 'vim_info' to 'instance_vms', 'instance_nets'"
387 echo "ALTER TABLE instance_vms ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
388 echo "ALTER TABLE instance_vms ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
389 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
390 echo "ALTER TABLE instance_nets ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
391 echo "ALTER TABLE instance_nets ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
392 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
393 echo " Add 'mac_address', 'ip_address', 'vim_info' to 'instance_interfaces'"
394 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
395 echo " Add 'sce_vnf_id','datacenter_id','vim_tenant_id' field to 'instance_vnfs'"
396 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
397 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
398 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
399 echo " Add 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field to 'instance_nets'"
400 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
401 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
402 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
403 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
404 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
405 }
406 function downgrade_from_6(){
407 echo " downgrade database from version 0.6 to version 0.5"
408 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
409 echo "ALTER TABLE vnfs DROP COLUMN descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
410 echo "ALTER TABLE scenarios DROP COLUMN descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
411 echo " Remove 'last_error', 'vim_info' from 'instance_vms', 'instance_nets'"
412 echo "ALTER TABLE instance_vms DROP COLUMN error_msg, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
413 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
414 echo "ALTER TABLE instance_nets DROP COLUMN error_msg, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
415 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
416 echo " Remove 'mac_address', 'ip_address', 'vim_info' from 'instance_interfaces'"
417 echo "ALTER TABLE instance_interfaces DROP COLUMN mac_address, DROP COLUMN ip_address, DROP COLUMN vim_info;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
418 echo " Remove 'sce_vnf_id','datacenter_id','vim_tenant_id' field from 'instance_vnfs'"
419 echo "ALTER TABLE instance_vnfs DROP COLUMN sce_vnf_id, DROP FOREIGN KEY FK_instance_vnfs_sce_vnfs;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
420 echo "ALTER TABLE instance_vnfs DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_vnfs_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
421 echo "ALTER TABLE instance_vnfs DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_vnfs_datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
422 echo " Remove 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field from 'instance_nets'"
423 echo "ALTER TABLE instance_nets DROP COLUMN sce_net_id, DROP FOREIGN KEY FK_instance_nets_sce_nets;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
424 echo "ALTER TABLE instance_nets DROP COLUMN net_id, DROP FOREIGN KEY FK_instance_nets_nets;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
425 echo "ALTER TABLE instance_nets DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_nets_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
426 echo "ALTER TABLE instance_nets DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_nets_datacenters;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
427 echo "DELETE FROM schema_version WHERE version_int='6';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
428 }
429
430 function upgrade_to_7(){
431 echo " upgrade database from version 0.6 to version 0.7"
432 echo " Change created_at, modified_at from timestamp to unix float at all database"
433 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
434 do
435 echo -en " $table \r"
436 echo "ALTER TABLE $table ADD COLUMN created_at_ DOUBLE NOT NULL after created_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
437 echo "UPDATE $table SET created_at_=unix_timestamp(created_at);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
438 echo "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at DOUBLE NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
439 [[ $table == uuids ]] || echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at DOUBLE NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
440 done
441
442 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
443 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
444 }
445 function downgrade_from_7(){
446 echo " downgrade database from version 0.7 to version 0.6"
447 echo " Change back created_at, modified_at from unix float to timestamp at all database"
448 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
449 do
450 echo -en " $table \r"
451 echo "ALTER TABLE $table ADD COLUMN created_at_ TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP after created_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
452 echo "UPDATE $table SET created_at_=from_unixtime(created_at);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
453 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
454 [[ $table == uuids ]] || echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at TIMESTAMP NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
455 done
456 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
457 echo "DELETE FROM schema_version WHERE version_int='7';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
458 }
459
460 function upgrade_to_8(){
461 echo " upgrade database from version 0.7 to version 0.8"
462 echo " Change enalarge name, description to 255 at all database"
463 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
464 do
465 echo -en " $table \r"
466 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR(255) NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
467 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(255) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
468 done
469 echo -en " interfaces \r"
470 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
471 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
472 echo -en " vim_tenants \r"
473 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
474 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
475 }
476 function downgrade_from_8(){
477 echo " downgrade database from version 0.8 to version 0.7"
478 echo " Change back name,description to shorter length at all database"
479 for table in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
480 do
481 name_length=50
482 [[ $table == flavors ]] || [[ $table == images ]] || name_length=36
483 echo -en " $table \r"
484 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR($name_length) NOT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
485 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(100) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
486 done
487 echo -en " interfaces \r"
488 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
489 echo -en " vim_tenants \r"
490 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
491 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
492 echo "DELETE FROM schema_version WHERE version_int='8';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
493 }
494 function upgrade_to_9(){
495 echo " upgrade database from version 0.8 to version 0.9"
496 echo " Add more status to 'instance_vms'"
497 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
498 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
499 }
500 function downgrade_from_9(){
501 echo " downgrade database from version 0.9 to version 0.8"
502 echo " Add more status to 'instance_vms'"
503 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
504 echo "DELETE FROM schema_version WHERE version_int='9';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
505 }
506 function upgrade_to_10(){
507 echo " upgrade database from version 0.9 to version 0.10"
508 echo " add tenant to 'vnfs'"
509 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
510 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
511 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
512 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
513 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
514 echo " rename 'vim_tenants' table to 'datacenter_tenants'"
515 echo "RENAME TABLE vim_tenants TO datacenter_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
516 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
517 do
518 NULL="NOT NULL"
519 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
520 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
521 echo "ALTER TABLE ${table} ALTER vim_tenant_id DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
522 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
523 done
524 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
525 }
526
527 function downgrade_from_10(){
528 echo " downgrade database from version 0.10 to version 0.9"
529 echo " remove tenant from 'vnfs'"
530 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
531 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
532 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
533 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
534 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
535 echo " rename back 'datacenter_tenants' table to 'vim_tenants'"
536 echo "RENAME TABLE datacenter_tenants TO vim_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
537 for table in tenants_datacenters instance_scenarios instance_vnfs instance_nets
538 do
539 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_datacenter_tenants;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
540 NULL="NOT NULL"
541 [[ $table == instance_vnfs ]] && NULL="NULL DEFAULT NULL"
542 echo "ALTER TABLE ${table} ALTER datacenter_tenant_id DROP DEFAULT;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
543 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
544 done
545 echo "DELETE FROM schema_version WHERE version_int='10';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
546 }
547
548 function upgrade_to_11(){
549 echo " upgrade database from version 0.10 to version 0.11"
550 echo " remove unique name at 'scenarios', 'instance_scenarios'"
551 echo "ALTER TABLE scenarios DROP INDEX name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
552 echo "ALTER TABLE instance_scenarios DROP INDEX name;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
553 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
554 }
555 function downgrade_from_11(){
556 echo " downgrade database from version 0.11 to version 0.10"
557 echo " add unique name at 'scenarios', 'instance_scenarios'"
558 echo "ALTER TABLE scenarios ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
559 echo "ALTER TABLE instance_scenarios ADD UNIQUE INDEX name (name);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
560 echo "DELETE FROM schema_version WHERE version_int='11';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
561 }
562
563 function upgrade_to_12(){
564 echo " upgrade database from version 0.11 to version 0.12"
565 echo " create ip_profiles table, with foreign keys to all nets tables, and add ip_address column to 'interfaces' and 'sce_interfaces'"
566 echo "CREATE TABLE ip_profiles (
567 id INT(11) NOT NULL AUTO_INCREMENT,
568 net_id VARCHAR(36) NULL DEFAULT NULL,
569 sce_net_id VARCHAR(36) NULL DEFAULT NULL,
570 instance_net_id VARCHAR(36) NULL DEFAULT NULL,
571 ip_version ENUM('IPv4','IPv6') NOT NULL DEFAULT 'IPv4',
572 subnet_address VARCHAR(64) NULL DEFAULT NULL,
573 gateway_address VARCHAR(64) NULL DEFAULT NULL,
574 security_group VARCHAR(255) NULL DEFAULT NULL,
575 dns_address VARCHAR(64) NULL DEFAULT NULL,
576 dhcp_enabled ENUM('true','false') NOT NULL DEFAULT 'true',
577 dhcp_start_address VARCHAR(64) NULL DEFAULT NULL,
578 dhcp_count INT(11) NULL DEFAULT NULL,
579 PRIMARY KEY (id),
580 CONSTRAINT FK_ipprofiles_nets FOREIGN KEY (net_id) REFERENCES nets (uuid) ON DELETE CASCADE,
581 CONSTRAINT FK_ipprofiles_scenets FOREIGN KEY (sce_net_id) REFERENCES sce_nets (uuid) ON DELETE CASCADE,
582 CONSTRAINT FK_ipprofiles_instancenets FOREIGN KEY (instance_net_id) REFERENCES instance_nets (uuid) ON DELETE CASCADE )
583 COMMENT='Table containing the IP parameters of a network, either a net, a sce_net or and instance_net.'
584 COLLATE='utf8_general_ci'
585 ENGINE=InnoDB;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
586 echo "ALTER TABLE interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER mac;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
587 echo "ALTER TABLE sce_interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER interface_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
588 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-07-18');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
589 }
590 function downgrade_from_12(){
591 echo " downgrade database from version 0.12 to version 0.11"
592 echo " delete ip_profiles table, and remove ip_address column in 'interfaces' and 'sce_interfaces'"
593 echo "DROP TABLE ip_profiles;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
594 echo "ALTER TABLE interfaces DROP COLUMN ip_address;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
595 echo "ALTER TABLE sce_interfaces DROP COLUMN ip_address;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
596 echo "DELETE FROM schema_version WHERE version_int='12';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
597 }
598
599 function upgrade_to_13(){
600 echo " upgrade database from version 0.12 to version 0.13"
601 echo " add cloud_config at 'scenarios', 'instance_scenarios'"
602 echo "ALTER TABLE scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER descriptor;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
603 echo "ALTER TABLE instance_scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER modified_at;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
604 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
605 }
606 function downgrade_from_13(){
607 echo " downgrade database from version 0.13 to version 0.12"
608 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
609 echo "ALTER TABLE scenarios DROP COLUMN cloud_config;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
610 echo "ALTER TABLE instance_scenarios DROP COLUMN cloud_config;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
611 echo "DELETE FROM schema_version WHERE version_int='13';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
612 }
613
614
615 function upgrade_to_X(){
616 echo " change 'datacenter_nets'"
617 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
618 }
619 function downgrade_from_X(){
620 echo " Change back 'datacenter_nets'"
621 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
622 }
623 #TODO ... put funtions here
624
625
626 [ $DATABASE_TARGET_VER_NUM -eq $DATABASE_VER_NUM ] && echo " current database version $DATABASE_VER is ok"
627 #UPGRADE DATABASE step by step
628 while [ $DATABASE_TARGET_VER_NUM -gt $DATABASE_VER_NUM ]
629 do
630 DATABASE_VER_NUM=$((DATABASE_VER_NUM+1))
631 upgrade_to_${DATABASE_VER_NUM}
632 #FILE_="${DIRNAME}/upgrade_to_${DATABASE_VER_NUM}.sh"
633 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to upgrade" >&2 && exit -1
634 #$FILE_ || exit -1 # if fail return
635 done
636
637 #DOWNGRADE DATABASE step by step
638 while [ $DATABASE_TARGET_VER_NUM -lt $DATABASE_VER_NUM ]
639 do
640 #FILE_="${DIRNAME}/downgrade_from_${DATABASE_VER_NUM}.sh"
641 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to downgrade" >&2 && exit -1
642 #$FILE_ || exit -1 # if fail return
643 downgrade_from_${DATABASE_VER_NUM}
644 DATABASE_VER_NUM=$((DATABASE_VER_NUM-1))
645 done
646
647 #echo done
648