Skip to content

Commit

Permalink
feat: add script to run helper functions for Docker-based deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
PascalinDe committed Oct 4, 2023
1 parent 4d69872 commit bd03808
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 59 deletions.
59 changes: 0 additions & 59 deletions scripts/init_dela.sh

This file was deleted.

120 changes: 120 additions & 0 deletions scripts/run_docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#!/bin/bash -e

# The script must be called from the root of the github tree, else it returns an error.

if [[ $(git rev-parse --show-toplevel) != $(pwd) ]]; then
echo "ERROR: This script must be started from the root of the git repo";
exit 1;
fi


export COMPOSE_FILE=${COMPOSE_FILE:-./docker-compose/docker-compose.yml};
source ./.env;


function setup() {
docker compose build;
docker compose up -d;
}

function teardown() {
docker compose down -v;
docker image rm ghcr.io/c4dt/d-voting-frontend:latest ghcr.io/c4dt/d-voting-backend:latest ghcr.io/c4dt/d-voting-dela:latest;
docker builder prune -f;
}

function init_dela() {
LEADER=dela-worker-0;
echo "$LEADER is the initial leader node"


echo "share the certificate";
for node in $(seq 1 3); do
docker compose exec dela-worker-"$node" dvoting --config /data/node minogrpc join --address grpc://"$LEADER":"$NODEPORT" $(docker compose exec $LEADER /bin/bash -c 'LLVL=error dvoting --config /data/node minogrpc token');
exit;
done

echo "add nodes to the chain";
for node in $(seq 0 3); do
MEMBERS="$MEMBERS --member $(docker compose exec dela-worker-$node /bin/bash -c 'LLVL=error dvoting --config /data/node ordering export')";
done
docker compose exec "$LEADER" dvoting --config /data/node ordering setup "$MEMBERS";

echo "authorize signers to handle access contract on each node";
for signer in $(seq 0 3); do
IDENTITY=$(docker compose exec "dela-worker-$signer" crypto bls signer read --path /data/node/private.key --format BASE64_PUBKEY);
for node in $(seq 0 3); do
docker compose exec "dela-worker-$node" dvoting --config /data/node access add --identity "$IDENTITY";
done
done

echo "update the access contract";
for node in $(seq 0 3); do
IDENTITY=$(docker compose exec dela-worker-"$node" crypto bls signer read --path /data/node/private.key --format BASE64_PUBKEY);
docker compose exec "$LEADER" dvoting --config /data/node pool add\
--key /data/node/private.key\
--args github.com/c4dt/dela.ContractArg\
--args github.com/c4dt/dela.Access\
--args access:grant_id\
--args 0300000000000000000000000000000000000000000000000000000000000000\
--args access:grant_contract\
--args github.com/c4dt/dela.Evoting \
--args access:grant_command\
--args all\
--args access:identity\
--args $IDENTITY\
--args access:command\
--args GRANT
done
}


function local_login() {
if ! [ -f cookies.txt ]; then
echo "getting dummy login cookie";
curl -k "$FRONT_END_URL/api/get_dev_login" -c cookies.txt -o /dev/null -s;
fi
}

function add_proxies() {

echo "adding proxies";

for node in $(seq 0 3); do
echo "adding proxy for node dela-worker-$node";
curl -sk "$FRONT_END_URL/api/proxies/" -X POST -H 'Content-Type: application/json' -b cookies.txt --data-raw "{\"NodeAddr\":"dela-worker-$node:$NODEPORT\",\"Proxy\":"http://172.19.44.$((254 - node)):$PROXYPORT\"}";
done
}

case "$1" in

setup)
setup;
;;

init_dela)
init_dela;
;;

stop)
stop;
exit
;;

teardown)
teardown;
exit
;;

add_proxies)
local_login;
add_proxies;
;;

*)
setup;
sleep 16;
init_dela;
add_proxies;
;;
esac

0 comments on commit bd03808

Please sign in to comment.