| #!/bin/bash |
| # ----------------------------------------------------------------------------- |
| # Creates the ONOS cluster using 3 docker container instances. |
| # ----------------------------------------------------------------------------- |
| export PATH="$PATH:bin:onos/bin" |
| |
| # Creates ONOS cluster using ONOS docker images |
| ONOS_IMAGE=onosproject/onos:1.12.0 |
| SSH_KEY=$(cut -d\ -f2 ~/.ssh/id_rsa.pub) |
| |
| for i in {1..3}; do |
| echo "Setting up onos-$i..." |
| docker container run --detach --name onos-$i --hostname onos-$i --restart always $ONOS_IMAGE |
| docker exec -i onos-$i /bin/bash -c "mkdir config; cat > config/cluster.json" < $(dirname $0)/cluster.json |
| docker exec -it onos-$i bin/onos-user-key sdn $SSH_KEY >/dev/null 2>&1 |
| docker exec -it onos-$i bin/onos-user-password onos rocks >/dev/null 2>&1 |
| done |
| |
| function waitForStart { |
| sleep 5 |
| for i in {1..3}; do |
| echo "Waiting for onos-$i startup..." |
| ip=$(docker container inspect onos-$i | grep \"IPAddress | cut -d: -f2 | sort -u | tr -d '", ') |
| for t in {1..30}; do |
| curl --fail -sS http://$ip:8181/onos/v1/cluster --user onos:rocks 1>/dev/null 2>&1 && break; |
| sleep 1; |
| done |
| onos $ip summary >/dev/null 2>&1 |
| done |
| } |
| |
| OC1=$(docker container inspect onos-1 | grep \"IPAddress | cut -d: -f2 | sort -u | tr -d '", ') |
| OC2=$(docker container inspect onos-2 | grep \"IPAddress | cut -d: -f2 | sort -u | tr -d '", ') |
| OC3=$(docker container inspect onos-3 | grep \"IPAddress | cut -d: -f2 | sort -u | tr -d '", ') |
| ONOS_INSTANCES="$OC1 $OC2 $OC3" |
| |
| waitForStart |
| |
| echo "Activating OpenFlow and ProxyARP applications..." |
| onos $OC1 app activate openflow proxyarp |
| onos $OC1 |
| |