spacewalk/setup/lib/Spacewalk/Setup.pm | 13 - spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql | 123 ++++++++-- 2 files changed, 111 insertions(+), 25 deletions(-)
New commits: commit 39fbdbb13536cd129f5fd66908ccb0a4c087b599 Author: Michael Mraka michael.mraka@redhat.com Date: Mon Oct 22 16:15:09 2012 +0200
merge spacewalk-setup-embedded-postgresql and remove-db.sh
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm b/spacewalk/setup/lib/Spacewalk/Setup.pm index 4d2c582..b614893 100644 --- a/spacewalk/setup/lib/Spacewalk/Setup.pm +++ b/spacewalk/setup/lib/Spacewalk/Setup.pm @@ -939,13 +939,13 @@ sub postgresql_setup_embedded_db { return 0; }
- if (-d "/var/lib/pgsql/data/base") { + if (! system(qq{/usr/bin/spacewalk-setup-embedded-postgresql check --db $answers->{'db-name'}})) { my $shared_dir = SHARED_DIR; print loc(<<EOQ); The embedded database appears to be already installed. Either rerun this script with the --skip-db-install option, or use the -'$shared_dir/postgresql/remove-db.sh --db $answers->{'db-name'}' script to remove the embedded database -and try again. +'/usr/bin/spacewalk-setup-embedded-postgresql remove --db $answers->{'db-name'} --user $answers->{'db-user'}' +script to remove the embedded database and try again. EOQ
exit 13; @@ -975,8 +975,11 @@ EOQ -log_file_size => DB_INSTALL_LOG_SIZE, -err_message => "Could not install database.\n", -err_code => 15, - -system_opts => [ "/usr/bin/spacewalk-setup-embedded-postgresql", "--db", $answers->{'db-name'}, - "--user", $answers->{'db-user'}, "--password", $answers->{'db-password'}]); + -system_opts => [ "/usr/bin/spacewalk-setup-embedded-postgresql", + "create", + "--db", $answers->{'db-name'}, + "--user", $answers->{'db-user'}, + "--password", $answers->{'db-password'}]);
print loc("** Database: Installation complete.\n");
diff --git a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql index 9393c7c..d697fd5 100755 --- a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql +++ b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql @@ -34,36 +34,113 @@ while true ; do shift done
-if [ -z "$PGUSER" -o -z "$PGPASSWORD" -o -z "$PGNAME" ] ; then - echo "usage: $(basename $0) --db <database_name> --user <username> --password <password>" >&2 - exit 1 -fi +help() { + echo "usage: $(basename $0) create --db <database_name> --user <username> --password <password>" >&2 + echo " $(basename $0) remove [ --db <database_name> | --user <username> ]" >&2 + echo " $(basename $0) check [ --db <database_name> | --user <username> ]" >&2 +}
PG_DATA=/var/lib/pgsql/data PG_HBA="$PG_DATA/pg_hba.conf"
-chkconfig postgresql on +create() { + if [ -z "$PGUSER" -o -z "$PGPASSWORD" -o -z "$PGNAME" ] ; then + help + exit 1 + fi + chkconfig postgresql on
-if [ ! -d "$PG_DATA/base" ] ; then - service postgresql initdb + if [ ! -d "$PG_DATA/base" ] ; then + service postgresql initdb
- sed -i 's/^([^#].*)$/### next line has been commented out by spacewalk-setup-embedded-postgresql: ###\n##\1/ ' $PG_HBA - cat >> $PG_HBA <<EOF + sed -i 's/^([^#].*)$/### next line has been commented out by spacewalk-setup-embedded-postgresql: ###\n##\1/ ' $PG_HBA + cat >> $PG_HBA <<EOF
local $PGNAME $PGUSER md5 host $PGNAME $PGUSER 127.0.0.1/8 md5 host $PGNAME $PGUSER ::1/128 md5 local $PGNAME postgres ident +local postgres postgres ident + EOF -fi + fi + + service postgresql start + + if ! exists_db ; then + runuser - postgres -c "createdb '$PGNAME'; createlang plpgsql '$PGNAME'" + fi + if ! exists_user ; then + runuser - postgres -c "yes '$PGPASSWORD' | createuser -P -sDR '$PGUSER'" + fi + + service postgresql reload +} + +remove() { + if [ -z "$PGUSER" -a -z "$PGNAME" ] ; then + help + exit 1 + fi + if exists_db ; then + runuser - postgres -c "dropdb '$PGNAME'" + fi + if exists_user ; then + runuser - postgres -c "dropuser '$PGUSER'" + fi +} + +check() { + if [ -z "$PGUSER" -a -z "$PGNAME" ] ; then + help + exit 1 + fi + RET=0 + if [ -n "$PGUSER" ] ; then + if exists_user ; then + echo "User "$PGUSER" already exists" + else + echo "User "$PGUSER" does not exist" + RET=1 + fi + fi + if [ -n "$PGNAME" ] ; then + if exists_db ; then + echo "Database "$PGNAME" already exists" + else + echo "Database "$PGNAME" does not exist" + RET=1 + fi + fi + exit $RET +}
-service postgresql start +exists_db() { + EXISTS=$(runuser - postgres -c 'psql -t -c "select datname from pg_database where datname='"'$PGNAME'"';"') + if [ "x$EXISTS" == "x $PGNAME" ] ; then + return 0 + else + return 1 + fi +}
-runuser - postgres -c " -PGPASSWORD='$PGPASSWORD' -createdb '$PGNAME' -createlang plpgsql '$PGNAME' -yes '$PGPASSWORD' | createuser -P -sDR '$PGUSER' -" +exists_user() { + EXISTS=$(runuser - postgres -c 'psql -t -c "select usename from pg_user where usename='"'$PGUSER'"';"') + if [ "x$EXISTS" == "x $PGUSER" ] ; then + return 0 + else + return 1 + fi +} + +case $1 in + create) create + ;; + remove) remove + ;; + check) check + ;; + *) help + ;; +esac
-service postgresql reload diff --git a/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh b/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh deleted file mode 100644 index 644692a..0000000 --- a/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e - -OPTS=$(getopt --longoptions=db: -n ${0##*/} -- d: "$@") - -if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi - -eval set -- "$OPTS" - -while true ; do - case "$1" in - -d|--db) - PGNAME=$2 - shift - ;; - --) - shift - break - ;; - *) - echo "Internal error [$1]!" >&2 - exit 1 - ;; - esac - shift -done - -if [ -z "$PGNAME" ] ; then - echo "usage: $(basename $0) --db <database_name>" >&2 - exit 1 -fi - -runuser - postgres -c "dropdb $PGNAME"
commit be9bcd526b9e4edd61fbdb5c56ffe348322056d5 Author: Michael Mraka michael.mraka@redhat.com Date: Mon Oct 22 16:14:49 2012 +0200
run initdb only if it's necessary
diff --git a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql index 88fbc76..9393c7c 100755 --- a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql +++ b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql @@ -39,25 +39,31 @@ if [ -z "$PGUSER" -o -z "$PGPASSWORD" -o -z "$PGNAME" ] ; then exit 1 fi
+PG_DATA=/var/lib/pgsql/data +PG_HBA="$PG_DATA/pg_hba.conf" + chkconfig postgresql on -service postgresql initdb -service postgresql start
-runuser - postgres -c " -PGPASSWORD='$PGPASSWORD' -createdb '$PGNAME' -createlang plpgsql '$PGNAME' -yes '$PGPASSWORD' | createuser -P -sDR '$PGUSER' -" +if [ ! -d "$PG_DATA/base" ] ; then + service postgresql initdb
-PG_HBA=/var/lib/pgsql/data/pg_hba.conf -sed -i 's/^([^#].*)$/### next line has been commented out by spacewalk-setup-embedded-postgresql: ###\n##\1/ ' $PG_HBA -cat >> $PG_HBA <<EOF + sed -i 's/^([^#].*)$/### next line has been commented out by spacewalk-setup-embedded-postgresql: ###\n##\1/ ' $PG_HBA + cat >> $PG_HBA <<EOF
local $PGNAME $PGUSER md5 host $PGNAME $PGUSER 127.0.0.1/8 md5 host $PGNAME $PGUSER ::1/128 md5 local $PGNAME postgres ident EOF +fi + +service postgresql start + +runuser - postgres -c " +PGPASSWORD='$PGPASSWORD' +createdb '$PGNAME' +createlang plpgsql '$PGNAME' +yes '$PGPASSWORD' | createuser -P -sDR '$PGUSER' +"
service postgresql reload
commit eab15af245bbe9a68429ecc75f89f4bd9f602194 Author: Michael Mraka michael.mraka@redhat.com Date: Mon Oct 22 16:14:00 2012 +0200
added script to remove database
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm b/spacewalk/setup/lib/Spacewalk/Setup.pm index 295befd..4d2c582 100644 --- a/spacewalk/setup/lib/Spacewalk/Setup.pm +++ b/spacewalk/setup/lib/Spacewalk/Setup.pm @@ -944,7 +944,7 @@ sub postgresql_setup_embedded_db { print loc(<<EOQ); The embedded database appears to be already installed. Either rerun this script with the --skip-db-install option, or use the -'$shared_dir/postgresql/remove-db.sh' script to remove the embedded database +'$shared_dir/postgresql/remove-db.sh --db $answers->{'db-name'}' script to remove the embedded database and try again. EOQ
diff --git a/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh b/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh new file mode 100644 index 0000000..644692a --- /dev/null +++ b/spacewalk/spacewalk-setup-embedded-postgresql/setup/postgresql/remove-db.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -e + +OPTS=$(getopt --longoptions=db: -n ${0##*/} -- d: "$@") + +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi + +eval set -- "$OPTS" + +while true ; do + case "$1" in + -d|--db) + PGNAME=$2 + shift + ;; + --) + shift + break + ;; + *) + echo "Internal error [$1]!" >&2 + exit 1 + ;; + esac + shift +done + +if [ -z "$PGNAME" ] ; then + echo "usage: $(basename $0) --db <database_name>" >&2 + exit 1 +fi + +runuser - postgres -c "dropdb $PGNAME"
commit 376c5ff6651fc7ea90e6b952fe1832163b6023c0 Author: Michael Mraka michael.mraka@redhat.com Date: Mon Oct 22 16:13:06 2012 +0200
replaced su with runuser
diff --git a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql index 3de5d8c..88fbc76 100755 --- a/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql +++ b/spacewalk/spacewalk-setup-embedded-postgresql/bin/spacewalk-setup-embedded-postgresql @@ -43,12 +43,12 @@ chkconfig postgresql on service postgresql initdb service postgresql start
-su - postgres <<EOP +runuser - postgres -c " PGPASSWORD='$PGPASSWORD' createdb '$PGNAME' createlang plpgsql '$PGNAME' yes '$PGPASSWORD' | createuser -P -sDR '$PGUSER' -EOP +"
PG_HBA=/var/lib/pgsql/data/pg_hba.conf sed -i 's/^([^#].*)$/### next line has been commented out by spacewalk-setup-embedded-postgresql: ###\n##\1/ ' $PG_HBA
spacewalk-commits@lists.fedorahosted.org