22736c
#!/bin/sh
e1cb78
{{ pillar['managed_by_salt'] }}
e1cb78
d91308
tmp=$(mktemp -p /tmp -d memberaliases.XXXXXXXXXX)
22736c
cd "$tmp" || exit 1
22736c
ecec85
metrics_base='virtual_opensuse_users'
ecec85
ecec85
write_metrics() {
ecec85
  {
ecec85
    printf '%s_status %i\n' "$metrics_base" "$1"
ecec85
    printf '%s_add %i\n'    "$metrics_base" "$2"
ecec85
    printf '%s_remove %i\n' "$metrics_base" "$3"
ecec85
    printf '%s_total %i\n'  "$metrics_base" "$4"
ecec85
  } | sponge /var/spool/prometheus/get_member_aliases.prom
22736c
}
22736c
Christian Boltz b20a43
mysql -h mysql.infra.opensuse.org -P3307 -Dmembers -NB -e 'select addr, email_target from email_aliases' >member.aliases.new
22736c
22736c
# need to make sure it is ordered
22736c
LC_ALL=C sort -d -k1 member.aliases.new >member.aliases.ordered
22736c
d91308
added=$(diff -B -b /etc/postfix/virtual-opensuse-users member.aliases.ordered | grep ^\> | wc -l)
d91308
removed=$(diff -B -b /etc/postfix/virtual-opensuse-users member.aliases.ordered | grep ^\< | wc -l)
22736c
total=$(wc -l 
22736c
22736c
# if too many would be removed, something's probably wrong.
22736c
if test $removed -gt 20
22736c
then
22736c
        printf "New member-aliases list (%u entries) would remove %u aliases ?\n" $total $removed
ecec85
        write_metrics '1' "$added" "$removed" "$total"
3a511d
        # tidy up
3a511d
        rm -Rf "$tmp"
22736c
        exit 1
22736c
fi
22736c
22736c
# if we had any changes, update our alias list
22736c
if test $added -gt 0 -o $removed -gt 0
22736c
then
22736c
        printf "virtual-opensuse-users updated: %u additions, %u removals, now %u entries\n" $added $removed $total
ecec85
        write_metrics '0' "$added" "$removed" "$total"
3a511d
        # debug
3a511d
        diff -B -b /etc/postfix/virtual-opensuse-users member.aliases.ordered
22736c
3a511d
        mv member.aliases.ordered /etc/postfix/virtual-opensuse-users
22736c
        postmap /etc/postfix/virtual-opensuse-users
22736c
        postfix reload
22736c
else
22736c
#        printf "virtual-opensuse-users not updated, no changes found.\n"
ecec85
        write_metrics '0' "$added" "$removed" "$total"
22736c
fi
22736c
22736c
# tidy up
22736c
rm -Rf "$tmp"