#! /bin/sh
#
# Copyright (c) 2019,2021,2024 Red Hat.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#
# Upgrade an older (perl or python) mssql PMDA to latest python version
#

. $PCP_DIR/etc/pcp.env

if grep -q '^mssql.*perl ' "$PCP_PMCDCONF_PATH" 2>/dev/null
then
    # convert original perl implementation to python
    sed -i $PCP_PMCDCONF_PATH 2>/dev/null \
	-e "s,perl $PCP_PMDAS_DIR/mssql/pmdamssql.pl,$PCP_PYTHON_PROG $PCP_PMDAS_DIR/mssql/pmdamssql.python,g"
fi

if grep -q ^mssql "$PCP_PMCDCONF_PATH" 2>/dev/null
then
    if grep ^mssql "$PCP_PMCDCONF_PATH" | grep -q "$PCP_PYTHON_PROG" 2>/dev/null
    then
	:	# already using $PCP_PYTHON_PROG, leave this line untouched
    else
	# convert hard-coded python or python3 binary to PCP_PYTHON_PROG
	sed -i $PCP_PMCDCONF_PATH 2>/dev/null \
	    -e "s,python3 $PCP_PMDAS_DIR/mssql/,$PCP_PYTHON_PROG $PCP_PMDAS_DIR/mssql/,g" \
	    -e "s,python $PCP_PMDAS_DIR/mssql/,$PCP_PYTHON_PROG $PCP_PMDAS_DIR/mssql/,g" \
	# end
    fi
fi

perlpath=`which $PCP_PERL_PROG`
original="$PCP_PMDAS_DIR/mssql/mssql.conf"
upgraded="$PCP_PMDAS_DIR/mssql/mssql.conf.tmp"
if grep -q '^my ' "$original"
then
    cp "$original" "$original".saved
    #
    # Extract perl parameters in the way the original PMDA did; then
    # convert old format into new and finally move old config aside.
    #
    "$perlpath" > "$upgraded" << EOF
my \$database = undef; # default: 'PCP'
my \$username = undef; # default: 'dbmonitor'
my \$password = undef; # default: 'dbmonitor'
my \$server = undef;   # default: 'localhost'

eval \`cat $PCP_PMDAS_DIR/mssql/mssql.conf\`;

exit 0 unless defined(\$database) or defined(\$username) or defined(\$password) or defined(\$server);

print "[authentication]\n";
print "driver={ODBC Driver 17 for SQL Server}\n";
\$server='tcp:localhost' unless (defined(\$server) and \$server ne '');
print "server=\$server\n";
\$database='master' unless (defined(\$database) and \$database ne '');
print "database=\$database\n";
\$username='sa' unless (defined(\$username) and \$username ne '');
print "username=\$username\n";
\$password='password' unless (defined(\$password) and \$password ne '');
print "password=\$password\n";
EOF
    mv -f "$upgraded" "$original"
    chmod 600 "$original"
fi

exit 0
