Merge "modifying FUNCoptical to use new topology"
diff --git a/TestON/drivers/common/cli/emulator/lincoemininetdriver.py b/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
index 9372a54..7dfcb1e 100644
--- a/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
@@ -25,7 +25,7 @@
 
 
 class LincOEMininetDriver( MininetCliDriver ):
-    def runOpticalMnScript( self,onosDirectory = 'onos', ctrllerIP = None ):
+    def runOpticalMnScript( self,onosDirectory = 'onos', ctrllerIP = None, topology = 'opticalTest' ):
         import time
         import types
         """
@@ -35,6 +35,7 @@
                 packet layer( mn ) and optical topology
             Optional:
                 name - Name of onos directory. (ONOS | onos)
+                topology - Name of optical topology to activate, defaults to opticalTest.py
             Required:
                 ctrllerIP = Controller(s) IP address
             TODO: If no ctrllerIP is provided, a default
@@ -58,7 +59,7 @@
                 else:
                     main.log.info( "You need to specify a valid IP" )
                     return main.FALSE
-                topoFile = "~/{0}/tools/test/topos/opticalTest.py".format( onosDirectory )
+                topoFile = "~/{0}/tools/test/topos/{1}.py".format( onosDirectory, topology )
                 cmd = "sudo -E python {0} {1}".format( topoFile, controller )
                 main.log.info( self.name + ": cmd = " + cmd )
                 self.handle.sendline( cmd )
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 3c8d484..e749ce2 100755
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -2332,3 +2332,36 @@
 
         return main.TRUE if onosStatus else main.FALSE
 
+    def onosNetCfg( self, controllerIps, path, fileName ):
+        """
+        Push a specified json file to ONOS through the onos-netcfg service
+
+        Required:
+        controllerIps - the Ips of the ONOS nodes in the cluster
+        path - the location of the file to be sent
+        fileName - name of the json file to be sent
+
+        Returns main.TRUE on successfully sending json file, and main.FALSE if
+        there is an error.
+        """
+        try:
+            cmd = "onos-netcfg {0} {1}{2}.json".format( controllerIps, path, fileName )
+            main.log.info( "Sending: " + cmd )
+            main.ONOSbench.handle.sendline( cmd )
+            handle = self.handle.before
+            print handle
+            if "Error" in handle:
+                main.log.error( self.name + ":    " + self.handle.before )
+                return main.FALSE
+            else:
+                self.handle.expect( "\$" )
+                return main.TRUE
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":    " + self.handle.before )
+            main.cleanup()
+            main.exit()
+        except Exception:
+            main.log.exception( self.name + ": Uncaught exception!" )
+            main.cleanup()
+            main.exit()
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.params b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.params
index 50bb652..ee70b7b 100644
--- a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.params
+++ b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.params
@@ -4,6 +4,7 @@
     # 2 - Install ONOS
     # 10 - Start Mininet opticalTest Topology
     # 14 - Stop Mininet
+    # 16 - Balance Mastership of switches
     # 17 - Activate Flow Objectives
     # 19 - Copy karaf logs from ONOS nodes to TestON log directory
     # 21 - Run pingall to discover all hosts
@@ -12,7 +13,7 @@
     # 31 - Add and test bidirectional point intents
     # 32 - Add and test bidirectional host intents
 
-    <testcases>1,[2,10,21,22,23,31,32,14,19,2,10,21,22,23,31,32,14,19]*1,[2,10,17,21,22,23,31,32,14,19,2,10,17,21,22,23,31,32,14,19]*1</testcases>
+    <testcases>1,[2,10,21,22,23,31,32,14,19,2,10,16,21,22,23,31,32,14,19]*1,[2,10,17,21,22,23,31,32,14,19,2,10,16,17,21,22,23,31,32,14,19]*1</testcases>
 
     <SCALE>
         <size>1,3,1,3</size>
@@ -20,13 +21,11 @@
 
     <DEPENDENCY>
         <path>/tests/FUNC/FUNCoptical/dependencies/</path>
-        <wrapper1>startUp</wrapper1>
-        <wrapper2>FuncIntentFunction</wrapper2>
-        <wrapper3>topo</wrapper3>
+        <wrapper1>topo</wrapper1>
     </DEPENDENCY>
 
     <ENV>
-        <cellApps>drivers,openflow,proxyarp,mobility,optical,fwd</cellApps>
+        <cellApps>drivers,openflow,proxyarp,mobility,optical,fwd,drivers.optical</cellApps>
     </ENV>
     <GIT>
         <pull>False</pull>
@@ -35,24 +34,17 @@
 
     <SLEEP>
         <startup>15</startup>
-        <reroute>5</reroute>
-        <removeintent>10</removeintent>
         <checkintent>5</checkintent>
-        <fwd>10</fwd>
         <topoAttempts>3</topoAttempts>
     </SLEEP>
 
+    # make sure that these numbers reflect the number of switches, links, and
+    # hosts in the optical topology specified below
     <MININET>
-        <switch>7</switch>
-        <links>20</links>
+        <switch>5</switch>
+        <links>10</links>
+        <hosts>2</hosts>
+        <toponame>ectopo</toponame>
     </MININET>
 
-    # Intent tests params
-    <SDNIP>
-        <tcpProto>6</tcpProto>
-        <icmpProto>1</icmpProto>
-        <srcPort>5001</srcPort>
-        <dstPort>5001</dstPort>
-    </SDNIP>
-
 </PARAMS>
diff --git a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
index 65c731b..137ce44 100644
--- a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
+++ b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
@@ -40,17 +40,14 @@
             else:
                 main.maxNodes = 0
             wrapperFile1 = main.params[ 'DEPENDENCY' ][ 'wrapper1' ]
-            wrapperFile2 = main.params[ 'DEPENDENCY' ][ 'wrapper2' ]
-            wrapperFile3 = main.params[ 'DEPENDENCY' ][ 'wrapper3' ]
             main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
             main.checkIntentSleep = int( main.params[ 'SLEEP' ][ 'checkintent' ] )
-            main.removeIntentSleep = int( main.params[ 'SLEEP' ][ 'removeintent' ] )
-            main.rerouteSleep = int( main.params[ 'SLEEP' ][ 'reroute' ] )
-            main.fwdSleep = int( main.params[ 'SLEEP' ][ 'fwd' ] )
             main.checkTopoAttempts = int( main.params[ 'SLEEP' ][ 'topoAttempts' ] )
             gitPull = main.params[ 'GIT' ][ 'pull' ]
-            main.numSwitch = int( main.params[ 'MININET' ][ 'switch' ] )
-            main.numLinks = int( main.params[ 'MININET' ][ 'links' ] )
+            main.switches = int( main.params[ 'MININET' ][ 'switch' ] )
+            main.links = int( main.params[ 'MININET' ][ 'links' ] )
+            main.hosts = int( main.params[ 'MININET' ][ 'hosts' ] )
+            main.opticalTopo = main.params[ 'MININET' ][ 'toponame' ]
             main.cellData = {} # For creating cell file
             main.hostsData = {}
             main.CLIs = []
@@ -66,21 +63,10 @@
                 main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
 
             # -- INIT SECTION, ONLY RUNS ONCE -- #
-            main.startUp = imp.load_source( wrapperFile1,
-                                            main.dependencyPath +
-                                            wrapperFile1 +
-                                            ".py" )
-
-            main.intentFunction = imp.load_source( wrapperFile2,
-                                            main.dependencyPath +
-                                            wrapperFile2 +
-                                            ".py" )
-
-            main.topo = imp.load_source( wrapperFile3,
+            main.topo = imp.load_source( wrapperFile1,
                                          main.dependencyPath +
-                                         wrapperFile3 +
+                                         wrapperFile1 +
                                          ".py" )
-
             if main.CLIs:
                 stepResult = main.TRUE
             else:
@@ -237,20 +223,22 @@
         # Remove the first element in main.scale list
         main.scale.remove( main.scale[ 0 ] )
 
-        main.intentFunction.report( main )
-
-
     def CASE10( self, main ):
         """
             Start Mininet opticalTest Topology
         """
         main.case( "Mininet with Linc-OE startup")
         main.caseExplanation = "Start opticalTest.py topology included with ONOS"
+        if main.opticalTopo:
+            main.step( "Copying optical topology to $ONOS_ROOT/tools/test/topos/" )
+            main.ONOSbench.scp( main.ONOSbench,
+                                "{0}{1}.py".format( main.dependencyPath, main.opticalTopo ),
+                                "~/onos/tools/test/topos/{0}.py".format( main.opticalTopo ) )
         main.step( "Starting mininet and LINC-OE" )
         topoResult = main.TRUE
         time.sleep( 10 )
         controllerIPs = ' '.join( main.activeONOSip )
-        opticalMnScript = main.LincOE.runOpticalMnScript(ctrllerIP = controllerIPs)
+        opticalMnScript = main.LincOE.runOpticalMnScript(ctrllerIP = controllerIPs, topology=main.opticalTopo )
         topoResult = opticalMnScript
         utilities.assert_equals(
             expect=main.TRUE,
@@ -258,6 +246,11 @@
             onpass="Started the topology successfully ",
             onfail="Failed to start the topology")
 
+        main.step( "Push Topology.json to ONOS through onos-netcfg" )
+        pushResult = main.TRUE
+        time.sleep( 20 )
+        main.ONOSbench.onosNetCfg( controllerIps=controllerIPs, path=main.dependencyPath, fileName="Topology" )
+
         # Exit if topology did not load properly
         if not topoResult:
             main.cleanup()
@@ -286,6 +279,23 @@
             main.cleanup()
             main.exit()
 
+    def CASE16( self, main ):
+        """
+            Balance Masters
+        """
+        main.case( "Balance mastership of switches" )
+        main.step( "Balancing mastership of switches" )
+
+        balanceResult = main.FALSE
+        balanceResult = utilities.retry( f=main.CLIs[ 0 ].balanceMasters, retValue=main.FALSE, args=[] )
+
+        utilities.assert_equals( expect=main.TRUE,
+                                 actual=balanceResult,
+                                 onpass="Successfully balanced mastership of switches",
+                                 onfail="Failed to balance mastership of switches" )
+        if not balanceResult:
+            main.initialized = main.FALSE
+
     def CASE17( self, main ):
         """
             Use Flow Objectives
@@ -361,7 +371,9 @@
 
         main.step( "Send arping between all hosts" )
 
-        hosts = [ "h1","h2","h3","h4","h5","h6" ]
+        hosts = []
+        for i in range( main.hosts ):
+            hosts.append( 'h{}'.format( i + 1 ) )
 
         arpingHostResults = main.TRUE
         for host in hosts:
@@ -395,9 +407,9 @@
         hostFails = []  # Nodes where hosts are incorrect
         attempts = main.checkTopoAttempts  # Remaining Attempts
 
-        mnSwitches = 16
-        mnLinks = 46
-        mnHosts = 6
+        mnSwitches = main.switches
+        mnLinks = main.links
+        mnHosts = main.hosts
 
         main.step( "Comparing Mininet topology to ONOS topology" )
 
@@ -528,12 +540,12 @@
         checkFlowResult = main.TRUE
         main.pIntentsId = []
         pIntent1 = main.CLIs[ 0 ].addPointIntent(
-            "of:0000ffffffff0001/1",
-            "of:0000ffffffff0005/1" )
+            "of:0000000000000001/1",
+            "of:0000000000000002/1" )
         time.sleep( 10 )
         pIntent2 = main.CLIs[ 0 ].addPointIntent(
-            "of:0000ffffffff0005/1",
-            "of:0000ffffffff0001/1" )
+            "of:0000000000000002/1",
+            "of:0000000000000001/1" )
         main.pIntentsId.append( pIntent1 )
         main.pIntentsId.append( pIntent2 )
         time.sleep( 10 )
@@ -559,17 +571,50 @@
             onpass="Successfully added point intents",
             onfail="Failed to add point intents")
 
-        if not addIntentsResult:
-            main.log.error( "Intents were not properly installed. Exiting case." )
-            main.skipCase()
+        pingResult = main.FALSE
 
-        main.step( "Ping h1 and h5" )
-        pingResult = main.LincOE.pingHostOptical( src="h1", target="h5" )
+        if not addIntentsResult:
+            main.log.error( "Intents were not properly installed. Skipping ping." )
+
+        else:
+            main.step( "Ping h1 and h2" )
+            pingResult = main.LincOE.pingHostOptical( src="h1", target="h2" )
         utilities.assert_equals(
             expect=main.TRUE,
             actual=pingResult,
-            onpass="Successfully pinged h1 and h5",
-            onfail="Failed to ping between h1 and h5")
+            onpass="Successfully pinged h1 and h2",
+            onfail="Failed to ping between h1 and h2")
+
+        main.step( "Remove Point to Point intents" )
+        removeResult = main.FALSE
+        # Check remaining intents
+        try:
+            intentsJson = json.loads( main.CLIs[ 0 ].intents() )
+            main.log.debug( intentsJson )
+            main.CLIs[ 0 ].removeIntent( intentId=pIntent1, purge=True )
+            main.CLIs[ 0 ].removeIntent( intentId=pIntent2, purge=True )
+            for intents in intentsJson:
+                main.CLIs[ 0 ].removeIntent( intentId=intents.get( 'id' ),
+                                             app='org.onosproject.cli',
+                                             purge=True )
+                time.sleep( 15 )
+
+            for i in range( main.numCtrls ):
+                if len( json.loads( main.CLIs[ i ].intents() ) ):
+                    print json.loads( main.CLIs[ i ].intents() )
+                    removeResult = main.FALSE
+                else:
+                    removeResult = main.TRUE
+        except ( TypeError, ValueError ):
+            main.log.error( "Cannot see intents on Node " + str( main.CLIs[ 0 ] ) +\
+                            ".  Removing all intents.")
+            main.CLIs[ 0 ].removeAllIntents( purge=True )
+            main.CLIs[ 0 ].removeAllIntents( purge=True, app='org.onosproject.cli')
+
+        utilities.assert_equals( expect=main.TRUE,
+                                 actual=removeResult,
+                                 onpass="Successfully removed host intents",
+                                 onfail="Failed to remove host intents" )
 
     def CASE32( self ):
         """
@@ -581,17 +626,22 @@
         main.case( "Test add host intents between optical layer host" )
         main.caseExplanation = "Test host intents between 2 optical layer host"
 
+        main.step( "Creating list of hosts" )
+        hostnum = 0
+        try:
+            hostData = json.loads( hosts[ controller ] )
+        except( TypeError, ValueError ):
+            main.log.error("Could not load json:" + str( hosts[ controller ] ) )
+
         main.step( "Adding host intents to h1 and h2" )
-        hostMACs = []
         hostId = []
         # Listing host MAC addresses
-        for i in range( 1 , 7 ):
-            hostMACs.append( "00:00:00:00:00:" +
-                                str( hex( i )[ 2: ] ).zfill( 2 ).upper() )
-        for macs in hostMACs:
-            hostId.append( macs + "/-1" )
+        for host in hostData:
+            hostId.append( host.get("id") )
         host1 = hostId[ 0 ]
         host2 = hostId[ 1 ]
+        main.log.debug( host1 )
+        main.log.debug( host2 )
 
         intentsId = []
         intent1 = main.CLIs[ 0 ].addHostIntent( hostIdOne = host1,
@@ -599,14 +649,9 @@
         intentsId.append( intent1 )
         # Checking intents state before pinging
         main.log.info( "Checking intents state" )
-        intentResult = main.CLIs[ 0 ].checkIntentState( intentsId = intentsId )
-        # Check intent state again if intents are not in installed state
-
-
-        # If intent state is wrong, wait 3 sec and try again
-        if not intentResult:
-            time.sleep( 3 )
-            intentResult = main.CLIs[ 0 ].checkIntentState( intentsId = intentsId )
+        intentResult = utilities.retry( f=main.CLIs[ 0 ].checkIntentState,
+                                        retValue=main.FALSE, args=intentsId,
+                                        sleep=main.checkIntentSleep, attempts=10 )
 
         # If intent state is still wrong, display intent states
         if not intentResult:
@@ -645,11 +690,14 @@
                 main.CLIs[ 0 ].removeIntent( intentId=intents.get( 'id' ),
                                              app='org.onosproject.optical',
                                              purge=True )
+            time.sleep( 15 )
 
             for i in range( main.numCtrls ):
                 if len( json.loads( main.CLIs[ i ].intents() ) ):
                     print json.loads( main.CLIs[ i ].intents() )
                     removeResult = main.FALSE
+                else:
+                    removeResult = main.TRUE
         except ( TypeError, ValueError ):
             main.log.error( "Cannot see intents on Node " + str( main.CLIs[ 0 ] ) +\
                             ".  Removing all intents.")
@@ -659,4 +707,4 @@
         utilities.assert_equals( expect=main.TRUE,
                                  actual=removeResult,
                                  onpass="Successfully removed host intents",
-                                 onfail="Failed to remove host intents" )
+                                 onfail="Failed to remove host intents" )
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/TopoConfig.json b/TestON/tests/FUNC/FUNCoptical/TopoConfig.json
deleted file mode 100644
index 9545eae..0000000
--- a/TestON/tests/FUNC/FUNCoptical/TopoConfig.json
+++ /dev/null
@@ -1,2832 +0,0 @@
-{
-    "linkConfig": [
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 100,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:15",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 100,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:13",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:15",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1e",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 100,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:10",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:42",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:08",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0c",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1a",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:4b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:19",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:4b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0e",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 104,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:09",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:13",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2e",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:30",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:46",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:26",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:27",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:19",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:27",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:14",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:22",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3e",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0c",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:17",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1a",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:34",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 101,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:46",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:0f",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:30",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:10",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:31",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:11",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:11",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:11",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:12",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:19",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:12",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:20",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:12",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2a",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:0a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:12",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:13",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2c",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:13",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:38",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:14",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:46",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:15",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:15",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:44",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:16",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:16",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 108,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:16",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2a",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 108,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:17",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:17",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:33",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:17",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:34",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 108,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:18",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1c",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:18",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:31",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2c",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:40",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:47",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1c",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:29",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3a",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3b",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:1d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:38",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 104,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1f",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:26",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 108,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:1f",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:40",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:20",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:23",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:21",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:43",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:21",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:4a",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:22",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:23",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:26",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:24",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2c",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:24",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:25",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:34",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:25",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:49",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:27",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:45",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:28",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2e",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:29",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:28",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:29",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:37",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:29",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:49",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2a",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:47",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:36",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:38",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2b",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3c",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:4a",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:37",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2f",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3b",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:2f",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:44",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:2f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:30",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:37",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:32",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:36",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 108,
-                "numWaves": 80,
-                "port1": 102,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:32",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:38",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 103,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:32",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:41",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:33",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:35",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:42",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:35",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:37",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:42",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:39",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 105,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:3c",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:3d",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3a",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3d",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:3e",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:40",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 107,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:41",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:3f",
-            "allowed": true
-        },
-        {
-            "type": "wdmLink",
-            "params": {
-                "port2": 106,
-                "numWaves": 80,
-                "port1": 101,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:45",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:43",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 10,
-                "bandwidth": 100000,
-                "port1": 2,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 11,
-                "bandwidth": 100000,
-                "port1": 3,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 12,
-                "bandwidth": 100000,
-                "port1": 4,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 13,
-                "bandwidth": 100000,
-                "port1": 5,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        },
-        {
-            "type": "pktOptLink",
-            "params": {
-                "port2": 14,
-                "bandwidth": 100000,
-                "port1": 6,
-                "nodeName2": "none",
-                "nodeName1": "none"
-            },
-            "nodeDpid1": "00:00:ff:ff:ff:00:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:48",
-            "allowed": true
-        }
-    ],
-    "switchConfig": [
-        {
-            "name": "none",
-            "longitude": -99.741564,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 32.508086,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:01"
-        },
-        {
-            "name": "none",
-            "longitude": -106.649719,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 35.084446,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:02"
-        },
-        {
-            "name": "none",
-            "longitude": -73.758333,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 42.652222,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:03"
-        },
-        {
-            "name": "none",
-            "longitude": -97.743057,
-            "params": {
-                "numregens": 5
-            },
-            "allowed": true,
-            "latitude": 33.755833,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:04"
-        },
-        {
-            "name": "none",
-            "longitude": -96.7,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 29.57,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:4b"
-        },
-        {
-            "name": "none",
-            "longitude": -78.877778,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 42.882778,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:05"
-        },
-        {
-            "name": "none",
-            "longitude": -108.509167,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 45.781667,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:06"
-        },
-        {
-            "name": "none",
-            "longitude": -76.614127,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.293781,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:07"
-        },
-        {
-            "name": "none",
-            "longitude": -86.812225,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 33.517223,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:08"
-        },
-        {
-            "name": "none",
-            "longitude": -100.796917,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 46.836379,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:09"
-        },
-        {
-            "name": "none",
-            "longitude": -91.184167,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 30.449722,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0a"
-        },
-        {
-            "name": "none",
-            "longitude": -87.640432,
-            "params": {
-                "numregens": 4
-            },
-            "allowed": true,
-            "latitude": 41.881484,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0b"
-        },
-        {
-            "name": "none",
-            "longitude": -80.837502,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 35.224924,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0c"
-        },
-        {
-            "name": "none",
-            "longitude": -79.938056,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 32.785278,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0d"
-        },
-        {
-            "name": "none",
-            "longitude": -81.686943,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 41.498333,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0e"
-        },
-        {
-            "name": "none",
-            "longitude": -82.996666,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.965279,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0f"
-        },
-        {
-            "name": "none",
-            "longitude": -71.084918,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 42.36745,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:10"
-        },
-        {
-            "name": "none",
-            "longitude": -84.516944,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.102778,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:11"
-        },
-        {
-            "name": "none",
-            "longitude": -96.780431,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 32.797524,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:12"
-        },
-        {
-            "name": "none",
-            "longitude": -104.996391,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.744999,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:13"
-        },
-        {
-            "name": "none",
-            "longitude": -83.054169,
-            "params": {
-                "numregens": 5
-            },
-            "allowed": true,
-            "latitude": 42.332779,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:14"
-        },
-        {
-            "name": "none",
-            "longitude": -106.483611,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 31.756389,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:15"
-        },
-        {
-            "name": "none",
-            "longitude": -119.79423,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.73923,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:16"
-        },
-        {
-            "name": "none",
-            "longitude": -79.793889,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.072222,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:17"
-        },
-        {
-            "name": "none",
-            "longitude": -72.676389,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 41.765833,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:18"
-        },
-        {
-            "name": "none",
-            "longitude": -95.36528,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 29.748333,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:19"
-        },
-        {
-            "name": "none",
-            "longitude": -81.43,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 30.33071,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1a"
-        },
-        {
-            "name": "none",
-            "longitude": -94.578716,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.096649,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1b"
-        },
-        {
-            "name": "none",
-            "longitude": -73.6699993,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 40.5899999,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1c"
-        },
-        {
-            "name": "none",
-            "longitude": -118.252958,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 34.051227,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1d"
-        },
-        {
-            "name": "none",
-            "longitude": -115.138889,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.168056,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1e"
-        },
-        {
-            "name": "none",
-            "longitude": -85.760833,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 38.249167,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:1f"
-        },
-        {
-            "name": "none",
-            "longitude": -92.271942,
-            "params": {
-                "numregens": 2
-            },
-            "allowed": true,
-            "latitude": 34.740833,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:20"
-        },
-        {
-            "name": "none",
-            "longitude": -80.195,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 25.779167,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:21"
-        },
-        {
-            "name": "none",
-            "longitude": -87.922501,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 43.037224,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:22"
-        },
-        {
-            "name": "none",
-            "longitude": -90.048058,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 35.145158,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:23"
-        },
-        {
-            "name": "none",
-            "longitude": -93.26718,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 44.977365,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:24"
-        },
-        {
-            "name": "none",
-            "longitude": -76.29,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.853333,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:25"
-        },
-        {
-            "name": "none",
-            "longitude": -86.775558,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.163955,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:26"
-        },
-        {
-            "name": "none",
-            "longitude": -90.07222,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 29.949806,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:27"
-        },
-        {
-            "name": "none",
-            "longitude": -74.177978,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 40.734408,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:28"
-        },
-        {
-            "name": "none",
-            "longitude": -73.989713,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 40.767497,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:29"
-        },
-        {
-            "name": "none",
-            "longitude": -97.515274,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 35.470833,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2a"
-        },
-        {
-            "name": "none",
-            "longitude": -122.268889,
-            "params": {
-                "numregens": 2
-            },
-            "allowed": true,
-            "latitude": 37.805556,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2b"
-        },
-        {
-            "name": "none",
-            "longitude": -95.940277,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 41.259167,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2c"
-        },
-        {
-            "name": "none",
-            "longitude": -81.377502,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 28.543279,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2d"
-        },
-        {
-            "name": "none",
-            "longitude": -75.184139,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.946446,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2e"
-        },
-        {
-            "name": "none",
-            "longitude": -112.07709,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 33.450361,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:2f"
-        },
-        {
-            "name": "none",
-            "longitude": -79.995552,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 40.441387,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:30"
-        },
-        {
-            "name": "none",
-            "longitude": -71.415278,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 41.818889,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:31"
-        },
-        {
-            "name": "none",
-            "longitude": -122.678055,
-            "params": {
-                "numregens": 2
-            },
-            "allowed": true,
-            "latitude": 45.522499,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:32"
-        },
-        {
-            "name": "none",
-            "longitude": -77.436096,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 37.540752,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:33"
-        },
-        {
-            "name": "none",
-            "longitude": -78.640831,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 35.779656,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:34"
-        },
-        {
-            "name": "none",
-            "longitude": -77.616389,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 43.157222,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:35"
-        },
-        {
-            "name": "none",
-            "longitude": -121.487221,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 38.578609,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:36"
-        },
-        {
-            "name": "none",
-            "longitude": -75.649167,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 41.415278,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:37"
-        },
-        {
-            "name": "none",
-            "longitude": -111.888336,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 40.767776,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:38"
-        },
-        {
-            "name": "none",
-            "longitude": -98.488892,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 29.429445,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:39"
-        },
-        {
-            "name": "none",
-            "longitude": -119.7,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 34.418889,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3a"
-        },
-        {
-            "name": "none",
-            "longitude": -117.158611,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 32.746944,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3b"
-        },
-        {
-            "name": "none",
-            "longitude": -122.397263,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 37.785143,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3c"
-        },
-        {
-            "name": "none",
-            "longitude": -121.892778,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 37.333333,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3d"
-        },
-        {
-            "name": "none",
-            "longitude": -89.649444,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.795278,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3e"
-        },
-        {
-            "name": "none",
-            "longitude": -117.419167,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 47.654724,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:3f"
-        },
-        {
-            "name": "none",
-            "longitude": -90.215279,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 38.633335,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:40"
-        },
-        {
-            "name": "none",
-            "longitude": -122.333336,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 47.606945,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:41"
-        },
-        {
-            "name": "none",
-            "longitude": -76.1475,
-            "params": {
-                "numregens": 3
-            },
-            "allowed": true,
-            "latitude": 43.049444,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:42"
-        },
-        {
-            "name": "none",
-            "longitude": -82.522778,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 28.0225,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:43"
-        },
-        {
-            "name": "none",
-            "longitude": -110.968333,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 32.224444,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:44"
-        },
-        {
-            "name": "none",
-            "longitude": -84.290833,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 30.456389,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:45"
-        },
-        {
-            "name": "none",
-            "longitude": -83.538056,
-            "params": {
-                "numregens": 2
-            },
-            "allowed": true,
-            "latitude": 41.65,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:46"
-        },
-        {
-            "name": "none",
-            "longitude": -95.985832,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 36.151669,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:47"
-        },
-        {
-            "name": "none",
-            "longitude": -77.01028,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 38.88306,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:48"
-        },
-        {
-            "name": "none",
-            "longitude": -75.553889,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 39.739167,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:49"
-        },
-        {
-            "name": "none",
-            "longitude": -80.05278,
-            "params": {
-                "numregens": 0
-            },
-            "allowed": true,
-            "latitude": 26.709391,
-            "type": "Roadm",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:4a"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/Topology.json b/TestON/tests/FUNC/FUNCoptical/Topology.json
deleted file mode 100644
index 21c21e7..0000000
--- a/TestON/tests/FUNC/FUNCoptical/Topology.json
+++ /dev/null
@@ -1,4362 +0,0 @@
-{
-    "devices": {
-        "of:0000ffffffffff4a": {
-            "basic": {
-                "name": "WPBHFLAN",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff4a",
-                "longitude": -80.05278,
-                "mfr": "Linc",
-                "latitude": 26.709391,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff4b": {
-            "basic": {
-                "name": "AUSTTXGR",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff4b",
-                "longitude": -96.7,
-                "mfr": "Linc",
-                "latitude": 29.57,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff44": {
-            "basic": {
-                "name": "TCSNAZMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff44",
-                "longitude": -110.968333,
-                "mfr": "Linc",
-                "latitude": 32.224444,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff45": {
-            "basic": {
-                "name": "TLHSFLAT",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff45",
-                "longitude": -84.290833,
-                "mfr": "Linc",
-                "latitude": 30.456389,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff46": {
-            "basic": {
-                "name": "TOLDOH21",
-                "optical.regens": 2,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff46",
-                "longitude": -83.538056,
-                "mfr": "Linc",
-                "latitude": 41.65,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff47": {
-            "basic": {
-                "name": "TULSOKTB",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff47",
-                "longitude": -95.985832,
-                "mfr": "Linc",
-                "latitude": 36.151669,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff40": {
-            "basic": {
-                "name": "STLSMO09",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff40",
-                "longitude": -90.215279,
-                "mfr": "Linc",
-                "latitude": 38.633335,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff41": {
-            "basic": {
-                "name": "STTLWA06",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff41",
-                "longitude": -122.333336,
-                "mfr": "Linc",
-                "latitude": 47.606945,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff42": {
-            "basic": {
-                "name": "SYRCNYSU",
-                "optical.regens": 3,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff42",
-                "longitude": -76.1475,
-                "mfr": "Linc",
-                "latitude": 43.049444,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff43": {
-            "basic": {
-                "name": "TAMQFLFN",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff43",
-                "longitude": -82.522778,
-                "mfr": "Linc",
-                "latitude": 28.0225,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff48": {
-            "basic": {
-                "name": "WASHDCSW",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff48",
-                "longitude": -77.01028,
-                "mfr": "Linc",
-                "latitude": 38.88306,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff49": {
-            "basic": {
-                "name": "WLMGDE01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff49",
-                "longitude": -75.553889,
-                "mfr": "Linc",
-                "latitude": 39.739167,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff00000a": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "DLLSTXTL-R",
-                "latitude": 32.7,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "eaf75c83054e",
-                "longitude": -96.7
-            }
-        },
-        "of:0000ffffff00000b": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "ATLNGATL-R",
-                "latitude": 33.7,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "ee5628887b4f",
-                "longitude": -97.7
-            }
-        },
-        "of:0000ffffffffff1d": {
-            "basic": {
-                "name": "LSANCA03",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1d",
-                "longitude": -118.252958,
-                "mfr": "Linc",
-                "latitude": 34.051227,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff03": {
-            "basic": {
-                "name": "ALBYNYSS",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff03",
-                "longitude": -73.758333,
-                "mfr": "Linc",
-                "latitude": 42.652222,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0a": {
-            "basic": {
-                "name": "BTRGLAMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0a",
-                "longitude": -91.184167,
-                "mfr": "Linc",
-                "latitude": 30.449722,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0b": {
-            "basic": {
-                "name": "CHCGILCL",
-                "optical.regens": 4,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0b",
-                "longitude": -87.640432,
-                "mfr": "Linc",
-                "latitude": 41.881484,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0c": {
-            "basic": {
-                "name": "CHRLNCCA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0c",
-                "longitude": -80.837502,
-                "mfr": "Linc",
-                "latitude": 35.224924,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0d": {
-            "basic": {
-                "name": "CHTNSCDT",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0d",
-                "longitude": -79.938056,
-                "mfr": "Linc",
-                "latitude": 32.785278,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0e": {
-            "basic": {
-                "name": "CLEVOH02",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0e",
-                "longitude": -81.686943,
-                "mfr": "Linc",
-                "latitude": 41.498333,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff0f": {
-            "basic": {
-                "name": "CLMBOH11",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff0f",
-                "longitude": -82.996666,
-                "mfr": "Linc",
-                "latitude": 39.965279,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000008": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "MPLSMNDT-R",
-                "latitude": 44.9,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "96d57fb4eb43",
-                "longitude": -93.2
-            }
-        },
-        "of:0000ffffff000009": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "LSANCA03-R",
-                "latitude": 34.1,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "6ee9b704c04d",
-                "longitude": -118.3
-            }
-        },
-        "of:0000ffffffffff19": {
-            "basic": {
-                "name": "HSTNTX01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff19",
-                "longitude": -95.36528,
-                "mfr": "Linc",
-                "latitude": 29.748333,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff18": {
-            "basic": {
-                "name": "HRFRCT03",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff18",
-                "longitude": -72.676389,
-                "mfr": "Linc",
-                "latitude": 41.765833,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff13": {
-            "basic": {
-                "name": "DNVRCOMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff13",
-                "longitude": -104.996391,
-                "mfr": "Linc",
-                "latitude": 39.744999,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000001": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "WASHDCSW-R",
-                "latitude": 38.8,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "2221b5cb5c45",
-                "longitude": -77.0
-            }
-        },
-        "of:0000ffffff000002": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "SNJSCA02-R",
-                "latitude": 37.3,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "f28c95ff6145",
-                "longitude": -121.8
-            }
-        },
-        "of:0000ffffffffff10": {
-            "basic": {
-                "name": "CMBRMA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff10",
-                "longitude": -71.084918,
-                "mfr": "Linc",
-                "latitude": 42.36745,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff17": {
-            "basic": {
-                "name": "GNBONCEU",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff17",
-                "longitude": -79.793889,
-                "mfr": "Linc",
-                "latitude": 36.072222,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000005": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "PHNXAZMA-R",
-                "latitude": 33.4,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "566c93367041",
-                "longitude": -112.0
-            }
-        },
-        "of:0000ffffffffff15": {
-            "basic": {
-                "name": "ELPSTXMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff15",
-                "longitude": -106.483611,
-                "mfr": "Linc",
-                "latitude": 31.756389,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff14": {
-            "basic": {
-                "name": "DTRTMIBA",
-                "optical.regens": 5,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff14",
-                "longitude": -83.054169,
-                "mfr": "Linc",
-                "latitude": 42.332779,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff12": {
-            "basic": {
-                "name": "DLLSTXTL",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff12",
-                "longitude": -96.780431,
-                "mfr": "Linc",
-                "latitude": 32.797524,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff11": {
-            "basic": {
-                "name": "CNCNOHWS",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff11",
-                "longitude": -84.516944,
-                "mfr": "Linc",
-                "latitude": 39.102778,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000003": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "SNANTXCA-R",
-                "latitude": 29.4,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "c6463e3da348",
-                "longitude": -98.4
-            }
-        },
-        "of:0000ffffffffff1c": {
-            "basic": {
-                "name": "LGISLAND",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1c",
-                "longitude": -73.6699993,
-                "mfr": "Linc",
-                "latitude": 40.5899999,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000004": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "ROCHNYXA-R",
-                "latitude": 43.1,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "a2c8e539f440",
-                "longitude": -77.6
-            }
-        },
-        "of:0000ffffffffff1a": {
-            "basic": {
-                "name": "JCVLFLCL",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1a",
-                "longitude": -81.43,
-                "mfr": "Linc",
-                "latitude": 30.33071,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff1f": {
-            "basic": {
-                "name": "LSVLKYCS",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1f",
-                "longitude": -85.760833,
-                "mfr": "Linc",
-                "latitude": 38.249167,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff1e": {
-            "basic": {
-                "name": "LSVGNV02",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1e",
-                "longitude": -115.138889,
-                "mfr": "Linc",
-                "latitude": 36.168056,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff16": {
-            "basic": {
-                "name": "FRSNCA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff16",
-                "longitude": -119.79423,
-                "mfr": "Linc",
-                "latitude": 36.73923,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff08": {
-            "basic": {
-                "name": "BRHMALMT",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff08",
-                "longitude": -86.812225,
-                "mfr": "Linc",
-                "latitude": 33.517223,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff09": {
-            "basic": {
-                "name": "BSMRNDJC",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff09",
-                "longitude": -100.796917,
-                "mfr": "Linc",
-                "latitude": 46.836379,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000006": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "ORLDFLMA-R",
-                "latitude": 28.5,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "bac54f68574f",
-                "longitude": -81.3
-            }
-        },
-        "of:0000ffffffffff01": {
-            "basic": {
-                "name": "ABLNTXRO",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff01",
-                "longitude": -99.741564,
-                "mfr": "Linc",
-                "latitude": 32.508086,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff02": {
-            "basic": {
-                "name": "ALBQNMMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff02",
-                "longitude": -106.649719,
-                "mfr": "Linc",
-                "latitude": 35.084446,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffff000007": {
-            "basic": {
-                "mfr": "Linc",
-                "name": "NWRKNJ02-R",
-                "latitude": 40.7,
-                "driver": "PK",
-                "type": "SWITCH",
-                "mac": "1237bde27347",
-                "longitude": -74.1
-            }
-        },
-        "of:0000ffffffffff04": {
-            "basic": {
-                "name": "ATLNGATL",
-                "optical.regens": 5,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff04",
-                "longitude": -97.743057,
-                "mfr": "Linc",
-                "latitude": 33.755833,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff05": {
-            "basic": {
-                "name": "BFLONYFR",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff05",
-                "longitude": -78.877778,
-                "mfr": "Linc",
-                "latitude": 42.882778,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff06": {
-            "basic": {
-                "name": "BLNGMTMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff06",
-                "longitude": -108.509167,
-                "mfr": "Linc",
-                "latitude": 45.781667,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff07": {
-            "basic": {
-                "name": "BLTMMDCH",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff07",
-                "longitude": -76.614127,
-                "mfr": "Linc",
-                "latitude": 39.293781,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2b": {
-            "basic": {
-                "name": "OKLDCA03",
-                "optical.regens": 2,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2b",
-                "longitude": -122.268889,
-                "mfr": "Linc",
-                "latitude": 37.805556,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2c": {
-            "basic": {
-                "name": "OMAHNENW",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2c",
-                "longitude": -95.940277,
-                "mfr": "Linc",
-                "latitude": 41.259167,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2a": {
-            "basic": {
-                "name": "OKCYOKCE",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2a",
-                "longitude": -97.515274,
-                "mfr": "Linc",
-                "latitude": 35.470833,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2f": {
-            "basic": {
-                "name": "PHNXAZMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2f",
-                "longitude": -112.07709,
-                "mfr": "Linc",
-                "latitude": 33.450361,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2d": {
-            "basic": {
-                "name": "ORLDFLMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2d",
-                "longitude": -81.377502,
-                "mfr": "Linc",
-                "latitude": 28.543279,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff2e": {
-            "basic": {
-                "name": "PHLAPASL",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff2e",
-                "longitude": -75.184139,
-                "mfr": "Linc",
-                "latitude": 39.946446,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff39": {
-            "basic": {
-                "name": "SNANTXCA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff39",
-                "longitude": -98.488892,
-                "mfr": "Linc",
-                "latitude": 29.429445,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff38": {
-            "basic": {
-                "name": "SLKCUTMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff38",
-                "longitude": -111.888336,
-                "mfr": "Linc",
-                "latitude": 40.767776,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff35": {
-            "basic": {
-                "name": "ROCHNYXA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff35",
-                "longitude": -77.616389,
-                "mfr": "Linc",
-                "latitude": 43.157222,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff34": {
-            "basic": {
-                "name": "RLGHNCMO",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff34",
-                "longitude": -78.640831,
-                "mfr": "Linc",
-                "latitude": 35.779656,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff37": {
-            "basic": {
-                "name": "SCTNPA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff37",
-                "longitude": -75.649167,
-                "mfr": "Linc",
-                "latitude": 41.415278,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff36": {
-            "basic": {
-                "name": "SCRMCA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff36",
-                "longitude": -121.487221,
-                "mfr": "Linc",
-                "latitude": 38.578609,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff31": {
-            "basic": {
-                "name": "PRVDRIGR",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff31",
-                "longitude": -71.415278,
-                "mfr": "Linc",
-                "latitude": 41.818889,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff30": {
-            "basic": {
-                "name": "PITBPADG",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff30",
-                "longitude": -79.995552,
-                "mfr": "Linc",
-                "latitude": 40.441387,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff33": {
-            "basic": {
-                "name": "RCMDVAGR",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff33",
-                "longitude": -77.436096,
-                "mfr": "Linc",
-                "latitude": 37.540752,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff32": {
-            "basic": {
-                "name": "PTLDOR62",
-                "optical.regens": 2,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff32",
-                "longitude": -122.678055,
-                "mfr": "Linc",
-                "latitude": 45.522499,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff22": {
-            "basic": {
-                "name": "MILWWIHE",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff22",
-                "longitude": -87.922501,
-                "mfr": "Linc",
-                "latitude": 43.037224,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff23": {
-            "basic": {
-                "name": "MMPHTNMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff23",
-                "longitude": -90.048058,
-                "mfr": "Linc",
-                "latitude": 35.145158,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff20": {
-            "basic": {
-                "name": "LTRKARFR",
-                "optical.regens": 2,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff20",
-                "longitude": -92.271942,
-                "mfr": "Linc",
-                "latitude": 34.740833,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff21": {
-            "basic": {
-                "name": "MIAMFLAC",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff21",
-                "longitude": -80.195,
-                "mfr": "Linc",
-                "latitude": 25.779167,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff26": {
-            "basic": {
-                "name": "NSVLTNMT",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff26",
-                "longitude": -86.775558,
-                "mfr": "Linc",
-                "latitude": 36.163955,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff27": {
-            "basic": {
-                "name": "NWORLAMA",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff27",
-                "longitude": -90.07222,
-                "mfr": "Linc",
-                "latitude": 29.949806,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff24": {
-            "basic": {
-                "name": "MPLSMNDT",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff24",
-                "longitude": -93.26718,
-                "mfr": "Linc",
-                "latitude": 44.977365,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff25": {
-            "basic": {
-                "name": "NRFLVABS",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff25",
-                "longitude": -76.29,
-                "mfr": "Linc",
-                "latitude": 36.853333,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff28": {
-            "basic": {
-                "name": "NWRKNJ02",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff28",
-                "longitude": -74.177978,
-                "mfr": "Linc",
-                "latitude": 40.734408,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff29": {
-            "basic": {
-                "name": "NYCMNY54",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff29",
-                "longitude": -73.989713,
-                "mfr": "Linc",
-                "latitude": 40.767497,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3e": {
-            "basic": {
-                "name": "SPFDILSD",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3e",
-                "longitude": -89.649444,
-                "mfr": "Linc",
-                "latitude": 39.795278,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3d": {
-            "basic": {
-                "name": "SNJSCA02",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3d",
-                "longitude": -121.892778,
-                "mfr": "Linc",
-                "latitude": 37.333333,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3f": {
-            "basic": {
-                "name": "SPKNWA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3f",
-                "longitude": -117.419167,
-                "mfr": "Linc",
-                "latitude": 47.654724,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3a": {
-            "basic": {
-                "name": "SNBBCA01",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3a",
-                "longitude": -119.7,
-                "mfr": "Linc",
-                "latitude": 34.418889,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3c": {
-            "basic": {
-                "name": "SNFCCA21",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3c",
-                "longitude": -122.397263,
-                "mfr": "Linc",
-                "latitude": 37.785143,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff3b": {
-            "basic": {
-                "name": "SNDGCA02",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff3b",
-                "longitude": -117.158611,
-                "mfr": "Linc",
-                "latitude": 32.746944,
-                "type": "ROADM"
-            }
-        },
-        "of:0000ffffffffff1b": {
-            "basic": {
-                "name": "KSCYMO09",
-                "optical.regens": 0,
-                "driver": "LINC-OE",
-                "mac": "ffffffffffff1b",
-                "longitude": -94.578716,
-                "mfr": "Linc",
-                "latitude": 39.096649,
-                "type": "ROADM"
-            }
-        }
-    },
-    "links": {
-        "of:0000ffffff000006/6-of:0000ffffffffff2d/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff1b/101-of:0000ffffffffff2c/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 320
-            }
-        },
-        "of:0000ffffffffff1f/102-of:0000ffffffffff40/108": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 468
-            }
-        },
-        "of:0000ffffff000001/4-of:0000ffffffffff48/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff0f/101-of:0000ffffffffff30/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 312
-            }
-        },
-        "of:0000ffffffffff06/103-of:0000ffffffffff3f/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 852
-            }
-        },
-        "of:0000ffffffffff30/101-of:0000ffffffffff37/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 457
-            }
-        },
-        "of:0000ffffffffff02/103-of:0000ffffffffff1e/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 931
-            }
-        },
-        "of:0000ffffff00000a/6-of:0000ffffffffff12/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff12/102-of:0000ffffffffff20/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 563
-            }
-        },
-        "of:0000ffffff000003/5-of:0000ffffffffff39/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000005/3-of:0000ffffffffff2f/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff05/103-of:0000ffffffffff0e/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 333
-            }
-        },
-        "of:0000ffffffffff22/101-of:0000ffffffffff24/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 574
-            }
-        },
-        "of:0000ffffffffff0a/102-of:0000ffffffffff27/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 144
-            }
-        },
-        "of:0000ffffffffff02/100-of:0000ffffffffff12/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 1134
-            }
-        },
-        "of:0000ffffffffff04/102-of:0000ffffffffff0c/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 436
-            }
-        },
-        "of:0000ffffff00000a/4-of:0000ffffffffff12/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff2d/101-of:0000ffffffffff4a/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 290
-            }
-        },
-        "of:0000ffffffffff13/101-of:0000ffffffffff2c/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 940
-            }
-        },
-        "of:0000ffffff000008/2-of:0000ffffffffff24/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000007/6-of:0000ffffffffff28/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000008/3-of:0000ffffffffff24/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff14/101-of:0000ffffffffff46/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 103
-            }
-        },
-        "of:0000ffffff000002/3-of:0000ffffffffff3d/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000009/3-of:0000ffffffffff1d/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff11/103-of:0000ffffffffff48/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 779
-            }
-        },
-        "of:0000ffffff000002/5-of:0000ffffffffff3d/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff1b/103-of:0000ffffffffff47/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 420
-            }
-        },
-        "of:0000ffffffffff0d/101-of:0000ffffffffff1a/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 368
-            }
-        },
-        "of:0000ffffff000009/4-of:0000ffffffffff1d/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff28/101-of:0000ffffffffff2e/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 146
-            }
-        },
-        "of:0000ffffffffff1f/104-of:0000ffffffffff26/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 298
-            }
-        },
-        "of:0000ffffffffff0e/102-of:0000ffffffffff46/101": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 185
-            }
-        },
-        "of:0000ffffff000005/4-of:0000ffffffffff2f/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff0c/101-of:0000ffffffffff17/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 160
-            }
-        },
-        "of:0000ffffffffff18/101-of:0000ffffffffff1c/108": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 185
-            }
-        },
-        "of:0000ffffffffff06/101-of:0000ffffffffff09/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 724
-            }
-        },
-        "of:0000ffffff000009/5-of:0000ffffffffff1d/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff17/101-of:0000ffffffffff1f/108": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 697
-            }
-        },
-        "of:0000ffffffffff16/102-of:0000ffffffffff1d/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 396
-            }
-        },
-        "of:0000ffffff00000a/2-of:0000ffffffffff12/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff1c/101-of:0000ffffffffff29/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 40
-            }
-        },
-        "of:0000ffffff000006/4-of:0000ffffffffff2d/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff08/102-of:0000ffffffffff27/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 602
-            }
-        },
-        "of:0000ffffffffff1d/102-of:0000ffffffffff3a/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 167
-            }
-        },
-        "of:0000ffffff00000a/5-of:0000ffffffffff12/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000001/3-of:0000ffffffffff48/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff01/100-of:0000ffffffffff12/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 334
-            }
-        },
-        "of:0000ffffffffff1a/101-of:0000ffffffffff2d/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 238
-            }
-        },
-        "of:0000ffffff000004/6-of:0000ffffffffff35/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff1e/102-of:0000ffffffffff38/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 701
-            }
-        },
-        "of:0000ffffff000008/6-of:0000ffffffffff24/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000004/4-of:0000ffffffffff35/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000002/2-of:0000ffffffffff3d/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff03/101-of:0000ffffffffff42/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 239
-            }
-        },
-        "of:0000ffffffffff2e/101-of:0000ffffffffff37/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 201
-            }
-        },
-        "of:0000ffffffffff13/102-of:0000ffffffffff38/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 714
-            }
-        },
-        "of:0000ffffffffff07/101-of:0000ffffffffff2e/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 170
-            }
-        },
-        "of:0000ffffffffff16/103-of:0000ffffffffff2a/108": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 298
-            }
-        },
-        "of:0000ffffffffff3e/101-of:0000ffffffffff40/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 165
-            }
-        },
-        "of:0000ffffffffff02/101-of:0000ffffffffff13/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 646
-            }
-        },
-        "of:0000ffffff000002/6-of:0000ffffffffff3d/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000007/5-of:0000ffffffffff28/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000002/4-of:0000ffffffffff3d/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff01/101-of:0000ffffffffff15/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 768
-            }
-        },
-        "of:0000ffffff000006/2-of:0000ffffffffff2d/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff04/103-of:0000ffffffffff1a/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 566
-            }
-        },
-        "of:0000ffffffffff0e/101-of:0000ffffffffff0f/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 243
-            }
-        },
-        "of:0000ffffff000003/4-of:0000ffffffffff39/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000009/2-of:0000ffffffffff1d/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff18/102-of:0000ffffffffff31/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 125
-            }
-        },
-        "of:0000ffffff000001/5-of:0000ffffffffff48/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff11/102-of:0000ffffffffff1f/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 172
-            }
-        },
-        "of:0000ffffff00000b/6-of:0000ffffffffff04/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff29/101-of:0000ffffffffff28/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 19
-            }
-        },
-        "of:0000ffffffffff12/101-of:0000ffffffffff19/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 437
-            }
-        },
-        "of:0000ffffffffff3d/101-of:0000ffffffffff3a/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 455
-            }
-        },
-        "of:0000ffffffffff2b/103-of:0000ffffffffff3c/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 13
-            }
-        },
-        "of:0000ffffffffff4b/101-of:0000ffffffffff19/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 283
-            }
-        },
-        "of:0000ffffffffff32/101-of:0000ffffffffff36/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 934
-            }
-        },
-        "of:0000ffffffffff12/103-of:0000ffffffffff2a/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 365
-            }
-        },
-        "of:0000ffffffffff0d/102-of:0000ffffffffff34/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 424
-            }
-        },
-        "of:0000ffffffffff29/103-of:0000ffffffffff49/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 210
-            }
-        },
-        "of:0000ffffffffff10/101-of:0000ffffffffff31/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 80
-            }
-        },
-        "of:0000ffffffffff1d/101-of:0000ffffffffff3b/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 212
-            }
-        },
-        "of:0000ffffffffff29/102-of:0000ffffffffff37/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 187
-            }
-        },
-        "of:0000ffffff00000a/3-of:0000ffffffffff12/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff15/101-of:0000ffffffffff39/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 969
-            }
-        },
-        "of:0000ffffff000003/6-of:0000ffffffffff39/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff1e/101-of:0000ffffffffff2f/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 494
-            }
-        },
-        "of:0000ffffffffff1b/102-of:0000ffffffffff40/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 457
-            }
-        },
-        "of:0000ffffff000001/2-of:0000ffffffffff48/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff21/102-of:0000ffffffffff4a/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 125
-            }
-        },
-        "of:0000ffffff000003/3-of:0000ffffffffff39/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff15/102-of:0000ffffffffff44/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 511
-            }
-        },
-        "of:0000ffffff000005/2-of:0000ffffffffff2f/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff2b/102-of:0000ffffffffff38/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 1142
-            }
-        },
-        "of:0000ffffffffff0b/101-of:0000ffffffffff14/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 458
-            }
-        },
-        "of:0000ffffffffff45/101-of:0000ffffffffff43/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 384
-            }
-        },
-        "of:0000ffffffffff32/102-of:0000ffffffffff38/108": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 1225
-            }
-        },
-        "of:0000ffffffffff24/101-of:0000ffffffffff2c/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 560
-            }
-        },
-        "of:0000ffffff000006/3-of:0000ffffffffff2d/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff3c/101-of:0000ffffffffff3d/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 80.0
-            }
-        },
-        "of:0000ffffffffff21/101-of:0000ffffffffff43/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 407
-            }
-        },
-        "of:0000ffffff000008/5-of:0000ffffffffff24/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000005/6-of:0000ffffffffff2f/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff2f/102-of:0000ffffffffff44/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 205
-            }
-        },
-        "of:0000ffffff000007/3-of:0000ffffffffff28/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff0a/101-of:0000ffffffffff19/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 491
-            }
-        },
-        "of:0000ffffffffff41/101-of:0000ffffffffff3f/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 442
-            }
-        },
-        "of:0000ffffffffff33/101-of:0000ffffffffff48/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 184
-            }
-        },
-        "of:0000ffffff000004/3-of:0000ffffffffff35/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff2f/101-of:0000ffffffffff3b/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 575
-            }
-        },
-        "of:0000ffffff000006/5-of:0000ffffffffff2d/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff00000b/3-of:0000ffffffffff04/11": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000009/6-of:0000ffffffffff1d/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000007/2-of:0000ffffffffff28/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff17/103-of:0000ffffffffff33/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 319
-            }
-        },
-        "of:0000ffffffffff16/101-of:0000ffffffffff1f/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 505
-            }
-        },
-        "of:0000ffffffffff17/102-of:0000ffffffffff34/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 130
-            }
-        },
-        "of:0000ffffffffff2b/101-of:0000ffffffffff36/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 131
-            }
-        },
-        "of:0000ffffffffff03/100-of:0000ffffffffff10/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 265
-            }
-        },
-        "of:0000ffffffffff04/101-of:0000ffffffffff08/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 271
-            }
-        },
-        "of:0000ffffffffff07/103-of:0000ffffffffff46/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 68
-            }
-        },
-        "of:0000ffffffffff0b/102-of:0000ffffffffff22/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 156
-            }
-        },
-        "of:0000ffffffffff20/101-of:0000ffffffffff23/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 249
-            }
-        },
-        "of:0000ffffff00000b/2-of:0000ffffffffff04/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff25/102-of:0000ffffffffff49/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 392
-            }
-        },
-        "of:0000ffffffffff09/101-of:0000ffffffffff24/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 741
-            }
-        },
-        "of:0000ffffffffff2a/101-of:0000ffffffffff47/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 188
-            }
-        },
-        "of:0000ffffff000003/2-of:0000ffffffffff39/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff11/101-of:0000ffffffffff0f/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 194
-            }
-        },
-        "of:0000ffffffffff35/101-of:0000ffffffffff42/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 143
-            }
-        },
-        "of:0000ffffff000005/5-of:0000ffffffffff2f/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff00000b/5-of:0000ffffffffff04/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff25/101-of:0000ffffffffff34/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 290
-            }
-        },
-        "of:0000ffffffffff32/103-of:0000ffffffffff41/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 280
-            }
-        },
-        "of:0000ffffff000008/4-of:0000ffffffffff24/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff02/102-of:0000ffffffffff15/107": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 444
-            }
-        },
-        "of:0000ffffffffff0b/103-of:0000ffffffffff3e/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 344
-            }
-        },
-        "of:0000ffffffffff07/102-of:0000ffffffffff30/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 378
-            }
-        },
-        "of:0000ffffffffff4b/102-of:0000ffffffffff39/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 141
-            }
-        },
-        "of:0000ffffffffff23/101-of:0000ffffffffff26/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 380
-            }
-        },
-        "of:0000ffffff00000b/4-of:0000ffffffffff04/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff08/101-of:0000ffffffffff26/106": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 353
-            }
-        },
-        "of:0000ffffffffff27/101-of:0000ffffffffff45/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 670
-            }
-        },
-        "of:0000ffffff000004/2-of:0000ffffffffff35/10": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000001/6-of:0000ffffffffff48/14": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff05/104-of:0000ffffffffff35/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 128
-            }
-        },
-        "of:0000ffffffffff37/101-of:0000ffffffffff42/105": {
-            "basic": {
-                "optical.waves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 223
-            }
-        },
-        "of:0000ffffff000004/5-of:0000ffffffffff35/13": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffff000007/4-of:0000ffffffffff28/12": {
-            "basic": {
-                "bandwidth": 100000,
-                "type": "OPTICAL",
-                "durable": "true",
-                "optical.type": "cross-connect"
-            }
-        },
-        "of:0000ffffffffff06/102-of:0000ffffffffff13/107": {
-            "basic": {
-                "optical.wves": 80,
-                "durable": "true",
-                "type": "OPTICAL",
-                "optical.type": "WDM",
-                "optical.kms": 875
-            }
-        }
-    },
-    "ports": {
-        "of:0000ffffffffff27/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff3b/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff3b/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff00000b/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff32/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff22/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff4b/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff22/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff2f/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff03/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff03/100": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 100
-            }
-        },
-        "of:0000ffffffffff38/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff32/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff38/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff38/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff38/108": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 108
-            }
-        },
-        "of:0000ffffffffff1e/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffff000008/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff3d/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff3d/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff1e/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff3d/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff3f/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff1e/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff42/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff42/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff42/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff41/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff39/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff39/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff35/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff000009/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff49/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff49/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff2f/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff24/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff46/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff27/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff43/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff43/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff35/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff04/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff04/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff04/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff04/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff36/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff36/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff04/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff35/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff28/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff17/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff17/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff17/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff47/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff47/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff17/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff20/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff14/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff000005/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff1d/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff1d/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff14/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff1d/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff18/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff18/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff35/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff2b/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff2b/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff2a/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff39/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffff000006/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffff000006/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff1d/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff39/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff16/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff16/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff16/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff15/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff15/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff15/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff15/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff48/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff00000a/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffff00000a/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff3c/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff3c/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff23/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff04/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff04/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff04/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff23/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff1c/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff33/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff07/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff07/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff07/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff3d/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff40/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff2e/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff2e/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff35/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff2e/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff3a/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff2d/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff2d/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff2d/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff2d/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff2d/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff05/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff05/104": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 104
-            }
-        },
-        "of:0000ffffffffff24/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff13/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff13/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff06/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff13/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff13/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff06/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000007/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffff000007/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff48/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff44/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff44/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff35/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff46/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff46/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff31/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff31/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff12/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff12/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff2d/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff12/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff32/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff12/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff12/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff0d/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff0d/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff48/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff19/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff19/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff19/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff29/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff29/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff29/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff28/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff0a/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff29/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff35/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff0a/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff30/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000004/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff39/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff39/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff30/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff30/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff39/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff12/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff12/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff12/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff12/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff12/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff1d/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff33/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff2c/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff48/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff2c/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff2c/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff2d/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff28/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff28/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff28/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff28/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff28/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff45/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff3d/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff45/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000004/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffff000004/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff01/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff01/100": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 100
-            }
-        },
-        "of:0000ffffff000001/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffff000005/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffff000005/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff27/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000007/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff1b/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff1b/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff1b/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff24/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff2b/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff06/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff11/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff11/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff11/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff24/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffff000002/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff08/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff2a/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff24/12": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 12
-            }
-        },
-        "of:0000ffffffffff08/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff08/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff0b/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff0b/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff0c/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff0b/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff0c/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff26/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff26/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff2f/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffff00000a/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff2f/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff2f/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff1c/108": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 108
-            }
-        },
-        "of:0000ffffffffff2f/14": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 14
-            }
-        },
-        "of:0000ffffffffff34/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff34/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff34/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff4a/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff4a/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff09/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff2a/108": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 108
-            }
-        },
-        "of:0000ffffffffff09/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000002/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff1d/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff1d/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff1d/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000006/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffff000002/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffff000001/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff02/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff02/103": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 103
-            }
-        },
-        "of:0000ffffffffff02/100": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 100
-            }
-        },
-        "of:0000ffffffffff02/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff2f/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff26/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff0e/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff0e/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff4b/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff0e/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffff000008/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff1a/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff1a/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffff000009/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff1a/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff24/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffff000009/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff24/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff000008/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff24/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffff000001/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffff00000b/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffff00000b/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffffffff2f/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff3a/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff3d/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff000003/7": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 7
-            }
-        },
-        "of:0000ffffffffff48/11": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 11
-            }
-        },
-        "of:0000ffffffffff48/10": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 10
-            }
-        },
-        "of:0000ffffffffff3d/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff20/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff41/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff25/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff25/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff1f/108": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 108
-            }
-        },
-        "of:0000ffffffffff10/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff37/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff37/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff37/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        },
-        "of:0000ffffffffff10/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff37/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffff000003/8": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 8
-            }
-        },
-        "of:0000ffffff000003/9": {
-            "optical": {
-                "speed": 0,
-                "type": "COPPER",
-                "port": 9
-            }
-        },
-        "of:0000ffffffffff1f/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff1f/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff1f/104": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 104
-            }
-        },
-        "of:0000ffffffffff1f/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff0f/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff3e/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff0f/105": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 105
-            }
-        },
-        "of:0000ffffffffff48/13": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 13
-            }
-        },
-        "of:0000ffffffffff3e/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff40/106": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 106
-            }
-        },
-        "of:0000ffffffffff0f/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff40/108": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 108
-            }
-        },
-        "of:0000ffffffffff21/102": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 102
-            }
-        },
-        "of:0000ffffffffff21/101": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 101
-            }
-        },
-        "of:0000ffffffffff3f/107": {
-            "optical": {
-                "type": "FIBER",
-                "speed": 0,
-                "port": 107
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/dependencies/FuncIntentFunction.py b/TestON/tests/FUNC/FUNCoptical/dependencies/FuncIntentFunction.py
deleted file mode 100755
index 616e71e..0000000
--- a/TestON/tests/FUNC/FUNCoptical/dependencies/FuncIntentFunction.py
+++ /dev/null
@@ -1,1629 +0,0 @@
-"""
-    Wrapper functions for FuncIntent
-    This functions include Onosclidriver and Mininetclidriver driver functions
-    Author: kelvin@onlab.us
-"""
-import time
-import copy
-import json
-
-def __init__( self ):
-    self.default = ''
-
-def hostIntent( main,
-                name,
-                host1,
-                host2,
-                onosNode=0,
-                host1Id="",
-                host2Id="",
-                mac1="",
-                mac2="",
-                vlan1="-1",
-                vlan2="-1",
-                sw1="",
-                sw2="",
-                expectedLink=0 ):
-    """
-    Description:
-        Verify add-host-intent
-    Steps:
-        - Discover hosts
-        - Add host intents
-        - Check intents
-        - Verify flows
-        - Ping hosts
-        - Reroute
-            - Link down
-            - Verify flows
-            - Check topology
-            - Ping hosts
-            - Link up
-            - Verify flows
-            - Check topology
-            - Ping hosts
-        - Remove intents
-    Required:
-        name - Type of host intent to add eg. IPV4 | VLAN | Dualstack
-        host1 - Name of first host
-        host2 - Name of second host
-    Optional:
-        onosNode - ONOS node to install the intents in main.CLIs[ ]
-                   0 by default so that it will always use the first
-                   ONOS node
-        host1Id - ONOS id of the first host eg. 00:00:00:00:00:01/-1
-        host2Id - ONOS id of the second host
-        mac1 - Mac address of first host
-        mac2 - Mac address of the second host
-        vlan1 - Vlan tag of first host, defaults to -1
-        vlan2 - Vlan tag of second host, defaults to -1
-        sw1 - First switch to bring down & up for rerouting purpose
-        sw2 - Second switch to bring down & up for rerouting purpose
-        expectedLink - Expected link when the switches are down, it should
-                       be two links lower than the links before the two
-                       switches are down
-    Return:
-        Returns main.TRUE if all verification passed, otherwise return
-        main.FALSE; returns main.FALSE if there is a key error
-    """
-
-    # Assert variables
-    assert main, "There is no main variable"
-    assert name, "variable name is empty"
-    assert host1 and host2, "You must specify hosts"
-
-    global itemName
-    itemName = name
-    h1Id = host1Id
-    h2Id = host2Id
-    h1Mac = mac1
-    h2Mac = mac2
-    vlan1 = vlan1
-    vlan2 = vlan2
-    hostNames = [ host1 , host2 ]
-    intentsId = []
-    stepResult = main.TRUE
-    pingResult = main.TRUE
-    intentResult = main.TRUE
-    removeIntentResult = main.TRUE
-    flowResult = main.TRUE
-    topoResult = main.TRUE
-    linkDownResult = main.TRUE
-    linkUpResult = main.TRUE
-    onosNode = int( onosNode )
-
-    try:
-        if main.hostsData:
-            if not h1Mac:
-                h1Mac = main.hostsData[ host1 ][ 'mac' ]
-            if not h2Mac:
-                h2Mac = main.hostsData[ host2 ][ 'mac' ]
-            if main.hostsData[ host1 ].get( 'vlan' ):
-                vlan1 = main.hostsData[ host1 ][ 'vlan' ]
-            if main.hostsData[ host1 ].get( 'vlan' ):
-                vlan2 = main.hostsData[ host2 ][ 'vlan' ]
-            if not h1Id:
-                h1Id = main.hostsData[ host1 ][ 'id' ]
-            if not h2Id:
-                h2Id = main.hostsData[ host2 ][ 'id' ]
-
-        assert h1Id and h2Id, "You must specify host IDs"
-        if not ( h1Id and h2Id ):
-            main.log.info( "There are no host IDs" )
-            return main.FALSE
-
-    except KeyError:
-        main.log.error( itemName + ": Key error Exception" )
-        return main.FALSE
-
-    # Discover hosts using arping incase pingall discovery failed
-    main.log.info( itemName + ": Discover host using arping" )
-    main.Mininet1.arping( srcHost=host1, dstHost=host2 )
-    main.Mininet1.arping( srcHost=host2, dstHost=host1 )
-    host1 = main.CLIs[ 0 ].getHost( mac=h1Mac )
-    host2 = main.CLIs[ 0 ].getHost( mac=h2Mac )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Adding host intents
-    main.log.info( itemName + ": Adding host intents" )
-    intent1 = main.CLIs[ onosNode ].addHostIntent( hostIdOne=h1Id,
-                                                   hostIdTwo=h2Id )
-    intentsId.append( intent1 )
-
-    # Check intents state
-    time.sleep( main.checkIntentSleep )
-    intentResult = checkIntentState( main, intentsId )
-    checkFlowsCount( main )
-
-    # Check intents state again if first check fails...
-    if not intentResult:
-        intentResult = checkIntentState( main, intentsId )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-    # Verify flows
-    checkFlowsState( main )
-
-    # Ping hosts
-    firstPingResult = pingallHosts( main, hostNames )
-    if not firstPingResult:
-        main.log.debug( "First ping failed, there must be" +
-                       " something wrong with ONOS performance" )
-
-    # Ping hosts again...
-    pingTemp = pingallHosts( main, hostNames )
-    pingResult = pingResult and pingTemp
-    if pingTemp:
-        main.assertReturnString += 'Initial Pingall Passed\n'
-    else:
-        main.assertReturnString += 'Initial Pingall Failed\n'
-
-    # Test rerouting if these variables exist
-    if sw1 and sw2 and expectedLink:
-        # Link down
-        linkDownResult = link( main, sw1, sw2, "down" )
-
-        if linkDownResult:
-            main.assertReturnString += 'Link Down Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, expectedLink )
-        if topoResult:
-            main.assertReturnString += 'Link Down Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-
-        if pingTemp:
-            main.assertReturnString += 'Link Down Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Pingall Failed\n'
-
-        # Check intent states
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link down
-        if linkDownResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link down" )
-        else:
-            main.log.error( itemName + ": Failed to bring link down" )
-
-        # Link up
-        linkUpResult = link( main, sw1, sw2, "up" )
-        time.sleep( main.rerouteSleep )
-
-        if linkUpResult:
-            main.assertReturnString += 'Link Up Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, main.numLinks )
-
-        if topoResult:
-            main.assertReturnString += 'Link Up Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-
-        if pingTemp:
-            main.assertReturnString += 'Link Up Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Pingall Failed\n'
-
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Up Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Intent State Failed\n'
-
-        # Checks ONOS state in link up
-        if linkUpResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link back up" )
-        else:
-            main.log.error( itemName + ": Failed to bring link back up" )
-
-    # Remove all intents
-    removeIntentResult = removeAllIntents( main, intentsId )
-
-    if removeIntentResult:
-        main.assertReturnString += 'Remove Intents Passed'
-    else:
-        main.assertReturnString += 'Remove Intents Failed'
-
-    stepResult = pingResult and linkDownResult and linkUpResult \
-                 and intentResult and removeIntentResult
-
-    return stepResult
-
-def pointIntent( main,
-                 name,
-                 host1,
-                 host2,
-                 onosNode=0,
-                 deviceId1="",
-                 deviceId2="",
-                 port1="",
-                 port2="",
-                 ethType="",
-                 mac1="",
-                 mac2="",
-                 bandwidth="",
-                 lambdaAlloc=False,
-                 ipProto="",
-                 ip1="",
-                 ip2="",
-                 tcp1="",
-                 tcp2="",
-                 sw1="",
-                 sw2="",
-                 expectedLink=0 ):
-
-    """
-    Description:
-        Verify add-point-intent
-    Steps:
-        - Get device ids | ports
-        - Add point intents
-        - Check intents
-        - Verify flows
-        - Ping hosts
-        - Reroute
-            - Link down
-            - Verify flows
-            - Check topology
-            - Ping hosts
-            - Link up
-            - Verify flows
-            - Check topology
-            - Ping hosts
-        - Remove intents
-    Required:
-        name - Type of point intent to add eg. IPV4 | VLAN | Dualstack
-        host1 - Name of first host
-        host2 - Name of second host
-    Optional:
-        onosNode - ONOS node to install the intents in main.CLIs[ ]
-                   0 by default so that it will always use the first
-                   ONOS node
-        deviceId1 - ONOS device id of the first switch, the same as the
-                    location of the first host eg. of:0000000000000001/1,
-                    located at device 1 port 1
-        deviceId2 - ONOS device id of the second switch
-        port1 - The port number where the first host is attached
-        port2 - The port number where the second host is attached
-        ethType - Ethernet type eg. IPV4, IPV6
-        mac1 - Mac address of first host
-        mac2 - Mac address of the second host
-        bandwidth - Bandwidth capacity
-        lambdaAlloc - Allocate lambda, defaults to False
-        ipProto - IP protocol
-        ip1 - IP address of first host
-        ip2 - IP address of second host
-        tcp1 - TCP port of first host
-        tcp2 - TCP port of second host
-        sw1 - First switch to bring down & up for rerouting purpose
-        sw2 - Second switch to bring down & up for rerouting purpose
-        expectedLink - Expected link when the switches are down, it should
-                       be two links lower than the links before the two
-                       switches are down
-    """
-
-    assert main, "There is no main variable"
-    assert name, "variable name is empty"
-    assert host1 and host2, "You must specify hosts"
-
-    global itemName
-    itemName = name
-    host1 = host1
-    host2 = host2
-    hostNames = [ host1, host2 ]
-    intentsId = []
-
-    pingResult = main.TRUE
-    intentResult = main.TRUE
-    removeIntentResult = main.TRUE
-    flowResult = main.TRUE
-    topoResult = main.TRUE
-    linkDownResult = main.TRUE
-    linkUpResult = main.TRUE
-    onosNode = int( onosNode )
-
-    # Adding bidirectional point  intents
-    main.log.info( itemName + ": Adding point intents" )
-    intent1 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId1,
-                                             egressDevice=deviceId2,
-                                             portIngress=port1,
-                                             portEgress=port2,
-                                             ethType=ethType,
-                                             ethSrc=mac1,
-                                             ethDst=mac2,
-                                             bandwidth=bandwidth,
-                                             lambdaAlloc=lambdaAlloc,
-                                             ipProto=ipProto,
-                                             ipSrc=ip1,
-                                             ipDst=ip2,
-                                             tcpSrc=tcp1,
-                                             tcpDst=tcp2 )
-
-    intentsId.append( intent1 )
-    intent2 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId2,
-                                             egressDevice=deviceId1,
-                                             portIngress=port2,
-                                             portEgress=port1,
-                                             ethType=ethType,
-                                             ethSrc=mac2,
-                                             ethDst=mac1,
-                                             bandwidth=bandwidth,
-                                             lambdaAlloc=lambdaAlloc,
-                                             ipProto=ipProto,
-                                             ipSrc=ip2,
-                                             ipDst=ip1,
-                                             tcpSrc=tcp2,
-                                             tcpDst=tcp1 )
-    intentsId.append( intent2 )
-
-    # Check intents state
-    time.sleep( main.checkIntentSleep )
-    intentResult = checkIntentState( main, intentsId )
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Check intents state again if first check fails...
-    if not intentResult:
-        intentResult = checkIntentState( main, intentsId )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-    # Verify flows
-    checkFlowsState( main )
-
-    # Ping hosts
-    pingTemp = pingallHosts( main, hostNames )
-    pingResult = pingResult and pingTemp
-    if pingTemp:
-        main.assertReturnString += 'Initial Pingall Passed\n'
-    else:
-        main.assertReturnString += 'Initial Pingall Failed\n'
-
-    # Test rerouting if these variables exist
-    if sw1 and sw2 and expectedLink:
-        # link down
-        linkDownResult = link( main, sw1, sw2, "down" )
-
-        if linkDownResult:
-            main.assertReturnString += 'Link Down Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, expectedLink )
-        if topoResult:
-            main.assertReturnString += 'Link Down Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-        if pingTemp:
-            main.assertReturnString += 'Link Down Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Pingall Failed\n'
-
-        # Check intent state
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link down
-        if linkDownResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link down" )
-        else:
-            main.log.error( itemName + ": Failed to bring link down" )
-
-        # link up
-        linkUpResult = link( main, sw1, sw2, "up" )
-        if linkUpResult:
-            main.assertReturnString += 'Link Up Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Failed\n'
-
-        time.sleep( main.rerouteSleep )
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, main.numLinks )
-        if topoResult:
-            main.assertReturnString += 'Link Up Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-
-        if pingTemp:
-            main.assertReturnString += 'Link Up Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Pingall Failed\n'
-
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Up Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Intent State Failed\n'
-
-        # Checks ONOS state in link up
-        if linkUpResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link back up" )
-        else:
-            main.log.error( itemName + ": Failed to bring link back up" )
-
-    # Remove all intents
-    removeIntentResult = removeAllIntents( main, intentsId )
-    if removeIntentResult:
-        main.assertReturnString += 'Remove Intents Passed'
-    else:
-        main.assertReturnString += 'Remove Intents Failed'
-
-    stepResult = pingResult and linkDownResult and linkUpResult \
-                 and intentResult and removeIntentResult
-
-    return stepResult
-
-def pointIntentTcp( main,
-                    name,
-                    host1,
-                    host2,
-                    onosNode=0,
-                    deviceId1="",
-                    deviceId2="",
-                    port1="",
-                    port2="",
-                    ethType="",
-                    mac1="",
-                    mac2="",
-                    bandwidth="",
-                    lambdaAlloc=False,
-                    ipProto="",
-                    ip1="",
-                    ip2="",
-                    tcp1="",
-                    tcp2="",
-                    sw1="",
-                    sw2="",
-                    expectedLink=0 ):
-
-    """
-    Description:
-        Verify add-point-intent only for TCP
-    Steps:
-        - Get device ids | ports
-        - Add point intents
-        - Check intents
-        - Verify flows
-        - Ping hosts
-        - Reroute
-            - Link down
-            - Verify flows
-            - Check topology
-            - Ping hosts
-            - Link up
-            - Verify flows
-            - Check topology
-            - Ping hosts
-        - Remove intents
-    Required:
-        name - Type of point intent to add eg. IPV4 | VLAN | Dualstack
-        host1 - Name of first host
-        host2 - Name of second host
-    Optional:
-        onosNode - ONOS node to install the intents in main.CLIs[ ]
-                   0 by default so that it will always use the first
-                   ONOS node
-        deviceId1 - ONOS device id of the first switch, the same as the
-                    location of the first host eg. of:0000000000000001/1,
-                    located at device 1 port 1
-        deviceId2 - ONOS device id of the second switch
-        port1 - The port number where the first host is attached
-        port2 - The port number where the second host is attached
-        ethType - Ethernet type eg. IPV4, IPV6
-        mac1 - Mac address of first host
-        mac2 - Mac address of the second host
-        bandwidth - Bandwidth capacity
-        lambdaAlloc - Allocate lambda, defaults to False
-        ipProto - IP protocol
-        ip1 - IP address of first host
-        ip2 - IP address of second host
-        tcp1 - TCP port of first host
-        tcp2 - TCP port of second host
-        sw1 - First switch to bring down & up for rerouting purpose
-        sw2 - Second switch to bring down & up for rerouting purpose
-        expectedLink - Expected link when the switches are down, it should
-                       be two links lower than the links before the two
-                       switches are down
-    """
-
-    assert main, "There is no main variable"
-    assert name, "variable name is empty"
-    assert host1 and host2, "You must specify hosts"
-
-    global itemName
-    itemName = name
-    host1 = host1
-    host2 = host2
-    hostNames = [ host1, host2 ]
-    intentsId = []
-
-    iperfResult = main.TRUE
-    intentResult = main.TRUE
-    removeIntentResult = main.TRUE
-    flowResult = main.TRUE
-    topoResult = main.TRUE
-    linkDownResult = main.TRUE
-    linkUpResult = main.TRUE
-    onosNode = int( onosNode )
-
-    # Adding bidirectional point  intents
-    main.log.info( itemName + ": Adding point intents" )
-    intent1 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId1,
-                                                    egressDevice=deviceId2,
-                                                    portIngress=port1,
-                                                    portEgress=port2,
-                                                    ethType=ethType,
-                                                    ethSrc=mac1,
-                                                    ethDst=mac2,
-                                                    bandwidth=bandwidth,
-                                                    lambdaAlloc=lambdaAlloc,
-                                                    ipProto=ipProto,
-                                                    ipSrc=ip1,
-                                                    ipDst=ip2,
-                                                    tcpSrc=tcp1,
-                                                    tcpDst="" )
-
-    intent2 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId2,
-                                                    egressDevice=deviceId1,
-                                                    portIngress=port2,
-                                                    portEgress=port1,
-                                                    ethType=ethType,
-                                                    ethSrc=mac2,
-                                                    ethDst=mac1,
-                                                    bandwidth=bandwidth,
-                                                    lambdaAlloc=lambdaAlloc,
-                                                    ipProto=ipProto,
-                                                    ipSrc=ip2,
-                                                    ipDst=ip1,
-                                                    tcpSrc=tcp2,
-                                                    tcpDst="" )
-
-    intent3 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId1,
-                                                    egressDevice=deviceId2,
-                                                    portIngress=port1,
-                                                    portEgress=port2,
-                                                    ethType=ethType,
-                                                    ethSrc=mac1,
-                                                    ethDst=mac2,
-                                                    bandwidth=bandwidth,
-                                                    lambdaAlloc=lambdaAlloc,
-                                                    ipProto=ipProto,
-                                                    ipSrc=ip1,
-                                                    ipDst=ip2,
-                                                    tcpSrc="",
-                                                    tcpDst=tcp2 )
-
-    intent4 = main.CLIs[ onosNode ].addPointIntent( ingressDevice=deviceId2,
-                                                    egressDevice=deviceId1,
-                                                    portIngress=port2,
-                                                    portEgress=port1,
-                                                    ethType=ethType,
-                                                    ethSrc=mac2,
-                                                    ethDst=mac1,
-                                                    bandwidth=bandwidth,
-                                                    lambdaAlloc=lambdaAlloc,
-                                                    ipProto=ipProto,
-                                                    ipSrc=ip2,
-                                                    ipDst=ip1,
-                                                    tcpSrc="",
-                                                    tcpDst=tcp1 )
-    intentsId.append( intent1 )
-    intentsId.append( intent2 )
-    intentsId.append( intent3 )
-    intentsId.append( intent4 )
-
-    # Check intents state
-    time.sleep( main.checkIntentSleep )
-    intentResult = checkIntentState( main, intentsId )
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Check intents state again if first check fails...
-    if not intentResult:
-        intentResult = checkIntentState( main, intentsId )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Verify flows
-    checkFlowsState( main )
-
-    # Run iperf to both host
-    iperfTemp = main.Mininet1.iperftcp( host1,host2,10 )
-    iperfResult = iperfResult and iperfTemp
-    if iperfTemp:
-        main.assertReturnString += 'Initial Iperf Passed\n'
-    else:
-        main.assertReturnString += 'Initial Iperf Failed\n'
-
-    # Test rerouting if these variables exist
-    if sw1 and sw2 and expectedLink:
-        # link down
-        linkDownResult = link( main, sw1, sw2, "down" )
-
-        if linkDownResult:
-            main.assertReturnString += 'Link Down Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, expectedLink )
-        if topoResult:
-            main.assertReturnString += 'Link Down Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Topology State Failed\n'
-
-        # Run iperf to both host
-        iperfTemp = main.Mininet1.iperftcp( host1,host2,10 )
-        iperfResult = iperfResult and iperfTemp
-        if iperfTemp:
-            main.assertReturnString += 'Link Down Iperf Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Iperf Failed\n'
-
-        # Check intent state
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link down
-        if linkDownResult and topoResult and iperfResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link down" )
-        else:
-            main.log.error( itemName + ": Failed to bring link down" )
-
-        # link up
-        linkUpResult = link( main, sw1, sw2, "up" )
-        if linkUpTemp:
-            main.assertReturnString += 'Link Up Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Failed\n'
-
-        time.sleep( main.rerouteSleep )
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, main.numLinks )
-
-        if topoResult:
-            main.assertReturnString += 'Link Up Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Topology State Failed\n'
-
-        # Run iperf to both host
-        iperfTemp = main.Mininet1.iperftcp( host1,host2,10 )
-        iperfResult = iperfResult and iperfTemp
-        if iperfTemp:
-            main.assertReturnString += 'Link Up Iperf Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Iperf Failed\n'
-
-        # Check intent state
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link up
-        if linkUpResult and topoResult and iperfResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link back up" )
-        else:
-            main.log.error( itemName + ": Failed to bring link back up" )
-
-    # Remove all intents
-    removeIntentResult = removeAllIntents( main, intentsId )
-    if removeIntentResult:
-        main.assertReturnString += 'Remove Intents Passed'
-    else:
-        main.assertReturnString += 'Remove Intents Failed'
-
-    stepResult = iperfResult and linkDownResult and linkUpResult \
-                 and intentResult and removeIntentResult
-
-    return stepResult
-
-def singleToMultiIntent( main,
-                         name,
-                         hostNames,
-                         onosNode=0,
-                         devices="",
-                         ports=None,
-                         ethType="",
-                         macs=None,
-                         bandwidth="",
-                         lambdaAlloc=False,
-                         ipProto="",
-                         ipAddresses="",
-                         tcp="",
-                         sw1="",
-                         sw2="",
-                         expectedLink=0 ):
-    """
-    Verify Single to Multi Point intents
-    NOTE:If main.hostsData is not defined, variables data should be passed
-    in the same order index wise. All devices in the list should have the same
-    format, either all the devices have its port or it doesn't.
-    eg. hostName = [ 'h1', 'h2' ,..  ]
-        devices = [ 'of:0000000000000001', 'of:0000000000000002', ...]
-        ports = [ '1', '1', ..]
-        ...
-    Description:
-        Verify add-single-to-multi-intent iterates through the list of given
-        host | devices and add intents
-    Steps:
-        - Get device ids | ports
-        - Add single to multi point intents
-        - Check intents
-        - Verify flows
-        - Ping hosts
-        - Reroute
-            - Link down
-            - Verify flows
-            - Check topology
-            - Ping hosts
-            - Link up
-            - Verify flows
-            - Check topology
-            - Ping hosts
-        - Remove intents
-    Required:
-        name - Type of point intent to add eg. IPV4 | VLAN | Dualstack
-        hostNames - List of host names
-    Optional:
-        onosNode - ONOS node to install the intents in main.CLIs[ ]
-                   0 by default so that it will always use the first
-                   ONOS node
-        devices - List of device ids in the same order as the hosts
-                  in hostNames
-        ports - List of port numbers in the same order as the device in
-                devices
-        ethType - Ethernet type eg. IPV4, IPV6
-        macs - List of hosts mac address in the same order as the hosts in
-               hostNames
-        bandwidth - Bandwidth capacity
-        lambdaAlloc - Allocate lambda, defaults to False
-        ipProto - IP protocol
-        ipAddresses - IP addresses of host in the same order as the hosts in
-                      hostNames
-        tcp - TCP ports in the same order as the hosts in hostNames
-        sw1 - First switch to bring down & up for rerouting purpose
-        sw2 - Second switch to bring down & up for rerouting purpose
-        expectedLink - Expected link when the switches are down, it should
-                       be two links lower than the links before the two
-                       switches are down
-    """
-
-    assert main, "There is no main variable"
-    assert hostNames, "You must specify hosts"
-    assert devices or main.hostsData, "You must specify devices"
-
-    global itemName
-    itemName = name
-    tempHostsData = {}
-    intentsId = []
-    onosNode = int( onosNode )
-
-    macsDict = {}
-    ipDict = {}
-    if hostNames and devices:
-        if len( hostNames ) != len( devices ):
-            main.log.debug( "hosts and devices does not have the same length" )
-            #print "len hostNames = ", len( hostNames )
-            #print "len devices = ", len( devices )
-            return main.FALSE
-        if ports:
-            if len( ports ) != len( devices ):
-                main.log.error( "Ports and devices does " +
-                                "not have the same length" )
-                #print "len devices = ", len( devices )
-                #print "len ports = ", len( ports )
-                return main.FALSE
-        else:
-            main.log.info( "Device Ports are not specified" )
-        if macs:
-            for i in range( len( devices ) ):
-                macsDict[ devices[ i ] ] = macs[ i ]
-
-    elif hostNames and not devices and main.hostsData:
-        devices = []
-        main.log.info( "singleToMultiIntent function is using main.hostsData" )
-        for host in hostNames:
-               devices.append( main.hostsData.get( host ).get( 'location' ) )
-               macsDict[ main.hostsData.get( host ).get( 'location' ) ] = \
-                           main.hostsData.get( host ).get( 'mac' )
-               ipDict[ main.hostsData.get( host ).get( 'location' ) ] = \
-                           main.hostsData.get( host ).get( 'ipAddresses' )
-        #print main.hostsData
-
-    #print 'host names = ', hostNames
-    #print 'devices = ', devices
-    #print "macsDict = ", macsDict
-
-    pingResult = main.TRUE
-    intentResult = main.TRUE
-    removeIntentResult = main.TRUE
-    flowResult = main.TRUE
-    topoResult = main.TRUE
-    linkDownResult = main.TRUE
-    linkUpResult = main.TRUE
-
-    devicesCopy = copy.copy( devices )
-    if ports:
-        portsCopy = copy.copy( ports )
-    main.log.info( itemName + ": Adding single point to multi point intents" )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Adding bidirectional point  intents
-    for i in range( len( devices ) ):
-        ingressDevice = devicesCopy[ i ]
-        egressDeviceList = copy.copy( devicesCopy )
-        egressDeviceList.remove( ingressDevice )
-        if ports:
-            portIngress = portsCopy[ i ]
-            portEgressList = copy.copy( portsCopy )
-            del portEgressList[ i ]
-        else:
-            portIngress = ""
-            portEgressList = None
-        if not macsDict:
-            srcMac = ""
-        else:
-            srcMac = macsDict[ ingressDevice ]
-            if srcMac == None:
-                main.log.debug( "There is no MAC in device - " + ingressDevice )
-                srcMac = ""
-
-        intentsId.append(
-                        main.CLIs[ onosNode ].addSinglepointToMultipointIntent(
-                                            ingressDevice=ingressDevice,
-                                            egressDeviceList=egressDeviceList,
-                                            portIngress=portIngress,
-                                            portEgressList=portEgressList,
-                                            ethType=ethType,
-                                            ethSrc=srcMac,
-                                            bandwidth=bandwidth,
-                                            lambdaAlloc=lambdaAlloc,
-                                            ipProto=ipProto,
-                                            ipSrc="",
-                                            ipDst="",
-                                            tcpSrc="",
-                                            tcpDst="" ) )
-
-    # Wait some time for the flow to go through when using multi instance
-    pingTemp = pingallHosts( main, hostNames )
-
-    # Check intents state
-    time.sleep( main.checkIntentSleep )
-    intentResult = checkIntentState( main, intentsId )
-
-    # Check intents state again if first check fails...
-    if not intentResult:
-        intentResult = checkIntentState( main, intentsId )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-    # Verify flows
-    checkFlowsState( main )
-
-    pingTemp = pingallHosts( main, hostNames )
-    pingResult = pingResult and pingTemp
-    if pingTemp:
-        main.assertReturnString += 'Initial Pingall Passed\n'
-    else:
-        main.assertReturnString += 'Initial Pingall Failed\n'
-
-    # Test rerouting if these variables exist
-    if sw1 and sw2 and expectedLink:
-        # link down
-        linkDownResult = link( main, sw1, sw2, "down" )
-
-        if linkDownResult:
-            main.assertReturnString += 'Link Down Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, expectedLink )
-        if topoResult:
-            main.assertReturnString += 'Link Down Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-        if pingTemp:
-            main.assertReturnString += 'Link Down Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Pingall Failed\n'
-
-        # Check intent state
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link down
-        if linkDownResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link down" )
-        else:
-            main.log.error( itemName + ": Failed to bring link down" )
-
-        # link up
-        linkUpResult = link( main, sw1, sw2, "up" )
-        if linkUpResult:
-            main.assertReturnString += 'Link Up Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Failed\n'
-
-        time.sleep( main.rerouteSleep )
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, main.numLinks )
-        if topoResult:
-            main.assertReturnString += 'Link Up Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-        if pingTemp:
-            main.assertReturnString += 'Link Up Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Pingall Failed\n'
-
-        # Check Intents
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Up Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Intent State Failed\n'
-
-        # Checks ONOS state in link up
-        if linkUpResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link back up" )
-        else:
-            main.log.error( itemName + ": Failed to bring link back up" )
-
-    # Remove all intents
-    removeIntentResult = removeAllIntents( main, intentsId )
-    if removeIntentResult:
-        main.assertReturnString += 'Remove Intents Passed'
-    else:
-        main.assertReturnString += 'Remove Intents Failed'
-
-    stepResult = pingResult and linkDownResult and linkUpResult \
-                 and intentResult and removeIntentResult
-
-    return stepResult
-
-def multiToSingleIntent( main,
-                         name,
-                         hostNames,
-                         onosNode=0,
-                         devices="",
-                         ports=None,
-                         ethType="",
-                         macs=None,
-                         bandwidth="",
-                         lambdaAlloc=False,
-                         ipProto="",
-                         ipAddresses="",
-                         tcp="",
-                         sw1="",
-                         sw2="",
-                         expectedLink=0 ):
-    """
-    Verify Single to Multi Point intents
-    NOTE:If main.hostsData is not defined, variables data should be passed in the
-    same order index wise. All devices in the list should have the same
-    format, either all the devices have its port or it doesn't.
-    eg. hostName = [ 'h1', 'h2' ,..  ]
-        devices = [ 'of:0000000000000001', 'of:0000000000000002', ...]
-        ports = [ '1', '1', ..]
-        ...
-    Description:
-        Verify add-multi-to-single-intent
-    Steps:
-        - Get device ids | ports
-        - Add multi to single point intents
-        - Check intents
-        - Verify flows
-        - Ping hosts
-        - Reroute
-            - Link down
-            - Verify flows
-            - Check topology
-            - Ping hosts
-            - Link up
-            - Verify flows
-            - Check topology
-            - Ping hosts
-        - Remove intents
-    Required:
-        name - Type of point intent to add eg. IPV4 | VLAN | Dualstack
-        hostNames - List of host names
-    Optional:
-        onosNode - ONOS node to install the intents in main.CLIs[ ]
-                   0 by default so that it will always use the first
-                   ONOS node
-        devices - List of device ids in the same order as the hosts
-                  in hostNames
-        ports - List of port numbers in the same order as the device in
-                devices
-        ethType - Ethernet type eg. IPV4, IPV6
-        macs - List of hosts mac address in the same order as the hosts in
-               hostNames
-        bandwidth - Bandwidth capacity
-        lambdaAlloc - Allocate lambda, defaults to False
-        ipProto - IP protocol
-        ipAddresses - IP addresses of host in the same order as the hosts in
-                      hostNames
-        tcp - TCP ports in the same order as the hosts in hostNames
-        sw1 - First switch to bring down & up for rerouting purpose
-        sw2 - Second switch to bring down & up for rerouting purpose
-        expectedLink - Expected link when the switches are down, it should
-                       be two links lower than the links before the two
-                       switches are down
-    """
-
-    assert main, "There is no main variable"
-    assert hostNames, "You must specify hosts"
-    assert devices or main.hostsData, "You must specify devices"
-
-    global itemName
-    itemName = name
-    tempHostsData = {}
-    intentsId = []
-    onosNode = int( onosNode )
-
-    macsDict = {}
-    ipDict = {}
-    if hostNames and devices:
-        if len( hostNames ) != len( devices ):
-            main.log.debug( "hosts and devices does not have the same length" )
-            #print "len hostNames = ", len( hostNames )
-            #print "len devices = ", len( devices )
-            return main.FALSE
-        if ports:
-            if len( ports ) != len( devices ):
-                main.log.error( "Ports and devices does " +
-                                "not have the same length" )
-                #print "len devices = ", len( devices )
-                #print "len ports = ", len( ports )
-                return main.FALSE
-        else:
-            main.log.info( "Device Ports are not specified" )
-        if macs:
-            for i in range( len( devices ) ):
-                macsDict[ devices[ i ] ] = macs[ i ]
-    elif hostNames and not devices and main.hostsData:
-        devices = []
-        main.log.info( "multiToSingleIntent function is using main.hostsData" )
-        for host in hostNames:
-               devices.append( main.hostsData.get( host ).get( 'location' ) )
-               macsDict[ main.hostsData.get( host ).get( 'location' ) ] = \
-                           main.hostsData.get( host ).get( 'mac' )
-               ipDict[ main.hostsData.get( host ).get( 'location' ) ] = \
-                           main.hostsData.get( host ).get( 'ipAddresses' )
-        #print main.hostsData
-
-    #print 'host names = ', hostNames
-    #print 'devices = ', devices
-    #print "macsDict = ", macsDict
-
-    pingResult = main.TRUE
-    intentResult = main.TRUE
-    removeIntentResult = main.TRUE
-    flowResult = main.TRUE
-    topoResult = main.TRUE
-    linkDownResult = main.TRUE
-    linkUpResult = main.TRUE
-
-    devicesCopy = copy.copy( devices )
-    if ports:
-        portsCopy = copy.copy( ports )
-    main.log.info( itemName + ": Adding multi point to single point intents" )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-
-    # Adding bidirectional point  intents
-    for i in range( len( devices ) ):
-        egressDevice = devicesCopy[ i ]
-        ingressDeviceList = copy.copy( devicesCopy )
-        ingressDeviceList.remove( egressDevice )
-        if ports:
-            portEgress = portsCopy[ i ]
-            portIngressList = copy.copy( portsCopy )
-            del portIngressList[ i ]
-        else:
-            portEgress = ""
-            portIngressList = None
-        if not macsDict:
-            dstMac = ""
-        else:
-            dstMac = macsDict[ egressDevice ]
-            if dstMac == None:
-                main.log.debug( "There is no MAC in device - " + egressDevice )
-                dstMac = ""
-
-        intentsId.append(
-                        main.CLIs[ onosNode ].addMultipointToSinglepointIntent(
-                                            ingressDeviceList=ingressDeviceList,
-                                            egressDevice=egressDevice,
-                                            portIngressList=portIngressList,
-                                            portEgress=portEgress,
-                                            ethType=ethType,
-                                            ethDst=dstMac,
-                                            bandwidth=bandwidth,
-                                            lambdaAlloc=lambdaAlloc,
-                                            ipProto=ipProto,
-                                            ipSrc="",
-                                            ipDst="",
-                                            tcpSrc="",
-                                            tcpDst="" ) )
-
-    pingTemp = pingallHosts( main, hostNames )
-
-    # Check intents state
-    time.sleep( main.checkIntentSleep )
-    intentResult = checkIntentState( main, intentsId )
-
-    # Check intents state again if first check fails...
-    if not intentResult:
-        intentResult = checkIntentState( main, intentsId )
-
-    # Check flows count in each node
-    checkFlowsCount( main )
-    # Verify flows
-    checkFlowsState( main )
-
-    # Ping hosts
-    pingTemp = pingallHosts( main, hostNames )
-
-    # Ping hosts again...
-    pingTemp = pingallHosts( main, hostNames )
-    pingResult = pingResult and pingTemp
-    if pingTemp:
-        main.assertReturnString += 'Initial Pingall Passed\n'
-    else:
-        main.assertReturnString += 'Initial Pingall Failed\n'
-
-    # Test rerouting if these variables exist
-    if sw1 and sw2 and expectedLink:
-        # link down
-        linkDownResult = link( main, sw1, sw2, "down" )
-
-        if linkDownResult:
-            main.assertReturnString += 'Link Down Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Failed\n'
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, expectedLink )
-        if topoResult:
-            main.assertReturnString += 'Link Down Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-        if pingTemp:
-            main.assertReturnString += 'Link Down Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Pingall Failed\n'
-
-        # Check intent state
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Down Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Down Intent State Failed\n'
-
-        # Checks ONOS state in link down
-        if linkDownResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link down" )
-        else:
-            main.log.error( itemName + ": Failed to bring link down" )
-
-        # link up
-        linkUpResult = link( main, sw1, sw2, "up" )
-        if linkUpResult:
-            main.assertReturnString += 'Link Up Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Failed\n'
-
-        time.sleep( main.rerouteSleep )
-
-        # Check flows count in each node
-        checkFlowsCount( main )
-        # Verify flows
-        checkFlowsState( main )
-
-        # Check OnosTopology
-        topoResult = checkTopology( main, main.numLinks )
-        if topoResult:
-            main.assertReturnString += 'Link Up Topology State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Topology State Failed\n'
-
-        # Ping hosts
-        pingTemp = pingallHosts( main, hostNames )
-        pingResult = pingResult and pingTemp
-        if pingTemp:
-            main.assertReturnString += 'Link Up Pingall Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Pingall Failed\n'
-
-        # Check Intents
-        intentTemp = checkIntentState( main, intentsId )
-        intentResult = intentResult and intentTemp
-        if intentTemp:
-            main.assertReturnString += 'Link Up Intent State Passed\n'
-        else:
-            main.assertReturnString += 'Link Up Intent State Failed\n'
-
-        # Checks ONOS state in link up
-        if linkUpResult and topoResult and pingResult and intentResult:
-            main.log.info( itemName + ": Successfully brought link back up" )
-        else:
-            main.log.error( itemName + ": Failed to bring link back up" )
-
-    # Remove all intents
-    removeIntentResult = removeAllIntents( main, intentsId )
-    if removeIntentResult:
-        main.assertReturnString += 'Remove Intents Passed'
-    else:
-        main.assertReturnString += 'Remove Intents Failed'
-
-    stepResult = pingResult and linkDownResult and linkUpResult \
-                 and intentResult and removeIntentResult
-
-    return stepResult
-
-def pingallHosts( main, hostList ):
-    # Ping all host in the hosts list variable
-    main.log.info( "Pinging: " + str( hostList ) )
-    return main.Mininet1.pingallHosts( hostList )
-
-def getHostsData( main ):
-    """
-        Use fwd app and pingall to discover all the hosts
-    """
-
-    activateResult = main.TRUE
-    appCheck = main.TRUE
-    getDataResult = main.TRUE
-    main.log.info( "Activating reactive forwarding app " )
-    activateResult = main.CLIs[ 0 ].activateApp( "org.onosproject.fwd" )
-    time.sleep( main.fwdSleep )
-
-    for i in range( main.numCtrls ):
-        appCheck = appCheck and main.CLIs[ i ].appToIDCheck()
-        if appCheck != main.TRUE:
-            main.log.warn( main.CLIs[ i ].apps() )
-            main.log.warn( main.CLIs[ i ].appIDs() )
-
-    pingResult = main.Mininet1.pingall( timeout = 600 )
-    hostsJson = json.loads( main.CLIs[ 0 ].hosts() )
-    hosts = main.Mininet1.getHosts().keys()
-    # TODO: Make better use of new getHosts function
-    for host in hosts:
-        main.hostsData[ host ] = {}
-        main.hostsData[ host ][ 'mac' ] =  \
-            main.Mininet1.getMacAddress( host ).upper()
-        for hostj in hostsJson:
-            if main.hostsData[ host ][ 'mac' ] == hostj[ 'mac' ]:
-                main.hostsData[ host ][ 'id' ] = hostj[ 'id' ]
-                main.hostsData[ host ][ 'vlan' ] = hostj[ 'vlan' ]
-                main.hostsData[ host ][ 'location' ] = \
-                            hostj[ 'location' ][ 'elementId' ] + '/' + \
-                            hostj[ 'location' ][ 'port' ]
-                main.hostsData[ host ][ 'ipAddresses' ] = hostj[ 'ipAddresses' ]
-
-    main.log.info( "Deactivating reactive forwarding app " )
-    deactivateResult = main.CLIs[ 0 ].deactivateApp( "org.onosproject.fwd" )
-    if activateResult and deactivateResult and main.hostsData:
-        main.log.info( "Successfully used fwd app to discover hosts " )
-        getDataResult = main.TRUE
-    else:
-        main.log.info( "Failed to use fwd app to discover hosts " )
-        getDataResult = main.FALSE
-
-    print main.hostsData
-
-    return getDataResult
-
-def checkTopology( main, expectedLink ):
-    statusResult = main.TRUE
-    # Check onos topology
-    main.log.info( itemName + ": Checking ONOS topology " )
-
-    for i in range( main.numCtrls ):
-        statusResult = main.CLIs[ i ].checkStatus( main.numSwitch,
-                                                   expectedLink )\
-                       and statusResult
-    if not statusResult:
-        main.log.error( itemName + ": Topology mismatch" )
-    else:
-        main.log.info( itemName + ": Topology match" )
-    return statusResult
-
-def checkIntentState( main, intentsId ):
-    """
-        This function will check intent state to make sure all the intents
-        are in INSTALLED state
-    """
-
-    intentResult = main.TRUE
-    results = []
-
-    main.log.info( itemName + ": Checking intents state" )
-    # First check of intents
-    for i in range( main.numCtrls ):
-        tempResult = main.CLIs[ i ].checkIntentState( intentsId=intentsId )
-        results.append( tempResult )
-
-    expectedState = [ 'INSTALLED', 'INSTALLING' ]
-
-    if all( result == main.TRUE for result in results ):
-        main.log.info( itemName + ": Intents are installed correctly" )
-    else:
-        # Wait for at least 5 second before checking the intents again
-        time.sleep( 5 )
-        results = []
-        # Second check of intents since some of the intents may be in
-        # INSTALLING state, they should be in INSTALLED at this time
-        for i in range( main.numCtrls ):
-            tempResult = main.CLIs[ i ].checkIntentState(
-                                                        intentsId=intentsId )
-            results.append( tempResult )
-        if all( result == main.TRUE for result in results ):
-            main.log.info( itemName + ": Intents are installed correctly" )
-        else:
-            main.log.error( itemName + ": Intents are NOT installed correctly" )
-            intentResult = main.FALSE
-
-    return intentResult
-
-def checkFlowsState( main ):
-
-    main.log.info( itemName + ": Check flows state" )
-    checkFlowsResult = main.CLIs[ 0 ].checkFlowsState()
-    return checkFlowsResult
-
-def link( main, sw1, sw2, option):
-
-    # link down
-    main.log.info( itemName + ": Bring link " + option + "between " +
-                       sw1 + " and " + sw2 )
-    linkResult = main.Mininet1.link( end1=sw1, end2=sw2, option=option )
-    return linkResult
-
-def removeAllIntents( main, intentsId ):
-    """
-        Remove all intents in the intentsId
-    """
-
-    onosSummary = []
-    removeIntentResult = main.TRUE
-    # Remove intents
-    for intent in intentsId:
-        main.CLIs[ 0 ].removeIntent( intentId=intent, purge=True )
-
-    time.sleep( main.removeIntentSleep )
-
-    # If there is remianing intents then remove intents should fail
-    for i in range( main.numCtrls ):
-        onosSummary.append( json.loads( main.CLIs[ i ].summary() ) )
-
-    for summary in onosSummary:
-        if summary.get( 'intents' ) != 0:
-            main.log.warn( itemName + ": There are " +
-                           str( summary.get( 'intents' ) ) +
-                           " intents remaining in node " +
-                           str( summary.get( 'node' ) ) +
-                           ", failed to remove all the intents " )
-            removeIntentResult = main.FALSE
-
-    if removeIntentResult:
-        main.log.info( itemName + ": There are no more intents remaining, " +
-                       "successfully removed all the intents." )
-
-    return removeIntentResult
-
-def checkFlowsCount( main ):
-    """
-        Check flows count in each node
-    """
-
-    flowsCount = []
-    main.log.info( itemName + ": Checking flows count in each ONOS node" )
-    for i in range( main.numCtrls ):
-        summaryResult = main.CLIs[ i ].summary()
-        if not summaryResult:
-            main.log.error( itemName + ": There is something wrong with " +
-                            "summary command" )
-            return main.FALSE
-        else:
-            summaryJson = json.loads( summaryResult )
-            flowsCount.append( summaryJson.get( 'flows' ) )
-
-    if flowsCount:
-        if all( flows==flowsCount[ 0 ] for flows in flowsCount ):
-            main.log.info( itemName + ": There are " + str( flowsCount[ 0 ] ) +
-                           " flows in all ONOS node" )
-        else:
-            for i in range( main.numCtrls ):
-                main.log.debug( itemName + ": ONOS node " + str( i ) + " has " +
-                                str( flowsCount[ i ] ) + " flows" )
-    else:
-        main.log.error( "Checking flows count failed, check summary command" )
-        return main.FALSE
-
-    return main.TRUE
-
-def checkLeaderChange( leaders1, leaders2 ):
-    """
-        Checks for a change in intent partition leadership.
-
-        Takes the output of leaders -c in json string format before and after
-        a potential change as input
-
-        Returns main.TRUE if no mismatches are detected
-        Returns main.FALSE if there is a mismatch or on error loading the input
-    """
-    try:
-        leaders1 = json.loads( leaders1 )
-        leaders2 = json.loads( leaders2 )
-    except ( AttributeError, TypeError):
-        main.log.exception( self.name + ": Object not as expected" )
-        return main.FALSE
-    except Exception:
-        main.log.exception( self.name + ": Uncaught exception!" )
-        main.cleanup()
-        main.exit()
-    main.log.info( "Checking Intent Paritions for Change in Leadership" )
-    mismatch = False
-    for dict1 in leaders1:
-        if "intent" in dict1.get( "topic", [] ):
-            for dict2 in leaders2:
-                if dict1.get( "topic", 0 ) == dict2.get( "topic", 0 ) and \
-                    dict1.get( "leader", 0 ) != dict2.get( "leader", 0 ):
-                    mismatch = True
-                    main.log.error( "{0} changed leader from {1} to {2}".\
-                        format( dict1.get( "topic", "no-topic" ),\
-                            dict1.get( "leader", "no-leader" ),\
-                            dict2.get( "leader", "no-leader" ) ) )
-    if mismatch:
-        return main.FALSE
-    else:
-        return main.TRUE
-
-def report( main ):
-    """
-    Report errors/warnings/exceptions
-    """
-
-    main.ONOSbench.logReport( main.ONOSip[ 0 ],
-                              [ "INFO",
-                                "FOLLOWER",
-                                "WARN",
-                                "flow",
-                                "ERROR",
-                                "Except" ],
-                              "s" )
-
-    main.log.info( "ERROR report: \n" )
-    for i in range( main.numCtrls ):
-        main.ONOSbench.logReport( main.ONOSip[ i ],
-                [ "ERROR" ],
-                "d" )
-
-    main.log.info( "EXCEPTIONS report: \n" )
-    for i in range( main.numCtrls ):
-        main.ONOSbench.logReport( main.ONOSip[ i ],
-                [ "Except" ],
-                "d" )
-
-    main.log.info( "WARNING report: \n" )
-    for i in range( main.numCtrls ):
-        main.ONOSbench.logReport( main.ONOSip[ i ],
-                [ "WARN" ],
-                "d" )
diff --git a/TestON/tests/FUNC/FUNCoptical/dependencies/TopoConfig.json b/TestON/tests/FUNC/FUNCoptical/dependencies/TopoConfig.json
new file mode 100644
index 0000000..e24ed20
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCoptical/dependencies/TopoConfig.json
@@ -0,0 +1,99 @@
+{
+    "linkConfig": [
+        {
+            "type": "wdmLink",
+            "params": {
+                "port2": 2100,
+                "port1": 1200,
+                "nodeName2": "OE2",
+                "nodeName1": "OE1"
+            },
+            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:01",
+            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:02",
+            "allowed": true
+        },
+        {
+            "type": "wdmLink",
+            "params": {
+                "port2": 3200,
+                "port1": 2300,
+                "nodeName2": "OE3",
+                "nodeName1": "OE2"
+            },
+            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
+            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:03",
+            "allowed": true
+        },
+        {
+            "type": "wdmLink",
+            "params": {
+                "port2": 1300,
+                "port1": 3100,
+                "nodeName2": "OE1",
+                "nodeName1": "OE3"
+            },
+            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
+            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:01",
+            "allowed": true
+        },
+        {
+            "type": "pktOptLink",
+            "params": {
+                "port2": 1,
+                "port1": 2,
+                "nodeName2": "OE1",
+                "nodeName1": "ps1"
+            },
+            "nodeDpid1": "00:00:00:00:00:00:00:01",
+            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:01",
+            "allowed": true
+        },
+        {
+            "type": "pktOptLink",
+            "params": {
+                "port2": 1,
+                "port1": 2,
+                "nodeName2": "OE2",
+                "nodeName1": "ps2"
+            },
+            "nodeDpid1": "00:00:00:00:00:00:00:02",
+            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:02",
+            "allowed": true
+        }
+    ],
+    "switchConfig": [
+        {
+            "name": "OE1",
+            "longitude": 0.0,
+            "params": {
+                "numregens": 0
+            },
+            "allowed": true,
+            "latitude": 0.0,
+            "type": "Roadm",
+            "nodeDpid": "00:00:ff:ff:ff:ff:ff:01"
+        },
+        {
+            "name": "OE2",
+            "longitude": 0.0,
+            "params": {
+                "numregens": 0
+            },
+            "allowed": true,
+            "latitude": 0.0,
+            "type": "Roadm",
+            "nodeDpid": "00:00:ff:ff:ff:ff:ff:02"
+        },
+        {
+            "name": "OE3",
+            "longitude": 0.0,
+            "params": {
+                "numregens": 0
+            },
+            "allowed": true,
+            "latitude": 0.0,
+            "type": "Roadm",
+            "nodeDpid": "00:00:ff:ff:ff:ff:ff:03"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/dependencies/Topology.json b/TestON/tests/FUNC/FUNCoptical/dependencies/Topology.json
new file mode 100644
index 0000000..210fc58
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCoptical/dependencies/Topology.json
@@ -0,0 +1,138 @@
+{
+    "devices": {
+        "of:0000ffffffffff01": {
+            "basic": {
+                "type": "ROADM",
+                "name": "OE1"
+            }
+        },
+        "of:0000ffffffffff02": {
+            "basic": {
+                "type": "ROADM",
+                "name": "OE2"
+            }
+        },
+        "of:0000ffffffffff03": {
+            "basic": {
+                "type": "ROADM",
+                "name": "OE3"
+            }
+        },
+        "of:0000000000000002": {
+            "basic": {
+                "type": "SWITCH",
+                "name": "ps2"
+            }
+        },
+        "of:0000000000000001": {
+            "basic": {
+                "type": "SWITCH",
+                "name": "ps1"
+            }
+        }
+    },
+    "links": {
+        "of:0000ffffffffff03/3100-of:0000ffffffffff01/1300": {
+            "basic": {
+                "durable": "true",
+                "type": "OPTICAL"
+            }
+        },
+        "of:0000000000000002/2-of:0000ffffffffff02/1": {
+            "basic": {
+                "durable": "true",
+                "type": "OPTICAL"
+            }
+        },
+        "of:0000ffffffffff01/1200-of:0000ffffffffff02/2100": {
+            "basic": {
+                "durable": "true",
+                "type": "OPTICAL"
+            }
+        },
+        "of:0000ffffffffff02/2300-of:0000ffffffffff03/3200": {
+            "basic": {
+                "durable": "true",
+                "type": "OPTICAL"
+            }
+        },
+        "of:0000000000000001/2-of:0000ffffffffff01/1": {
+            "basic": {
+                "durable": "true",
+                "type": "OPTICAL"
+            }
+        }
+    },
+    "ports": {
+        "of:0000ffffffffff01/1300": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 1300
+            }
+        },
+        "of:0000000000000001/1": {
+            "optical": {
+                "speed": 0,
+                "type": "COPPER",
+                "port": 1
+            }
+        },
+        "of:0000ffffffffff03/3200": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 3200
+            }
+        },
+        "of:0000ffffffffff02/2100": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 2100
+            }
+        },
+        "of:0000ffffffffff01/1200": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 1200
+            }
+        },
+        "of:0000000000000002/1": {
+            "optical": {
+                "speed": 0,
+                "type": "COPPER",
+                "port": 1
+            }
+        },
+        "of:0000ffffffffff03/3100": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 3100
+            }
+        },
+        "of:0000ffffffffff01/1": {
+            "optical": {
+                "type": "OCH",
+                "speed": 0,
+                "port": 1
+            }
+        },
+        "of:0000ffffffffff02/1": {
+            "optical": {
+                "type": "OCH",
+                "speed": 0,
+                "port": 1
+            }
+        },
+        "of:0000ffffffffff02/2300": {
+            "optical": {
+                "type": "OMS",
+                "speed": 0,
+                "port": 2300
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCoptical/dependencies/ectopo.py b/TestON/tests/FUNC/FUNCoptical/dependencies/ectopo.py
new file mode 100644
index 0000000..cd365b3
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCoptical/dependencies/ectopo.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+
+from mininet.net import Mininet
+from mininet.topo import Topo
+from mininet.node import Host, RemoteController
+from mininet.cli import CLI
+from mininet.log import setLogLevel
+
+from opticalUtils import LINCSwitch, LINCLink
+
+class OpticalTopo( Topo ):
+    """
+    A simple optical topology of three LINC nodes(OE*), two OVS switches(ps*), and two hosts:
+
+              OE3
+              /\
+    h1-ps1-OE1--OE2-ps2-h2
+
+    """
+    def build( self ):
+
+        # set up packet layer - OVS + hosts
+        s1 = self.addSwitch( 'ps1' )
+        s2 = self.addSwitch( 'ps2' )
+        h1 = self.addHost( 'h1' )
+        h2 = self.addHost( 'h2' )
+        self.addLink( s1, h1 )
+        self.addLink( s2, h2 )
+
+        # set up ROADMs, add them to oel[]
+        oel = []
+        an = { "durable": "true" }
+        for i in range (1,4):
+            oean = { "optical.regens": 0 }
+            oel.append( self.addSwitch('OE%s' % i, dpid='0000ffffffffff0%s' % i, annotations=oean, cls=LINCSwitch) )
+
+        # ROADM port numbers are built as: OE1 <-> OE2 = 1200
+        # leaving port number up to 100 open for use by Och port
+        self.addLink( oel[0], oel[1], port1=1200, port2=2100, annotations=an, cls=LINCLink )
+        self.addLink( oel[1], oel[2], port1=2300, port2=3200, annotations=an, cls=LINCLink )
+        self.addLink( oel[2], oel[0], port1=3100, port2=1300, annotations=an, cls=LINCLink )
+
+        # cross-connects between OVSes and LINCs
+        self.addLink( s1, oel[0], port1=2, port2=1, annotations=an, cls=LINCLink )
+        self.addLink( s2, oel[1], port1=2, port2=1, annotations=an, cls=LINCLink )
+
+
+def setup( ctls ):
+    net = Mininet( topo=OpticalTopo(), controller=None )
+    i = 1
+    for ctl in ctls:
+        net.addController( RemoteController( 'c%d' % i, ip=ctl ) )
+        i+=1
+
+    net.start()
+    LINCSwitch.bootOE( net )
+    CLI( net )
+    net.stop()
+    LINCSwitch.shutdownOE()
+
+
+if __name__ == "__main__" :
+    import sys
+    if len( sys.argv ) >= 2 :
+        setLogLevel( 'info' )
+        ctls = sys.argv[ 1: ]
+        setup( ctls )
+    else:
+        print('./ectopo.py [IP1] [IP2]...\n')
diff --git a/TestON/tests/FUNC/FUNCoptical/dependencies/startUp.py b/TestON/tests/FUNC/FUNCoptical/dependencies/startUp.py
deleted file mode 100644
index bf2a2b6..0000000
--- a/TestON/tests/FUNC/FUNCoptical/dependencies/startUp.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""
-    This wrapper function is use for starting up onos instance
-"""
-
-import time
-import os
-import json
-
-def onosBuild( main, gitBranch ):
-    """
-        This includes pulling ONOS and building it using maven install
-    """
-
-    buildResult = main.FALSE
-
-    # Git checkout a branch of ONOS
-    checkOutResult = main.ONOSbench.gitCheckout( gitBranch )
-    # Does the git pull on the branch that was checked out
-    if not checkOutResult:
-        main.log.warn( "Failed to checked out " + gitBranch +
-                                           " branch")
-    else:
-        main.log.info( "Successfully checked out " + gitBranch +
-                                           " branch")
-    gitPullResult = main.ONOSbench.gitPull()
-    if gitPullResult == main.ERROR:
-        main.log.error( "Error pulling git branch" )
-    else:
-        main.log.info( "Successfully pulled " + gitBranch + " branch" )
-
-    # Maven clean install
-    buildResult = main.ONOSbench.cleanInstall()
-
-    return buildResult
-
-
-
-