Miscellaneous fixes for reading Linc-OE port types.

 - Keep track of created PortDescriptions so that they can be replayed when
   configurations don't stick
 - Push topology configs to all cluster members (Temporary hack until
   Configs are made Mastership-aware)
 - Port type consistency for Optical ports - default to FIBER port type

Change-Id: Ib2c9e2839c212d2998206bd0106490b2b38446a9
diff --git a/tools/test/topos/opticalUtils.py b/tools/test/topos/opticalUtils.py
index 52a54b2..5b47d53 100644
--- a/tools/test/topos/opticalUtils.py
+++ b/tools/test/topos/opticalUtils.py
@@ -445,12 +445,12 @@
             sleep(SLEEP_TIME)
 
         info('*** Pushing Topology.json to ONOS\n')
-        output = quietRun('%s/tools/test/bin/onos-topo-cfg %s Topology.json' % (LINCSwitch.onosDir, LINCSwitch.controllers[ 0 ].ip), shell=True)
-
-        # successful output contains the two characters '{}'
-        # if there is more output than this, there is an issue
-        if output.strip('{}'):
-            warn('***WARNING: Could not push topology file to ONOS: %s\n' % output)
+        for index in range(len(LINCSwitch.controllers)):
+            output = quietRun('%s/tools/test/bin/onos-topo-cfg %s Topology.json &' % (LINCSwitch.onosDir, LINCSwitch.controllers[ index ].ip), shell=True)
+            # successful output contains the two characters '{}'
+            # if there is more output than this, there is an issue
+            if output.strip('{}'):
+                warn('***WARNING: Could not push topology file to ONOS: %s\n' % output)
 
     @staticmethod
     def waitStarted(net, timeout=TIMEOUT):