4 # Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
5 # This file is part of openmano
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
12 # http://www.apache.org/licenses/LICENSE-2.0
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
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact with: nfvlabs@tid.es
25 #Upgrade/Downgrade openmano database preserving the content
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"
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"
53 while getopts ":u:p:P:h:d:-:" o
; do
71 [ "${OPTARG}" == "help" ] && usage
&& exit 0
72 echo "Invalid option: --$OPTARG" >&2 && usage
>&2
76 echo "Invalid option: -$OPTARG" >&2 && usage
>&2
80 echo "Option -$OPTARG requires an argument." >&2 && usage
>&2
94 if [ -z "$OPENMANO_VER" ]
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"
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
106 [ -n "$1" ] && echo "Invalid openmano version '$1', expected 'X.X.X'" >&2
107 [ -z "$1" ] && echo "Can not get openmano version" >&2
110 OPENMANO_VER_NUM
=`printf "%d%03d%03d" ${VERSION_1} ${VERSION_2} ${VERSION_3}`
112 #Creating temporary file
113 TEMPFILE
="$(mktemp -q --tmpdir "migratemanodb.XXXXXX
")"
114 trap 'rm -f "$TEMPFILE"' EXIT SIGINT SIGTERM
115 chmod 0600 "$TEMPFILE"
116 cat >"$TEMPFILE" <<EOF
121 DEF_EXTRA_FILE_PARAM
="--defaults-extra-file=$TEMPFILE"
124 #check and ask for database user password
126 [ -n "$DBPASS" ] && DBPASS_
="-p$DBPASS"
129 while ! mysql
$DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ $DBNAME -e "quit" >/dev
/null
2>&1
131 [ -n "$logintry" ] && echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)"
132 [ -z "$logintry" ] && echo -e "\nProvide database name and credentials"
133 read -e -p "mysql database name($DBNAME): " KK
134 [ -n "$KK" ] && DBNAME
="$KK"
135 read -e -p "mysql user($DBUSER): " KK
136 [ -n "$KK" ] && DBUSER
="$KK"
137 read -e -s -p "mysql password: " DBPASS
138 cat >"$TEMPFILE" <<EOF
147 DBCMD
="mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ $DBNAME"
150 #GET DATABASE VERSION
151 #check that the database seems a openmano database
152 if ! echo -e "show create table vnfs;\nshow create table scenarios" |
$DBCMD >/dev
/null
2>&1
154 echo " database $DBNAME does not seem to be an openmano database" >&2
158 if ! echo 'show create table schema_version;' |
$DBCMD >/dev
/null
2>&1
163 DATABASE_VER_NUM
=`echo "select max(version_int) from schema_version;" | $DBCMD | tail -n+2`
164 DATABASE_VER
=`echo "select version from schema_version where version_int='$DATABASE_VER_NUM';" | $DBCMD | tail -n+2`
165 [ "$DATABASE_VER_NUM" -lt 0 -o "$DATABASE_VER_NUM" -gt 100 ] && echo " Error can not get database version ($DATABASE_VER?)" >&2 && exit -1
166 #echo "_${DATABASE_VER_NUM}_${DATABASE_VER}"
170 #GET DATABASE TARGET VERSION
171 DATABASE_TARGET_VER_NUM
=0
172 [ $OPENMANO_VER_NUM -ge 2002 ] && DATABASE_TARGET_VER_NUM
=1 #0.2.2 => 1
173 [ $OPENMANO_VER_NUM -ge 2005 ] && DATABASE_TARGET_VER_NUM
=2 #0.2.5 => 2
174 [ $OPENMANO_VER_NUM -ge 3003 ] && DATABASE_TARGET_VER_NUM
=3 #0.3.3 => 3
175 [ $OPENMANO_VER_NUM -ge 3005 ] && DATABASE_TARGET_VER_NUM
=4 #0.3.5 => 4
176 [ $OPENMANO_VER_NUM -ge 4001 ] && DATABASE_TARGET_VER_NUM
=5 #0.4.1 => 5
177 [ $OPENMANO_VER_NUM -ge 4002 ] && DATABASE_TARGET_VER_NUM
=6 #0.4.2 => 6
178 [ $OPENMANO_VER_NUM -ge 4003 ] && DATABASE_TARGET_VER_NUM
=7 #0.4.3 => 7
179 [ $OPENMANO_VER_NUM -ge 4032 ] && DATABASE_TARGET_VER_NUM
=8 #0.4.32=> 8
180 [ $OPENMANO_VER_NUM -ge 4033 ] && DATABASE_TARGET_VER_NUM
=9 #0.4.33=> 9
181 [ $OPENMANO_VER_NUM -ge 4036 ] && DATABASE_TARGET_VER_NUM
=10 #0.4.36=> 10
182 [ $OPENMANO_VER_NUM -ge 4043 ] && DATABASE_TARGET_VER_NUM
=11 #0.4.43=> 11
183 [ $OPENMANO_VER_NUM -ge 4046 ] && DATABASE_TARGET_VER_NUM
=12 #0.4.46=> 12
184 [ $OPENMANO_VER_NUM -ge 4047 ] && DATABASE_TARGET_VER_NUM
=13 #0.4.47=> 13
185 #TODO ... put next versions here
188 function upgrade_to_1
(){
189 echo " upgrade database from version 0.0 to version 0.1"
190 echo " CREATE TABLE \`schema_version\`"
191 echo "CREATE TABLE \`schema_version\` (
192 \`version_int\` INT NOT NULL COMMENT 'version as a number. Must not contain gaps',
193 \`version\` VARCHAR(20) NOT NULL COMMENT 'version as a text',
194 \`openmano_ver\` VARCHAR(20) NOT NULL COMMENT 'openmano version',
195 \`comments\` VARCHAR(2000) NULL COMMENT 'changes to database',
197 PRIMARY KEY (\`version_int\`)
199 COMMENT='database schema control version'
200 COLLATE='utf8_general_ci'
201 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
202 echo "INSERT INTO \`schema_version\` (\`version_int\`, \`version\`, \`openmano_ver\`, \`comments\`, \`date\`)
203 VALUES (1, '0.1', '0.2.2', 'insert schema_version', '2015-05-08');" |
$DBCMD
205 function downgrade_from_1
(){
206 echo " downgrade database from version 0.1 to version 0.0"
207 echo " DROP TABLE \`schema_version\`"
208 echo "DROP TABLE \`schema_version\`;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
210 function upgrade_to_2
(){
211 echo " upgrade database from version 0.1 to version 0.2"
212 echo " Add columns user/passwd to table 'vim_tenants'"
213 echo "ALTER TABLE vim_tenants ADD COLUMN user VARCHAR(36) NULL COMMENT 'Credentials for vim' AFTER created,
214 ADD COLUMN passwd VARCHAR(50) NULL COMMENT 'Credentials for vim' AFTER user;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
215 echo " Add table 'images' and 'datacenters_images'"
216 echo "CREATE TABLE images (
217 uuid VARCHAR(36) NOT NULL,
218 name VARCHAR(50) NOT NULL,
219 location VARCHAR(200) NOT NULL,
220 description VARCHAR(100) NULL,
221 metadata VARCHAR(400) NULL,
223 UNIQUE INDEX location (location) )
224 COLLATE='utf8_general_ci'
225 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
226 echo "CREATE TABLE datacenters_images (
227 id INT NOT NULL AUTO_INCREMENT,
228 image_id VARCHAR(36) NOT NULL,
229 datacenter_id VARCHAR(36) NOT NULL,
230 vim_id VARCHAR(36) NOT NULL,
232 CONSTRAINT FK__images FOREIGN KEY (image_id) REFERENCES images (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
233 CONSTRAINT FK__datacenters_i FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
234 COLLATE='utf8_general_ci'
235 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
236 echo " migrate data from table 'vms' into 'images'"
237 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
238 echo "INSERT INTO datacenters_images (image_id, datacenter_id, vim_id)
239 SELECT DISTINCT vim_image_id, datacenters.uuid, vim_image_id FROM vms JOIN datacenters;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
240 echo " Add table 'flavors' and 'datacenter_flavors'"
241 echo "CREATE TABLE flavors (
242 uuid VARCHAR(36) NOT NULL,
243 name VARCHAR(50) NOT NULL,
244 description VARCHAR(100) NULL,
245 disk SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
246 ram SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
247 vcpus SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
248 extended VARCHAR(2000) NULL DEFAULT NULL COMMENT 'Extra description json format of needed resources and pining, orginized in sets per numa',
250 COLLATE='utf8_general_ci'
251 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
252 echo "CREATE TABLE datacenters_flavors (
253 id INT NOT NULL AUTO_INCREMENT,
254 flavor_id VARCHAR(36) NOT NULL,
255 datacenter_id VARCHAR(36) NOT NULL,
256 vim_id VARCHAR(36) NOT NULL,
258 CONSTRAINT FK__flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid) ON UPDATE CASCADE ON DELETE CASCADE,
259 CONSTRAINT FK__datacenters_f FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid) ON UPDATE CASCADE ON DELETE CASCADE )
260 COLLATE='utf8_general_ci'
261 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
262 echo " migrate data from table 'vms' into 'flavors'"
263 echo "INSERT INTO flavors (uuid, name) SELECT DISTINCT vim_flavor_id, vim_flavor_id FROM vms;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
264 echo "INSERT INTO datacenters_flavors (flavor_id, datacenter_id, vim_id)
265 SELECT DISTINCT vim_flavor_id, datacenters.uuid, vim_flavor_id FROM vms JOIN datacenters;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
266 echo "ALTER TABLE vms ALTER vim_flavor_id DROP DEFAULT, ALTER vim_image_id DROP DEFAULT;
267 ALTER TABLE vms CHANGE COLUMN vim_flavor_id flavor_id VARCHAR(36) NOT NULL COMMENT 'Link to flavor table' AFTER vnf_id,
268 CHANGE COLUMN vim_image_id image_id VARCHAR(36) NOT NULL COMMENT 'Link to image table' AFTER flavor_id,
269 ADD CONSTRAINT FK_vms_images FOREIGN KEY (image_id) REFERENCES images (uuid),
270 ADD CONSTRAINT FK_vms_flavors FOREIGN KEY (flavor_id) REFERENCES flavors (uuid);
271 " |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
272 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
276 function downgrade_from_2
(){
277 echo " downgrade database from version 0.2 to version 0.1"
278 echo " migrate back data from 'datacenters_images' 'datacenters_flavors' into 'vms'"
279 echo "ALTER TABLE vms ALTER image_id DROP DEFAULT, ALTER flavor_id DROP DEFAULT;
280 ALTER TABLE vms CHANGE COLUMN flavor_id vim_flavor_id VARCHAR(36) NOT NULL COMMENT 'Flavor ID in the VIM DB' AFTER vnf_id,
281 CHANGE COLUMN image_id vim_image_id VARCHAR(36) NOT NULL COMMENT 'Image ID in the VIM DB' AFTER vim_flavor_id,
282 DROP FOREIGN KEY FK_vms_flavors, DROP INDEX FK_vms_flavors,
283 DROP FOREIGN KEY FK_vms_images, DROP INDEX FK_vms_images;
284 " |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
285 # echo "UPDATE v SET v.vim_image_id=di.vim_id
286 # FROM vms as v INNER JOIN images as i ON v.vim_image_id=i.uuid
287 # INNER JOIN datacenters_images as di ON i.uuid=di.image_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1
288 echo " Delete columns 'user/passwd' from 'vim_tenants'"
289 echo "ALTER TABLE vim_tenants DROP COLUMN user, DROP COLUMN passwd; " |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
290 echo " delete tables 'datacenter_images', 'images'"
291 echo "DROP TABLE \`datacenters_images\`;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
292 echo "DROP TABLE \`images\`;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
293 echo " delete tables 'datacenter_flavors', 'flavors'"
294 echo "DROP TABLE \`datacenters_flavors\`;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
295 echo "DROP TABLE \`flavors\`;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
296 echo "DELETE FROM schema_version WHERE version_int='2';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
299 function upgrade_to_3
(){
300 echo " upgrade database from version 0.2 to version 0.3"
301 echo " Change table 'logs', 'uuids"
302 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
303 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
304 echo " Add column created to table 'datacenters_images' and 'datacenters_flavors'"
305 for table
in datacenters_images datacenters_flavors
307 echo "ALTER TABLE $table ADD COLUMN created ENUM('true','false') NOT NULL DEFAULT 'false'
308 COMMENT 'Indicates if it has been created by openmano, or already existed' AFTER vim_id;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
310 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(2000) NULL DEFAULT NULL AFTER description;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
311 echo " Allow null to column 'vim_interface_id' in 'instance_interfaces'"
312 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
313 echo " Add column config to table 'datacenters'"
314 echo "ALTER TABLE datacenters ADD COLUMN config VARCHAR(4000) NULL DEFAULT NULL COMMENT 'extra config information in json' AFTER vim_url_admin;
315 " |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
316 echo " Add column datacenter_id to table 'vim_tenants'"
317 echo "ALTER TABLE vim_tenants ADD COLUMN datacenter_id VARCHAR(36) NULL COMMENT 'Datacenter of this tenant' AFTER uuid,
318 DROP INDEX name, DROP INDEX vim_tenant_id;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
319 echo "ALTER TABLE vim_tenants CHANGE COLUMN name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL COMMENT 'tenant name at VIM' AFTER datacenter_id,
320 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
321 echo "UPDATE vim_tenants as vt LEFT JOIN tenants_datacenters as td ON vt.uuid=td.vim_tenant_id
322 SET vt.datacenter_id=td.datacenter_id;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
323 echo "DELETE FROM vim_tenants WHERE datacenter_id is NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
324 echo "ALTER TABLE vim_tenants ALTER datacenter_id DROP DEFAULT;
325 ALTER TABLE vim_tenants
326 CHANGE COLUMN datacenter_id datacenter_id VARCHAR(36) NOT NULL COMMENT 'Datacenter of this tenant' AFTER uuid;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
327 echo "ALTER TABLE vim_tenants ADD CONSTRAINT FK_vim_tenants_datacenters FOREIGN KEY (datacenter_id) REFERENCES datacenters (uuid)
328 ON UPDATE CASCADE ON DELETE CASCADE;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
330 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
334 function downgrade_from_3
(){
335 echo " downgrade database from version 0.3 to version 0.2"
336 echo " Change back table 'logs', 'uuids'"
337 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
338 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
339 echo " Delete column created from table 'datacenters_images' and 'datacenters_flavors'"
340 for table
in datacenters_images datacenters_flavors
342 echo "ALTER TABLE $table DROP COLUMN created;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
344 echo "ALTER TABLE images CHANGE COLUMN metadata metadata VARCHAR(400) NULL DEFAULT NULL AFTER description;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
345 echo " Deny back null to column 'vim_interface_id' in 'instance_interfaces'"
346 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
347 echo " Delete column config to table 'datacenters'"
348 echo "ALTER TABLE datacenters DROP COLUMN config;"|
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
349 echo " Delete column datacenter_id to table 'vim_tenants'"
350 echo "ALTER TABLE vim_tenants DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_vim_tenants_datacenters;"|
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
351 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
352 echo "ALTER TABLE vim_tenants ALTER name DROP DEFAULT;"|
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
353 echo "ALTER TABLE vim_tenants CHANGE COLUMN name name VARCHAR(36) NOT NULL AFTER uuid"|
$DBCMD ||
! echo "Warning changing column name at vim_tenants!"
354 echo "ALTER TABLE vim_tenants ADD UNIQUE INDEX name (name);" |
$DBCMD ||
! echo "Warning add unique index name at vim_tenants!"
355 echo "ALTER TABLE vim_tenants ALTER vim_tenant_id DROP DEFAULT;"|
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
356 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!"
357 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!"
358 echo "DELETE FROM schema_version WHERE version_int='3';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
361 function upgrade_to_4
(){
362 echo " upgrade database from version 0.3 to version 0.4"
363 echo " Enlarge graph field at tables 'sce_vnfs', 'sce_nets'"
364 for table
in sce_vnfs sce_nets
366 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
368 echo "ALTER TABLE datacenters CHANGE COLUMN type type VARCHAR(36) NOT NULL DEFAULT 'openvim' AFTER description;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
369 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
372 function downgrade_from_4
(){
373 echo " downgrade database from version 0.4 to version 0.3"
374 echo " Shorten back graph field at tables 'sce_vnfs', 'sce_nets'"
375 for table
in sce_vnfs sce_nets
377 echo "ALTER TABLE $table CHANGE COLUMN graph graph VARCHAR(2000) NULL DEFAULT NULL AFTER modified_at;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
379 echo "ALTER TABLE datacenters CHANGE COLUMN type type ENUM('openvim','openstack') NOT NULL DEFAULT 'openvim' AFTER description;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
380 echo "DELETE FROM schema_version WHERE version_int='4';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
383 function upgrade_to_5
(){
384 echo " upgrade database from version 0.4 to version 0.5"
385 echo " Add 'mac' field for bridge interfaces in table 'interfaces'"
386 echo "ALTER TABLE interfaces ADD COLUMN mac CHAR(18) NULL DEFAULT NULL AFTER model;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
387 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
389 function downgrade_from_5
(){
390 echo " downgrade database from version 0.5 to version 0.4"
391 echo " Remove 'mac' field for bridge interfaces in table 'interfaces'"
392 echo "ALTER TABLE interfaces DROP COLUMN mac;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
393 echo "DELETE FROM schema_version WHERE version_int='5';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
396 function upgrade_to_6
(){
397 echo " upgrade database from version 0.5 to version 0.6"
398 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
399 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
400 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
401 echo " Add 'last_error', 'vim_info' to 'instance_vms', 'instance_nets'"
402 echo "ALTER TABLE instance_vms ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
403 echo "ALTER TABLE instance_vms ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
404 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
405 echo "ALTER TABLE instance_nets ADD COLUMN error_msg VARCHAR(1024) NULL DEFAULT NULL AFTER status;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
406 echo "ALTER TABLE instance_nets ADD COLUMN vim_info TEXT NULL DEFAULT NULL AFTER error_msg;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
407 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
408 echo " Add 'mac_address', 'ip_address', 'vim_info' to 'instance_interfaces'"
409 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
410 echo " Add 'sce_vnf_id','datacenter_id','vim_tenant_id' field to 'instance_vnfs'"
411 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
412 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
413 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
414 echo " Add 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field to 'instance_nets'"
415 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
416 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
417 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
418 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
419 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
421 function downgrade_from_6
(){
422 echo " downgrade database from version 0.6 to version 0.5"
423 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
424 echo "ALTER TABLE vnfs DROP COLUMN descriptor;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
425 echo "ALTER TABLE scenarios DROP COLUMN descriptor;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
426 echo " Remove 'last_error', 'vim_info' from 'instance_vms', 'instance_nets'"
427 echo "ALTER TABLE instance_vms DROP COLUMN error_msg, DROP COLUMN vim_info;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
428 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
429 echo "ALTER TABLE instance_nets DROP COLUMN error_msg, DROP COLUMN vim_info;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
430 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
431 echo " Remove 'mac_address', 'ip_address', 'vim_info' from 'instance_interfaces'"
432 echo "ALTER TABLE instance_interfaces DROP COLUMN mac_address, DROP COLUMN ip_address, DROP COLUMN vim_info;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
433 echo " Remove 'sce_vnf_id','datacenter_id','vim_tenant_id' field from 'instance_vnfs'"
434 echo "ALTER TABLE instance_vnfs DROP COLUMN sce_vnf_id, DROP FOREIGN KEY FK_instance_vnfs_sce_vnfs;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
435 echo "ALTER TABLE instance_vnfs DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_vnfs_vim_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
436 echo "ALTER TABLE instance_vnfs DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_vnfs_datacenters;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
437 echo " Remove 'sce_net_id','net_id','datacenter_id','vim_tenant_id' field from 'instance_nets'"
438 echo "ALTER TABLE instance_nets DROP COLUMN sce_net_id, DROP FOREIGN KEY FK_instance_nets_sce_nets;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
439 echo "ALTER TABLE instance_nets DROP COLUMN net_id, DROP FOREIGN KEY FK_instance_nets_nets;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
440 echo "ALTER TABLE instance_nets DROP COLUMN vim_tenant_id, DROP FOREIGN KEY FK_instance_nets_vim_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
441 echo "ALTER TABLE instance_nets DROP COLUMN datacenter_id, DROP FOREIGN KEY FK_instance_nets_datacenters;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
442 echo "DELETE FROM schema_version WHERE version_int='6';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
445 function upgrade_to_7
(){
446 echo " upgrade database from version 0.6 to version 0.7"
447 echo " Change created_at, modified_at from timestamp to unix float 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
450 echo -en " $table \r"
451 echo "ALTER TABLE $table ADD COLUMN created_at_ DOUBLE NOT NULL after created_at;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
452 echo "UPDATE $table SET created_at_=unix_timestamp(created_at);" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
453 echo "ALTER TABLE $table DROP COLUMN created_at, CHANGE COLUMN created_at_ created_at DOUBLE NOT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
454 [[ $table == uuids
]] ||
echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at DOUBLE NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
457 echo " Add 'descriptor' field text to 'vnfd', 'scenarios'"
458 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
460 function downgrade_from_7
(){
461 echo " downgrade database from version 0.7 to version 0.6"
462 echo " Change back created_at, modified_at from unix float to timestamp at all database"
463 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
465 echo -en " $table \r"
466 echo "ALTER TABLE $table ADD COLUMN created_at_ TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP after created_at;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
467 echo "UPDATE $table SET created_at_=from_unixtime(created_at);" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
468 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
469 [[ $table == uuids
]] ||
echo "ALTER TABLE $table CHANGE COLUMN modified_at modified_at TIMESTAMP NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
471 echo " Remove 'descriptor' field from 'vnfd', 'scenarios' tables"
472 echo "DELETE FROM schema_version WHERE version_int='7';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
475 function upgrade_to_8
(){
476 echo " upgrade database from version 0.7 to version 0.8"
477 echo " Change enalarge name, description to 255 at all database"
478 for table
in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
480 echo -en " $table \r"
481 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR(255) NOT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
482 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(255) NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
484 echo -en " interfaces \r"
485 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
486 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(64) NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
487 echo -en " vim_tenants \r"
488 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
489 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
491 function downgrade_from_8
(){
492 echo " downgrade database from version 0.8 to version 0.7"
493 echo " Change back name,description to shorter length at all database"
494 for table
in datacenters datacenter_nets flavors images instance_scenarios nets nfvo_tenants scenarios sce_nets sce_vnfs vms vnfs
497 [[ $table == flavors
]] ||
[[ $table == images
]] || name_length
=36
498 echo -en " $table \r"
499 echo "ALTER TABLE $table CHANGE COLUMN name name VARCHAR($name_length) NOT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
500 echo "ALTER TABLE $table CHANGE COLUMN description description VARCHAR(100) NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
502 echo -en " interfaces \r"
503 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
504 echo -en " vim_tenants \r"
505 echo "ALTER TABLE vim_tenants CHANGE COLUMN vim_tenant_name vim_tenant_name VARCHAR(36) NULL DEFAULT NULL;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
506 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
507 echo "DELETE FROM schema_version WHERE version_int='8';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
509 function upgrade_to_9
(){
510 echo " upgrade database from version 0.8 to version 0.9"
511 echo " Add more status to 'instance_vms'"
512 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
513 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
515 function downgrade_from_9
(){
516 echo " downgrade database from version 0.9 to version 0.8"
517 echo " Add more status to 'instance_vms'"
518 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
519 echo "DELETE FROM schema_version WHERE version_int='9';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
521 function upgrade_to_10
(){
522 echo " upgrade database from version 0.9 to version 0.10"
523 echo " add tenant to 'vnfs'"
524 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
525 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
526 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
527 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
528 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
529 echo " rename 'vim_tenants' table to 'datacenter_tenants'"
530 echo "RENAME TABLE vim_tenants TO datacenter_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
531 for table
in tenants_datacenters instance_scenarios instance_vnfs instance_nets
534 [[ $table == instance_vnfs
]] && NULL
="NULL DEFAULT NULL"
535 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_vim_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
536 echo "ALTER TABLE ${table} ALTER vim_tenant_id DROP DEFAULT;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
537 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
539 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
542 function downgrade_from_10
(){
543 echo " downgrade database from version 0.10 to version 0.9"
544 echo " remove tenant from 'vnfs'"
545 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
546 echo "ALTER TABLE scenarios DROP FOREIGN KEY FK_scenarios_nfvo_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
547 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
548 echo "ALTER TABLE instance_scenarios DROP FOREIGN KEY FK_instance_scenarios_nfvo_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
549 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
550 echo " rename back 'datacenter_tenants' table to 'vim_tenants'"
551 echo "RENAME TABLE datacenter_tenants TO vim_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
552 for table
in tenants_datacenters instance_scenarios instance_vnfs instance_nets
554 echo "ALTER TABLE ${table} DROP FOREIGN KEY FK_${table}_datacenter_tenants;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
556 [[ $table == instance_vnfs
]] && NULL
="NULL DEFAULT NULL"
557 echo "ALTER TABLE ${table} ALTER datacenter_tenant_id DROP DEFAULT;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
558 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
560 echo "DELETE FROM schema_version WHERE version_int='10';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
563 function upgrade_to_11
(){
564 echo " upgrade database from version 0.10 to version 0.11"
565 echo " remove unique name at 'scenarios', 'instance_scenarios'"
566 echo "ALTER TABLE scenarios DROP INDEX name;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
567 echo "ALTER TABLE instance_scenarios DROP INDEX name;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
568 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
570 function downgrade_from_11
(){
571 echo " downgrade database from version 0.11 to version 0.10"
572 echo " add unique name at 'scenarios', 'instance_scenarios'"
573 echo "ALTER TABLE scenarios ADD UNIQUE INDEX name (name);" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
574 echo "ALTER TABLE instance_scenarios ADD UNIQUE INDEX name (name);" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
575 echo "DELETE FROM schema_version WHERE version_int='11';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
578 function upgrade_to_12
(){
579 echo " upgrade database from version 0.11 to version 0.12"
580 echo " create ip_profiles table, with foreign keys to all nets tables, and add ip_address column to 'interfaces' and 'sce_interfaces'"
581 echo "CREATE TABLE ip_profiles (
582 id INT(11) NOT NULL AUTO_INCREMENT,
583 net_id VARCHAR(36) NULL DEFAULT NULL,
584 sce_net_id VARCHAR(36) NULL DEFAULT NULL,
585 instance_net_id VARCHAR(36) NULL DEFAULT NULL,
586 ip_version ENUM('IPv4','IPv6') NOT NULL DEFAULT 'IPv4',
587 subnet_address VARCHAR(64) NULL DEFAULT NULL,
588 gateway_address VARCHAR(64) NULL DEFAULT NULL,
589 dns_address VARCHAR(64) NULL DEFAULT NULL,
590 dhcp_enabled ENUM('true','false') NOT NULL DEFAULT 'true',
591 dhcp_start_address VARCHAR(64) NULL DEFAULT NULL,
592 dhcp_count INT(11) NULL DEFAULT NULL,
594 CONSTRAINT FK_ipprofiles_nets FOREIGN KEY (net_id) REFERENCES nets (uuid) ON DELETE CASCADE,
595 CONSTRAINT FK_ipprofiles_scenets FOREIGN KEY (sce_net_id) REFERENCES sce_nets (uuid) ON DELETE CASCADE,
596 CONSTRAINT FK_ipprofiles_instancenets FOREIGN KEY (instance_net_id) REFERENCES instance_nets (uuid) ON DELETE CASCADE )
597 COMMENT='Table containing the IP parameters of a network, either a net, a sce_net or and instance_net.'
598 COLLATE='utf8_general_ci'
599 ENGINE=InnoDB;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
600 echo "ALTER TABLE interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER mac;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
601 echo "ALTER TABLE sce_interfaces ADD COLUMN ip_address VARCHAR(64) NULL DEFAULT NULL AFTER interface_id;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
602 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
604 function downgrade_from_12
(){
605 echo " downgrade database from version 0.12 to version 0.11"
606 echo " delete ip_profiles table, and remove ip_address column in 'interfaces' and 'sce_interfaces'"
607 echo "DROP TABLE ip_profiles;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
608 echo "ALTER TABLE interfaces DROP COLUMN ip_address;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
609 echo "ALTER TABLE sce_interfaces DROP COLUMN ip_address;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
610 echo "DELETE FROM schema_version WHERE version_int='12';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
613 function upgrade_to_13
(){
614 echo " upgrade database from version 0.12 to version 0.13"
615 echo " add cloud_config at 'scenarios', 'instance_scenarios'"
616 echo "ALTER TABLE scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER descriptor;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
617 echo "ALTER TABLE instance_scenarios ADD COLUMN cloud_config MEDIUMTEXT NULL DEFAULT NULL AFTER modified_at;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
618 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
620 function downgrade_from_13
(){
621 echo " downgrade database from version 0.13 to version 0.12"
622 echo " remove cloud_config at 'scenarios', 'instance_scenarios'"
623 echo "ALTER TABLE scenarios DROP COLUMN cloud_config;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
624 echo "ALTER TABLE instance_scenarios DROP COLUMN cloud_config;" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
625 echo "DELETE FROM schema_version WHERE version_int='13';" |
$DBCMD ||
! echo "ERROR. Aborted!" ||
exit -1
629 function upgrade_to_X
(){
630 echo " change 'datacenter_nets'"
631 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
633 function downgrade_from_X
(){
634 echo " Change back 'datacenter_nets'"
635 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
637 #TODO ... put funtions here
640 [ $DATABASE_TARGET_VER_NUM -eq $DATABASE_VER_NUM ] && echo " current database version $DATABASE_VER is ok"
641 #UPGRADE DATABASE step by step
642 while [ $DATABASE_TARGET_VER_NUM -gt $DATABASE_VER_NUM ]
644 DATABASE_VER_NUM
=$
((DATABASE_VER_NUM
+1))
645 upgrade_to_
${DATABASE_VER_NUM}
646 #FILE_="${DIRNAME}/upgrade_to_${DATABASE_VER_NUM}.sh"
647 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to upgrade" >&2 && exit -1
648 #$FILE_ || exit -1 # if fail return
651 #DOWNGRADE DATABASE step by step
652 while [ $DATABASE_TARGET_VER_NUM -lt $DATABASE_VER_NUM ]
654 #FILE_="${DIRNAME}/downgrade_from_${DATABASE_VER_NUM}.sh"
655 #[ ! -x "$FILE_" ] && echo "Error, can not find script '$FILE_' to downgrade" >&2 && exit -1
656 #$FILE_ || exit -1 # if fail return
657 downgrade_from_
${DATABASE_VER_NUM}
658 DATABASE_VER_NUM
=$
((DATABASE_VER_NUM-1
))