Updated tutorial VM to 1.14.0

Change-Id: I46842f52e3b3068718fc125c9fbfe80e069151f4
diff --git a/tools/tutorials/vm/cluster.json b/tools/tutorials/vm/cluster.json
deleted file mode 100644
index 59dc1b3..0000000
--- a/tools/tutorials/vm/cluster.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"default","nodes":[{"id":"172.17.0.4","ip":"172.17.0.4","port":9876},{"id":"172.17.0.2","ip":"172.17.0.2","port":9876},{"id":"172.17.0.3","ip":"172.17.0.3","port":9876}],"partitions":[{"id":3,"members":["172.17.0.2","172.17.0.3","172.17.0.4"]},{"id":2,"members":["172.17.0.2","172.17.0.3","172.17.0.4"]},{"id":1,"members":["172.17.0.2","172.17.0.3","172.17.0.4"]}]}
diff --git a/tools/tutorials/vm/config/atomix-1.conf b/tools/tutorials/vm/config/atomix-1.conf
new file mode 100644
index 0000000..96e3251
--- /dev/null
+++ b/tools/tutorials/vm/config/atomix-1.conf
@@ -0,0 +1,34 @@
+cluster {
+  cluster-id: onos
+  node.id: atomix-1
+  node.address: "172.17.0.2:5679"
+  discovery {
+    type: bootstrap
+    nodes.1 {
+      id: atomix-1
+      address: "172.17.0.2:5679"
+    }
+    nodes.2 {
+      id: atomix-2
+      address: "172.17.0.3:5679"
+    }
+    nodes.3 {
+      id: atomix-3
+      address: "172.17.0.4:5679"
+    }
+  }
+}
+
+management-group {
+  type: raft
+  partitions: 1
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
+
+partition-groups.raft {
+  type: raft
+  partitions: 7
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/config/atomix-2.conf b/tools/tutorials/vm/config/atomix-2.conf
new file mode 100644
index 0000000..966152d
--- /dev/null
+++ b/tools/tutorials/vm/config/atomix-2.conf
@@ -0,0 +1,34 @@
+cluster {
+  cluster-id: onos
+  node.id: atomix-2
+  node.address: "172.17.0.3:5679"
+  discovery {
+    type: bootstrap
+    nodes.1 {
+      id: atomix-1
+      address: "172.17.0.2:5679"
+    }
+    nodes.2 {
+      id: atomix-2
+      address: "172.17.0.3:5679"
+    }
+    nodes.3 {
+      id: atomix-3
+      address: "172.17.0.4:5679"
+    }
+  }
+}
+
+management-group {
+  type: raft
+  partitions: 1
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
+
+partition-groups.raft {
+  type: raft
+  partitions: 7
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/config/atomix-3.conf b/tools/tutorials/vm/config/atomix-3.conf
new file mode 100644
index 0000000..4268ee3
--- /dev/null
+++ b/tools/tutorials/vm/config/atomix-3.conf
@@ -0,0 +1,34 @@
+cluster {
+  cluster-id: onos
+  node.id: atomix-3
+  node.address: "172.17.0.4:5679"
+  discovery {
+    type: bootstrap
+    nodes.1 {
+      id: atomix-1
+      address: "172.17.0.2:5679"
+    }
+    nodes.2 {
+      id: atomix-2
+      address: "172.17.0.3:5679"
+    }
+    nodes.3 {
+      id: atomix-3
+      address: "172.17.0.4:5679"
+    }
+  }
+}
+
+management-group {
+  type: raft
+  partitions: 1
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
+
+partition-groups.raft {
+  type: raft
+  partitions: 7
+  storage.level: disk
+  members: [atomix-1, atomix-2, atomix-3]
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/config/cluster-1.json b/tools/tutorials/vm/config/cluster-1.json
new file mode 100644
index 0000000..36dfa5d
--- /dev/null
+++ b/tools/tutorials/vm/config/cluster-1.json
@@ -0,0 +1,25 @@
+{
+  "node": {
+    "ip": "172.17.0.5",
+    "id": "172.17.0.5",
+    "port": 9876
+  },
+  "storage": [
+    {
+      "ip": "172.17.0.2",
+      "id": "atomix-1",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.3",
+      "id": "atomix-2",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.4",
+      "id": "atomix-3",
+      "port": 5679
+    }
+  ],
+  "name": "onos"
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/config/cluster-2.json b/tools/tutorials/vm/config/cluster-2.json
new file mode 100644
index 0000000..e05fad0
--- /dev/null
+++ b/tools/tutorials/vm/config/cluster-2.json
@@ -0,0 +1,25 @@
+{
+  "node": {
+    "ip": "172.17.0.6",
+    "id": "172.17.0.6",
+    "port": 9876
+  },
+  "storage": [
+    {
+      "ip": "172.17.0.2",
+      "id": "atomix-1",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.3",
+      "id": "atomix-2",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.4",
+      "id": "atomix-3",
+      "port": 5679
+    }
+  ],
+  "name": "onos"
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/config/cluster-3.json b/tools/tutorials/vm/config/cluster-3.json
new file mode 100644
index 0000000..04642bb
--- /dev/null
+++ b/tools/tutorials/vm/config/cluster-3.json
@@ -0,0 +1,25 @@
+{
+  "node": {
+    "ip": "172.17.0.7",
+    "id": "172.17.0.7",
+    "port": 9876
+  },
+  "storage": [
+    {
+      "ip": "172.17.0.2",
+      "id": "atomix-1",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.3",
+      "id": "atomix-2",
+      "port": 5679
+    },
+    {
+      "ip": "172.17.0.4",
+      "id": "atomix-3",
+      "port": 5679
+    }
+  ],
+  "name": "onos"
+}
\ No newline at end of file
diff --git a/tools/tutorials/vm/createCluster b/tools/tutorials/vm/createCluster
index 392be70..ebdfec8 100755
--- a/tools/tutorials/vm/createCluster
+++ b/tools/tutorials/vm/createCluster
@@ -1,14 +1,23 @@
 #!/bin/bash
 export PATH="$PATH:bin:onos/bin"
 
-# Creates ONOS cluster using ONOS docker images
-ONOS_IMAGE=onosproject/onos:1.13.1
 SSH_KEY=$(cut -d\  -f2 ~/.ssh/id_rsa.pub)
 
+# Create Atomix cluster using Atomix docker image
+ATOMIX_IMAGE=atomix/atomix:3.0.5
+for i in {1..3}; do
+    echo "Setting up atomix-$i..."
+    docker container run --detach --name atomix-$i --hostname atomix-$i \
+        --restart=always -v /home/sdn/bin/config:/atomix $ATOMIX_IMAGE \
+        --config /atomix/atomix-$i.conf
+done
+
+# Create ONOS cluster using ONOS docker image
+ONOS_IMAGE=onosproject/onos:1.14.0
 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 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)/config/cluster-$i.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
@@ -26,6 +35,7 @@
     done
 }
 
+# Extract the IP addresses of the ONOS nodes
 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 '", ')
diff --git a/tools/tutorials/vm/destroyCluster b/tools/tutorials/vm/destroyCluster
index 1ef04e2..53b359c 100755
--- a/tools/tutorials/vm/destroyCluster
+++ b/tools/tutorials/vm/destroyCluster
@@ -1,11 +1,15 @@
 #!/bin/bash
 
-# Destroys ONOS cluster running as ONOS docker images
-SSH_KEY=$(cut -d\  -f2 ~/.ssh/id_rsa.pub)
-
+# Destroy the ONOS cluster running as docker images
 for i in {1..3}; do
     echo "Destroying onos-$i..."
     docker stop onos-$i
 done
 
+# Destroy Atomix cluster running as docker images
+for i in {1..3}; do
+    echo "Destroying atomix-$i..."
+    docker stop atomix-$i
+done
+
 docker container prune --force
diff --git a/tools/tutorials/vm/exportVM b/tools/tutorials/vm/exportVM
index 792627c..608c5d3 100755
--- a/tools/tutorials/vm/exportVM
+++ b/tools/tutorials/vm/exportVM
@@ -3,7 +3,7 @@
 # Exports the ONOS Tutorial VM into an OVA file for publishing.
 # -----------------------------------------------------------------------------
 
-export VER=1.13.1
+export VER=1.14.0
 export OVA=/tmp/onos-tutorial-$VER.ova
 rm -f $OVA
 vboxmanage export "ONOS Tutorial" --output $OVA --manifest \
diff --git a/tools/tutorials/vm/uploadToS3 b/tools/tutorials/vm/uploadToS3
index 9e60e9a..c739277 100755
--- a/tools/tutorials/vm/uploadToS3
+++ b/tools/tutorials/vm/uploadToS3
@@ -2,6 +2,6 @@
 # -----------------------------------------------------------------------------
 # Publishes the ONOS Tutorial OVA file.
 # -----------------------------------------------------------------------------
-export VER=1.13.1
+export VER=1.14.0
 export OVA=/tmp/onos-tutorial-$VER.ova
 uploadToS3.py $OVA --secret $AWS_SECRET_ACCESS_KEY --key $AWS_ACCESS_KEY_ID --bucket onos --dest vm/