#! /bin/sh
#
# Needed argument: pre | post
#
# pre mode  :  try to run mysql_install_db and fix perms and SELinux contexts
# post mode :  ping server until answer is received
#

get_option () {
    local section=$1
    local option=$2
    local default=$3
    ret=$(/usr/bin/my_print_defaults $section | grep '^--'${option}'=' | cut -d= -f2-)
    [ -z $ret ] && ret=$default
    echo $ret
}

install_db () {
    # Note: something different than datadir=/var/lib/mysql requires SELinux policy changes (in enforcing mode)
    datadir=$(get_option mysqld datadir "/var/lib/mysql")

    # Restore log, dir, perms and SELinux contexts
    [ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || exit 1
    log=/var/log/mysqld.log
    [ -e $log ] || touch $log
    chmod 0640 $log
    chown mysql:mysql $log || exit 1
    if [ -x /usr/sbin/restorecon ]; then
        /usr/sbin/restorecon "$datadir"
        /usr/sbin/restorecon $log
    fi

    # If special mysql dir is in place, skip db install
    [ -d "$datadir/mysql" ] && exit 0

    # Create initial db
    /usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql
    exit 0
}

pinger () {
    # Wait for ping to answer to signal startup completed,
    # might take a while in case of e.g. crash recovery
    # MySQL systemd service will timeout script if no answer
    datadir=$(get_option mysqld datadir "/var/lib/mysql")
    socket=$(get_option  mysqld socket "$datadir/mysql.sock")
    case $socket in
        /*) adminsocket="$socket" ;;
        *) adminsocket="$datadir/$socket" ;;
    esac

    while /bin/true ; do
        sleep 1
        mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break
    done
    exit 0
}

# main
case $1 in
    "pre") install_db ;;
    "post") pinger ;;
esac

exit 0

