Skip to content

Commit

Permalink
debian: changed postgresql database owner
Browse files Browse the repository at this point in the history
Allows dbconfig-common database updates to Bareos DB version 2170.
PostgreSQL needs special handling.
  • Loading branch information
joergsteffens committed May 18, 2017
1 parent 8c25b7e commit 6f27e7d
Show file tree
Hide file tree
Showing 9 changed files with 57 additions and 14 deletions.
1 change: 1 addition & 0 deletions autoconf/Make.common.in
Expand Up @@ -36,6 +36,7 @@ backenddir = @backenddir@
plugindir = @plugindir@
scriptdir = @scriptdir@
archivedir = @archivedir@
workingdir = @working_dir@
mandir = @mandir@
manext = 8

Expand Down
1 change: 1 addition & 0 deletions autoconf/configure.in
Expand Up @@ -4261,6 +4261,7 @@ debian|ubuntu|univention)
debian/bareos-database-common.install \
debian/bareos-database-common.postinst \
debian/bareos-database-mysql.install \
debian/bareos-database-postgresql.dirs \
debian/bareos-database-postgresql.install \
debian/bareos-database-sqlite3.install \
debian/bareos-database-tools.install \
Expand Down
5 changes: 0 additions & 5 deletions debian/bareos-database-common.config.in
Expand Up @@ -50,11 +50,6 @@ if [ -r @scriptdir@/bareos-config-lib.sh ]; then
param2=`get_database_version_by_release "$param2"`

# dbconfig is available since Bareos version >= 14.1.0.
# TODO: currently the database version for the first version using dbconfig
# is identical with the last version without dbconfig.
# Therefore we fake dbc_first_version and set it to 2003.
# As soon as there is a database version 2003,
# this will be true anyway.
if dpkg --compare-versions "$param2_orig" lt "14.1.0"; then
bareos_migrate_to_dbconfig="yes"
dbc_first_version="2003"
Expand Down
2 changes: 2 additions & 0 deletions debian/bareos-database-common.postinst.in
Expand Up @@ -24,6 +24,8 @@ if [ -r @scriptdir@/bareos-config-lib.sh ]; then
if [ -f /usr/share/dbconfig-common/dpkg/postinst ]; then
. /usr/share/dbconfig-common/dpkg/postinst

dbc_debug=1

# action
if [ $# -gt 0 ]; then
param1="$1"
Expand Down
1 change: 1 addition & 0 deletions debian/bareos-database-postgresql.dirs.in
@@ -0,0 +1 @@
@working_dir@/dbconfig-common/upgrade-dbadmin/pgsql/
2 changes: 2 additions & 0 deletions debian/bareos-database-postgresql.install.in
Expand Up @@ -3,3 +3,5 @@
/usr/share/dbconfig-common/data/bareos-database-common/install/pgsql
/usr/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/*
/usr/share/dbconfig-common/data/bareos-database-common/upgrade/pgsql/*
/usr/share/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/*

27 changes: 18 additions & 9 deletions platforms/debian/Makefile.in
Expand Up @@ -55,10 +55,10 @@ install-dbconfig:
#
@$(SYMLINK) $(scriptdir)/ddl/creates/mysql.sql $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/install/mysql
@$(MKDIR) $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/mysql/
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/mysql.*.sql; do \
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/mysql.[0-9]*.sql; do \
if [ -r $$i ]; then \
BASENAME=`basename $$i`; \
VERSION=`echo $$BASENAME | sed -r 's/mysql\.[0-9]*_([0-9]*)\.sql/\1/'`; \
VERSION=`echo $$BASENAME | sed -n -r 's/mysql\.[0-9]*_([0-9]*)\.sql/\1/p'`; \
$(SYMLINK) $(scriptdir)/ddl/updates/$$BASENAME $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/mysql/$$VERSION; \
fi; \
done
Expand All @@ -68,28 +68,37 @@ install-dbconfig:
@$(SYMLINK) $(scriptdir)/ddl/creates/postgresql.sql $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/install/pgsql
@$(MKDIR) $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/pgsql/
@$(MKDIR) $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/
@$(MKDIR) $(DESTDIR)/${datarootdir}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/
@$(MKDIR) $(DESTDIR)/${workingdir}/dbconfig-common/upgrade-dbadmin/pgsql/

@$(INSTALL_PROGRAM) dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/2170 $(DESTDIR)/${datarootdir}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/
@$(SYMLINK) 2170 $(DESTDIR)/${datarootdir}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/2003
@$(SYMLINK) 2170 $(DESTDIR)/${datarootdir}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/2004
@$(SYMLINK) ${workingdir}/dbconfig-common/upgrade-dbadmin/pgsql/2003 $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/2003
@$(SYMLINK) ${workingdir}/dbconfig-common/upgrade-dbadmin/pgsql/2004 $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/2004
@$(SYMLINK) ${workingdir}/dbconfig-common/upgrade-dbadmin/pgsql/2170 $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/2170

# if the initial install has not used dbconfig,
# the bareos database user might not have the required permissions
# to drop tables. Therefore droping tables will be done as database admin user.
# Tables are created by the bareos database user,
# because otherwise it do not receive the required permissions.
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/postgresql.*.sql; do \
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/postgresql.[0-9]*.sql; do \
if [ -r $$i ]; then \
BASENAME=`basename $$i`; \
VERSION=`echo $$BASENAME | sed -r 's/postgresql\.[0-9]*_([0-9]*)\.sql/\1/'`; \
grep -E -i "^ALTER|^DROP|^--|^$$" $$i > $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/pgsql/$$VERSION; \
sed -e 's/^ALTER/-- upgrade-dbadmin: ALTER/' -e 's/^DROP/-- upgrade-dbadmin: DROP/' $$i > $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/pgsql/$$VERSION; \
BASENAME=`basename $$i`; \
VERSION=`echo $$BASENAME | sed -n -r 's/postgresql\.[0-9]*_([0-9]*)\.sql/\1/p'`; \
$(SYMLINK) $(scriptdir)/ddl/updates/$$BASENAME $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/pgsql/$$VERSION; \
fi; \
done
#
# sqlite
#
@$(SYMLINK) $(scriptdir)/ddl/creates/sqlite3.sql $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/install/sqlite3
@$(MKDIR) $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/sqlite3/
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/sqlite3.*.sql; do \
for i in $(DESTDIR)/$(scriptdir)/ddl/updates/sqlite3.[0-9]*.sql; do \
if [ -r $$i ]; then \
BASENAME=`basename $$i`; \
VERSION=`echo $$BASENAME | sed -r 's/sqlite3\.[0-9]*_([0-9]*)\.sql/\1/'`; \
VERSION=`echo $$BASENAME | sed -n -r 's/sqlite3\.[0-9]*_([0-9]*)\.sql/\1/p'`; \
$(SYMLINK) $(scriptdir)/ddl/updates/$$BASENAME $(DESTDIR)/${datarootdir}/dbconfig-common/data/bareos-database-common/upgrade/sqlite3/$$VERSION; \
fi; \
done
Expand Down
@@ -0,0 +1,20 @@
#!/bin/sh

# parameter:
# 1: dbc_package
# 2: action
# 3: if action = configure: most-recently-configured-version

dbc_confdir="/etc/dbconfig-common"
dbc_share="/usr/share/dbconfig-common"
dbc_package="bareos-database-common"

dbc_packageconfig="$dbc_confdir/$dbc_package.conf"

dbversion=`basename $0`

template="/usr/lib/bareos/scripts/ddl/grants/postgresql-change_owner.dbconfig-template.sql"
target="/var/lib/bareos/dbconfig-common/upgrade-dbadmin/pgsql/$dbversion"

/usr/sbin/dbconfig-generate-include -f template -o template_infile=$template $dbc_packageconfig > $target

12 changes: 12 additions & 0 deletions src/cats/ddl/grants/postgresql-change_owner.dbconfig-template.sql
@@ -0,0 +1,12 @@
--
-- change table owner
--

CREATE OR REPLACE FUNCTION execute(text)
returns void as $BODY$BEGIN raise notice 'exec: %',$1; execute $1; END;$BODY$ language plpgsql;

SELECT execute('ALTER TABLE '|| tablename ||' OWNER TO _DBC_DBUSER_;')
FROM pg_tables WHERE schemaname='public' AND tableowner!='_DBC_DBUSER_';

DROP FUNCTION execute(text);

0 comments on commit 6f27e7d

Please sign in to comment.