summaryrefslogtreecommitdiffstats
path: root/systemd/postgresql-generator
blob: 12e81029cee45f3baf33ff09444daebc3a8fc011 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh

# This systemd generator creates dependency symlinks that make all PostgreSQL
# clusters with "auto" in their start.conf file be started/stopped/reloaded
# when postgresql.service is started/stopped/reloaded.

set -eu

gendir="$1"
wantdir="$1/postgresql.service.wants"
bindir="/usr/lib/postgresql/"
#redhat# bindir="/usr/pgsql-"
pgservice="/lib/systemd/system/postgresql@.service"

mkdir -p "$wantdir"

for conf in /etc/postgresql/*/*/postgresql.conf; do
	# abort loop if glob was not expanded (but accept dead symlinks)
	if ! test -e "$conf" && ! test -L "$conf"; then continue; fi

	dir="${conf%/*}"

	# evaluate start.conf
	if [ -e "$dir/start.conf" ]; then
		start=$(sed 's/#.*$//; /^[[:space:]]*$/d; s/^\s*//; s/\s*$//' "$dir/start.conf")
	else
		start=auto
	fi
	[ "$start" = "auto" ] || continue

	verdir="${dir%/*}"
	version="${verdir##*/}"
	test -x "$bindir$version/bin/postgres" || continue # package got removed
	cluster="${dir##*/}"
	ln -s "$pgservice" "$wantdir/postgresql@$version-$cluster.service"
done

exit 0