#!/bin/bash ## When writing relation script, remember: ## - they should be idempotents ## - they can be launched while the dockers is already up ## - they are launched from the host ## - the target of the link is launched first, and get a chance to ``relation-set`` ## - both side of the scripts get to use ``relation-get``. set -e ## XXXvlab: should use container name here so that it could support ## multiple postgres label=pg-backup-$SERVICE_NAME DST=$CONFIGSTORE/$TARGET_SERVICE_NAME/etc/cron/$label schedule=$(relation-get schedule) if ! echo "$schedule" | egrep '^\s*(([0-9/,*-]+\s+){4,4}[0-9/,*-]+|@[a-z]+)\s*$' >/dev/null 2>&1; then err "Unrecognized schedule '$schedule'." exit 1 fi ## XXXvlab: how is this meant to works if there's multiples postgres (about PGHOST=?) ? ## Warning: using '\' in heredoc will be removed in the final cron file, which ## is totally wanted: cron does not support multilines. exclude_dbs=$(relation-get exclude-dbs 2>/dev/null) || true exclude_dbs=$(echo "$exclude_dbs" | shyaml get-values 2>/dev/null | xargs echo) || true ## Warning: 'docker -v' will use HOST directory even if launched from ## 'cron' container. file_put "$DST" <&1 | ts '\%F \%T \%Z' >> /var/log/cron/pg-backup_script.log EOF chmod +x "$DST" config-add "\ $MASTER_TARGET_SERVICE_NAME: links: - $MASTER_BASE_SERVICE_NAME "