Prep for docker-only tests

Chnages to support more production-like tests where all
components are running as Docker containers. Specific
changes:
- Expanded Vagrant memory to 6G to have room
- Chameleon to cope with premature service lookup before
  Voltha is self-registered (can happen when docker-compose
  starts the "world"
- Add missing termcolor package
- Allow CLI to use Consul for endpoints
- 2nd external ponmgmt bridge for Voltha

Change-Id: Ib2471784a5aafbfd9c611ebf293d7f81f61dd75b
diff --git a/chameleon/main.py b/chameleon/main.py
index 805acba..4d3939d 100755
--- a/chameleon/main.py
+++ b/chameleon/main.py
@@ -219,15 +219,18 @@
 
     @inlineCallbacks
     def startup_components(self):
-        self.log.info('starting-internal-components')
-        args = self.args
-        self.grpc_client = yield \
-            GrpcClient(args.consul, args.work_dir, args.grpc_endpoint)
-        self.web_server = yield \
-            WebServer(args.rest_port, args.work_dir, self.grpc_client).start()
-        self.grpc_client.set_reconnect_callback(
-            self.web_server.reload_generated_routes).start()
-        self.log.info('started-internal-services')
+        try:
+            self.log.info('starting-internal-components')
+            args = self.args
+            self.grpc_client = yield \
+                GrpcClient(args.consul, args.work_dir, args.grpc_endpoint)
+            self.rest_server = yield \
+                WebServer(args.rest_port, args.work_dir, self.grpc_client).start()
+            self.grpc_client.set_reconnect_callback(
+                self.rest_server.reload_generated_routes).start()
+            self.log.info('started-internal-services')
+        except Exception, e:
+            self.log.exception('startup-failed', e=e)
 
     @inlineCallbacks
     def shutdown_components(self):