Alex Lourie has uploaded a new change for review. Change subject: packaging: added option to provide dbowner to validators ......................................................................
packaging: added option to provide dbowner to validators This patch is an amendment to gerrit.ovirt.org/12512 and it adds an option to provide validators with db owner user. It can be then used to update ownership on all objects in the database. Change-Id: I5145115548826f419b105770ead202e808351013 Bug-Url: https://bugzilla.redhat.com/893459 Signed-off-by: Alex Lourie <alou...@redhat.com> --- M backend/manager/tools/dbutils/common.sh M backend/manager/tools/dbutils/encodingvalidator.sh M backend/manager/tools/dbutils/fkvalidator.sh M backend/manager/tools/dbutils/validatedb.sh M packaging/fedora/setup/engine-upgrade.py 5 files changed, 41 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/14609/1 diff --git a/backend/manager/tools/dbutils/common.sh b/backend/manager/tools/dbutils/common.sh index 4205bbe..d86fcea 100755 --- a/backend/manager/tools/dbutils/common.sh +++ b/backend/manager/tools/dbutils/common.sh @@ -6,6 +6,7 @@ PORT="5432" DATABASE="engine" USERNAME="engine" + DBOBJECT_OWNER="engine" VERBOSE=false LOGFILE="$ME.log" @@ -20,3 +21,25 @@ export PGPASSFILE } +fn_db_set_dbobjects_ownership() { + cmd="select c.relname \ + from pg_class c join pg_roles r on r.oid = c.relowner join pg_namespace n on n.oid = c.relnamespace \ + where c.relkind in ('r','v','S') \ + and n.nspname = 'public' and r.rolname != '${DBOBJECT_OWNER}';" + res=$(execute_command "${cmd}" engine ${SERVERNAME} ${PORT}) + if [ -n "${res}" ]; then + cmd="" + for tab in $(echo $res); do + cmd=${cmd}"alter table $tab owner to ${DBOBJECT_OWNER}; " + done + if [ -n "${cmd}" ]; then + echo -n "Changing ownership of objects in database '$DATABASE' to owner '$DBOBJECT_OWNER' ... " + res=$(execute_command "${cmd}" engine ${SERVERNAME} ${PORT}) + if [ $? -eq 0 ]; then + echo "completed successfully." + else + return 1 + fi + fi + fi +} diff --git a/backend/manager/tools/dbutils/encodingvalidator.sh b/backend/manager/tools/dbutils/encodingvalidator.sh index bdf7d31..68185a8 100755 --- a/backend/manager/tools/dbutils/encodingvalidator.sh +++ b/backend/manager/tools/dbutils/encodingvalidator.sh @@ -40,7 +40,7 @@ FIXIT=false QUIET=false -while getopts hs:u:p:l:d:qfv option; do +while getopts hs:u:p:l:d:o:qfv option; do case $option in s) SERVERNAME=$OPTARG;; p) PORT=$OPTARG;; @@ -102,7 +102,7 @@ encoding=$(get) if [[ "${encoding}" = "UTF8" || "${encoding}" = "utf8" ]]; then - echo "Database template1 has already UTF8 default encoding configured. nothing to do, exiting..." + echo "Database template1 has UTF8 default encoding configured. Nothing to do." exit 0 elif [ "${FIXIT}" = "false" ]; then echo "Database template1 is configured with an incompatible encoding: ${encoding}" diff --git a/backend/manager/tools/dbutils/fkvalidator.sh b/backend/manager/tools/dbutils/fkvalidator.sh index 106807d..1f52628 100755 --- a/backend/manager/tools/dbutils/fkvalidator.sh +++ b/backend/manager/tools/dbutils/fkvalidator.sh @@ -28,12 +28,13 @@ usage() { - printf "Usage: ${ME} [-h] [-s SERVERNAME [-p PORT]] [-d DATABASE] [-u USERNAME] [-l LOGFILE] [-f] [-q] [-v]\n" + printf "Usage: ${ME} [-h] [-s SERVERNAME [-p PORT]] [-d DATABASE] [-u USERNAME] [-o DBOWNER] [-l LOGFILE] [-f] [-q] [-v]\n" printf "\n" printf "\t-s SERVERNAME - The database servername for the database (def. ${SERVERNAME})\n" printf "\t-p PORT - The database port for the database (def. ${PORT})\n" printf "\t-d DATABASE - The database name (def. ${DATABASE})\n" printf "\t-u USERNAME - The username for the database (def. engine)\n" + printf "\t-o DBOWNER - The owner of the database (def. engine)\n" printf "\t-l LOGFILE - The logfile for capturing output (def. ${LOGFILE})\n" printf "\t-f - Fix the non consistent data by removing it from DB.\n" printf "\t-v - Turn on verbosity (WARNING: lots of output)\n" @@ -78,6 +79,7 @@ s) SERVERNAME=$OPTARG;; p) PORT=$OPTARG;; d) DATABASE=$OPTARG;; + o) DBOBJECT_OWNER=$OPTARG;; u) USERNAME=$OPTARG;; l) LOGFILE=$OPTARG;; f) FIXIT=true;; @@ -90,6 +92,7 @@ # Install fkvalidator procedures psql -w -U ${USERNAME} -h ${SERVERNAME} -p ${PORT} -f ./fkvalidator_sp.sql ${DATABASE} > /dev/null +fn_db_set_dbobjects_ownership() if [[ "${FIXIT}" = "true" && ! "${QUIET}" = "true" ]]; then echo "Caution, this operation should be used with care. Please contact support prior to running this command" diff --git a/backend/manager/tools/dbutils/validatedb.sh b/backend/manager/tools/dbutils/validatedb.sh index de0c116..907f691 100755 --- a/backend/manager/tools/dbutils/validatedb.sh +++ b/backend/manager/tools/dbutils/validatedb.sh @@ -10,6 +10,8 @@ write log to this file. --user=username user name to use to connect to the DB + --dbowner=username + user name to use to create objects in the DB --host=hostname server to use to connect to the DB --port=port @@ -34,6 +36,9 @@ ;; --user=*) USERNAME="-u ${v}" + ;; + --dbowner=*) + DBOWNER="-o ${v}" ;; --host=*) SERVERNAME="-s ${v}" @@ -60,6 +65,6 @@ validationlist="fkvalidator.sh encodingvalidator.sh" for script in ${validationlist}; do - $dbutils/${script} ${USERNAME} ${SERVERNAME} ${PORT} ${DATABASE} -q ${extra_params} || error=1 + $dbutils/${script} ${USERNAME} ${DBOWNER} ${SERVERNAME} ${PORT} ${DATABASE} -q ${extra_params} || error=1 done exit ${error} diff --git a/packaging/fedora/setup/engine-upgrade.py b/packaging/fedora/setup/engine-upgrade.py index f348d5d..49fd8dd 100755 --- a/packaging/fedora/setup/engine-upgrade.py +++ b/packaging/fedora/setup/engine-upgrade.py @@ -1088,6 +1088,9 @@ "--user={admin}".format( admin=utils.getDbAdminUser(), ), + "--dbowner={dbowner}".format( + dbowner=SERVER_ADMIN, + ), "--host={host}".format( host=SERVER_NAME ), @@ -1121,6 +1124,9 @@ "--user={admin}".format( admin=utils.getDbAdminUser(), ), + "--dbowner={dbowner}".format( + dbowner=SERVER_ADMIN, + ), "--host={host}".format( host=SERVER_NAME ), -- To view, visit http://gerrit.ovirt.org/14609 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5145115548826f419b105770ead202e808351013 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alex Lourie <alou...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches