| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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 |
| tierno | cea279c | 2016-07-18 12:36:49 +0200 | [diff] [blame] | 167 | [ $OPENMANO_VER_NUM -ge 4043 ] && DATABASE_TARGET_VER_NUM=11 #0.4.43=> 11 |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 168 | [ $OPENMANO_VER_NUM -ge 4046 ] && DATABASE_TARGET_VER_NUM=12 #0.4.46=> 12 |
| tierno | a4e1a6e | 2016-08-31 14:19:40 +0200 | [diff] [blame^] | 169 | [ $OPENMANO_VER_NUM -ge 4047 ] && DATABASE_TARGET_VER_NUM=13 #0.4.47=> 13 |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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 | |
| tierno | cea279c | 2016-07-18 12:36:49 +0200 | [diff] [blame] | 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 | |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 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 | |
| tierno | a4e1a6e | 2016-08-31 14:19:40 +0200 | [diff] [blame^] | 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_12(){ |
| 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 | |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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 | |