| 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 | DBUSER="mano" |
| 25 | DBPASS="" |
| 26 | DBHOST="localhost" |
| 27 | DBPORT="3306" |
| 28 | DBNAME="mano_db" |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 29 | CREATEDB="" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 30 | |
| 31 | # Detect paths |
| 32 | MYSQL=$(which mysql) |
| 33 | AWK=$(which awk) |
| 34 | GREP=$(which grep) |
| 35 | DIRNAME=`dirname $0` |
| 36 | |
| 37 | function usage(){ |
| 38 | echo -e "Usage: $0 OPTIONS" |
| 39 | echo -e " Inits openmano database; deletes previous one and loads from ${DBNAME}_structure.sql" |
| 40 | echo -e " OPTIONS" |
| 41 | echo -e " -u USER database user. '$DBUSER' by default. Prompts if DB access fails" |
| tierno | aa5832d | 2016-12-07 16:20:25 +0100 | [diff] [blame] | 42 | echo -e " -p PASS database password. 'No password' or 'manopw' by default. Prompts if DB access fails" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 43 | echo -e " -P PORT database port. '$DBPORT' by default" |
| 44 | echo -e " -h HOST database host. '$DBHOST' by default" |
| tierno | 462e388 | 2016-07-06 17:52:14 +0200 | [diff] [blame] | 45 | echo -e " -d NAME database name. '$DBNAME' by default. Prompts if DB access fails" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 46 | echo -e " --help shows this help" |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 47 | echo -e " --createdb forces the deletion and creation of the database" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 48 | } |
| 49 | |
| tierno | 462e388 | 2016-07-06 17:52:14 +0200 | [diff] [blame] | 50 | while getopts ":u:p:P:d:h:-:" o; do |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 51 | case "${o}" in |
| 52 | u) |
| 53 | DBUSER="$OPTARG" |
| 54 | ;; |
| 55 | p) |
| 56 | DBPASS="$OPTARG" |
| 57 | ;; |
| 58 | P) |
| 59 | DBPORT="$OPTARG" |
| 60 | ;; |
| tierno | 462e388 | 2016-07-06 17:52:14 +0200 | [diff] [blame] | 61 | d) |
| 62 | DBNAME="$OPTARG" |
| 63 | ;; |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 64 | h) |
| 65 | DBHOST="$OPTARG" |
| 66 | ;; |
| 67 | -) |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 68 | if [ "${OPTARG}" == "help" ]; then |
| 69 | usage && exit 0 |
| 70 | elif [ "${OPTARG}" == "createdb" ]; then |
| 71 | CREATEDB="yes" |
| 72 | else |
| 73 | echo "Invalid option: --$OPTARG" >&2 && usage >&2 |
| 74 | exit 1 |
| 75 | fi |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 76 | ;; |
| 77 | \?) |
| 78 | echo "Invalid option: -$OPTARG" >&2 && usage >&2 |
| 79 | exit 1 |
| 80 | ;; |
| 81 | :) |
| 82 | echo "Option -$OPTARG requires an argument." >&2 && usage >&2 |
| 83 | exit 1 |
| 84 | ;; |
| 85 | *) |
| 86 | usage >&2 |
| 87 | exit -1 |
| 88 | ;; |
| 89 | esac |
| 90 | done |
| 91 | shift $((OPTIND-1)) |
| 92 | |
| 93 | #check and ask for database user password |
| garciadeblas | d1b8630 | 2016-09-20 11:54:32 +0200 | [diff] [blame] | 94 | DBUSER_="-u$DBUSER" |
| 95 | DBPASS_="" |
| 96 | [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 97 | DBHOST_="-h$DBHOST" |
| 98 | DBPORT_="-P$DBPORT" |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 99 | |
| 100 | TEMPFILE="$(mktemp -q --tmpdir "initmanodb.XXXXXX")" |
| garciadeblas | 4b3b446 | 2016-09-27 11:16:14 +0200 | [diff] [blame] | 101 | trap 'rm -f "$TEMPFILE"' EXIT |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 102 | chmod 0600 "$TEMPFILE" |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 103 | DEF_EXTRA_FILE_PARAM="--defaults-extra-file=$TEMPFILE" |
| tierno | aa5832d | 2016-12-07 16:20:25 +0100 | [diff] [blame] | 104 | if [ -z "${DBPASS}" ] |
| 105 | then |
| 106 | password_ok="" |
| 107 | echo -e "[client]\nuser='${DBUSER}'\npassword='manopw'" > "$TEMPFILE" |
| 108 | mysql --defaults-extra-file="$TEMPFILE" $DBHOST_ $DBPORT_ $DBNAME -e "quit" >/dev/null 2>&1 && DBPASS="manopw" |
| 109 | echo -e "[client]\nuser='${DBUSER}'\npassword=''" > "$TEMPFILE" |
| 110 | mysql --defaults-extra-file="$TEMPFILE" $DBHOST_ $DBPORT_ $DBNAME -e "quit" >/dev/null 2>&1 && DBPASS="" |
| 111 | fi |
| 112 | echo -e "[client]\nuser='${DBUSER}'\npassword='${DBPASS}'" > "$TEMPFILE" |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 113 | |
| 114 | while ! mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ -e "quit" >/dev/null 2>&1 |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 115 | do |
| 116 | [ -n "$logintry" ] && echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)" |
| 117 | [ -z "$logintry" ] && echo -e "\nProvide database credentials" |
| 118 | # read -e -p "mysql database name($DBNAME): " KK |
| 119 | # [ -n "$KK" ] && DBNAME="$KK" |
| 120 | read -e -p "mysql user($DBUSER): " KK |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 121 | [ -n "$KK" ] && DBUSER="$KK" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 122 | read -e -s -p "mysql password: " DBPASS |
| tierno | aa5832d | 2016-12-07 16:20:25 +0100 | [diff] [blame] | 123 | echo -e "[client]\nuser='${DBUSER}'\npassword='${DBPASS}'" > "$TEMPFILE" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 124 | logintry="yes" |
| 125 | echo |
| 126 | done |
| tierno | aa5832d | 2016-12-07 16:20:25 +0100 | [diff] [blame] | 127 | [ -z "${DBPASS}" ] && DBPASS_="" |
| 128 | [ -n "${DBPASS}" ] && DBPASS_="-p${DBPASS}" |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 129 | |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 130 | if [ -n "${CREATEDB}" ]; then |
| 131 | echo " deleting previous database ${DBNAME}" |
| garciadeblas | 89b3d84 | 2016-09-19 15:18:33 +0200 | [diff] [blame] | 132 | echo "DROP DATABASE IF EXISTS ${DBNAME}" | mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 133 | echo " creating database ${DBNAME}" |
| Adam Israel | 33f0a7e | 2016-10-04 12:03:31 -0700 | [diff] [blame] | 134 | mysqladmin $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ -s create ${DBNAME} || exit 1 |
| garciadeblas | 0c317ee | 2016-08-29 12:33:06 +0200 | [diff] [blame] | 135 | fi |
| 136 | |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 137 | echo " loading ${DIRNAME}/${DBNAME}_structure.sql" |
| garciadeblas | d1b8630 | 2016-09-20 11:54:32 +0200 | [diff] [blame] | 138 | #echo 'mysql '$DEF_EXTRA_FILE_PARAM' '$DBHOST_' '$DBPORT_' '$DBNAME' < '${DIRNAME}'/mano_db_structure.sql' |
| 139 | mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ $DBNAME < ${DIRNAME}/mano_db_structure.sql |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 140 | |
| 141 | echo " migrage database version" |
| 142 | ${DIRNAME}/migrate_mano_db.sh $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ -d$DBNAME |
| 143 | |