VOL-417 Part 2 of this fix. Removed the use of the Docker Swarm VIP
which from experience isn't as deterministic as managing the round robin
externally.

Change-Id: I195555108448bb994d7fc599ed66f8be64ed9638
diff --git a/envoy/front-proxy/voltha-grpc-proxy-no-http.template.json b/envoy/front-proxy/voltha-grpc-proxy-no-http.template.json
index 4741d34..2d71f57 100644
--- a/envoy/front-proxy/voltha-grpc-proxy-no-http.template.json
+++ b/envoy/front-proxy/voltha-grpc-proxy-no-http.template.json
@@ -154,9 +154,15 @@
         "lb_type": "round_robin",
 	"features": "http2",
         "hosts": [
-          {
-            "url": "tcp://{{- .VolthaVip }}"
-          }
+	    {{block "viplist" .VolthaRR}}
+	        {{- range .}}
+		    {{- if isFirst2}}
+	                {{- printf "{\"url\": \"tcp://%s\"}" . }}
+		    {{- else }}
+	                {{- printf ",{\"url\": \"tcp://%s\"}" . }}
+		    {{- end }}
+	        {{- end}}
+	    {{- end}}
         ]
       },
       {
diff --git a/envoy/front-proxy/voltha-grpc-proxy-no-https.template.json b/envoy/front-proxy/voltha-grpc-proxy-no-https.template.json
index 7c5ba2e..7c8e6b1 100644
--- a/envoy/front-proxy/voltha-grpc-proxy-no-https.template.json
+++ b/envoy/front-proxy/voltha-grpc-proxy-no-https.template.json
@@ -149,9 +149,15 @@
         "lb_type": "round_robin",
 	"features": "http2",
         "hosts": [
-          {
-            "url": "tcp://{{- .VolthaVip }}"
-          }
+	    {{block "viplist" .VolthaRR}}
+	        {{- range .}}
+		    {{- if isFirst2}}
+	                {{- printf "{\"url\": \"tcp://%s\"}" . }}
+		    {{- else }}
+	                {{- printf ",{\"url\": \"tcp://%s\"}" . }}
+		    {{- end }}
+	        {{- end}}
+	    {{- end}}
         ]
       },
       {
diff --git a/envoy/go/envoyd/envoyd.go b/envoy/go/envoyd/envoyd.go
index 66fe628..a64271a 100644
--- a/envoy/go/envoyd/envoyd.go
+++ b/envoy/go/envoyd/envoyd.go
@@ -267,12 +267,18 @@
 // the targetfile substituting 
 func (ec * EnvoyControl) updateEnvoyConfig(ecv * EnvoyConfigVars) (err error) {
 	var firstRun bool = true
+	var firstRun2 bool = true
 	f := func() (bool) {
 		var rtrn bool = firstRun
 		firstRun = false
 		return rtrn
 	}
-	var funcs = template.FuncMap{"isFirst": f}
+	g := func() (bool) {
+		var rtrn bool = firstRun2
+		firstRun2 = false
+		return rtrn
+	}
+	var funcs = template.FuncMap{"isFirst": f, "isFirst2": g}
 	// Slurp up the template file.
 	tplt, err := ioutil.ReadFile(ec.envoyConfigTemplate)
 	if err != nil {
@@ -430,6 +436,7 @@
 	for {
 		qo.WaitIndex = meta.LastIndex
 		qo.RequireConsistent = true
+		//qo.AllowStale = true
 		for {
 			if qo.WaitIndex != meta.LastIndex {
 				break