Merge "Add some automatic steps & Fix SQL in install scripts"

This commit is contained in:
Zuul 2022-11-09 17:52:20 +00:00 committed by Gerrit Code Review
commit e213c49cfc
2 changed files with 43 additions and 7 deletions

View File

@ -354,4 +354,16 @@ $SUDO_PREFIX rm -rf build ec2_api.egg-info
#recreate database #recreate database
echo Setuping database echo Setuping database
$SUDO_PREFIX tools/db/ec2api-db-setup deb PACKAGE_MANAGER_SELECTED=0
while [ $PACKAGE_MANAGER_SELECTED -eq 0 ]
do
printf "Enter the package manager you use <rpm|deb> "
read PACKAGE_MANAGER
if [ $PACKAGE_MANAGER = "rpm" ] || [ $PACKAGE_MANAGER = "deb" ] ; then
PACKAGE_MANAGER_SELECTED=1
else
echo "The package manager you entered \"${PACKAGE_MANAGER}\" is not in <rpm|deb>"
fi
done
$SUDO_PREFIX tools/db/ec2api-db-setup $PACKAGE_MANAGER

View File

@ -63,6 +63,11 @@ start_mysql_server() {
$SERVICE_START $SERVICE_START
} }
check_mysql_credentials() {
echo "SELECT 1;" | mysql --protocol=TCP -u root --password=${MYSQL_ROOT_PW} > /dev/null
echo $?
}
MYSQL_EC2API_PW_DEFAULT="ec2api" MYSQL_EC2API_PW_DEFAULT="ec2api"
MYSQL_EC2API_PW=${MYSQL_EC2API_PW_DEFAULT} MYSQL_EC2API_PW=${MYSQL_EC2API_PW_DEFAULT}
EC2API_CONFIG="/etc/ec2api/ec2api.conf" EC2API_CONFIG="/etc/ec2api/ec2api.conf"
@ -211,9 +216,16 @@ then
exit 1 exit 1
fi fi
elif [ ! "${MYSQL_ROOT_PW+defined}" ] ; then elif [ ! "${MYSQL_ROOT_PW+defined}" ] ; then
printf "Please enter the password for the 'root' MySQL user: " PW_OK=0
read -s MYSQL_ROOT_PW while ! [ $PW_OK -eq 1 ];
echo do
printf "Please enter the password for the 'root' MySQL user: "
read -s MYSQL_ROOT_PW
echo
if [ $(check_mysql_credentials) -eq 0 ]; then
PW_OK=1
fi
done
fi fi
@ -224,8 +236,7 @@ if [ "${MYSQL_ROOT_PW+defined}" ]
then then
MYSQL_ROOT_PW_ARG="--password=${MYSQL_ROOT_PW}" MYSQL_ROOT_PW_ARG="--password=${MYSQL_ROOT_PW}"
fi fi
echo "SELECT 1;" | mysql --protocol=TCP -u root ${MYSQL_ROOT_PW_ARG} > /dev/null if ! [ $(check_mysql_credentials) -eq 0 ]
if ! [ $? -eq 0 ]
then then
echo "Failed to connect to the MySQL server. Please check your root user credentials." echo "Failed to connect to the MySQL server. Please check your root user credentials."
exit 1 exit 1
@ -236,6 +247,17 @@ echo "Verified connectivity to MySQL."
# Now create the db. # Now create the db.
echo "Creating 'ec2api' database." echo "Creating 'ec2api' database."
MYSQL_VERSION=`echo "select version();" | mysql -u root ${MYSQL_ROOT_PW_ARG} | grep -oP -m1 "^\d+(?=\..*)"`
if [[ $MYSQL_VERSION -ge 8 ]]; then
cat << EOF | mysql --protocol=TCP -u root ${MYSQL_ROOT_PW_ARG}
DROP DATABASE IF EXISTS ec2api;
CREATE DATABASE IF NOT EXISTS ec2api DEFAULT CHARACTER SET utf8;
CREATE USER 'ec2api'@'%' IDENTIFIED BY '${MYSQL_EC2API_PW}';
GRANT ALL ON ec2api.* TO 'ec2api'@'localhost';
GRANT ALL ON ec2api.* TO 'ec2api'@'%';
flush privileges;
EOF
else
cat << EOF | mysql --protocol=TCP -u root ${MYSQL_ROOT_PW_ARG} cat << EOF | mysql --protocol=TCP -u root ${MYSQL_ROOT_PW_ARG}
DROP DATABASE IF EXISTS ec2api; DROP DATABASE IF EXISTS ec2api;
CREATE DATABASE IF NOT EXISTS ec2api DEFAULT CHARACTER SET utf8; CREATE DATABASE IF NOT EXISTS ec2api DEFAULT CHARACTER SET utf8;
@ -243,6 +265,7 @@ GRANT ALL ON ec2api.* TO 'ec2api'@'localhost' IDENTIFIED BY '${MYSQL_EC2API_PW}'
GRANT ALL ON ec2api.* TO 'ec2api'@'%' IDENTIFIED BY '${MYSQL_EC2API_PW}'; GRANT ALL ON ec2api.* TO 'ec2api'@'%' IDENTIFIED BY '${MYSQL_EC2API_PW}';
flush privileges; flush privileges;
EOF EOF
fi
# Make sure ec2api configuration has the right MySQL password. # Make sure ec2api configuration has the right MySQL password.
@ -277,12 +300,13 @@ args=(sys.stdout,)
format=%(name)s - %(levelname)s - %(message)s format=%(name)s - %(levelname)s - %(message)s
EOF EOF
pip install MySQL-python pip install mysqlclient
ec2-api-manage --log-config=$log_conf db_sync ec2-api-manage --log-config=$log_conf db_sync
rm $log_conf rm $log_conf
# Do a final sanity check on the database. # Do a final sanity check on the database.
echo "Run final sanity check."
echo "SELECT * FROM migrate_version;" | mysql --protocol=TCP -u ec2api --password=${MYSQL_EC2API_PW} ec2api > /dev/null echo "SELECT * FROM migrate_version;" | mysql --protocol=TCP -u ec2api --password=${MYSQL_EC2API_PW} ec2api > /dev/null
if ! [ $? -eq 0 ] if ! [ $? -eq 0 ]