summaryrefslogtreecommitdiff
path: root/docker/hybrid/images/libeufin/startup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'docker/hybrid/images/libeufin/startup.sh')
-rw-r--r--docker/hybrid/images/libeufin/startup.sh47
1 files changed, 34 insertions, 13 deletions
diff --git a/docker/hybrid/images/libeufin/startup.sh b/docker/hybrid/images/libeufin/startup.sh
index 129e404..07bb4ee 100644
--- a/docker/hybrid/images/libeufin/startup.sh
+++ b/docker/hybrid/images/libeufin/startup.sh
@@ -2,13 +2,18 @@
set -eu
+MAYBE_VOLUME_MOUNTPOINT="/data/libeufin"
+export LIBEUFIN_SANDBOX_DB_CONNECTION="jdbc:sqlite:${MAYBE_VOLUME_MOUNTPOINT}/sandbox.sqlite3"
+export LIBEUFIN_NEXUS_DB_CONNECTION="jdbc:sqlite:${MAYBE_VOLUME_MOUNTPOINT}/nexus.sqlite3"
+# This file indicates that data preparation ran already
+# once. It helps against some non idempotent commands.
+INIT_MARKER=${MAYBE_VOLUME_MOUNTPOINT}/init-done
export LD_LIBRARY_PATH=/usr/local/lib # helps taler-config
CURRENCY=`taler-config -c /config/deployment.conf -s taler-deployment -o currency`
SANDBOX_PORT=15000
NEXUS_PORT=15001
SANDBOX_BASE_URL="http://localhost:${SANDBOX_PORT}"
EXCHANGE_URL=`taler-config -c /config/deployment.conf -s taler-deployment -o default-exchange`
-MAYBE_VOLUME_MOUNTPOINT="/data/libeufin"
# As wanted by the Libeufin CLI:
export LIBEUFIN_SANDBOX_URL="${SANDBOX_BASE_URL}/demobanks/default"
export LIBEUFIN_NEXUS_URL="http://localhost:${NEXUS_PORT}"
@@ -17,7 +22,9 @@ export LIBEUFIN_NEXUS_URL="http://localhost:${NEXUS_PORT}"
register_sandbox_account() {
export LIBEUFIN_SANDBOX_USERNAME=$1
export LIBEUFIN_SANDBOX_PASSWORD=$2
- libeufin-cli sandbox demobank register --name "$4" --iban $3
+ # A unavailable username upon registration should
+ # fail, hence non idempotence is acceptable here.
+ test -a $INIT_MARKER || libeufin-cli sandbox demobank register --name "$4" --iban $3
unset LIBEUFIN_SANDBOX_USERNAME
unset LIBEUFIN_SANDBOX_PASSWORD
}
@@ -43,13 +50,12 @@ is_serving() {
EXCHANGE_IBAN=DE159593
mkdir -p ${MAYBE_VOLUME_MOUNTPOINT}
-export LIBEUFIN_SANDBOX_DB_CONNECTION="jdbc:sqlite:${MAYBE_VOLUME_MOUNTPOINT}/sandbox.sqlite3"
export LIBEUFIN_SANDBOX_ADMIN_PASSWORD=secret
echo -n "Creating ${CURRENCY} default demobank..."
-libeufin-sandbox config --currency ${CURRENCY} default
+test -a $INIT_MARKER || libeufin-sandbox config --currency ${CURRENCY} default
echo DONE
echo -n "Specify default exchange..."
-libeufin-sandbox default-exchange \
+test -a $INIT_MARKER || libeufin-sandbox default-exchange \
${EXCHANGE_URL} \
"payto://iban/SANDBOXX/${EXCHANGE_IBAN}?receiver-name=Exchange+Company"
echo DONE
@@ -73,10 +79,10 @@ echo -n "Create exchange EBICS subscriber at Sandbox.."
export LIBEUFIN_SANDBOX_USERNAME=admin
export LIBEUFIN_SANDBOX_PASSWORD=secret
echo -n "Create EBICS host at Sandbox.."
-libeufin-cli sandbox --sandbox-url $SANDBOX_BASE_URL ebicshost create --host-id talerebics
+test -a $INIT_MARKER || libeufin-cli sandbox --sandbox-url $SANDBOX_BASE_URL ebicshost create --host-id talerebics
echo DONE
echo -n "Create exchange's EBICS subscriber at Sandbox.."
-libeufin-cli sandbox \
+test -a $INIT_MARKER || libeufin-cli sandbox \
demobank new-ebicssubscriber --host-id talerebics \
--user-id exchangeebics --partner-id talerpartner \
--bank-account $EXCHANGE_SANDBOX_USERNAME
@@ -84,8 +90,10 @@ echo DONE
## NEXUS SETUP
EXCHANGE_NEXUS_USERNAME=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-username`
EXCHANGE_NEXUS_PASSWORD=`taler-config -c /config/deployment.conf -s taler-deployment -o exchange-nexus-password`
-export LIBEUFIN_NEXUS_DB_CONNECTION="jdbc:sqlite:${MAYBE_VOLUME_MOUNTPOINT}/nexus.sqlite3"
+
echo -n "Creating Nexus superuser..."
+# Idempotent in the sense that if the user is found,
+# they'll get the password changed.
libeufin-nexus superuser $EXCHANGE_NEXUS_USERNAME \
--password $EXCHANGE_NEXUS_PASSWORD
echo DONE
@@ -97,8 +105,12 @@ is_serving $LIBEUFIN_NEXUS_URL Nexus
export LIBEUFIN_NEXUS_USERNAME=$EXCHANGE_NEXUS_USERNAME
export LIBEUFIN_NEXUS_PASSWORD=$EXCHANGE_NEXUS_PASSWORD
+
echo -n Creating a EBICS connection at Nexus..
-libeufin-cli connections new-ebics-connection \
+# Not idempotent: the implementation does check if
+# a connection with the requested name exists, and
+# returns "409 Conflict". FIXME
+test -a $INIT_MARKER || libeufin-cli connections new-ebics-connection \
--ebics-url "${SANDBOX_BASE_URL}/ebicsweb" \
--host-id talerebics \
--partner-id talerpartner \
@@ -106,12 +118,15 @@ libeufin-cli connections new-ebics-connection \
talerconn
echo DONE
echo -n Setup EBICS keying..
-libeufin-cli connections connect talerconn > /dev/null
+# idempotent (noop if 'talerconn' is found)
+libeufin-cli connections connect talerconn > /dev/null
echo DONE
echo -n Download bank account name from Sandbox..
+# idempotent (only stores new bank account names)
libeufin-cli connections download-bank-accounts talerconn
echo DONE
echo -n Importing bank account info into Nexus..
+# idempotent
NEXUS_IMPORTED_BANKACCOUNT=nexus-bankaccount
libeufin-cli connections import-bank-account \
--offered-account-id $EXCHANGE_SANDBOX_USERNAME \
@@ -120,7 +135,8 @@ libeufin-cli connections import-bank-account \
echo DONE
echo -n Setup payments submission task..
# Tries every second.
-libeufin-cli accounts task-schedule \
+# Not idempotent, FIXME
+test -a $INIT_MARKER || libeufin-cli accounts task-schedule \
--task-type submit \
--task-name exchange-payments \
--task-cronspec "* * *" \
@@ -128,7 +144,8 @@ libeufin-cli accounts task-schedule \
echo DONE
# Tries every second. Ask C52
echo -n Setup history fetch task..
-libeufin-cli accounts task-schedule \
+# Not idempotent, FIXME
+test -a $INIT_MARKER || libeufin-cli accounts task-schedule \
--task-type fetch \
--task-name exchange-history \
--task-cronspec "* * *" \
@@ -137,11 +154,15 @@ libeufin-cli accounts task-schedule \
$NEXUS_IMPORTED_BANKACCOUNT
echo DONE
echo -n Create the Taler facade at Nexus..
+# Not idempotent, in the sense that a duplicate
+# facade will be created. FIXME
FACADE_NAME=taler-facade
-libeufin-cli facades \
+test -a $INIT_MARKER || libeufin-cli facades \
new-taler-wire-gateway-facade \
--currency ${CURRENCY} --facade-name $FACADE_NAME \
talerconn $NEXUS_IMPORTED_BANKACCOUNT
echo DONE
+touch $INIT_MARKER
+
wait