diff --git a/TestON/README.md b/TestON/README.md
index fdb9200..5335503 100644
--- a/TestON/README.md
+++ b/TestON/README.md
@@ -45,7 +45,7 @@
 
        resides into "TestON-master" directory as following:
 
-            paxterra@paxterra-desktop:~/TestON/bin$ ./cli.py
+            sdn@test-station:~/TestON/bin$ ./cli.py
             teston>run MininetTest
 
   2. TAI (Test Authoring Interface) UI based :
@@ -61,7 +61,7 @@
 --------
 For more examples, refer 'examples' directory.
 Please find the below link for examples:
-     https://github.com/Paxterra/TestON/tree/TestOn-1.0.0/examples
+     https://github.com/opennetworkinglab/OnosSystemTest/tree/master/TestON/examples
 
 
 
diff --git a/TestON/bin/cli.py b/TestON/bin/cli.py
index f29a8ec..13423a5 100755
--- a/TestON/bin/cli.py
+++ b/TestON/bin/cli.py
@@ -1,10 +1,11 @@
 #!/usr/bin/env python
 '''
 Created on 20-Dec-2012
+Modified 2016 by ON.Lab
 
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -261,20 +262,24 @@
         '''
         options = self.initOptions(options)
         try :
-            for index, option in enumerate(args):
+            index = 0
+            while index < len( args ):
+                option = args[index]
                 if index > 0 :
-                    if re.match("logdir|mail|example|testdir|testcases|onoscell", option, flags = 0):
-                        index = index+1
-                        options[option] = args[index]
-                        options = self.testcasesInRange(index,option,args,options)
-                    elif re.match("--params", option, flags=0):
+                    if re.match("--params", option, flags=0):
                         # check if there is a params
-                        index = index + 1
-                        options['params'].append(args[index])
+                        options['params'].append(args[index+1])
+                    elif re.match("logdir|mail|example|testdir|testcases|onoscell", option, flags = 0):
+                        options[option] = args[index+1]
+                        options = self.testcasesInRange(index+1,option,args,options)
+                    index += 2
                 else :
                     options['testname'] = option
+                    index += 1
         except IndexError as e:
-            print e
+            print (e)
+            main.cleanup()
+            main.exit()
 
         return options
 
diff --git a/TestON/core/graph.py b/TestON/core/graph.py
index c893adc..e8c8a7a 100644
--- a/TestON/core/graph.py
+++ b/TestON/core/graph.py
@@ -1,4 +1,13 @@
 #!/usr/bin/env python
+"""
+Created 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+"""
+
+
 import time
 import random
 
@@ -126,8 +135,9 @@
                                                                                                                                    attributeValueA,
                                                                                                                                    attributeValueB ) )
             if not result:
-                main.log.debug( "Graph: graphDictA: {}".format( graphDictA ) )
-                main.log.debug( "Graph: graphDictB: {}".format( graphDictB ) )
+                #main.log.debug( "Graph: graphDictA: {}".format( graphDictA ) )
+                #main.log.debug( "Graph: graphDictB: {}".format( graphDictB ) )
+                pass
             return result
         except TypeError:
             main.log.exception( "Graph: TypeError exception found" )
@@ -158,7 +168,7 @@
             for chain in self.chains:
                 for edge in chain:
                     nonCutEdges.append( edge )
-            main.log.debug( 'Non-cut-edges: {}'.format( nonCutEdges ) )
+            #main.log.debug( 'Non-cut-edges: {}'.format( nonCutEdges ) )
             return nonCutEdges
         except Exception:
             main.log.exception( "Graph: Uncaught exception" )
@@ -182,14 +192,14 @@
                 # chain, the chain is a cycle chain
                 if chain[ 0 ][ 0 ] == chain[ -1 ][ 1 ]:
                     cycleChains.append( chain )
-            main.log.debug( 'Cycle chains: {}'.format( cycleChains ) )
+            #main.log.debug( 'Cycle chains: {}'.format( cycleChains ) )
             # Get a set of vertices which are the first vertices of a cycle chain (excluding the first
             # cycle chain), and these vertices are a subset of all cut-vertices
             subsetOfCutVertices = []
             if len( cycleChains ) > 1:
                 for cycleChain in cycleChains[ 1: ]:
                     subsetOfCutVertices.append( cycleChain[ 0 ][ 0 ] )
-            main.log.debug( 'Subset of cut vertices: {}'.format( subsetOfCutVertices ) )
+            #main.log.debug( 'Subset of cut vertices: {}'.format( subsetOfCutVertices ) )
             nonCutVertices = []
             assert nonCutEdges != None
             for vertex in self.graphDict.keys():
@@ -204,7 +214,7 @@
                         break
                 if vertexIsNonCut:
                     nonCutVertices.append( vertex )
-            main.log.debug( 'Non-cut-vertices: {}'.format( nonCutVertices ) )
+            #main.log.debug( 'Non-cut-vertices: {}'.format( nonCutVertices ) )
             return nonCutVertices
         except KeyError:
             main.log.exception( "Graph: KeyError exception found" )
diff --git a/TestON/core/logger.py b/TestON/core/logger.py
index 05693ba..79f7c7f 100644
--- a/TestON/core/logger.py
+++ b/TestON/core/logger.py
@@ -1,8 +1,11 @@
 #/usr/bin/env python
 '''
 Created on 07-Jan-2013
+Modified 2015 by ON.Lab
 
-@author: Raghav Kashyap(raghavkashyap@paxterrasolutions.com)
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/core/openspeak.py b/TestON/core/openspeak.py
index 3794910..b98c68b 100644
--- a/TestON/core/openspeak.py
+++ b/TestON/core/openspeak.py
@@ -1,9 +1,11 @@
 #/usr/bin/env python
 '''
 Created on 20-Dec-2012
+Modified 2015 by ON.Lab
 
-@author: Raghav Kashyap(raghavkashyap@paxterrasolutions.com)
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/core/teston.py b/TestON/core/teston.py
index a770490..e3b50a5 100644
--- a/TestON/core/teston.py
+++ b/TestON/core/teston.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python
 '''
 Created on 22-Oct-2012
+Modified 2016 by ON.Lab
 
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -412,7 +414,7 @@
         argument is given.
 
         Optional Arguments:
-            result: Case insensite string. Can be 'PASS' or 'FAIL' and will set
+            result: Case insensitive string. Can be 'PASS' or 'FAIL' and will set
                     the case result accordingly.
             msg: Message to be printed when the case is skipped in the reports.
         """
@@ -949,7 +951,7 @@
             if not re.search( ".=.", param ):
                 print( "Error when parsing params: params should follow key=value format" )
                 continue
-            # Split the param string to netest keys and value
+            # Split the param string to catch nested keys and the value
             [ keys, value ] = param.split( "=" )
             # Split the nested keys according to its hierarchy
             keyList = keys.split( "/" )
diff --git a/TestON/core/testparser.py b/TestON/core/testparser.py
index aab4388..904ebc0 100644
--- a/TestON/core/testparser.py
+++ b/TestON/core/testparser.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python
 '''
 Created on 26-Dec-2012
+Modified 2015 by ON.Lab
 
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/core/utilities.py b/TestON/core/utilities.py
index ce502cb..43d56dc 100644
--- a/TestON/core/utilities.py
+++ b/TestON/core/utilities.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
 '''
 Created on 23-Oct-2012
+Modified 2015 by ON.Lab
 
-@authors: Anil Kumar (anilkumar.s@paxterrasolutions.com),
-          Raghav Kashyap(raghavkashyap@paxterrasolutions.com)
-
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/core/xmldict.py b/TestON/core/xmldict.py
index 8d1dcf4..0746f3a 100644
--- a/TestON/core/xmldict.py
+++ b/TestON/core/xmldict.py
@@ -1,5 +1,10 @@
 '''
 Created on 03-Dec-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 @author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
 
diff --git a/TestON/core/xmlparser.py b/TestON/core/xmlparser.py
index f12f69c..e639d57 100644
--- a/TestON/core/xmlparser.py
+++ b/TestON/core/xmlparser.py
@@ -1,6 +1,11 @@
 #/usr/bin/env python
 '''
 Created on 07-Jan-2013
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 @author: Raghav Kashyap(raghavkashyap@paxterrasolutions.com)
 
diff --git a/TestON/drivers/common/api/controller/onosrestdriver.py b/TestON/drivers/common/api/controller/onosrestdriver.py
index 64c3e18..033353b 100644
--- a/TestON/drivers/common/api/controller/onosrestdriver.py
+++ b/TestON/drivers/common/api/controller/onosrestdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 07-08-2015
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/drivers/common/api/controllerdriver.py b/TestON/drivers/common/api/controllerdriver.py
index 1c3b3b8..6cda814 100644
--- a/TestON/drivers/common/api/controllerdriver.py
+++ b/TestON/drivers/common/api/controllerdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 29-Nov-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/api/dockerapidriver.py b/TestON/drivers/common/api/dockerapidriver.py
index 4a874c6..10743da 100644
--- a/TestON/drivers/common/api/dockerapidriver.py
+++ b/TestON/drivers/common/api/dockerapidriver.py
@@ -1,4 +1,11 @@
 #!/usr/bin/env python
+"""
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+"""
 
 import json
 import os
@@ -201,7 +208,7 @@
         """
         rmResult = main.TRUE
 
-        if self.dockerClient.images() is []: 
+        if self.dockerClient.images() is []:
             main.log.info( "No docker image found with RepoTags: " + image )
             return rmResult
         else:
diff --git a/TestON/drivers/common/api/fvtapidriver.py b/TestON/drivers/common/api/fvtapidriver.py
index 892eef9..f861f7d 100644
--- a/TestON/drivers/common/api/fvtapidriver.py
+++ b/TestON/drivers/common/api/fvtapidriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/apidriver.py b/TestON/drivers/common/apidriver.py
index af66d98..166211e 100644
--- a/TestON/drivers/common/apidriver.py
+++ b/TestON/drivers/common/apidriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 22-Nov-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/dpclidriver.py b/TestON/drivers/common/cli/dpclidriver.py
index 23214b8..f3ea3e5 100644
--- a/TestON/drivers/common/cli/dpclidriver.py
+++ b/TestON/drivers/common/cli/dpclidriver.py
@@ -1,5 +1,10 @@
 """
 Driver for blank dataplane VMs. Created for SDNIP test.
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 """
 import pexpect
 from drivers.common.clidriver import CLI
diff --git a/TestON/drivers/common/cli/emulator/flowvisordriver.py b/TestON/drivers/common/cli/emulator/flowvisordriver.py
index 6ec2ee6..35c0bbf 100644
--- a/TestON/drivers/common/cli/emulator/flowvisordriver.py
+++ b/TestON/drivers/common/cli/emulator/flowvisordriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Mar-2013
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/emulator/lincoedriver.py b/TestON/drivers/common/cli/emulator/lincoedriver.py
index ae3eef9..5024f17 100644
--- a/TestON/drivers/common/cli/emulator/lincoedriver.py
+++ b/TestON/drivers/common/cli/emulator/lincoedriver.py
@@ -13,6 +13,11 @@
     shreya@onlab.us
 
 OCT 20 2014
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 """
 
 import pexpect
diff --git a/TestON/drivers/common/cli/emulator/lincoemininetdriver.py b/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
index 9372a54..1691ef8 100644
--- a/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/lincoemininetdriver.py
@@ -16,7 +16,14 @@
 
 
 LincOEMininetDriver is an extension of the mininetclidriver to handle linc oe
+
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 """
+
 import pexpect
 import re
 import sys
@@ -25,7 +32,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 +42,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 +66,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/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 1632fee..a587019 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2016 by ON.Lab
 
-author: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 TestON is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/TestON/drivers/common/cli/emulator/poxclidriver.py b/TestON/drivers/common/cli/emulator/poxclidriver.py
index 2d92139..02c43b1 100644
--- a/TestON/drivers/common/cli/emulator/poxclidriver.py
+++ b/TestON/drivers/common/cli/emulator/poxclidriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Raghav Kashyap( raghavkashyap@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/emulator/remotemininetdriver.py b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
index cc75755..bf1c6c6 100644
--- a/TestON/drivers/common/cli/emulator/remotemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2016 by ON.Lab
 
-author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/TestON/drivers/common/cli/emulator/scapyclidriver.py b/TestON/drivers/common/cli/emulator/scapyclidriver.py
index 9321910..f1457ea 100644
--- a/TestON/drivers/common/cli/emulator/scapyclidriver.py
+++ b/TestON/drivers/common/cli/emulator/scapyclidriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 2015-2016
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 TestON is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/TestON/drivers/common/cli/emulatordriver.py b/TestON/drivers/common/cli/emulatordriver.py
index fa0309e..fb7a80d 100644
--- a/TestON/drivers/common/cli/emulatordriver.py
+++ b/TestON/drivers/common/cli/emulatordriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 32a08e9..eea502b 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -14,6 +14,11 @@
 shreya@onlab.us
 
 OCT 13 2014
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 """
 import pexpect
@@ -2809,9 +2814,12 @@
         """
         import json
         try:
-            topology = self.getTopology( self.topology() )
             summary = json.loads( self.summary() )
-
+        except ( TypeError, ValueError ):
+            main.log.exception( "{}: Object not as expected: {!r}".format( self.name, summary ) )
+            return main.ERROR
+        try:
+            topology = self.getTopology( self.topology() )
             if topology == {} or topology == None or summary == {} or summary == None:
                 return main.ERROR
             output = ""
@@ -4926,3 +4934,40 @@
         except Exception:
             main.log.exception( self.name + ": Uncaught exception!" )
             return None
+
+    def getIntentPerfSummary( self ):
+        '''
+        Send command to check intent-perf summary
+        Returns: dictionary for intent-perf summary
+                 if something wrong, function will return None
+        '''
+        cmd = "intent-perf -s"
+        respDic = {}
+        resp = self.sendline( cmd )
+        try:
+            # Generate the dictionary to return
+            for l in resp.split( "\n" ):
+                # Delete any white space in line
+                temp = re.sub( r'\s+', '', l )
+                temp = temp.split( ":" )
+                respDic[ temp[0] ] = temp[ 1 ]
+
+        except (TypeError, ValueError):
+            main.log.exception( self.name + ": Object not as expected" )
+            return None
+        except KeyError:
+            main.log.exception( self.name + ": KeyError exception found" )
+            return None
+        except AssertionError:
+            main.log.exception( self.name + ": AssertionError exception found" )
+            return None
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":    " + self.handle.before )
+            return None
+        except Exception:
+            main.log.exception( self.name + ": Uncaught exception!" )
+            return None
+        return respDic
+
+
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 3c8d484..635178e 100755
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -14,6 +14,11 @@
 andrew@onlab.us
 
 OCT 9 2014
+Modified 2016 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 """
 import time
@@ -2332,3 +2337,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()
diff --git a/TestON/drivers/common/cli/quaggaclidriver.py b/TestON/drivers/common/cli/quaggaclidriver.py
index e89047e..721ae6a 100644
--- a/TestON/drivers/common/cli/quaggaclidriver.py
+++ b/TestON/drivers/common/cli/quaggaclidriver.py
@@ -1,4 +1,11 @@
 #!/usr/bin/env python
+"""
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+"""
 
 import time
 import pexpect
diff --git a/TestON/drivers/common/cli/remotesysdriver.py b/TestON/drivers/common/cli/remotesysdriver.py
index 963b8f4..a56f644 100644
--- a/TestON/drivers/common/cli/remotesysdriver.py
+++ b/TestON/drivers/common/cli/remotesysdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py b/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py
index a000806..4f55a90 100644
--- a/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py
+++ b/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 12-Feb-2013
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py b/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py
index 07fb668..aea470d 100644
--- a/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py
+++ b/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py
@@ -1,3 +1,11 @@
+"""
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+"""
+
 class NEC:
 
     def __init__( self ):
diff --git a/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py b/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py
index 6f2f90c..50100c9 100644
--- a/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py
+++ b/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 12-Feb-2013
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py b/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py
index 892d998..f4a1f1a 100644
--- a/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py
+++ b/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 12-Feb-2013
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/remotetestbeddriver.py b/TestON/drivers/common/cli/remotetestbeddriver.py
index acb9ccc..ebf8fbe 100644
--- a/TestON/drivers/common/cli/remotetestbeddriver.py
+++ b/TestON/drivers/common/cli/remotetestbeddriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Oct-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Anil Kumar ( anilkumar.s@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/tool/dpctlclidriver.py b/TestON/drivers/common/cli/tool/dpctlclidriver.py
index 504567c..683f16e 100644
--- a/TestON/drivers/common/cli/tool/dpctlclidriver.py
+++ b/TestON/drivers/common/cli/tool/dpctlclidriver.py
@@ -1,6 +1,11 @@
 #/usr/bin/env python
 """
 Created on 26-Nov-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Raghav Kashyap( raghavkashyap@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/cli/toolsdriver.py b/TestON/drivers/common/cli/toolsdriver.py
index 775902f..c96cb4f 100644
--- a/TestON/drivers/common/cli/toolsdriver.py
+++ b/TestON/drivers/common/cli/toolsdriver.py
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 26-Nov-2012
+Modified 2015 by ON.Lab
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
 author:: Raghav Kashyap( raghavkashyap@paxterrasolutions.com )
 
diff --git a/TestON/drivers/common/clidriver.py b/TestON/drivers/common/clidriver.py
index a7404fa..283088d 100644
--- a/TestON/drivers/common/clidriver.py
+++ b/TestON/drivers/common/clidriver.py
@@ -1,10 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 24-Oct-2012
+Modified 2016 by ON.Lab
 
-author:s: Anil Kumar ( anilkumar.s@paxterrasolutions.com ),
-          Raghav Kashyap( raghavkashyap@paxterrasolutions.com )
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -18,9 +19,6 @@
 
     You should have received a copy of the GNU General Public License
     along with TestON.  If not, see <http://www.gnu.org/licenses/>.
-
-
-
 """
 import pexpect
 import re
diff --git a/TestON/drivers/component.py b/TestON/drivers/component.py
index b8a66e9..fc17d47 100644
--- a/TestON/drivers/component.py
+++ b/TestON/drivers/component.py
@@ -1,10 +1,11 @@
 #!/usr/bin/env python
 """
 Created on 24-Oct-2012
+Modified 2015 by ON.Lab
 
-author:s: Anil Kumar ( anilkumar.s@paxterrasolutions.com ),
-          Raghav Kashyap( raghavkashyap@paxterrasolutions.com )
-
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
 
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -18,9 +19,6 @@
 
     You should have received a copy of the GNU General Public License
     along with TestON.  If not, see <http://www.gnu.org/licenses/>.
-
-
-
 """
 import logging
 
diff --git a/TestON/install.sh b/TestON/install.sh
index dee85c9..4bbfe92 100755
--- a/TestON/install.sh
+++ b/TestON/install.sh
@@ -63,13 +63,20 @@
 echo "Installing TestON dependencies"
 if [ "$DIST" = "Fedora" ]; then
     # Fedora may have vlan enabled by default. Still need to confirm and update later
-    $install python-pip build-essential python-dev pep8 arping python3-requests
+    $install python-pip build-essential python-dev pep8 python3-requests
     $pipinstall pexpect==3.2 configobj==4.7.2 numpy
 else
-    $install python-pip build-essential python-dev pep8 vlan arping python3-requests
+    $install python-pip build-essential python-dev pep8 vlan python3-requests
     $pipinstall pexpect==3.2 configobj==4.7.2 numpy
 fi
 
+# Some Distos have this already from another package
+if which arping > /dev/null ; then
+    echo "Arping command detected, skipping package installation."
+else
+    $install arping
+fi
+
 # Add check here to make sure OnosSystemTest is cloned into home directory (place holder)
 
 # Add symbolic link to main TestON folder in Home dir
diff --git a/TestON/tests/CHOTestMonkey/CHOTestMonkey.params b/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
index c3a7346..6c9ef4b 100644
--- a/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
+++ b/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
@@ -15,18 +15,20 @@
     # 50. Set FlowObjective to True
     # 51. Set FlowObjective to False
     # 60. Rebalance devices across controllers
+    # 70. Run randomly generated events
+    # 80. Replay events from log file
     # 90. Sleep for some time
-    # 100. Do something else
+    # 100. Do nothing
     # Sample sequence: 0,1,2,3,[10,30,21,31,10,32,21,33,50,10,30,21,31,10,32,21,33,51,40,60,10,30,21,31,10,32,21,33,50,10,30,21,31,10,32,21,33,51,41,60]*500,100
     <testcases>
-        0,1,2,3,10,[30,21,31,32,21,33,50,30,21,31,32,21,33,51]*500,100
+        0,1,2,3,70
     </testcases>
 
     <TEST>
         <topo>1</topo>
         <IPv6>on</IPv6>
         <numCtrl>3</numCtrl>
-        <pauseTest>on</pauseTest>
+        <pauseTest>off</pauseTest>
         <caseSleep>0</caseSleep>
         <setIPv6CfgSleep>5</setIPv6CfgSleep>
         <loadTopoSleep>5</loadTopoSleep>
@@ -382,6 +384,20 @@
         <linkDownUpInterval>1</linkDownUpInterval>
     </CASE21>
 
+    <CASE70>
+        <sleepSec>2</sleepSec>
+        <addHostIntentWeight>3</addHostIntentWeight>
+        <addPointIntentWeight>3</addPointIntentWeight>
+        <linkDownWeight>3</linkDownWeight>
+        <deviceDownWeight>2</deviceDownWeight>
+    </CASE70>
+
+    <CASE80>
+        <filePath>/home/admin/log-for-replay</filePath>
+        <sleepTime>0.1</sleepTime>
+        <skipChecks>on</skipChecks>
+    </CASE80>
+
     <CASE90>
         <sleepSec>60</sleepSec>
     </CASE90>
diff --git a/TestON/tests/CHOTestMonkey/CHOTestMonkey.py b/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
index 7b07758..8937a4a 100644
--- a/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
+++ b/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
@@ -762,6 +762,138 @@
                                  onfail="Balance masters test failed" )
         time.sleep( main.caseSleep )
 
+    def CASE70( self, main ):
+        """
+        Randomly generate events
+        """
+        import time
+        import random
+        from tests.CHOTestMonkey.dependencies.events.Event import EventType
+        from tests.CHOTestMonkey.dependencies.EventScheduler import EventScheduleMethod
+
+        main.log.report( "Randomly generate events" )
+        main.log.report( "__________________________________________________" )
+        main.case( "Randomly generate events" )
+        main.step( "Randomly generate events" )
+        main.caseResult = main.TRUE
+        sleepSec = int( main.params[ 'CASE70' ][ 'sleepSec' ] )
+        hostIntentNum = 0
+        pointIntentNum = 0
+        downDeviceNum = 0
+        downLinkNum = 0
+        upControllers = [ 1, 2, 3 ]
+        while True:
+            events = []
+            for i in range( int( main.params[ 'CASE70' ][ 'addHostIntentWeight' ] ) ):
+                events.append( 'add-host-intent' )
+            for i in range( int( main.params[ 'CASE70' ][ 'addPointIntentWeight' ] ) ):
+                events.append( 'add-point-intent' )
+            for i in range( int( main.params[ 'CASE70' ][ 'linkDownWeight' ] ) ):
+                events.append( 'link-down' )
+            for i in range( int( main.params[ 'CASE70' ][ 'deviceDownWeight' ] ) ):
+                events.append( 'device-down' )
+            for i in range( int( pow( hostIntentNum, 1.5 ) / 100 ) ):
+                events.append( 'del-host-intent' )
+            for i in range( int( pow( pointIntentNum, 1.5 ) / 100 ) ):
+                events.append( 'del-point-intent' )
+            for i in range( pow( 2, downLinkNum ) - 1 ):
+                events.append( 'link-up' )
+            for i in range( pow( 5, downDeviceNum ) - 1 ):
+                events.append( 'device-up' )
+            main.log.debug( events )
+            event = random.sample( events, 1 )[ 0 ]
+            if event == 'add-host-intent':
+                n = random.randint( 5, 50 )
+                for i in range( n ):
+                    cliIndex = random.sample( upControllers, 1 )[ 0 ]
+                    main.eventGenerator.triggerEvent( EventType().APP_INTENT_HOST_ADD, EventScheduleMethod().RUN_BLOCK, 'random', 'random', cliIndex )
+                    hostIntentNum += 1
+            elif event == 'del-host-intent':
+                n = random.randint( 5, hostIntentNum )
+                for i in range( n ):
+                    cliIndex = random.sample( upControllers, 1 )[ 0 ]
+                    main.eventGenerator.triggerEvent( EventType().APP_INTENT_HOST_DEL, EventScheduleMethod().RUN_BLOCK, 'random', 'random', cliIndex )
+                    hostIntentNum -= 1
+            elif event == 'add-point-intent':
+                n = random.randint( 5, 50 )
+                for i in range( n ):
+                    cliIndex = random.sample( upControllers, 1 )[ 0 ]
+                    main.eventGenerator.triggerEvent( EventType().APP_INTENT_POINT_ADD, EventScheduleMethod().RUN_BLOCK, 'random', 'random', cliIndex, 'bidirectional' )
+                    pointIntentNum += 2
+            elif event == 'del-point-intent':
+                n = random.randint( 5, pointIntentNum / 2 )
+                for i in range( n ):
+                    cliIndex = random.sample( upControllers, 1 )[ 0 ]
+                    main.eventGenerator.triggerEvent( EventType().APP_INTENT_POINT_DEL, EventScheduleMethod().RUN_BLOCK, 'random', 'random', cliIndex, 'bidirectional' )
+                    pointIntentNum -= 2
+            elif event == 'link-down':
+                main.eventGenerator.triggerEvent( EventType().NETWORK_LINK_DOWN, EventScheduleMethod().RUN_BLOCK, 'random', 'random' )
+                downLinkNum += 1
+            elif event == 'link-up':
+                main.eventGenerator.triggerEvent( EventType().NETWORK_LINK_UP, EventScheduleMethod().RUN_BLOCK, 'random', 'random' )
+                downLinkNum -= 1
+            elif event == 'device-down':
+                main.eventGenerator.triggerEvent( EventType().NETWORK_DEVICE_DOWN, EventScheduleMethod().RUN_BLOCK, 'random' )
+                downDeviceNum += 1
+            elif event == 'device-up':
+                main.eventGenerator.triggerEvent( EventType().NETWORK_DEVICE_UP, EventScheduleMethod().RUN_BLOCK, 'random' )
+                downDeviceNum -= 1
+            else:
+                pass
+            main.eventGenerator.triggerEvent( EventType().CHECK_TOPO, EventScheduleMethod().RUN_NON_BLOCK )
+            main.eventGenerator.triggerEvent( EventType().CHECK_ONOS, EventScheduleMethod().RUN_NON_BLOCK )
+            main.eventGenerator.triggerEvent( EventType().CHECK_TRAFFIC, EventScheduleMethod().RUN_NON_BLOCK )
+            main.eventGenerator.triggerEvent( EventType().CHECK_FLOW, EventScheduleMethod().RUN_NON_BLOCK )
+            main.eventGenerator.triggerEvent( EventType().CHECK_INTENT, EventScheduleMethod().RUN_NON_BLOCK )
+            with main.eventScheduler.idleCondition:
+                while not main.eventScheduler.isIdle():
+                    main.eventScheduler.idleCondition.wait()
+            #time.sleep( sleepSec )
+        utilities.assert_equals( expect=main.TRUE,
+                                 actual=main.caseResult,
+                                 onpass="Randomly generate events test passed",
+                                 onfail="Randomly generate events test failed" )
+        time.sleep( main.caseSleep )
+
+    def CASE80( self, main ):
+        """
+        Replay events from log file
+        """
+        import time
+        from tests.CHOTestMonkey.dependencies.events.Event import EventType
+        from tests.CHOTestMonkey.dependencies.EventScheduler import EventScheduleMethod
+
+        main.log.report( "Replay events from log file" )
+        main.log.report( "__________________________________________________" )
+        main.case( "Replay events from log file" )
+        main.step( "Replay events from log file" )
+        main.caseResult = main.TRUE
+        try:
+            f = open( main.params[ 'CASE80' ][ 'filePath' ], 'r' )
+            for line in f.readlines():
+                if 'CHOTestMonkey' in line and 'Event recorded' in line:
+                    line = line.split()
+                    eventIndex = int( line[ 9 ] )
+                    eventName = line[ 10 ]
+                    args = line[ 11: ]
+                    assert eventName.startswith( 'CHECK' )\
+                    or eventName.startswith( 'NETWORK' )\
+                    or eventName.startswith( 'APP' )\
+                    or eventName.startswith( 'ONOS' )
+                    if main.params[ 'CASE80' ][ 'skipChecks' ] == 'on' and eventName.startswith( 'CHECK' ):
+                        continue
+                    with main.eventScheduler.idleCondition:
+                        while not main.eventScheduler.isIdle():
+                            main.eventScheduler.idleCondition.wait()
+                    main.eventGenerator.triggerEvent( eventIndex, EventScheduleMethod().RUN_BLOCK, *args )
+                    time.sleep( float( main.params[ 'CASE80' ][ 'sleepTime' ] ) )
+        except Exception as e:
+            print e
+        utilities.assert_equals( expect=main.TRUE,
+                                 actual=main.caseResult,
+                                 onpass="Replay from log file passed",
+                                 onfail="Replay from log file failed" )
+
     def CASE90( self, main ):
         """
         Sleep for some time
diff --git a/TestON/tests/CHOTestMonkey/dependencies/EventScheduler.py b/TestON/tests/CHOTestMonkey/dependencies/EventScheduler.py
index 99ead73..ae32932 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/EventScheduler.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/EventScheduler.py
@@ -78,7 +78,7 @@
             else:
                 main.log.warn( "Event Scheduler - invalid index when isnerting event: %s" % ( index ) )
             self.pendingEventsCondition.notify()
-        self.printEvents()
+        #self.printEvents()
 
     def startScheduler( self ):
         """
@@ -127,7 +127,7 @@
 
         with self.runningEventsCondition:
             self.runningEvents.append( eventTuple )
-        self.printEvents()
+        #self.printEvents()
         rerunNum = 0
         result = eventTuple.startEvent()
         while result == EventStates().FAIL and rerunNum < eventTuple.maxRerunNum:
@@ -150,7 +150,7 @@
                     if len( self.pendingEvents ) == 0:
                         with self.idleCondition:
                             self.idleCondition.notify()
-        self.printEvents()
+        #self.printEvents()
 
     def printEvents( self ):
         """
@@ -172,18 +172,18 @@
             if len( self.pendingEvents ) > 0:
                 events += str( self.pendingEvents[ -1 ].typeIndex )
         events += "]"
-        #main.log.debug( "Event Scheduler - Events: " + events )
+        main.log.debug( "Event Scheduler - Events: " + events )
 
     def isAvailable( self ):
-        with self.pendingEventsCondition:
-            with self.runningEventsCondition:
+        with self.runningEventsCondition:
+            with self.pendingEventsCondition:
                 return len( self.pendingEvents ) < self.pendingEventsCapacity and\
                        len( self.runningEvents ) < self.runningEventsCapacity and\
                        self.isRunning
 
     def isIdle( self ):
-        with self.pendingEventsCondition:
-            with self.runningEventsCondition:
+        with self.runningEventsCondition:
+            with self.pendingEventsCondition:
                 return len( self.pendingEvents ) == 0 and\
                        len( self.runningEvents ) == 0 and\
                        self.isRunning
diff --git a/TestON/tests/CHOTestMonkey/dependencies/EventTrigger.py b/TestON/tests/CHOTestMonkey/dependencies/EventTrigger.py
index 0c3e0e0..27b8166 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/EventTrigger.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/EventTrigger.py
@@ -15,7 +15,7 @@
     address = ( host, port )
     conn = Client( address )
     request = []
-    request.append( 2 )
+    request.append( 1 )
     request.append( type )
     request.append( scheduleMethod )
     for arg in args:
@@ -23,7 +23,9 @@
     conn.send( request )
     response = conn.recv()
     while response == 11:
+        conn.close()
         time.sleep( 1 )
+        conn = Client( address )
         conn.send( request )
         response = conn.recv()
     if response == 10:
@@ -64,5 +66,19 @@
         else:
             pass
 
+def replayFromFile( filePath='/home/admin/event-list', sleepTime=1 ):
+    try:
+        f = open( filePath, 'r' )
+        for line in f.readlines():
+            event = line.split()
+            if event[ 3 ].startswith( 'CHECK' ):
+                continue
+            triggerEvent( event[ 3 ], 'RUN_BLOCK', *event[ 4: ] )
+            time.sleep( sleepTime )
+        f.close()
+    except Exception as e:
+        print e
+
 if __name__ == '__main__':
-    testLoop( 2 )
+    #testLoop( 2 )
+    replayFromFile()
diff --git a/TestON/tests/CHOTestMonkey/dependencies/cli.py b/TestON/tests/CHOTestMonkey/dependencies/cli.py
index d1a8448..a3fb18e 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/cli.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/cli.py
@@ -64,26 +64,28 @@
             if cmdList[ 0 ] in commandMap.keys():
                 num = paramNum[ cmdList[ 0 ] ]
                 name = commandMap[ cmdList[ 0 ] ]
+                '''
                 if len( cmdList ) < num + 1:
                     print 'not enough arguments'
                 elif len( cmdList ) > num + 1:
                     print 'Too many arguments'
                 else:
-                    result = triggerEvent( debugMode, name, 'RUN_BLOCK', cmdList[ 1: ] )
-                    if result == 10:
-                        pass
-                    elif result == 11:
-                        print "Scheduler busy...Try later or use debugging mode by entering \'debug\'"
-                    elif result == 20:
-                        print "Unknown message to server"
-                    elif result == 21:
-                        print "Unknown event type to server"
-                    elif result == 22:
-                        print "Unknown schedule method to server"
-                    elif result == 23:
-                        print "Not enough argument"
-                    else:
-                        print "Unknown response from server"
+                '''
+                result = triggerEvent( debugMode, name, 'RUN_BLOCK', cmdList[ 1: ] )
+                if result == 10:
+                    pass
+                elif result == 11:
+                    print "Scheduler busy...Try later or use debugging mode by entering \'debug\'"
+                elif result == 20:
+                    print "Unknown message to server"
+                elif result == 21:
+                    print "Unknown event type to server"
+                elif result == 22:
+                    print "Unknown schedule method to server"
+                elif result == 23:
+                    print "Not enough argument"
+                else:
+                    print "Unknown response from server"
             else:
                 print 'Unknown command'
 
diff --git a/TestON/tests/CHOTestMonkey/dependencies/elements/NetworkElement.py b/TestON/tests/CHOTestMonkey/dependencies/elements/NetworkElement.py
index b3618dd..31a4084 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/elements/NetworkElement.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/elements/NetworkElement.py
@@ -37,7 +37,7 @@
         self.outgoingLinks = []
 
     def __str__( self ):
-        return "name: " + self.name + ", dpid: " + self.dpid
+        return "name: " + self.name + ", dpid: " + self.dpid + ", status: " + self.status
 
 class Host( NetworkElement ):
     def __init__( self, index, name, id, mac, device, devicePort, vlan, ipAddresses ):
@@ -53,7 +53,7 @@
         self.handle = None
 
     def __str__( self ):
-        return "name: " + self.name + ", mac: " + self.mac + ", device: " + self.device.dpid + ", ipAddresses: " + str( self.ipAddresses )
+        return "name: " + self.name + ", mac: " + self.mac + ", device: " + self.device.dpid + ", ipAddresses: " + str( self.ipAddresses ) + ", status: " + self.status
 
     def setHandle( self, handle ):
         self.handle = handle
@@ -71,7 +71,7 @@
         self.portB = portB
 
     def __str__( self ):
-        return self.deviceA.dpid + "/" + self.portA + " - " + self.deviceB.dpid + "/" + self.portB
+        return self.deviceA.dpid + "/" + self.portA + " - " + self.deviceB.dpid + "/" + self.portB + ", status: " + self.status
 
     def setBackwardLink( self, link ):
         self.backwardLink = link
diff --git a/TestON/tests/CHOTestMonkey/dependencies/elements/ONOSElement.py b/TestON/tests/CHOTestMonkey/dependencies/elements/ONOSElement.py
index 6831811..e9dff29 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/elements/ONOSElement.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/elements/ONOSElement.py
@@ -33,7 +33,7 @@
         self.default = ''
         self.type = 'INTENT'
         self.id = id
-        self.expectedState = 'INSTALLED'
+        self.expectedState = 'UNKNOWN'
 
     def isHostIntent( self ):
         return self.type == 'INTENT_HOST'
@@ -47,12 +47,6 @@
     def isInstalled( self ):
         return self.expectedState == 'INSTALLED'
 
-    def setFailed( self ):
-        self.expectedState = 'FAILED'
-
-    def setInstalled( self ):
-        self.expectedState = 'INSTALLED'
-
 class HostIntent( Intent ):
     def __init__( self, id, hostA, hostB ):
         Intent.__init__( self, id )
@@ -62,6 +56,22 @@
         self.deviceA = hostA.device
         self.deviceB = hostB.device
 
+    def setWithdrawn( self ):
+        self.expectedState = 'WITHDRAWN'
+        if self.hostB in self.hostA.correspondents:
+            self.hostA.correspondents.remove( self.hostB )
+        if self.hostA in self.hostB.correspondents:
+            self.hostB.correspondents.remove( self.hostA )
+
+    def setFailed( self ):
+        self.expectedState = 'FAILED'
+
+    def setInstalled( self ):
+        if self.expectedState == 'UNKNOWN':
+            self.hostA.correspondents.append( self.hostB )
+            self.hostB.correspondents.append( self.hostA )
+        self.expectedState = 'INSTALLED'
+
     def __str__( self ):
         return "ID: " + self.id
 
@@ -72,5 +82,22 @@
         self.deviceA = deviceA
         self.deviceB = deviceB
 
+    def setWithdrawn( self ):
+        self.expectedState = 'WITHDRAWN'
+        for hostA in self.deviceA.hosts:
+            for hostB in self.deviceB.hosts:
+                if hostB in hostA.correspondents:
+                    hostA.correspondents.remove( hostB )
+
+    def setFailed( self ):
+        self.expectedState = 'FAILED'
+
+    def setInstalled( self ):
+        if self.expectedState == 'UNKNOWN':
+            for hostA in self.deviceA.hosts:
+                for hostB in self.deviceB.hosts:
+                    hostA.correspondents.append( hostB )
+        self.expectedState = 'INSTALLED'
+
     def __str__( self ):
         return "ID: " + self.id
diff --git a/TestON/tests/CHOTestMonkey/dependencies/events/AppEvent.py b/TestON/tests/CHOTestMonkey/dependencies/events/AppEvent.py
index de5fd48..4283ff6 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/events/AppEvent.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/events/AppEvent.py
@@ -11,6 +11,47 @@
         # The index of the ONOS CLI that is going to run the command
         self.CLIIndex = 0
 
+    def getRandomCorrespondent( self, hostA, connected=True ):
+        import random
+        if connected:
+            candidates = hostA.correspondents
+        else:
+            candidates = [ host for host in main.hosts if host not in hostA.correspondents and host != hostA ]
+        if len( candidates ) == 0:
+            return None
+        hostB = random.sample( candidates, 1 )[0]
+        return hostB
+
+    def getRandomHostPair( self, connected=True ):
+        import random
+        candidateDict = {}
+        with main.variableLock:
+            for host in main.hosts:
+                correspondent = self.getRandomCorrespondent( host, connected=connected )
+                if correspondent != None:
+                    candidateDict[ host ] = correspondent
+            if candidateDict == {}:
+                return None
+            hostA = random.sample( candidateDict.keys(), 1 )[0]
+            hostB = candidateDict[ hostA ]
+            return [ hostA, hostB ]
+
+    def getIntentsByType( self, intentType ):
+        intents = []
+        with main.variableLock:
+            for intent in main.intents:
+                if intent.type == intentType:
+                    intents.append( intent )
+        return intents
+
+    def getRandomIntentByType( self, intentType ):
+        import random
+        intents = self.getIntentsByType( intentType )
+        if len( intents ) == 0:
+            return None
+        intent = random.sample( intents, 1 )[ 0 ]
+        return intent
+
 class HostIntentEvent( IntentEvent ):
     def __init__( self ):
         IntentEvent.__init__( self )
@@ -22,7 +63,7 @@
 
     def startEvent( self, args ):
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             if self.typeIndex == EventType().APP_INTENT_HOST_ADD or self.typeIndex == EventType().APP_INTENT_HOST_DEL:
                 if len( args ) < 3:
                     main.log.warn( "%s - Not enough arguments: %s" % ( self.typeString, args ) )
@@ -30,23 +71,39 @@
                 elif len( args ) > 3:
                     main.log.warn( "%s - Too many arguments: %s" % ( self.typeString, args ) )
                     return EventStates().ABORT
-                else:
-                    if args[ 0 ] == args[ 1 ]:
-                        main.log.warn( "%s - invalid argument: %s" % ( self.typeString, index ) )
+                try:
+                    if args[ 0 ] == 'random' or args[ 1 ] == 'random':
+                        if self.typeIndex == EventType().APP_INTENT_HOST_ADD:
+                            hostPairRandom = self.getRandomHostPair( connected=False )
+                            if hostPairRandom == None:
+                                main.log.warn( "All host pairs are connected, aborting event" )
+                                return EventStates().ABORT
+                            self.hostA = hostPairRandom[ 0 ]
+                            self.hostB = hostPairRandom[ 1 ]
+                        elif self.typeIndex == EventType().APP_INTENT_HOST_DEL:
+                            intent = self.getRandomIntentByType( 'INTENT_HOST' )
+                            if intent == None:
+                                main.log.warn( "No host intent for deletion, aborting event" )
+                                return EventStates().ABORT
+                            self.hostA = intent.hostA
+                            self.hostB = intent.hostB
+                    elif args[ 0 ] == args[ 1 ]:
+                        main.log.warn( "%s - invalid argument: %s, %s" % ( self.typeString, args[ 0 ], args[ 1 ] ) )
                         return EventStates().ABORT
-                    for host in main.hosts:
-                        if host.name == args[ 0 ]:
-                            self.hostA = host
-                        elif host.name == args[ 1 ]:
-                            self.hostB = host
-                        if self.hostA != None and self.hostB != None:
-                            break
-                    if self.hostA == None:
-                        main.log.warn( "Host %s does not exist: " % ( args[ 0 ] ) )
-                        return EventStates().ABORT
-                    if self.hostB == None:
-                        main.log.warn( "Host %s does not exist: " % ( args[ 1 ] ) )
-                        return EventStates().ABORT
+                    else:
+                        for host in main.hosts:
+                            if host.name == args[ 0 ]:
+                                self.hostA = host
+                            elif host.name == args[ 1 ]:
+                                self.hostB = host
+                            if self.hostA != None and self.hostB != None:
+                                break
+                        if self.hostA == None:
+                            main.log.warn( "Host %s does not exist: " % ( args[ 0 ] ) )
+                            return EventStates().ABORT
+                        if self.hostB == None:
+                            main.log.warn( "Host %s does not exist: " % ( args[ 1 ] ) )
+                            return EventStates().ABORT
                     index = int( args[ 2 ] )
                     if index < 1 or index > int( main.numCtrls ):
                         main.log.warn( "%s - invalid argument: %s" % ( self.typeString, index ) )
@@ -56,6 +113,9 @@
                         return EventStates().ABORT
                     self.CLIIndex = index
                     return self.startHostIntentEvent()
+                except Exception:
+                    main.log.warn( "Caught exception, aborting event" )
+                    return EventStates().ABORT
 
 class AddHostIntent( HostIntentEvent ):
     """
@@ -67,30 +127,35 @@
         self.typeIndex= int( main.params[ 'EVENT' ][ self.__class__.__name__ ][ 'typeIndex' ] )
 
     def startHostIntentEvent( self ):
-        assert self.hostA != None and self.hostB != None
-        # Check whether there already exists some intent for the host pair
-        # For now we should avoid installing overlapping intents
-        for intent in main.intents:
-            if not intent.type == 'INTENT_HOST':
-                continue
-            if intent.hostA == self.hostA and intent.hostB == self.hostB or\
-            intent.hostB == self.hostA and intent.hostA == self.hostB:
-                main.log.warn( self.typeString + " - find an exiting intent for the host pair, abort installation" )
-                return EventStates().ABORT
-        controller = main.controllers[ self.CLIIndex - 1 ]
-        with controller.CLILock:
-            id = controller.CLI.addHostIntent( self.hostA.id, self.hostB.id )
-        if id == None:
-            main.log.warn( self.typeString + " - add host intent failed" )
-            return EventStates().FAIL
-        with main.variableLock:
-            newHostIntent = HostIntent( id, self.hostA, self.hostB )
-            main.intents.append( newHostIntent )
-            # Update host connectivity status
-            # TODO: should we check whether hostA and hostB are already correspondents?
-            self.hostB.correspondents.append( self.hostA )
-            self.hostA.correspondents.append( self.hostB )
-        return EventStates().PASS
+        try:
+            assert self.hostA != None and self.hostB != None
+            # Check whether there already exists some intent for the host pair
+            # For now we should avoid installing overlapping intents
+            for intent in main.intents:
+                if not intent.type == 'INTENT_HOST':
+                    continue
+                if intent.hostA == self.hostA and intent.hostB == self.hostB or\
+                intent.hostB == self.hostA and intent.hostA == self.hostB:
+                    main.log.warn( self.typeString + " - find an exiting intent for the host pair, abort installation" )
+                    return EventStates().ABORT
+            main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.hostA.name, self.hostB.name, self.CLIIndex ) )
+            controller = main.controllers[ self.CLIIndex - 1 ]
+            with controller.CLILock:
+                id = controller.CLI.addHostIntent( self.hostA.id, self.hostB.id )
+            if id == None:
+                main.log.warn( self.typeString + " - add host intent failed" )
+                return EventStates().FAIL
+            with main.variableLock:
+                newHostIntent = HostIntent( id, self.hostA, self.hostB )
+                if self.hostA.isDown() or self.hostA.isRemoved() or self.hostB.isDown() or self.hostB.isRemoved():
+                    newHostIntent.setFailed()
+                else:
+                    newHostIntent.setInstalled()
+                main.intents.append( newHostIntent )
+            return EventStates().PASS
+        except Exception:
+            main.log.warn( "Caught exception, aborting event" )
+            return EventStates().ABORT
 
 class DelHostIntent( HostIntentEvent ):
     """
@@ -102,30 +167,33 @@
         self.typeIndex= int( main.params[ 'EVENT' ][ self.__class__.__name__ ][ 'typeIndex' ] )
 
     def startHostIntentEvent( self ):
-        assert self.hostA != None and self.hostB != None
-        targetIntent = None
-        for intent in main.intents:
-            if not intent.type == 'INTENT_HOST':
-                continue
-            if intent.hostA == self.hostA and intent.hostB == self.hostB or\
-            intent.hostB == self.hostA and intent.hostA == self.hostB:
-                targetIntent = intent
-                break
-        if targetIntent == None:
-            main.log.warn( self.typeString + " - intent does not exist" )
-            return EventStates().FAIL
-        controller = main.controllers[ self.CLIIndex - 1 ]
-        with controller.CLILock:
-            result = controller.CLI.removeIntent( targetIntent.id, purge=True )
-        if result == None or result == main.FALSE:
-            main.log.warn( self.typeString + " - delete host intent failed" )
-            return EventStates().FAIL
-        with main.variableLock:
-            main.intents.remove( targetIntent )
-            # Update host connectivity status
-            self.hostB.correspondents.remove( self.hostA )
-            self.hostA.correspondents.remove( self.hostB )
-        return EventStates().PASS
+        try:
+            assert self.hostA != None and self.hostB != None
+            targetIntent = None
+            for intent in main.intents:
+                if not intent.type == 'INTENT_HOST':
+                    continue
+                if intent.hostA == self.hostA and intent.hostB == self.hostB or\
+                intent.hostB == self.hostA and intent.hostA == self.hostB:
+                    targetIntent = intent
+                    break
+            if targetIntent == None:
+                main.log.warn( self.typeString + " - intent does not exist" )
+                return EventStates().FAIL
+            main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.hostA.name, self.hostB.name, self.CLIIndex ) )
+            controller = main.controllers[ self.CLIIndex - 1 ]
+            with controller.CLILock:
+                result = controller.CLI.removeIntent( targetIntent.id, purge=True )
+            if result == None or result == main.FALSE:
+                main.log.warn( self.typeString + " - delete host intent failed" )
+                return EventStates().FAIL
+            with main.variableLock:
+                targetIntent.setWithdrawn()
+                main.intents.remove( targetIntent )
+            return EventStates().PASS
+        except Exception:
+            main.log.warn( "Caught exception, aborting event" )
+            return EventStates().ABORT
 
 class PointIntentEvent( IntentEvent ):
     def __init__( self ):
@@ -138,28 +206,47 @@
 
     def startEvent( self, args ):
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             if self.typeIndex == EventType().APP_INTENT_POINT_ADD or self.typeIndex == EventType().APP_INTENT_POINT_DEL:
                 if len( args ) < 3:
                     main.log.warn( "%s - Not enough arguments: %s" % ( self.typeString, args ) )
                     return EventStates().ABORT
-                elif len( args ) > 3:
+                elif len( args ) > 4:
                     main.log.warn( "%s - Too many arguments: %s" % ( self.typeString, args ) )
                     return EventStates().ABORT
-                else:
-                    for device in main.devices:
-                        if device.name == args[ 0 ]:
-                            self.deviceA = device
-                        elif device.name == args[ 1 ]:
-                            self.deviceB = device
-                        if self.deviceA != None and self.deviceB != None:
-                            break
-                    if self.deviceA == None:
-                        main.log.warn( "Device %s does not exist: " % ( args[ 0 ] ) )
+                try:
+                    if args[ 0 ] == 'random' or args[ 1 ] == 'random':
+                        if self.typeIndex == EventType().APP_INTENT_POINT_ADD:
+                            hostPairRandom = self.getRandomHostPair( connected=False )
+                            if hostPairRandom == None:
+                                main.log.warn( "All host pairs are connected, aborting event" )
+                                return EventStates().ABORT
+                            self.deviceA = hostPairRandom[ 0 ].device
+                            self.deviceB = hostPairRandom[ 1 ].device
+                        elif self.typeIndex == EventType().APP_INTENT_POINT_DEL:
+                            intent = self.getRandomIntentByType( 'INTENT_POINT' )
+                            if intent == None:
+                                main.log.warn( "No point intent for deletion, aborting event" )
+                                return EventStates().ABORT
+                            self.deviceA = intent.deviceA
+                            self.deviceB = intent.deviceB
+                    elif args[ 0 ] == args[ 1 ]:
+                        main.log.warn( "%s - invalid argument: %s" % ( self.typeString, args[ 0 ], args[ 1 ] ) )
                         return EventStates().ABORT
-                    if self.deviceB == None:
-                        main.log.warn( "Device %s does not exist: " % ( args[ 1 ] ) )
-                        return EventStates().ABORT
+                    else:
+                        for device in main.devices:
+                            if device.name == args[ 0 ]:
+                                self.deviceA = device
+                            elif device.name == args[ 1 ]:
+                                self.deviceB = device
+                            if self.deviceA != None and self.deviceB != None:
+                                break
+                        if self.deviceA == None:
+                            main.log.warn( "Device %s does not exist: " % ( args[ 0 ] ) )
+                            return EventStates().ABORT
+                        if self.deviceB == None:
+                            main.log.warn( "Device %s does not exist: " % ( args[ 1 ] ) )
+                            return EventStates().ABORT
                     index = int( args[ 2 ] )
                     if index < 1 or index > int( main.numCtrls ):
                         main.log.warn( "%s - invalid argument: %s" % ( self.typeString, index ) )
@@ -168,7 +255,20 @@
                         main.log.warn( self.typeString + " - invalid argument: onos %s is down" % ( controller.index ) )
                         return EventStates().ABORT
                     self.CLIIndex = index
-                    return self.startPointIntentEvent()
+                    if len( args ) == 4 and args[ 3 ] == 'bidirectional':
+                        # Install point intents for both directions
+                        resultA = self.startPointIntentEvent()
+                        [ self.deviceA, self.deviceB ] = [ self.deviceB, self.deviceA ]
+                        resultB = self.startPointIntentEvent()
+                        if resultA == EventStates().PASS and resultB == EventStates().PASS:
+                            return EventStates().PASS
+                        else:
+                            return EventStates().FAIL
+                    else:
+                        return self.startPointIntentEvent()
+                except Exception:
+                    main.log.warn( "Caught exception, aborting event" )
+                    return EventStates().ABORT
 
 class AddPointIntent( PointIntentEvent ):
     """
@@ -180,39 +280,42 @@
         self.typeIndex= int( main.params[ 'EVENT' ][ self.__class__.__name__ ][ 'typeIndex' ] )
 
     def startPointIntentEvent( self ):
-        assert self.deviceA != None and self.deviceB != None
-        controller = main.controllers[ self.CLIIndex - 1 ]
-        # TODO: the following check only work when we use default port number for point intents
-        # Check whether there already exists some intent for the device pair
-        # For now we should avoid installing overlapping intents
-        for intent in main.intents:
-            if not intent.type == 'INTENT_POINT':
-                continue
-            if intent.deviceA == self.deviceA and intent.deviceB == self.deviceB:
-                main.log.warn( self.typeString + " - find an exiting intent for the device pair, abort installation" )
-                return EventStates().ABORT
-        controller = main.controllers[ self.CLIIndex - 1 ]
-        with controller.CLILock:
-            # TODO: handle the case that multiple hosts attach to one device
-            srcMAC = ""
-            dstMAC = ""
-            if len( self.deviceA.hosts ) > 0:
-                srcMAC = self.deviceA.hosts[ 0 ].mac
-            if len( self.deviceB.hosts ) > 0:
-                dstMAC = self.deviceB.hosts[ 0 ].mac
-            id = controller.CLI.addPointIntent( self.deviceA.dpid, self.deviceB.dpid,
-                                                1, 1, '', srcMAC, dstMAC )
-        if id == None:
-            main.log.warn( self.typeString + " - add point intent failed" )
-            return EventStates().FAIL
-        with main.variableLock:
-            newPointIntent = PointIntent( id, self.deviceA, self.deviceB )
-            main.intents.append( newPointIntent )
-            # Update host connectivity status
-            for hostA in self.deviceA.hosts:
-                for hostB in self.deviceB.hosts:
-                    hostA.correspondents.append( hostB )
-        return EventStates().PASS
+        try:
+            assert self.deviceA != None and self.deviceB != None
+            controller = main.controllers[ self.CLIIndex - 1 ]
+            # TODO: support multiple hosts under one device
+            # Check whether there already exists some intent for the device pair
+            # For now we should avoid installing overlapping intents
+            for intent in main.intents:
+                if not intent.type == 'INTENT_POINT':
+                    continue
+                if intent.deviceA == self.deviceA and intent.deviceB == self.deviceB:
+                    main.log.warn( self.typeString + " - find an exiting intent for the device pair, abort installation" )
+                    return EventStates().ABORT
+            main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.deviceA.name, self.deviceB.name, self.CLIIndex ) )
+            controller = main.controllers[ self.CLIIndex - 1 ]
+            with controller.CLILock:
+                srcMAC = ""
+                dstMAC = ""
+                if len( self.deviceA.hosts ) > 0:
+                    srcMAC = self.deviceA.hosts[ 0 ].mac
+                if len( self.deviceB.hosts ) > 0:
+                    dstMAC = self.deviceB.hosts[ 0 ].mac
+                id = controller.CLI.addPointIntent( self.deviceA.dpid, self.deviceB.dpid, 1, 1, '', srcMAC, dstMAC )
+            if id == None:
+                main.log.warn( self.typeString + " - add point intent failed" )
+                return EventStates().FAIL
+            with main.variableLock:
+                newPointIntent = PointIntent( id, self.deviceA, self.deviceB )
+                if self.deviceA.isDown() or self.deviceB.isDown() or self.deviceA.isRemoved() or self.deviceB.isRemoved():
+                    newPointIntent.setFailed()
+                else:
+                    newPointIntent.setInstalled()
+                main.intents.append( newPointIntent )
+            return EventStates().PASS
+        except Exception:
+            main.log.warn( "Caught exception, aborting event" )
+            return EventStates().ABORT
 
 class DelPointIntent( PointIntentEvent ):
     """
@@ -224,27 +327,29 @@
         self.typeIndex= int( main.params[ 'EVENT' ][ self.__class__.__name__ ][ 'typeIndex' ] )
 
     def startPointIntentEvent( self ):
-        assert self.deviceA != None and self.deviceB != None
-        targetIntent = None
-        for intent in main.intents:
-            if not intent.type == 'INTENT_POINT':
-                continue
-            if intent.deviceA == self.deviceA and intent.deviceB == self.deviceB:
-                targetIntent = intent
-                break
-        if targetIntent == None:
-            main.log.warn( self.typeString + " - intent does not exist" )
-            return EventStates().FAIL
-        controller = main.controllers[ self.CLIIndex - 1 ]
-        with controller.CLILock:
-            result = controller.CLI.removeIntent( targetIntent.id, purge=True )
-        if result == None or result == main.FALSE:
-            main.log.warn( self.typeString + " - delete host intent failed" )
-            return EventStates().FAIL
-        with main.variableLock:
-            main.intents.remove( targetIntent )
-            # Update host connectivity status
-            for hostA in self.deviceA.hosts:
-                for hostB in self.deviceB.hosts:
-                    hostA.correspondents.remove( hostB )
-        return EventStates().PASS
+        try:
+            assert self.deviceA != None and self.deviceB != None
+            targetIntent = None
+            for intent in main.intents:
+                if not intent.type == 'INTENT_POINT':
+                    continue
+                if intent.deviceA == self.deviceA and intent.deviceB == self.deviceB:
+                    targetIntent = intent
+                    break
+            if targetIntent == None:
+                main.log.warn( self.typeString + " - intent does not exist" )
+                return EventStates().FAIL
+            main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.deviceA.name, self.deviceB.name, self.CLIIndex ) )
+            controller = main.controllers[ self.CLIIndex - 1 ]
+            with controller.CLILock:
+                result = controller.CLI.removeIntent( targetIntent.id, purge=True )
+            if result == None or result == main.FALSE:
+                main.log.warn( self.typeString + " - delete point intent failed" )
+                return EventStates().FAIL
+            with main.variableLock:
+                targetIntent.setWithdrawn()
+                main.intents.remove( targetIntent )
+            return EventStates().PASS
+        except Exception:
+            main.log.warn( "Caught exception, aborting event" )
+            return EventStates().ABORT
diff --git a/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py b/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
index fcbf23d..fa42e12 100755
--- a/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
@@ -13,7 +13,7 @@
 
     def startEvent( self, args ):
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            main.log.info( "Event recorded: {} {}".format( self.typeIndex, self.typeString ) )
             result = self.startCheckEvent()
             return result
 
diff --git a/TestON/tests/CHOTestMonkey/dependencies/events/NetworkEvent.py b/TestON/tests/CHOTestMonkey/dependencies/events/NetworkEvent.py
index 8ec62a1..ccab8a1 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/events/NetworkEvent.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/events/NetworkEvent.py
@@ -19,7 +19,7 @@
         args are the names of the two link ends, e.g. ['s1', 's2']
         """
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             if len( args ) < 2:
                 main.log.warn( "%s - Not enough arguments: %s" % ( self.typeString, args ) )
                 return EventStates().ABORT
@@ -84,6 +84,7 @@
             elif self.linkA.isRemoved() or self.linkB.isRemoved():
                 main.log.warn( "Link Down - link has been removed" )
                 return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {} {}".format( self.typeIndex, self.typeString, self.linkA.deviceA.name, self.linkA.deviceB.name ) )
         with main.mininetLock:
             '''
             result = main.Mininet1.link( END1=self.linkA.deviceA.name,
@@ -118,6 +119,7 @@
             if self.linkA.isRemoved() or self.linkB.isRemoved():
                 main.log.warn( "Link Up - link has been removed" )
                 return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {} {}".format( self.typeIndex, self.typeString, self.linkA.deviceA.name, self.linkA.deviceB.name ) )
         with main.mininetLock:
             '''
             result = main.Mininet1.link( END1=self.linkA.deviceA.name,
@@ -147,7 +149,7 @@
         args are the names of the device, e.g. 's1'
         """
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             if len( args ) < 1:
                 main.log.warn( "%s - Not enough arguments: %s" % ( self.typeString, args ) )
                 return EventStates().ABORT
@@ -199,6 +201,7 @@
             if self.device.isRemoved():
                 main.log.warn( "Device Down - device has been removed" )
                 return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {}".format( self.typeIndex, self.typeString, self.device.name ) )
         with main.mininetLock:
             result = main.Mininet1.delSwitch( self.device.name )
         if not result:
@@ -232,6 +235,7 @@
                 main.log.warn( "Device Up - device already up" )
                 return EventStates().ABORT
         # Re-add the device
+        main.log.info( "Event recorded: {} {} {}".format( self.typeIndex, self.typeString, self.device.name ) )
         with main.mininetLock:
             result = main.Mininet1.addSwitch( self.device.name, dpid=self.device.dpid[3:] )
         if not result:
diff --git a/TestON/tests/CHOTestMonkey/dependencies/events/ONOSEvent.py b/TestON/tests/CHOTestMonkey/dependencies/events/ONOSEvent.py
index f4e2a89..28960d2 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/events/ONOSEvent.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/events/ONOSEvent.py
@@ -11,7 +11,7 @@
 
     def startEvent( self, args ):
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             result = EventStates().PASS
             if self.typeIndex == EventType().ONOS_ONOS_DOWN or self.typeIndex == EventType().ONOS_ONOS_UP:
                 if len( args ) < 1:
@@ -42,6 +42,7 @@
             if not main.controllers[ self.ONOSIndex - 1 ].isUp():
                 main.log.warn( "ONOS Down - ONOS already down" )
                 return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {}".format( self.typeIndex, self.typeString, self.ONOSIndex ) )
         with main.ONOSbenchLock:
             result = main.ONOSbench.onosStop( main.controllers[ self.ONOSIndex - 1 ].ip )
         if not result:
@@ -63,6 +64,7 @@
             if main.controllers[ self.ONOSIndex - 1 ].isUp():
                 main.log.warn( "ONOS Up - ONOS already up" )
                 return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {}".format( self.typeIndex, self.typeString, self.ONOSIndex ) )
         with main.ONOSbenchLock:
             startResult = main.ONOSbench.onosStart( main.controllers[ self.ONOSIndex - 1 ].ip )
         if not startResult:
@@ -92,7 +94,7 @@
 
     def startEvent( self, args ):
         with self.eventLock:
-            main.log.info( "%s - starting event" % ( self.typeString ) )
+            #main.log.info( "%s - starting event" % ( self.typeString ) )
             result = self.startCfgEvent( args )
             return result
 
@@ -121,6 +123,7 @@
         if index == -1:
             main.log.warn( "%s - No available controllers" %s ( self.typeString ) )
             return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.component, self.propName, self.value ) )
         controller = main.controllers[ index - 1 ]
         with controller.CLILock:
             result = controller.CLI.setCfg( component=self.component,
@@ -158,6 +161,7 @@
         if index == -1:
             main.log.warn( "%s - No available controllers" %s ( self.typeString ) )
             return EventStates().ABORT
+        main.log.info( "Event recorded: {} {} {} {} {}".format( self.typeIndex, self.typeString, self.component, self.propName, self.value ) )
         controller = main.controllers[ index - 1 ]
         with controller.CLILock:
             result = controller.CLI.setCfg( component=self.component,
@@ -184,6 +188,7 @@
             if index == -1:
                 main.log.warn( "%s - No available controllers" %s ( self.typeString ) )
                 return EventStates().ABORT
+            main.log.info( "Event recorded: {} {}".format( self.typeIndex, self.typeString ) )
             controller = main.controllers[ index - 1 ]
             with controller.CLILock:
                 result = controller.CLI.balanceMasters()
diff --git a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.params b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.params
index 34dba48..89202a5 100755
--- a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.params
+++ b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.params
@@ -5,14 +5,15 @@
 #CASE1: Compile ONOS and push it to the test machines
 #CASE2: Discovery the topology using BGPLS
 #CASE3: Addition of new Node to existing topology
-#CASE4: Deletion of Node
-#Case5: Uninstalling the app
+#CASE4: Verification of Links thats is discovered"
+#CASE5: Deletion of Links
+#Case6: Uninstalling the app
 
 
-    <testcases>1,2,3,4,5</testcases>
+    <testcases>1,2,3,4,5,6</testcases>
 
     <DEPENDENCY>
-        <path>/tests/FUNCbgpls/Dependencies/</path>
+        <path>/tests/FUNC/FUNCbgpls/Dependencies/</path>
     </DEPENDENCY>
 
     <ENV>
diff --git a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py
index a56c5c4..db60aad 100755
--- a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py
+++ b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py
@@ -8,8 +8,9 @@
 CASE1: Compile ONOS and push it to the test machines
 CASE2: Discovery the topology using BGPLS
 CASE3: Addition of new Node to existing topology
-CASE4: Deletion of Node
-Case5: Uninstalling the app
+CASE4: Verification of Links thats is discovered"
+CASE5: Deletion of Links
+Case6: Uninstalling the app
 
 
 """
@@ -275,7 +276,7 @@
         bgplsConfig.Comments()
 
         main.Scapy1.handle.sendline( "\x03" )
-        time.sleep(90) #This Sleep time gives time for the socket to close.
+        time.sleep( 90 ) #This Sleep time gives time for the socket to close.
 
 
 
@@ -365,24 +366,23 @@
             stepResult = main.FALSE
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
-                                 onpass="Node " + str( Ne_id[1][3] ) + " update  sucess",
-                                 onfail="Node " + str( Ne_id[1][3]) + " update failed" )
+                                 onpass="Node " + str( Ne_id[ 1 ][ 3 ] ) + " update  sucess",
+                                 onfail="Node " + str( Ne_id[ 1 ][ 3 ] ) + " update failed" )
         bgplsConfig.Comments()
         main.log.info( "Kill Scapy process" )
         bgplsConfig.Comments()
         main.Scapy1.handle.sendline( "\x03" )
-
+        time.sleep( 90 ) #This Sleep time gives time for the socket to close.
 
 
     def CASE4( self, main ):
         """
-        Deletion of  Node
+        Verification of Links in existing topology
         """
-        import os , sys
-        import re
+        import json
         import time
-        main.case( "TestCase 4: Deletion of Node from existing Topology" )
-
+        import os
+        main.case( "Testcase 4: Verification of Links thats is discovered" )
         try:
             from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
         except ImportError:
@@ -392,30 +392,14 @@
             main.exit()
 
         bgplsConfig = BgpLs()
-        Ne_id = bgplsConfig.Constants()
         app = bgplsConfig.apps()
         main.CLIs = []
         main.nodes = []
         main.numCtrls= 1
-
-        bgplsConfig.Comments()
-        main.log.info( "Blocked due to this defect : ONOS-3920 " )
-        bgplsConfig.Comments()
-
-        '''
         ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
         scapy_ip = os.getenv(main.params ['SCAPY'] ['HOSTNAMES'] )
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        cellAppString= main.params[ 'ENV' ][ 'cellApps' ]
-        httpport = main.params['HTTP']['port']
-        path = main.params['HTTP']['path']
-        bgplsConfig = BgpLs()
         bgplsConfig.ipValue(ipList,scapy_ip)
 
-        main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
-                                       scapy_ip,
-                                       cellAppString, ipList , onosUser="karaf" )
-
         for i in range( 1, main.numCtrls + 1 ):
             try:
                 main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
@@ -424,93 +408,120 @@
             except AttributeError:
                 break
 
-        main.step( "Apply cell to environment" )
         bgplsConfig.Comments()
-        cellResult = main.ONOSbench.setCell( cellName )
-
-        bgplsConfig.Comments()
-        main.log.info( "Sending BGPLS information " )
+        main.log.info( "Sending BGPLS Link information Packet " )
         bgplsConfig.Comments()
 
-
-        main.Scapy1.handle.sendline( "sudo python  OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py" )
-        #main.Scapy1.handle.expect( "sdn:" )
-        #main.Scapy1.handle.sendline( "rocks" )
-
-
+        main.Scapy1.handle.sendline( "sudo python  OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Link_Update_Node.py" )
         bgplsConfig.Comments()
         main.log.info( "Enable BGPlS plugin in ONOS" )
         bgplsConfig.Comments()
 
+        main.step( "UnInstall onos-app-bgp" )
+        installResults = main.ONOScli1.deactivateApp( app[ 0 ] )
+        utilities.assert_equals( expect=main.TRUE, actual=installResults,
+                                 onpass="Uninstall  onos-app-bgp successful",
+                                 onfail="Uninstall  onos-app-bgp failed" )
 
-        cliResults = main.ONOScli1.startOnosCli( main.nodes[0].ip_address)
-
-        main.step( "Getting connected to ONOS" )
-        utilities.assert_equals( expect=main.TRUE, actual=cliResults,
-                                 onpass="ONOS cli startup successful",
-                                 onfail="ONOS cli startup failed" )
-        installResults = main.ONOScli1.activateApp( app[0])
-
+        installResults = main.ONOScli1.activateApp( app[ 0 ])
         main.step( "Install onos-app-bgp" )
         utilities.assert_equals( expect=main.TRUE, actual=installResults,
                                  onpass="Install onos-app-bgp successful",
                                  onfail="Install onos-app-bgp failed" )
-
-        main.step( "Install onos-app-bgpflow" )
-        installResults = main.ONOScli1.activateApp( app[1] )
-        utilities.assert_equals( expect=main.TRUE, actual=installResults,
-                                 onpass="Install onos-app-bgpflow successful",
-                                 onfail="Install onos-app-bgpflow failed" )
-
-
-        bgpls_post = bgplsConfig.DictoJson()
-
         bgplsConfig.Comments()
-        main.log.info( "BGPLS RestConf input" )
+        main.log.info( "Checking the Link Discovery Status" )
         bgplsConfig.Comments()
+        time.sleep( 120 )   # Time taken to discovery the links
+        response = main.ONOScli1.links()
+        linksResp = json.loads( response )
+        check_link = bgplsConfig.checkLinks( linksResp )
 
-        print (bgpls_post)
-        main.ONOSrest.user_name = "karaf"
-        main.ONOSrest.pwd = "karaf"
-        Poststatus, result = main.ONOSrest.send( ipList,httpport,'', path + 'v1/network/configuration/',
-                                                 'POST', None, bgpls_post, debug=True )
-
-        main.step( "Configure BGP through RESTCONF" )
-        utilities.assert_equals(
-                expect='200',
-                actual=Poststatus,
-                onpass="Post Port Success",
-                onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
-
-
-        bgplsConfig.Comments()
-        main.log.info( "Check Network devices is deleted from  ONOS " )
-        bgplsConfig.Comments()
-        time.sleep(15)
-
-        response = main.ONOScli1.devices()
-
-        main.step( "Check whehther Node is deleted successfully" )
-
-        if response.find(Ne_id[3]) != -1:
-            stepResult = main.TRUE
-        else:
-            stepResult = main.FALSE
-        utilities.assert_equals( expect=main.FALSE,
-                                 actual=stepResult,
-                                 onpass="Node " + str( Ne_id[3] ) + " Deletion sucess",
-                                 onfail="Node " + str( Ne_id[3] ) + " Deletion  failed" )
-
+        if check_link == True:
+            reply_Check_Link = main.TRUE
+        utilities.assert_equals( expect= main.TRUE,
+                                     actual=reply_Check_Link ,
+                                     onpass="Link  Discovery Success.",
+                                     onfail="Link  Discovery Failed." )
         bgplsConfig.Comments()
         main.log.info( "Kill Scapy process" )
         bgplsConfig.Comments()
-
         main.Scapy1.handle.sendline( "\x03" )
-        '''
-
+        time.sleep( 90 )
 
     def CASE5( self, main ):
         """
+        Deletion of  links
+        """
+        import json
+        import time
+        import os
+        main.case( "Testcase 5: Deletion of Link in existing topology" )
+        try:
+            from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
+        except ImportError:
+            main.log.exception( "Something wrong with import file or code error." )
+            main.log.info( "Import Error, please check!" )
+            main.cleanup()
+            main.exit()
+
+        bgplsConfig = BgpLs()
+        app = bgplsConfig.apps()
+        main.CLIs = []
+        main.nodes = []
+        main.numCtrls= 1
+        ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+        scapy_ip = os.getenv(main.params [ 'SCAPY' ] [ 'HOSTNAMES' ] )
+        bgplsConfig.ipValue(ipList,scapy_ip)
+
+        for i in range( 1, main.numCtrls + 1 ):
+            try:
+                main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+                main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+                ipList.append( main.nodes[ -1 ].ip_address )
+            except AttributeError:
+                break
+
+        bgplsConfig.Comments()
+        main.log.info( "Sending BGPLS Delete Link Packet " )
+        bgplsConfig.Comments()
+
+        main.Scapy1.handle.sendline( "sudo python  OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py" )
+        bgplsConfig.Comments()
+        main.log.info( "Enable BGPlS plugin in ONOS" )
+        bgplsConfig.Comments()
+
+        main.step( "UnInstall onos-app-bgp" )
+        installResults = main.ONOScli1.deactivateApp( app[ 0 ] )
+        utilities.assert_equals( expect=main.TRUE, actual=installResults,
+                                 onpass="Uninstall  onos-app-bgp successful",
+                                 onfail="Uninstall  onos-app-bgp failed" )
+
+        installResults = main.ONOScli1.activateApp( app[ 0 ])
+        main.step( "Install onos-app-bgp" )
+        utilities.assert_equals( expect=main.TRUE, actual=installResults,
+                                 onpass="Install onos-app-bgp successful",
+                                 onfail="Install onos-app-bgp failed" )
+        bgplsConfig.Comments()
+        main.log.info( "Checking whether the links is deleted" )
+        bgplsConfig.Comments()
+        time.sleep( 120 )  # Time taken to discovery the links
+        response = main.ONOScli1.links()
+        linksResp = json.loads( response )
+        check_link = bgplsConfig.checkLinks( linksResp )
+        if check_link == False:
+            reply_Check_Link = main.TRUE
+        utilities.assert_equals( expect= main.TRUE,
+                                     actual=reply_Check_Link ,
+                                     onpass="Link  is Deleted Successfully.",
+                                     onfail="Link  is Deletion Failed." )
+        bgplsConfig.Comments()
+        main.log.info( "Kill Scapy process" )
+        bgplsConfig.Comments()
+        main.Scapy1.handle.sendline( "\x03" )
+        time.sleep( 90 )
+
+    def CASE6( self, main ):
+        """
         Uninstalling the app
         """
         import os,sys
@@ -542,7 +553,7 @@
         bgplsConfig.ipValue(ipList,scapy_ip)
         main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
                                        scapy_ip,
-                                       cellAppString, ipList , onosUser="karaf" )
+                                       cellAppString, ipList )
 
         for i in range( 1, main.numCtrls + 1 ):
             try:
@@ -574,5 +585,9 @@
                                  onpass="Uninstall  onos-app-bgp successful",
                                  onfail="Uninstall  onos-app-bgp failed" )
 
-
-
+        main.log.info( "Check for Errors or Exception End of the Script" )
+        errorLog = main.ONOSbench.logReport( main.nodes[0].ip_address, ["ERROR",\
+                                            "EXCEPT"] )
+        utilities.assert_equals( expect= 0, actual=errorLog,
+                                 onpass="No Exception or Error occured",
+                                 onfail="Exception or Error occured" )
\ No newline at end of file
diff --git a/TestON/tests/FUNC/FUNCbgpls/README b/TestON/tests/FUNC/FUNCbgpls/README
index 2ecb554..8974506 100755
--- a/TestON/tests/FUNC/FUNCbgpls/README
+++ b/TestON/tests/FUNC/FUNCbgpls/README
@@ -28,7 +28,7 @@
 1] We use Scapy tool, to send the BGPLS packet to ONOS.
 2] The packets are already pre-captured.
 3] ONOS reads those packet and displays the topology.
-4] We query the devices information in ONOS to check the devices/links are learn
+4] We query the devices information in ONOS to check the devices/links are learned
 
 
 Steps :
diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/Topo_pkts.pcap b/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/Topo_pkts.pcap
deleted file mode 100755
index 2021f22..0000000
--- a/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/Topo_pkts.pcap
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls.pcap b/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls.pcap
new file mode 100644
index 0000000..8e3db7d
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls.pcap
Binary files differ
diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py b/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
index 8a83748..5661cb8 100755
--- a/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
+++ b/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
@@ -78,3 +78,47 @@
         self.app_bgpflow = 'org.onosproject.bgpflow'
         self.list1 = [self.app_bgp,self.app_bgpflow]
         return self.list1
+
+    def checkLinks(self,linksResp):
+        #Declaring the links values
+        links = {'link1_src' : "1650.5555.0055", 'link1_dst' : "1660.6666.0066",
+             'link2_src' : "1630.3333.0033", 'link2_dst' : "1620.2222.0022",
+             'link3_src' : "1660.6666.0066", 'link3_dst' : "1650.5555.0055",
+             'link4_src' : "1630.3333.0033", 'link4_dst' : "1650.5555.0055",
+             'link5_src' : "1640.4444.0044", 'link5_dst' : "1610.1111.0011",
+             'link6_src' : "1650.5555.0055", 'link4_dst' : "1630.3333.0033",
+             'link7_src' : "1620.2222.0022", 'link4_dst' : "1630.3333.0033",
+             'link8_src' : "1620.2222.0022", 'link4_dst' : "1610.1111.0011",
+             'link9_src' : "1630.3333.0033", 'link4_dst' : "1640.4444.0044",
+             'link10_src' : "1650.5555.0055", 'link4_dst' : "1640.4444.0044",
+             'link11_src' : "1610.1111.0011", 'link4_dst' : "1640.4444.0044",
+             'link12_src' : "1640.4444.0044", 'link4_dst' : "1620.2222.0022",
+             'link13_src' : "1660.6666.0066", 'link4_dst' : "1630.3333.0033",
+             'link14_src' : "1640.4444.0044", 'link4_dst' : "1660.6666.0066",
+             'link15_src' : "1640.4444.0044", 'link4_dst' : "1630.3333.0033",
+             'link16_src' : "1610.1111.0011", 'link4_dst' : "1630.3333.0033",
+             'link17_src' : "1630.3333.0033", 'link4_dst' : "1610.1111.0011",
+             'link18_src' : "1610.1111.0011", 'link4_dst' : "1620.2222.0022",
+             'link19_src' : "1620.2222.0022", 'link4_dst' : "1640.4444.0044",
+             'link20_src' : "1630.3333.0033", 'link4_dst' : "1660.6666.0066",
+             'link21_src' : "1640.4444.0044", 'link4_dst' : "1650.5555.0055",
+             'link22_src' : "1660.6666.0066", 'link4_dst' : "1640.4444.0044"
+        }
+
+        #Comparing the Links
+        for x in xrange(22):
+            link_src_info = linksResp[x]['src']['device']
+            link_dst_info = linksResp[x]['dst']['device']
+            link_src_split = link_src_info.split("=")
+            link_src = link_src_split[4]
+            link_dst_split = link_dst_info.split("=")
+            link_dst = link_dst_split[4]
+            y = x+1
+            link_src_ref = links['link'+str(y)+'_src']
+            link_dst_ref = links['link'+str(y)+'_dst']
+            if (link_src == link_src_ref) and (link_dst == (link_dst_ref) and \
+                linksResp[x]['type'] == 'DIRECT' and linksResp[x]['state'] == \
+                'ACTIVE'):
+                return True
+            else:
+                return False
diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py b/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py
index abd1cfc..259f846 100755
--- a/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py
+++ b/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py
@@ -18,36 +18,35 @@
 host = peerIp # Get local machine name
 port = 179                # Reserve a port for your service.
 s.bind((host, port))        # Bind to the port
-pkts = rdpcap(path + "/OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls_all.pcap")
-pkts[69][BGPOpen].bgp_id = peerIp
+pkts = rdpcap(path + "/OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls.pcap")
+time.sleep(15)
+pkts[759][BGPOpen].bgp_id = peerIp
 
 s.listen(5)                   # Now wait for client connection.
 
 print("starting Connecting to ONOS peer")
 c, addr = s.accept()     # Establish connection with client.
 print 'Got connection from ONOS :', addr
-c.send(str(pkts[69][BGPHeader])) # OPEN MESSAGE
+c.send(str(pkts[759][BGPHeader])) # OPEN MESSAGE
 c.recv(4096)
-c.send(str(pkts[71][BGPHeader]))# KEEPALIVE MESSAGE
+c.send(str(pkts[765][BGPHeader]))# KEEPALIVE MESSAGE
 c.recv(4096)
-c.send(str(pkts[72][BGPHeader]))   # UPDATE MESSAGES
-c.send(str(pkts[74][BGPHeader]))
-c.send(str(pkts[71][BGPHeader]))
+c.send(str(pkts[768][BGPHeader]))   # UPDATE MESSAGES
+c.send(str(pkts[771][BGPHeader]))
+c.send(str(pkts[773][BGPHeader]))
+c.send(str(pkts[775][BGPHeader]))
+c.send(str(pkts[778][BGPHeader]))
+c.send(str(pkts[765][BGPHeader]))
 
-time.sleep(10)               # Waiting for 120 seconds for update message.
-
-c.send(str(pkts[298][BGPHeader]))
-c.send(str(pkts[860][BGPHeader]))   # UPDATE MESSAGES with new node
-c.send(str(pkts[865][BGPHeader]))
-print ("New Node update msg sent")
-
-time.sleep(5)
-c.send(str(pkts[890][BGPHeader]))
+time.sleep(15)
+c.send(str(pkts[1168][BGPHeader]))
+c.send(str(pkts[1250][BGPHeader]))
+c.send(str(pkts[1354][BGPHeader]))
 print ("Node Delete msg sent")
 
 
 while True:
     c.recv(4096)
-    c.send(str(pkts[71][BGPHeader]))
+    c.send(str(pkts[765][BGPHeader]))
 
   # c.close()                # Close the connection
diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Link_Update_Node.py b/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Link_Update_Node.py
new file mode 100755
index 0000000..03a5653
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Link_Update_Node.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python           # This is server.py file
+from scapy.all import *
+import socket               # Import socket module
+import time                 # Import Time module
+import sys
+import os
+
+path = os.getcwd()
+sys.path.append('OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies')   #Setting the path for BgpLS
+from Nbdata import BgpLs
+
+obj = BgpLs()
+returnlist = obj.Constants()
+peerIp = returnlist[0][0]
+
+load_contrib('bgp')
+s = socket.socket()         # Create a socket object
+host = peerIp # Get local machine name
+port = 179                # Reserve a port for your service.
+s.bind((host, port))        # Bind to the port
+pkts = rdpcap(path + "/OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Bgpls_packets/bgpls.pcap")
+time.sleep(15)
+pkts[759][BGPOpen].bgp_id = peerIp
+
+s.listen(5)                   # Now wait for client connection.
+
+print("starting Connecting to ONOS peer")
+c, addr = s.accept()     # Establish connection with client.
+print 'Got connection from ONOS :', addr
+c.send(str(pkts[759][BGPHeader])) # OPEN MESSAGE
+c.recv(4096)
+c.send(str(pkts[765][BGPHeader]))# KEEPALIVE MESSAGE
+c.recv(4096)
+c.send(str(pkts[768][BGPHeader]))   # UPDATE MESSAGES
+c.send(str(pkts[771][BGPHeader]))
+c.send(str(pkts[773][BGPHeader]))
+c.send(str(pkts[775][BGPHeader]))
+c.send(str(pkts[778][BGPHeader]))
+c.send(str(pkts[765][BGPHeader]))
+
+while True:
+    c.recv(4096)
+    c.send(str(pkts[765][BGPHeader]))
+
+  # c.close()                # Close the connection
diff --git a/TestON/tests/FUNC/FUNCintent/FUNCintent.py b/TestON/tests/FUNC/FUNCintent/FUNCintent.py
index ba0f2a9..167a847 100644
--- a/TestON/tests/FUNC/FUNCintent/FUNCintent.py
+++ b/TestON/tests/FUNC/FUNCintent/FUNCintent.py
@@ -670,9 +670,8 @@
         stepResult = main.TRUE
         scpResult = main.TRUE
         copyResult = main.TRUE
-        i = 0
-        for cli in main.CLIs:
-            main.node = cli
+        for i in range( main.numCtrls ):
+            main.node = main.CLIs[ i ]
             ip = main.ONOSip[ i ]
             main.node.ip_address = ip
             scpResult = scpResult and main.ONOSbench.scp( main.node ,
@@ -685,7 +684,6 @@
                 stepResult =  main.TRUE and stepResult
             else:
                 stepResult = main.FALSE and stepResult
-            i += 1
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
                                  onpass="Successfully copied remote ONOS logs",
diff --git a/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.py b/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.py
index 51ad5b1..3824ea3 100644
--- a/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.py
+++ b/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.py
@@ -785,9 +785,8 @@
         stepResult = main.TRUE
         scpResult = main.TRUE
         copyResult = main.TRUE
-        i = 0
-        for cli in main.CLIs2:
-            main.node = cli
+        for i in range( main.numCtrls ):
+            main.node = main.CLIs2[ i ]
             ip = main.ONOSip[ i ]
             main.node.ip_address = ip
             scpResult = scpResult and main.ONOSbench.scp( main.node ,
@@ -800,7 +799,6 @@
                 stepResult =  main.TRUE and stepResult
             else:
                 stepResult = main.FALSE and stepResult
-            i += 1
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
                                  onpass="Successfully copied remote ONOS logs",
diff --git a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.params b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.params
index 373f007..0976c40 100644
--- a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.params
+++ b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.params
@@ -14,8 +14,9 @@
     # 24 - Remove NetCfgs
     # 25 - Move network-cfg.json to onos directory for prebuild configurations
     # 26 - Check that prebuild configurations are correct
+    # 27 - Posting network configurations to the top level web resource
 
-    <testcases>1,25,2,20,11,26,21,22,23,24</testcases>
+    <testcases>1,25,2,20,11,27,26,21,22,23,24</testcases>
 
     <DEPENDENCY>
         <path>/tests/FUNC/FUNCnetCfg/dependencies/</path>
@@ -40,5 +41,6 @@
     <MININET>
         <switch>6</switch>
     </MININET>
-
+    <RETRY>5</RETRY>
+    <RetrySleep>2</RetrySleep>
 </PARAMS>
diff --git a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.py b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.py
index 0f8812a..e311bf9 100644
--- a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.py
+++ b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.py
@@ -48,7 +48,8 @@
             main.hostsData = {}
             main.nodes = []
             main.ONOSip = []
-
+            main.retrytimes = main.params[ 'RETRY' ]
+            main.retrysleep = main.params[ 'RetrySleep' ]
             main.ONOSip = main.ONOSbench.getOnosIps()
 
             # Assigning ONOS cli handles to a list
@@ -431,6 +432,7 @@
                 main.log.error( "ONOS NetCfg doesn't match what was sent" )
                 main.log.debug( "ONOS config: {}".format( onosCfg ) )
                 main.log.debug( "Sent config: {}".format( sentCfg ) )
+                utilities.retry( f=main.ONOSrest1.getNetCfg, retValue=False, attempts=main.retrytimes, sleep=main.retrysleep )
         utilities.assert_equals( expect=True,
                                  actual=s1Result,
                                  onpass="Net Cfg added for device s1",
@@ -460,6 +462,7 @@
                 main.log.error( "ONOS NetCfg doesn't match what was sent" )
                 main.log.debug( "ONOS config: {}".format( onosCfg ) )
                 main.log.debug( "Sent config: {}".format( sentCfg ) )
+                utilities.retry( f=main.ONOSrest1.getNetCfg, retValue=False, attempts=main.retrytimes, sleep=main.retrysleep )
         utilities.assert_equals( expect=True,
                                  actual=s3Result,
                                  onpass="Net Cfg added for device s3",
@@ -499,7 +502,6 @@
                                  onpass="Only allowed devices are in ONOS",
                                  onfail="ONOS devices doesn't match the list" +
                                         " of allowed devices" )
-
         main.step( "Check device annotations" )
         keys = [ 'name', 'owner', 'rackAddress' ]
         try:
@@ -560,6 +562,7 @@
                 main.log.error( "ONOS NetCfg doesn't match what was sent" )
                 main.log.debug( "ONOS config: {}".format( onosCfg ) )
                 main.log.debug( "Sent config: {}".format( sentCfg ) )
+                utilities.retry( f=main.ONOSrest2.getNetCfg, retValue=False, attempts=main.retrytimes, sleep=main.retrysleep )
         utilities.assert_equals( expect=True,
                                  actual=s2Result,
                                  onpass="Net Cfg added for device s2",
@@ -571,14 +574,14 @@
                    "owner": "John",
                    "allowed": False }
         main.s4Json = s4Json
-        setS4Disallow = main.ONOSrest4.setNetCfg( s4Json,
+        setS4Disallow = main.ONOSrest3.setNetCfg( s4Json,
                                                   subjectClass="devices",
                                                   subjectKey="of:0000000000000004",
                                                   configKey="basic" )
         s4Result = False
         if setS4Disallow:
             # Check what we set is what is in ONOS
-            getS4 = main.ONOSrest4.getNetCfg( subjectClass="devices",
+            getS4 = main.ONOSrest3.getNetCfg( subjectClass="devices",
                                               subjectKey="of:0000000000000004",
                                               configKey="basic" )
             onosCfg = pprint( getS4 )
@@ -589,10 +592,12 @@
                 main.log.error( "ONOS NetCfg doesn't match what was sent" )
                 main.log.debug( "ONOS config: {}".format( onosCfg ) )
                 main.log.debug( "Sent config: {}".format( sentCfg ) )
+                main.step( "Retrying main.ONOSrest3.getNetCfg" )
+                utilities.retry( f=main.ONOSrest3.getNetCfg, retValue=False, attempts=main.retrytimes, sleep=main.retrysleep )
         utilities.assert_equals( expect=True,
                                  actual=s4Result,
                                  onpass="Net Cfg added for device s4",
-                                 onfail="Net Cfg for device s3 not correctly set" )
+                                 onfail="Net Cfg for device s4 not correctly set" )
 
         main.netCfg.compareCfg( main, main.gossipTime )
 
@@ -719,7 +724,7 @@
             del s4Json['allowed']
         except KeyError:
             main.log.exception( "Key not found" )
-        setS4 = main.ONOSrest4.setNetCfg( s4Json,
+        setS4 = main.ONOSrest3.setNetCfg( s4Json,
                                           subjectClass="devices",
                                           subjectKey="of:0000000000000004",
                                           configKey="basic" )
@@ -794,10 +799,10 @@
         import json
         main.case( "Check to see if the pre-startup configurations were set, then remove their allowed status" )
         main.step( "Checking configurations for Switches 5 and 6" )
-        main.step( "ONOS should only show devices S1, S2, S4, S5, and S6" )
+        main.step( "ONOS should only show devices S1, S2, S4, and S5" ) #and S6
         devices = main.ONOSrest1.devices()
         main.log.debug( main.ONOSrest1.pprint( devices ) )
-        allowedDevices = [ "of:{}".format( str( i ).zfill( 16 ) ) for i in [ 1, 2, 4, 5, 6 ] ]
+        allowedDevices = [ "of:{}".format( str( i ).zfill( 16 ) ) for i in [ 1, 2, 4, 5 ] ] #6
         main.log.debug( allowedDevices )
         onosDevices = []
         try:
@@ -826,4 +831,61 @@
         setS1 = main.ONOSrest1.setNetCfg( s6Json,
                                           subjectClass="devices",
                                           subjectKey="of:0000000000000006",
-                                          configKey="basic" )
\ No newline at end of file
+                                          configKey="basic" )
+
+    def CASE27( self, main ):
+        """
+        1) A = get /network/configuration
+        2) Post A
+        3) Compare A with ONOS
+        4) Modify A so S6 is disallowed
+        5) Check
+
+        """
+        import json
+        pprint = main.nodes[0].pprint
+        main.case( "Posting network configurations to the top level web resource" )
+        main.step( "Get json object from Net Cfg" )
+        getinfo = main.ONOSrest1.getNetCfg( )
+        main.log.debug( getinfo )
+        main.step( "Posting json object to Net Cfg" )
+        postinfo = main.ONOSrest1.setNetCfg( json.loads( getinfo ) )
+        main.step( "Compare device with ONOS" )
+        main.netCfg.compareCfg( main )
+        main.step ( "ONOS should only show devices S1, S2, S4, S5 and S6" )
+        devices = main.ONOSrest1.devices( )
+        main.log.debug( main.ONOSrest1.pprint( devices ) )
+        allowedDevices = [ "of:{}".format( str( i ).zfill( 16 ) ) for i in [ 1, 2, 4, 5, 6 ] ]
+        onosDevices = []
+        try:
+            for sw in json.loads( devices ):
+                onosDevices.append( str( sw.get( 'id' ) ) )
+            onosDevices.sort( )
+            failMsg = "ONOS devices doesn't match the list of allowed devices. \n"
+            failMsg += "Expected devices: {}\nActual devices: {}".format( allowedDevices, onosDevices )
+        except( TypeError, ValueError ):
+            main.log.error( "Problem loading devices" )
+        utilities.assert_equals( expect=allowedDevices, actual=onosDevices,
+                                 onpass="Only allowed devices are in ONOS", onfail=failMsg )
+
+        main.step( "Modify json object so S6 is disallowed" )
+        main.s6Json = { "allowed": False }
+        s6Json = main.s6Json
+        setS6Disallow = main.ONOSrest1.setNetCfg( s6Json, subjectClass="devices",
+                                                  subjectKey="of:0000000000000006", configKey="basic" )
+        s6Result = False
+        if setS6Disallow:
+            getS6 = main.ONOSrest1.getNetCfg( subjectClass="devices",
+                                              subjectKey="of:0000000000000006", configKey="basic" )
+            onosCfg = pprint( getS6 )
+            sentCfg = pprint( s6Json )
+            if onosCfg == sentCfg:
+                s6Result = True
+            else:
+                main.log.error( "ONOS NetCfg doesn't match what was sent" )
+                main.log.debug( "ONOS config: {}".format( onosCfg ) )
+                main.log.debug( "Sent config: {}".format( sentCfg ) )
+                utilities.retry( f=main.ONOSrest1.getNetCfg, retValue=False, attempts=main.retrytimes, sleep=main.retrysleep )
+        utilities.assert_equals( expect=True, actual=s6Result,
+                                 onpass="Net Cfg added for devices s6",
+                                 onfail="Net Cfg for device s6 not correctly set" )
diff --git a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.topo b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.topo
index e1e06eb..4204c78 100755
--- a/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.topo
+++ b/TestON/tests/FUNC/FUNCnetCfg/FUNCnetCfg.topo
@@ -44,50 +44,6 @@
             </COMPONENTS>
         </ONOSrest3>
 
-        <ONOSrest4>
-            <host>OC4</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest4>
-
-        <ONOSrest5>
-            <host>OC5</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest5>
-
-        <ONOSrest6>
-            <host>OC6</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest6>
-
-        <ONOSrest7>
-            <host>OC7</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest7>
-
         <Mininet1>
             <host>OCN</host>
             <user>sdn</user>
diff --git a/TestON/tests/FUNC/FUNCnetconf/FUNCnetconf.py b/TestON/tests/FUNC/FUNCnetconf/FUNCnetconf.py
index 94fd0ef..9135daf 100644
--- a/TestON/tests/FUNC/FUNCnetconf/FUNCnetconf.py
+++ b/TestON/tests/FUNC/FUNCnetconf/FUNCnetconf.py
@@ -269,9 +269,8 @@
         stepResult = main.TRUE
         scpResult = main.TRUE
         copyResult = main.TRUE
-        i = 0
-        for cli in main.CLIs2:
-            main.node = cli
+        for i in range( main.numCtrls ):
+            main.node = main.CLIs2[ i ]
             ip = main.ONOSip[ i ]
             main.node.ip_address = ip
             scpResult = scpResult and main.ONOSbench.scp( main.node ,
@@ -284,9 +283,6 @@
                 stepResult =  main.TRUE and stepResult
             else:
                 stepResult = main.FALSE and stepResult
-            i += 1
-            if main.numCtrls == 1:
-                break
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
                                  onpass="Successfully copied remote ONOS logs",
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..2c4b0ca 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
@@ -317,9 +327,8 @@
         stepResult = main.TRUE
         scpResult = main.TRUE
         copyResult = main.TRUE
-        i = 0
-        for cli in main.CLIs:
-            main.node = cli
+        for i in range( main.numCtrls ):
+            main.node = main.CLIs[ i ]
             ip = main.ONOSip[ i ]
             main.node.ip_address = ip
             scpResult = scpResult and main.ONOSbench.scp( main.node ,
@@ -332,7 +341,6 @@
                 stepResult =  main.TRUE and stepResult
             else:
                 stepResult = main.FALSE and stepResult
-            i += 1
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
                                  onpass="Successfully copied remote ONOS logs",
@@ -361,7 +369,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 +405,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 +538,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 +569,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 +624,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 +647,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 +688,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 +705,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
-
-
-
-
diff --git a/TestON/tests/SCPF/SCPFhostLat/SCPFhostLat.params b/TestON/tests/SCPF/SCPFhostLat/SCPFhostLat.params
index 9bd9e6b..be4caec 100644
--- a/TestON/tests/SCPF/SCPFhostLat/SCPFhostLat.params
+++ b/TestON/tests/SCPF/SCPFhostLat/SCPFhostLat.params
@@ -9,7 +9,7 @@
     </ENV>
 
     <DEPENDENCY>
-        <path>/tests/SCPFhostLat/dependencies/</path>
+        <path>/tests/SCPF/SCPFhostLat/dependencies/</path>
         <topology>topo-perf-1h1s.py</topology>
     </DEPENDENCY>
 
diff --git a/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.params b/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.params
index c7c156c..cf4c6ac 100644
--- a/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.params
+++ b/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.params
@@ -1,6 +1,6 @@
 <PARAMS>
 
-    <testcases>1,2,1,2,1,2,1,2,1,2,1,2,1,2</testcases>
+    <testcases>0,1,2,1,2,1,2,1,2,1,2,1,2,1,2</testcases>
 
     <debugMode></debugMode>  #nothing means false
 
@@ -13,8 +13,8 @@
     <max>7</max>
 
     <GIT>
-        <autopull>off</autopull>
-        <checkout>master</checkout>
+        <gitPull>off</gitPull>
+        <gitBranch>master</gitBranch>
     </GIT>
 
     <CTRL>
@@ -44,6 +44,14 @@
 
     <MN><ip1>OCN</ip1></MN>
 
+    <SLEEP>
+        <startup>10</startup>
+        <install>10</install>
+        <verify>3</verify>
+        <reroute>3</reroute>
+        # timeout for pexpect
+        <timeout>300</timeout>
+    </SLEEP>
     <BENCH>
         <user>sdn</user>
         <ip1>OCN</ip1>
@@ -60,8 +68,12 @@
         <neighbors>0,a</neighbors>           #a == all nodes (-1)
         <flowRuleBUEnabled>true</flowRuleBUEnabled>
         <skipReleaseResourcesOnWithdrawal>true</skipReleaseResourcesOnWithdrawal>
+        <flowObj>False</flowObj>
     </TEST>
-
+    <DATABASE>
+        <dbName>/tmp/IntentEventTPDB</dbName>
+        <dbFlowObj>/tmp/IntentEventTPflowObjDB</dbFlowObj>
+    </DATABASE>
     <METRICS>
         <intents_rate>intents-events-metrics|grep "Intent Installed Events"|cut -d ' ' -f7</intents_rate>
         <intents_withdrawn>intents-events-metrics|grep "Intent Withdrawn Events"|cut -d ' ' -f7</intents_withdrawn>
diff --git a/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.py b/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.py
index 2caa008..6b333bc 100644
--- a/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.py
+++ b/TestON/tests/SCPF/SCPFintentEventTp/SCPFintentEventTp.py
@@ -1,324 +1,261 @@
-# ScaleOutTemplate
-#
-# CASE1 starts number of nodes specified in param file
-#
-# cameron@onlab.us
+'''
+SCPFintentEventTp
+    - Use intentperf app to generate a lot of intent install and withdraw events
+    - Test will run with 1,3,5,7 nodes, and with all neighbors
+    - Test will run 400 seconds and grep the overall rate from intent-perf summary
 
-import sys
-import os.path
+    yunpeng@onlab.us
+'''
+
 import time
 
 
 class SCPFintentEventTp:
-
     def __init__( self ):
         self.default = ''
 
+    def CASE0( self, main ):
+        '''
+        - GIT
+        - BUILDING ONOS
+            Pull specific ONOS branch, then Build ONOS ono ONOS Bench.
+            This step is usually skipped. Because in a Jenkins driven automated
+            test env. We want Jenkins jobs to pull&build for flexibility to handle
+            different versions of ONOS.
+        - Construct tests variables
+        '''
+        gitPull = main.params['GIT']['gitPull']
+        gitBranch = main.params['GIT']['gitBranch']
+
+        main.case( "Pull onos branch and build onos on Teststation." )
+
+        if gitPull == 'True':
+            main.step( "Git Checkout ONOS branch: " + gitBranch )
+            stepResult = main.ONOSbench.gitCheckout( branch=gitBranch )
+            utilities.assert_equals(expect=main.TRUE,
+                                    actual=stepResult,
+                                    onpass="Successfully checkout onos branch.",
+                                    onfail="Failed to checkout onos branch. Exiting test...")
+            if not stepResult: main.exit()
+
+            main.step( "Git Pull on ONOS branch:" + gitBranch )
+            stepResult = main.ONOSbench.gitPull()
+            utilities.assert_equals(expect=main.TRUE,
+                                    actual=stepResult,
+                                    onpass="Successfully pull onos. ",
+                                    onfail="Failed to pull onos. Exiting test ...")
+            if not stepResult: main.exit()
+
+            main.step( "Building ONOS branch: " + gitBranch )
+            stepResult = main.ONOSbench.cleanInstall( skipTest=True )
+            utilities.assert_equals(expect=main.TRUE,
+                                    actual=stepResult,
+                                    onpass="Successfully build onos.",
+                                    onfail="Failed to build onos. Exiting test...")
+            if not stepResult: main.exit()
+
+        else:
+            main.log.warn( "Skipped pulling onos and Skipped building ONOS" )
+
+        main.cellName = main.params['ENV']['cellName']
+        main.Apps = main.params['ENV']['cellApps']
+        main.BENCHIp = main.params['BENCH']['ip1']
+        main.BENCHUser = main.params['BENCH']['user']
+        main.MN1Ip = main.params['MN']['ip1']
+        main.maxNodes = int(main.params['max'])
+        main.numSwitches = (main.params['TEST']['numSwitches']).split(",")
+        main.flowRuleBU = main.params['TEST']['flowRuleBUEnabled']
+        main.skipRelRsrc = main.params['TEST']['skipReleaseResourcesOnWithdrawal']
+        main.flowObj = main.params['TEST']['flowObj']
+        main.startUpSleep = int(main.params['SLEEP']['startup'])
+        main.installSleep = int(main.params['SLEEP']['install'])
+        main.verifySleep = int(main.params['SLEEP']['verify'])
+        main.scale = (main.params['SCALE']).split(",")
+        main.testDuration = main.params[ 'TEST' ][ 'duration' ]
+        main.logInterval = main.params[ 'TEST' ][ 'log_interval' ]
+        main.debug = main.params[ 'debugMode' ]
+        main.numKeys = main.params[ 'TEST' ][ 'numKeys' ]
+        main.timeout = int(main.params['SLEEP']['timeout'])
+        main.cyclePeriod = main.params[ 'TEST' ][ 'cyclePeriod' ]
+        if main.flowObj == "True":
+            main.flowObj = True
+            main.dbFileName = main.params['DATABASE']['dbFlowObj']
+        else:
+            main.flowObj = False
+            main.dbFileName = main.params['DATABASE']['dbName']
+        # Create DataBase file
+        main.log.info( "Create Database file " + main.dbFileName )
+        resultsDB = open( main.dbFileName, "w+" )
+        resultsDB.close()
+
+        # set neighbors
+        main.neighbors = "1"
+
     def CASE1( self, main ):
-        import sys
-        import os.path
+        # Clean up test environment and set up
         import time
+        main.log.info( "Get ONOS cluster IP" )
+        print( main.scale )
+        main.numCtrls = int( main.scale.pop(0) )
+        main.ONOSip = []
+        main.maxNumBatch = 0
+        main.AllONOSip = main.ONOSbench.getOnosIps()
+        for i in range( main.numCtrls ):
+            main.ONOSip.append( main.AllONOSip[i] )
+        main.log.info( main.ONOSip )
+        main.CLIs = []
+        main.log.info( "Creating list of ONOS cli handles" )
+        for i in range( main.numCtrls ):
+            main.CLIs.append( getattr( main, 'ONOS%scli' % (i + 1) ) )
 
-        global init
-        try:
-            if type(init) is not bool:
-                init = False
-        except NameError:
-            init = False
+        if not main.CLIs:
+            main.log.error( "Failed to create the list of ONOS cli handles" )
+            main.cleanup()
+            main.exit()
 
-        #Load values from params file
-        checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
-        gitPull = main.params[ 'GIT' ][ 'autopull' ]
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        Apps = main.params[ 'ENV' ][ 'cellApps' ]
-        BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
-        BENCHUser = main.params[ 'BENCH' ][ 'user' ]
-        MN1Ip = main.params[ 'MN' ][ 'ip1' ]
-        maxNodes = int(main.params[ 'max' ])
-        main.maxNodes = maxNodes
-        skipMvn = main.params[ 'TEST' ][ 'skipCleanInstall' ]
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        numSwitches = (main.params[ 'TEST' ][ 'numSwitches' ]).split(",")
-        flowRuleBU = main.params[ 'TEST' ][ 'flowRuleBUEnabled' ]
-        skipRelRsrc = main.params[ 'TEST'][ 'skipReleaseResourcesOnWithdrawal']
-        homeDir = os.path.expanduser('~')
+        main.commit = main.ONOSbench.getVersion( report=True )
+        main.commit = main.commit.split(" ")[1]
+        main.log.info( "Starting up %s node(s) ONOS cluster" % main.numCtrls )
+        main.log.info("Safety check, killing all ONOS processes" +
+                      " before initiating environment setup")
 
-        main.exceptions = [0]*11
-        main.warnings = [0]*11
-        main.errors = [0]*11
+        for i in range( main.numCtrls ):
+            main.ONOSbench.onosDie( main.ONOSip[i] )
 
-        # -- INIT SECTION, ONLY RUNS ONCE -- #
-        if init == False:
-            init = True
-            global clusterCount             #number of nodes running
-            global ONOSIp                   #list of ONOS IP addresses
-            global scale
-            global commit
-
-            clusterCount = 0
-            ONOSIp = main.ONOSbench.getOnosIps()
-            print ONOSIp
-            print main.ONOSbench.onosIps.values()
-
-            scale = (main.params[ 'SCALE' ]).split(",")
-            clusterCount = int(scale[0])
-
-            #Populate ONOSIp with ips from params
-            ONOSIp.extend(main.ONOSbench.getOnosIps())
-
-            #mvn clean install, for debugging set param 'skipCleanInstall' to yes to speed up test
-            if skipMvn != "yes":
-                mvnResult = main.ONOSbench.cleanInstall()
-
-            #git
-            main.step( "Git checkout and pull " + checkoutBranch )
-            if gitPull == 'on':
-                checkoutResult = main.ONOSbench.gitCheckout( checkoutBranch )
-                pullResult = main.ONOSbench.gitPull()
-
-            else:
-                checkoutResult = main.TRUE
-                pullResult = main.TRUE
-                main.log.info( "Skipped git checkout and pull" )
-
-            main.step("Grabbing commit number")
-            commit = main.ONOSbench.getVersion()
-            commit = (commit.split(" "))[1]
-
-            main.step("Creating results file")
-            resultsDB = open("/tmp/IntentEventTPDB", "w+")
-            resultsDB.close()
-
-        # -- END OF INIT SECTION --#
-
-        main.step("Adjusting scale")
-        print str(scale)
-        print str(ONOSIp)
-        clusterCount = int(scale[0])
-        scale.remove(scale[0])
-
-        MN1Ip = ONOSIp[len(ONOSIp) -1]
-        BENCHIp = ONOSIp[len(ONOSIp) -2]
-
-        #kill off all onos processes
-        main.step("Safety check, killing all ONOS processes")
-        main.step("before initiating environment setup")
-        for node in range(maxNodes):
-            main.ONOSbench.onosDie(ONOSIp[node])
-
-        MN1Ip = ONOSIp[len(ONOSIp) -1]
-        BENCHIp = ONOSIp[len(ONOSIp) -2]
-
-        #Uninstall everywhere
-        main.step( "Cleaning Enviornment..." )
-        for i in range(maxNodes):
-            main.log.info(" Uninstalling ONOS " + str(i) )
-            main.ONOSbench.onosUninstall( ONOSIp[i] )
-        main.log.info("Sleep 10 second for uninstall to settle...")
-        time.sleep(10)
-        main.ONOSbench.handle.sendline(" ")
-        main.ONOSbench.handle.expect(":~")
-
-        #construct the cell file
-        main.log.info("Creating cell file")
-        cellIp = []
-        for node in range (clusterCount):
-            cellIp.append(ONOSIp[node])
-
-        main.ONOSbench.createCellFile("localhost",cellName,MN1Ip,str(Apps), cellIp)
-
-        main.step( "Set Cell" )
-        main.ONOSbench.setCell(cellName)
-
-        myDistribution = []
-        for node in range (clusterCount):
-            myDistribution.append(numSwitches[node])
+        main.log.info( "NODE COUNT = %s" % main.numCtrls )
+        main.ONOSbench.createCellFile(main.ONOSbench.ip_address,
+                                      main.cellName,
+                                      main.MN1Ip,
+                                      main.Apps,
+                                      main.ONOSip)
+        main.step( "Apply cell to environment" )
+        cellResult = main.ONOSbench.setCell( main.cellName )
+        verifyResult = main.ONOSbench.verifyCell()
+        stepResult = cellResult and verifyResult
+        utilities.assert_equals(expect=main.TRUE,
+                                actual=stepResult,
+                                onpass="Successfully applied cell to " + \
+                                       "environment",
+                                onfail="Failed to apply cell to environment ")
 
         main.step( "Creating ONOS package" )
         packageResult = main.ONOSbench.onosPackage()
+        stepResult = packageResult
+        utilities.assert_equals(expect=main.TRUE,
+                                actual=stepResult,
+                                onpass="Successfully created ONOS package",
+                                onfail="Failed to create ONOS package")
 
-        main.step( "verify cells" )
-        verifyCellResult = main.ONOSbench.verifyCell()
+        main.step( "Uninstall ONOS package on all Nodes" )
+        uninstallResult = main.TRUE
+        for i in range( int( main.numCtrls ) ):
+            main.log.info( "Uninstalling package on ONOS Node IP: " + main.ONOSip[i] )
+            u_result = main.ONOSbench.onosUninstall( main.ONOSip[i] )
+            utilities.assert_equals(expect=main.TRUE, actual=u_result,
+                                    onpass="Test step PASS",
+                                    onfail="Test step FAIL")
+            uninstallResult = ( uninstallResult and u_result )
 
-        main.log.report( "Initializeing " + str( clusterCount ) + " node cluster." )
-        for node in range(clusterCount):
-            main.log.info("Starting ONOS " + str(node) + " at IP: " + ONOSIp[node])
-            main.ONOSbench.onosInstall( ONOSIp[node])
+        main.step( "Install ONOS package on all Nodes" )
+        installResult = main.TRUE
+        for i in range( int( main.numCtrls ) ):
+            main.log.info( "Installing package on ONOS Node IP: " + main.ONOSip[i] )
+            i_result = main.ONOSbench.onosInstall(node=main.ONOSip[i])
+            utilities.assert_equals(expect=main.TRUE, actual=i_result,
+                                    onpass="Test step PASS",
+                                    onfail="Test step FAIL")
+            installResult = installResult and i_result
 
-        for node in range(clusterCount):
-            for i in range( 2 ):
-                isup = main.ONOSbench.isup( ONOSIp[node] )
-                if isup:
-                    main.log.info("ONOS " + str(node) + " is up\n")
-                    break
-            if not isup:
-                main.log.report( "ONOS " + str(node) + " didn't start!" )
-        main.log.info("Startup sequence complete")
+        main.step( "Verify ONOS nodes UP status" )
+        statusResult = main.TRUE
+        for i in range( int( main.numCtrls ) ):
+            main.log.info( "ONOS Node " + main.ONOSip[i] + " status:" )
+            onos_status = main.ONOSbench.onosStatus(node=main.ONOSip[i])
+            utilities.assert_equals(expect=main.TRUE, actual=onos_status,
+                                    onpass="Test step PASS",
+                                    onfail="Test step FAIL")
+            statusResult = (statusResult and onos_status)
+        time.sleep(2)
+        main.step( "Start ONOS cli using thread" )
+        startCliResult = main.TRUE
+        pool = []
+        main.threadID = 0
+        for i in range(int(main.numCtrls)):
+            t = main.Thread(target=main.CLIs[i].startOnosCli,
+                            threadID=main.threadID,
+                            name="startOnosCli",
+                            args=[main.ONOSip[i]],
+                            kwargs={"onosStartTimeout": main.timeout})
+            pool.append(t)
+            t.start()
+            main.threadID = main.threadID + 1
+        for t in pool:
+            t.join()
+            startCliResult = startCliResult and t.result
+        time.sleep( main.startUpSleep )
 
-        time.sleep(20)
+        # config apps
+        main.CLIs[0].setCfg( "org.onosproject.store.flow.impl.DistributedFlowRuleStore",
+                            "backupEnabled " + main.flowRuleBU )
+        main.CLIs[0].setCfg( "org.onosproject.net.intent.impl.IntentManager",
+                                  "skipReleaseResourcesOnWithdrawal " + main.skipRelRsrc )
+        main.CLIs[0].setCfg( "org.onosproject.provider.nil.NullProviders", "deviceCount " + str(int(main.numCtrls*10)) )
+        main.CLIs[0].setCfg( "org.onosproject.provider.nil.NullProviders", "topoShape linear" )
+        main.CLIs[0].setCfg( "org.onosproject.provider.nil.NullProviders", "enabled true" )
+        if main.flowObj:
+            main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
+                                "useFlowObjectives", value="true")
+        time.sleep( main.startUpSleep )
 
-        main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.store.flow.impl.DistributedFlowRuleStore", "backupEnabled " + str(flowRuleBU))
-        main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.net.intent.impl.IntentManager", "skipReleaseResourcesOnWithdrawal " + skipRelRsrc)
-        devices = int(clusterCount)*10
+        # balanceMasters
+        main.CLIs[0].balanceMasters()
+        time.sleep( main.startUpSleep )
 
-        main.step("Setting up null provider")
-        for i in range(3):
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "deviceCount " + str(devices))
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "topoShape linear")
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "enabled true")
-            time.sleep(5)
-
-            main.ONOSbench.handle.sendline("onos $OC1 summary")
-            main.ONOSbench.handle.expect(":~")
-
-            before = main.ONOSbench.handle.before
-            if ("devices=" + str(devices)) in before:
-                break
-
-        main.ONOSbench.handle.sendline("""onos $OC1 "balance-masters" """)
-        main.ONOSbench.handle.expect(":~")
-        print main.ONOSbench.handle.before
-        time.sleep(5)
-
-        for i in range(3):
-            passed = main.ONOSbench.verifySummary( ONOSIp[0] )
-            if passed:
-                main.log.info("Clusters have converged")
-                break
-            else:
-                main.log.error("Clusters have not converged, retying...")
-            time.sleep(3)
-
-        main.ONOSbench.logReport(ONOSIp[1], ["ERROR", "WARNING", "EXCEPT"])
-
-    def CASE2( self, main ):
-        import time
-        import json
-        import string
-        import csv
+    def CASE2(self, main):
         import numpy
-        import os.path
 
-        global currentNeighbors
-        neighbors = []
+        main.log.info( "Cluster Count = " + str( main.numCtrls ) )
+        # adjust neighbors
+        if main.numCtrls == 1:
+            main.neighbors = "0"
+            main.log.info( "Neighbors: 0" )
+        elif main.neighbors != "0":
+            main.neighbors = "0"
+            main.log.info( "Neighbors: 0" )
+        elif main.neighbors == "0":
+            main.neighbors = str( main.numCtrls - 1 )
+            main.log.info( "Neighbors: " + main.neighbors )
 
-        try:
-            currentNeighbors
-        except:
-            currentNeighbors = "0"
-            neighbors = ['0']
-        else:
-            if currentNeighbors == "r":      #reset
-                currentNeighbors = "a"
-                neighbors = ['0']
-            else:
-                currentNeighbors = "r"
-                neighbors = ['a']
+        main.log.info( "Config intent-perf app" )
+        main.CLIs[0].setCfg( "org.onosproject.intentperf.IntentPerfInstaller", "numKeys " + main.numKeys )
+        main.CLIs[0].setCfg( "org.onosproject.intentperf.IntentPerfInstaller", "numNeighbors " + str( main.neighbors ) )
+        main.CLIs[0].setCfg( "org.onosproject.intentperf.IntentPerfInstaller", "cyclePeriod " + main.cyclePeriod )
 
-        if clusterCount == 1:
-            currentNeighbors = "r"
+        main.log.info( "Starting intent-perf test for " + str(main.testDuration) + " seconds..." )
+        main.CLIs[0].sendline( "intent-perf-start" )
+        stop = time.time() + float( main.testDuration )
 
-        main.log.info("Cluster Count = " + str(clusterCount))
+        while time.time() < stop:
+            time.sleep(15)
+            result = main.CLIs[0].getIntentPerfSummary()
+            if result:
+                for ip in main.ONOSip:
+                    main.log.info( "Node {} Overall Rate: {}".format( ip, result[ip] ) )
+        main.log.info( "Stop intent-perf" )
+        for node in main.CLIs:
+            node.sendline( "intent-perf-stop" )
+        if result:
+            for ip in main.ONOSip:
+                main.log.info( "Node {} final Overall Rate: {}".format( ip, result[ip] ) )
 
-        intentsRate = main.params['METRICS']['intents_rate']
-        intentsWithdrawn = main.params[ 'METRICS' ][ 'intents_withdrawn' ]
-        intentsFailed  = main.params[ 'METRICS' ][ 'intents_failed' ]
-        testDuration = main.params[ 'TEST' ][ 'duration' ]
-        logInterval = main.params[ 'TEST' ][ 'log_interval' ]
-        debug = main.params[ 'debugMode' ]
-        numKeys = main.params[ 'TEST' ][ 'numKeys' ]
-        cyclePeriod = main.params[ 'TEST' ][ 'cyclePeriod' ]
-        #neighbors = (main.params[ 'TEST' ][ 'neighbors' ]).split(",")
-        metricList = [intentsRate, intentsWithdrawn, intentsFailed]
-
-        for n in range(0, len(neighbors)):
-            if neighbors[n] == 'a':
-                neighbors[n] = str(clusterCount -1)
-                if int(clusterCount) == 1:
-                    neighbors = neighbors.pop()
-
-        for n in neighbors:
-            main.log.info("Run with " + n + " neighbors")
-            time.sleep(5)
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller numKeys " + numKeys )
-            main.ONOSbench.handle.expect(":~")
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller numNeighbors " + n )
-            main.ONOSbench.handle.expect(":~")
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller cyclePeriod " + cyclePeriod )
-            main.ONOSbench.handle.expect(":~")
-
-            cmd = "onos $OC1 intent-perf-start"
-            main.ONOSbench.handle.sendline(cmd)
-            main.ONOSbench.handle.expect(":~")
-            main.log.info("Starting ONOS (all nodes)  intent-perf from $OC1" )
-
-            main.log.info( "Starting test loop for " + str(testDuration) + " seconds...\n" )
-            stop = time.time() + float( testDuration )
-
-            while time.time() < stop:
-                time.sleep( float( logInterval ) )
-                groupResult = []
-                for node in range (1, clusterCount + 1):
-                    groupResult.append(0)
-
-                    cmd = " onos-ssh $OC" + str(node) +  """ cat /opt/onos/log/karaf.log | grep "Throughput:" | tail -1  """
-                    main.log.info("COMMAND: " + str(cmd))
-
-                    x = 0
-                    while True:
-                        main.ONOSbench.handle.sendline(cmd)
-                        time.sleep(6)
-                        main.ONOSbench.handle.expect(":~")
-                        raw = main.ONOSbench.handle.before
-                        if "OVERALL=" in raw:
-                            break
-                        x += 1
-                        if x > 10:
-                            main.log.error("Expected output not being recieved... continuing")
-                            break
-                        time.sleep(2)
-
-                    raw = raw.splitlines()
-                    splitResults = []
-                    for line in raw:
-                        splitResults.extend(line.split(" "))
-
-                    myResult = "--"
-                    for field in splitResults:
-                        if "OVERALL" in field:
-                            myResult = field
-
-                    if myResult == "--":
-                        main.log.error("Parsing/Pexpect error\n" + str(splitResults))
-
-                    myResult = myResult.replace(";", "")
-                    myResult = myResult.replace("OVERALL=","")
-                    myResult = float(myResult)
-                    groupResult[len(groupResult) -1] = myResult
-
-                    main.log.info("Node " + str(node) + " overall rate: " + str(myResult))
-
-                clusterTotal = str(numpy.sum(groupResult))
-                main.log.report("Results from this round of polling: " + str(groupResult))
-                main.log.report("Cluster Total: " + clusterTotal + "\n")
-
-            cmd = "onos $OC1 intent-perf-stop"
-            main.ONOSbench.handle.sendline(cmd)
-            main.ONOSbench.handle.expect(":~")
-            main.log.info("Stopping intentperf" )
-
-            with open("/tmp/IntentEventTPDB", "a") as resultsDB:
-                for node in groupResult:
-                    resultString = "'" + commit + "',"
-                    resultString += "'1gig',"
-                    resultString += str(clusterCount) + ","
-                    resultString += "'baremetal" + str(int(groupResult.index(node)) + 1) + "',"
-                    resultString += n + ","
-                    resultString += str(node) + ","
-                    resultString += str(0) + "\n" #no stddev
-                    resultsDB.write(resultString)
-
-            resultsDB.close()
-
-            main.ONOSbench.logReport(ONOSIp[1], ["ERROR", "WARNING", "EXCEPT"])
-
+        with open( main.dbFileName, "a" ) as resultDB:
+            for nodes in range( 0, len( main.ONOSip ) ):
+                resultString = "'" + main.commit + "',"
+                resultString += "'1gig',"
+                resultString += str(main.numCtrls) + ","
+                resultString += "'baremetal" + str( nodes+1 ) + "',"
+                resultString += main.neighbors + ","
+                resultString += result[ main.ONOSip[ nodes ] ]+","
+                resultString += str(0) + "\n"  # no stddev
+                resultDB.write( resultString )
+        resultDB.close()
diff --git a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/README b/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/README
deleted file mode 100644
index 30a2549..0000000
--- a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/README
+++ /dev/null
@@ -1,28 +0,0 @@
-INTENT EVENT THROUGHPUT
-
-Summary: This is a performance test suite to test the intent
-    throughput capabilities of ONOS with various controller cluster sizes.
-
-Pre-requisites: To run out-of-the box this test requires 7 NODES. OC1->OC7
-    must be set before initiating the test. Passwordless login must be set
-    from TestStation "sdn" root user.
-
-***If you wish to run this test with less than 7 nodes the following
-    alterations must be made:
-
-NOTE: Only scale sizes 1,3,5 and 7 will be functional
-
-Modifying .params file:
--- Remove any values in the comma separated list in the
-    <scale> tag that are above your desired cluster size.
-
--- Remove one instance of “1,2” from the <testcases>
-    tag for each value you removed from <scale> (case 1 and 2 are each
-    called once for each scale value)
-
--- Change the value in the <max> tag to your desired scale size (1,3, or 5)
-
-Modifying .topo file:
--- Change the <ONOSbench/COMPONENTS/nodes> tag to your desired scale size
-
--- Remove all unneeded <ONOS#cli> tags and their contents
diff --git a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.params b/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.params
deleted file mode 100644
index 729e3ef..0000000
--- a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.params
+++ /dev/null
@@ -1,71 +0,0 @@
-<PARAMS>
-
-    <testcases>1,3,2,1,3,2,1,3,2,1,3,2,1,3,2,1,3,2,1,3,2</testcases>
-
-    <debugMode></debugMode>  #nothing means false
-
-    <ENV>
-    <cellName>intentTP</cellName>
-    <cellApps>drivers,null,intentperf</cellApps>
-    </ENV>
-
-    <SCALE>1,3,3,5,5,7,7</SCALE>
-    <max>7</max>
-
-    <GIT>
-        <autopull>off</autopull>
-        <checkout>master</checkout>
-    </GIT>
-
-    <CTRL>
-        <USER>sdn</USER>
-
-        <ip1>OC1</ip1>
-        <port1>6653</port1>
-
-        <ip2>OC2</ip2>
-        <port2>6653</port2>
-
-        <ip3>OC3</ip3>
-        <port3>6653</port3>
-
-        <ip4>OC4</ip4>
-        <port4>6653</port4>
-
-        <ip5>OC5</ip5>
-        <port5>6653</port5>
-
-        <ip6>OC6</ip6>
-        <port6>6653</port6>
-
-         <ip7>OC7</ip7>
-        <port7>6653</port7>
-    </CTRL>
-
-    <MN><ip1>OCN</ip1></MN>
-
-    <BENCH>
-        <user>sdn</user>
-        <ip1>OCN</ip1>
-    </BENCH>
-
-    <TEST>
-        <loadFrom>1,1,1,1,1,1,1</loadFrom>                                     #generate load on server, 1 = generator on
-        <numSwitches>10,10,10,10,10,10,10</numSwitches>
-        <skipCleanInstall>yes</skipCleanInstall>
-        <duration>400</duration>
-        <log_interval>10</log_interval>
-        <numKeys>40000</numKeys>
-        <cyclePeriod>1000</cyclePeriod>
-        <neighbors>0,a</neighbors>           #a == all nodes (-1)
-        <flowRuleBUEnabled>true</flowRuleBUEnabled>
-        <skipReleaseResourcesOnWithdrawal>true</skipReleaseResourcesOnWithdrawal>
-    </TEST>
-
-    <METRICS>
-        <intents_rate>intents-events-metrics|grep "Intent Installed Events"|cut -d ' ' -f7</intents_rate>
-        <intents_withdrawn>intents-events-metrics|grep "Intent Withdrawn Events"|cut -d ' ' -f7</intents_withdrawn>
-        <intents_failed>intents-events-metrics|grep "Intent Failed Events"|cut -d ' ' -f7</intents_failed>
-    </METRICS>
-
-</PARAMS>
diff --git a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.py b/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.py
deleted file mode 100644
index 1a6e3ab..0000000
--- a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.py
+++ /dev/null
@@ -1,335 +0,0 @@
-# ScaleOutTemplate
-#
-# CASE1 starts number of nodes specified in param file
-#
-# cameron@onlab.us
-
-import sys
-import os.path
-import time
-
-
-class SCPFintentEventTpWithFlowObj:
-
-    def __init__( self ):
-        self.default = ''
-
-    def CASE1( self, main ):
-        import sys
-        import os.path
-        import time
-
-        global init
-        try:
-            if type(init) is not bool:
-                init = False
-        except NameError:
-            init = False
-
-        #Load values from params file
-        checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
-        gitPull = main.params[ 'GIT' ][ 'autopull' ]
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        Apps = main.params[ 'ENV' ][ 'cellApps' ]
-        BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
-        BENCHUser = main.params[ 'BENCH' ][ 'user' ]
-        MN1Ip = main.params[ 'MN' ][ 'ip1' ]
-        maxNodes = int(main.params[ 'max' ])
-        main.maxNodes = maxNodes
-        skipMvn = main.params[ 'TEST' ][ 'skipCleanInstall' ]
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        numSwitches = (main.params[ 'TEST' ][ 'numSwitches' ]).split(",")
-        flowRuleBU = main.params[ 'TEST' ][ 'flowRuleBUEnabled' ]
-        skipRelRsrc = main.params[ 'TEST'][ 'skipReleaseResourcesOnWithdrawal']
-        homeDir = os.path.expanduser('~')
-
-        main.exceptions = [0]*11
-        main.warnings = [0]*11
-        main.errors = [0]*11
-
-        # -- INIT SECTION, ONLY RUNS ONCE -- #
-        if init == False:
-            init = True
-            global clusterCount             #number of nodes running
-            global ONOSIp                   #list of ONOS IP addresses
-            global scale
-            global commit
-
-            clusterCount = 0
-            ONOSIp = main.ONOSbench.getOnosIps()
-            print ONOSIp
-            print main.ONOSbench.onosIps.values()
-
-            scale = (main.params[ 'SCALE' ]).split(",")
-            clusterCount = int(scale[0])
-
-            #Populate ONOSIp with ips from params
-            ONOSIp.extend(main.ONOSbench.getOnosIps())
-
-            #mvn clean install, for debugging set param 'skipCleanInstall' to yes to speed up test
-            if skipMvn != "yes":
-                mvnResult = main.ONOSbench.cleanInstall()
-
-            #git
-            main.step( "Git checkout and pull " + checkoutBranch )
-            if gitPull == 'on':
-                checkoutResult = main.ONOSbench.gitCheckout( checkoutBranch )
-                pullResult = main.ONOSbench.gitPull()
-
-            else:
-                checkoutResult = main.TRUE
-                pullResult = main.TRUE
-                main.log.info( "Skipped git checkout and pull" )
-
-            main.step("Grabbing commit number")
-            commit = main.ONOSbench.getVersion()
-            commit = (commit.split(" "))[1]
-
-            main.step("Creating results file")
-            # Create results file with flow object
-            flowObjResultsDB = open("/tmp/IntentEventTPflowObjDB", "w+")
-            flowObjResultsDB.close()
-
-        # -- END OF INIT SECTION --#
-
-        main.step("Adjusting scale")
-        print str(scale)
-        print str(ONOSIp)
-        clusterCount = int(scale[0])
-        scale.remove(scale[0])
-
-        MN1Ip = ONOSIp[len(ONOSIp) -1]
-        BENCHIp = ONOSIp[len(ONOSIp) -2]
-
-        #kill off all onos processes
-        main.step("Safety check, killing all ONOS processes")
-        main.step("before initiating environment setup")
-        for node in range(maxNodes):
-            main.ONOSbench.onosDie(ONOSIp[node])
-
-        MN1Ip = ONOSIp[len(ONOSIp) -1]
-        BENCHIp = ONOSIp[len(ONOSIp) -2]
-
-        #Uninstall everywhere
-        main.step( "Cleaning Enviornment..." )
-        for i in range(maxNodes):
-            main.log.info(" Uninstalling ONOS " + str(i) )
-            main.ONOSbench.onosUninstall( ONOSIp[i] )
-        main.log.info("Sleep 10 second for uninstall to settle...")
-        time.sleep(10)
-        main.ONOSbench.handle.sendline(" ")
-        main.ONOSbench.handle.expect(":~")
-
-        #construct the cell file
-        main.log.info("Creating cell file")
-        cellIp = []
-        for node in range (clusterCount):
-            cellIp.append(ONOSIp[node])
-
-        main.ONOSbench.createCellFile("localhost",cellName,MN1Ip,str(Apps), cellIp)
-
-        main.step( "Set Cell" )
-        main.ONOSbench.setCell(cellName)
-
-        myDistribution = []
-        for node in range (clusterCount):
-            myDistribution.append(numSwitches[node])
-
-        main.step( "Creating ONOS package" )
-        packageResult = main.ONOSbench.onosPackage()
-
-        main.step( "verify cells" )
-        verifyCellResult = main.ONOSbench.verifyCell()
-
-        main.log.report( "Initializeing " + str( clusterCount ) + " node cluster." )
-        for node in range(clusterCount):
-            main.log.info("Starting ONOS " + str(node) + " at IP: " + ONOSIp[node])
-            main.ONOSbench.onosInstall( ONOSIp[node])
-
-        for node in range(clusterCount):
-            for i in range( 2 ):
-                isup = main.ONOSbench.isup( ONOSIp[node] )
-                if isup:
-                    main.log.info("ONOS " + str(node) + " is up\n")
-                    break
-            if not isup:
-                main.log.report( "ONOS " + str(node) + " didn't start!" )
-        main.log.info("Startup sequence complete")
-
-        time.sleep(20)
-
-        main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.store.flow.impl.DistributedFlowRuleStore", "backupEnabled " + str(flowRuleBU))
-        main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.net.intent.impl.IntentManager", "skipReleaseResourcesOnWithdrawal " + skipRelRsrc)
-        devices = int(clusterCount)*10
-
-        main.step("Setting up null provider")
-        for i in range(3):
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "deviceCount " + str(devices))
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "topoShape linear")
-            main.ONOSbench.onosCfgSet( ONOSIp[0], "org.onosproject.provider.nil.NullProviders", "enabled true")
-            time.sleep(5)
-
-            main.ONOSbench.handle.sendline("onos $OC1 summary")
-            main.ONOSbench.handle.expect(":~")
-
-            before = main.ONOSbench.handle.before
-            if ("devices=" + str(devices)) in before:
-                break
-
-        main.ONOSbench.handle.sendline("""onos $OC1 "balance-masters" """)
-        main.ONOSbench.handle.expect(":~")
-        print main.ONOSbench.handle.before
-
-        for i in range(3):
-            passed = main.ONOSbench.verifySummary( ONOSIp[0] )
-            if passed:
-                main.log.info("Clusters have converged")
-                break
-            else:
-                main.log.error("Clusters have not converged, retying...")
-            time.sleep(3)
-
-        main.ONOSbench.logReport(ONOSIp[1], ["ERROR", "WARNING", "EXCEPT"])
-
-    def CASE2( self, main ):
-        import time
-        import json
-        import string
-        import csv
-        import numpy
-        import os.path
-
-        global currentNeighbors
-        neighbors = []
-
-        try:
-            currentNeighbors
-        except:
-            currentNeighbors = "0"
-            neighbors = ['0']
-        else:
-            if currentNeighbors == "r":      #reset
-                currentNeighbors = "a"
-                neighbors = ['0']
-            else:
-                currentNeighbors = "r"
-                neighbors = ['a']
-
-        if clusterCount == 1:
-            currentNeighbors = "r"
-
-        main.log.info("Cluster Count = " + str(clusterCount))
-
-        intentsRate = main.params['METRICS']['intents_rate']
-        intentsWithdrawn = main.params[ 'METRICS' ][ 'intents_withdrawn' ]
-        intentsFailed  = main.params[ 'METRICS' ][ 'intents_failed' ]
-        testDuration = main.params[ 'TEST' ][ 'duration' ]
-        logInterval = main.params[ 'TEST' ][ 'log_interval' ]
-        debug = main.params[ 'debugMode' ]
-        numKeys = main.params[ 'TEST' ][ 'numKeys' ]
-        cyclePeriod = main.params[ 'TEST' ][ 'cyclePeriod' ]
-        #neighbors = (main.params[ 'TEST' ][ 'neighbors' ]).split(",")
-        metricList = [intentsRate, intentsWithdrawn, intentsFailed]
-
-        for n in range(0, len(neighbors)):
-            if neighbors[n] == 'a':
-                neighbors[n] = str(clusterCount -1)
-                if int(clusterCount) == 1:
-                    neighbors = neighbors.pop()
-
-        for n in neighbors:
-            main.log.info("Run with " + n + " neighbors")
-            time.sleep(5)
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller numKeys " + numKeys )
-            main.ONOSbench.handle.expect(":~")
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller numNeighbors " + n )
-            main.ONOSbench.handle.expect(":~")
-            main.ONOSbench.handle.sendline("onos $OC1 cfg set org.onosproject.intentperf.IntentPerfInstaller cyclePeriod " + cyclePeriod )
-            main.ONOSbench.handle.expect(":~")
-
-            cmd = "onos $OC1 intent-perf-start"
-            main.ONOSbench.handle.sendline(cmd)
-            main.ONOSbench.handle.expect(":~")
-            main.log.info("Starting ONOS (all nodes)  intent-perf from $OC1" )
-
-            main.log.info( "Starting test loop for " + str(testDuration) + " seconds...\n" )
-            stop = time.time() + float( testDuration )
-
-            while time.time() < stop:
-                time.sleep( float( logInterval ) )
-                groupResult = []
-                for node in range (1, clusterCount + 1):
-                    groupResult.append(0)
-
-                    cmd = " onos-ssh $OC" + str(node) +  """ cat /opt/onos/log/karaf.log | grep "Throughput:" | tail -1  """
-                    main.log.info("COMMAND: " + str(cmd))
-
-                    x = 0
-                    while True:
-                        main.ONOSbench.handle.sendline(cmd)
-                        time.sleep(6)
-                        main.ONOSbench.handle.expect(":~")
-                        raw = main.ONOSbench.handle.before
-                        if "OVERALL=" in raw:
-                            break
-                        x += 1
-                        if x > 10:
-                            main.log.error("Expected output not being recieved... continuing")
-                            break
-                        time.sleep(2)
-
-                    raw = raw.splitlines()
-                    splitResults = []
-                    for line in raw:
-                        splitResults.extend(line.split(" "))
-
-                    myResult = "--"
-                    for field in splitResults:
-                        if "OVERALL" in field:
-                            myResult = field
-
-                    if myResult == "--":
-                        main.log.error("Parsing/Pexpect error\n" + str(splitResults))
-
-                    myResult = myResult.replace(";", "")
-                    myResult = myResult.replace("OVERALL=","")
-                    myResult = float(myResult)
-                    groupResult[len(groupResult) -1] = myResult
-
-                    main.log.info("Node " + str(node) + " overall rate: " + str(myResult))
-
-                clusterTotal = str(numpy.sum(groupResult))
-                main.log.report("Results from this round of polling: " + str(groupResult))
-                main.log.report("Cluster Total: " + clusterTotal + "\n")
-
-            cmd = "onos $OC1 intent-perf-stop"
-            main.ONOSbench.handle.sendline(cmd)
-            main.ONOSbench.handle.expect(":~")
-            main.log.info("Stopping intentperf" )
-
-            with open("/tmp/IntentEventTPflowObjDB", "a") as resultsDB:
-                for node in groupResult:
-                    resultString = "'" + commit + "',"
-                    resultString += "'1gig',"
-                    resultString += str(clusterCount) + ","
-                    resultString += "'baremetal" + str(int(groupResult.index(node)) + 1) + "',"
-                    resultString += n + ","
-                    resultString += str(node) + ","
-                    resultString += str(0) + "\n" #no stddev
-                    resultsDB.write(resultString)
-            resultsDB.close()
-            main.ONOSbench.logReport(ONOSIp[1], ["ERROR", "WARNING", "EXCEPT"])
-
-    def CASE3( self, main ):
-        main.step("Set Intent Compiler use Flow Object")
-        stepResult = utilities.retry( main.ONOSbench.onosCfgSet,
-                                      main.FALSE,
-                                      args=[ ONOSIp[0],
-                                        "org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
-                                        "useFlowObjectives true" ],
-                                      sleep=3,
-                                      attempts=3 )
-        utilities.assert_equals( expect = main.TRUE,
-                                  actual = stepResult,
-                                  onpass = "Successfully set Intent compiler use Flow object",
-                                  onfail = "Failed to set up" )
diff --git a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.topo b/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.topo
deleted file mode 100644
index 915d033..0000000
--- a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/SCPFintentEventTpWithFlowObj.topo
+++ /dev/null
@@ -1,147 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-
-        <ONOSbench>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-                <home>~/onos</home>
-                <nodes>7</nodes> 
-            </COMPONENTS>
-        </ONOSbench>
-
-        <ONOS1cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1cli>
-
-        <ONOS2cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2cli>
-
-        <ONOS3cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3cli>
-
-        <ONOS4cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4cli>
-
-        <ONOS5cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5cli>
-
-        <ONOS6cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6cli>
-
-        <ONOS7cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7cli>
-
-        <ONOS1>
-            <host>OC1</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>9</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1>
-
-        <ONOS2>
-            <host>OC2</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2>
-
-        <ONOS3>
-            <host>OC3</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>11</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3>
-
-        <ONOS4>
-            <host>OC4</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>12</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4>
-
-    
-        <ONOS5>
-            <host>OC5</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>13</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5>
-
-        <ONOS6>
-            <host>OC6</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>14</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6>
-
-        <ONOS7>
-            <host>OC7</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>15</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7>
-
-    </COMPONENT>
-
-</TOPOLOGY>
- 
diff --git a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/__init__.py b/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/SCPF/SCPFintentEventTpWithFlowObj/__init__.py
+++ /dev/null
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.params b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.params
index fe61b9a..8843c2f 100644
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.params
+++ b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.params
@@ -18,7 +18,8 @@
         <ingress>null:0000000000000001/6</ingress>
         <egress>null:0000000000000007/5</egress>
         <debug>False</debug>
-    </TEST>
+        <flowObj>False</flowObj>
+     </TEST>
 
     <GIT>
         <gitPull>off</gitPull>
@@ -26,7 +27,8 @@
     </GIT>
 
     <DATABASE>
-        <file>/tmp/IntentInstallWithdrawLatDB</file>
+        <dbName>/tmp/IntentInstallWithdrawLatDB</dbName>
+        <dbFlowObj>/tmp/IntentInstallWithdrawLatDBWFO</dbFlowObj>
     </DATABASE>
     <ATTEMPTS>
         <verify>3</verify>
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
index ef50ab3..3e84aad 100644
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
+++ b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
@@ -62,7 +62,6 @@
         main.maxNodes = int(main.params['max'])
         main.cellName = main.params['ENV']['cellName']
         main.scale = (main.params['SCALE']).split(",")
-        main.dbFileName = main.params['DATABASE']['file']
         main.timeout = int(main.params['SLEEP']['timeout'])
         main.startUpSleep = int(main.params['SLEEP']['startup'])
         main.installSleep = int(main.params['SLEEP']['install'])
@@ -74,6 +73,15 @@
         main.ingress = main.params['TEST']['ingress']
         main.egress = main.params['TEST']['egress']
         main.debug = main.params['TEST']['debug']
+        main.flowObj = main.params['TEST']['flowObj']
+
+        if main.flowObj == "True":
+            main.flowObj = True
+            main.dbFileName = main.params['DATABASE']['dbFlowObj']
+        else:
+            main.flowObj = False
+            main.dbFileName = main.params['DATABASE']['dbName']
+
         for i in range(0, len(main.intentsList)):
             main.intentsList[i] = int(main.intentsList[i])
         # Create DataBase file
@@ -191,6 +199,9 @@
         main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "topoShape", value="linear")
         main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
         main.CLIs[0].setCfg("org.onosproject.net.intent.impl.IntentManager", "skipReleaseResourcesOnWithdrawal", value="true")
+        if main.flowObj:
+            main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
+                                "useFlowObjectives", value="true")
         time.sleep(main.startUpSleep)
 
         # balanceMasters
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.params b/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.params
deleted file mode 100644
index 6eeed39..0000000
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.params
+++ /dev/null
@@ -1,82 +0,0 @@
-<PARAMS>
-
-    <testcases>0,1,2,1,2,1,2,1,2</testcases>
-
-    <SCALE>1,3,5,7</SCALE>
-    <max>7</max>
-
-    <ENV>
-        <cellName>IntentInstallWithdrawCell</cellName>
-        <cellApps>drivers,null</cellApps>
-    </ENV>
-
-    <TEST>
-        <skipCleanInstall>yes</skipCleanInstall>
-        <warmUp>5</warmUp>
-        <sampleSize>20</sampleSize>
-        <intents>1,100</intents>                       #list format, will be split on ','
-        <ingress>null:0000000000000001/6</ingress>
-        <egress>null:0000000000000007/5</egress>
-        <debug>False</debug>
-    </TEST>
-
-    <GIT>
-        <gitPull>off</gitPull>
-        <gitBranch>master</gitBranch>
-    </GIT>
-
-    <DATABASE>
-        <file>/tmp/IntentInstallWithdrawLatDBWFO</file>
-    </DATABASE>
-    <ATTEMPTS>
-        <verify>3</verify>
-    </ATTEMPTS>
-
-    <SLEEP>
-        <startup>10</startup>
-        <install>10</install>
-        <verify>3</verify>
-        <reroute>3</reroute>
-        # timeout for pexpect
-        <timeout>300</timeout>
-    </SLEEP>
-
-    <CTRL>
-        <USER>sdn</USER>
-
-        <ip1>OC1</ip1>
-        <port1>6653</port1>
-
-        <ip2>OC2</ip2>
-        <port2>6653</port2>
-
-        <ip3>OC3</ip3>
-        <port3>6653</port3>
-
-        <ip4>OC4</ip4>
-        <port4>6653</port4>
-
-        <ip5>OC5</ip5>
-        <port5>6653</port5>
-
-        <ip6>OC6</ip6>
-        <port6>6653</port6>
-
-        <ip7>OC7</ip7>
-        <port7>6653</port7>
-
-    </CTRL>
-
-    <MN>
-        <ip1>OCN</ip1>
-    </MN>
-
-    <BENCH>
-        <user>sdn</user>
-        <ip1>localhost</ip1>
-    </BENCH>
-
-    <JSON>
-    </JSON>
-
-</PARAMS>
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.py b/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.py
deleted file mode 100644
index 37da138..0000000
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.py
+++ /dev/null
@@ -1,324 +0,0 @@
-"""
-SCPFintentInstallWithdrawLatWithFlowObj:
-    - Test the latency of intent installed and withdrawn
-    - Use Push-test-intents command to push intents
-    - Use Null provider with 7 devices and linear topology
-    - Always push intents between 1/6 and 7/5
-    - The batch size is defined in parm file. (default 1,100)
-    - org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator useFlowObjectives set
-     to true
-    yunpeng@onlab.us
-"""
-
-import sys
-import os.path
-
-
-class SCPFintentInstallWithdrawLatWithFlowObj:
-    def __init__( self ):
-        self.default = ''
-
-    def CASE0( self, main ):
-        '''
-        - GIT
-        - BUILDING ONOS
-            Pull specific ONOS branch, then Build ONOS ono ONOS Bench.
-            This step is usually skipped. Because in a Jenkins driven automated
-            test env. We want Jenkins jobs to pull&build for flexibility to handle
-            different versions of ONOS.
-        - Construct tests variables
-        '''
-        gitPull = main.params['GIT']['gitPull']
-        gitBranch = main.params['GIT']['gitBranch']
-
-        main.case("Pull onos branch and build onos on Teststation.")
-
-        if gitPull == 'True':
-            main.step("Git Checkout ONOS branch: " + gitBranch)
-            stepResult = main.ONOSbench.gitCheckout(branch=gitBranch)
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully checkout onos branch.",
-                                    onfail="Failed to checkout onos branch. Exiting test...")
-            if not stepResult: main.exit()
-
-            main.step("Git Pull on ONOS branch:" + gitBranch)
-            stepResult = main.ONOSbench.gitPull()
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully pull onos. ",
-                                    onfail="Failed to pull onos. Exiting test ...")
-            if not stepResult: main.exit()
-
-            main.step("Building ONOS branch: " + gitBranch)
-            stepResult = main.ONOSbench.cleanInstall(skipTest=True)
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully build onos.",
-                                    onfail="Failed to build onos. Exiting test...")
-            if not stepResult: main.exit()
-
-        else:
-            main.log.warn("Skipped pulling onos and Skipped building ONOS")
-
-        main.apps = main.params['ENV']['cellApps']
-        main.BENCHUser = main.params['BENCH']['user']
-        main.BENCHIp = main.params['BENCH']['ip1']
-        main.MN1Ip = main.params['MN']['ip1']
-        main.maxNodes = int(main.params['max'])
-        main.cellName = main.params['ENV']['cellName']
-        main.scale = (main.params['SCALE']).split(",")
-        main.dbFileName = main.params['DATABASE']['file']
-        main.timeout = int(main.params['SLEEP']['timeout'])
-        main.startUpSleep = int(main.params['SLEEP']['startup'])
-        main.installSleep = int(main.params['SLEEP']['install'])
-        main.verifySleep = int(main.params['SLEEP']['verify'])
-        main.verifyAttempts = int(main.params['ATTEMPTS']['verify'])
-        main.sampleSize = int(main.params['TEST']['sampleSize'])
-        main.warmUp = int(main.params['TEST']['warmUp'])
-        main.intentsList = (main.params['TEST']['intents']).split(",")
-        main.ingress = main.params['TEST']['ingress']
-        main.egress = main.params['TEST']['egress']
-        main.debug = main.params['TEST']['debug']
-        for i in range(0, len(main.intentsList)):
-            main.intentsList[i] = int(main.intentsList[i])
-        # Create DataBase file
-        main.log.info("Create Database file " + main.dbFileName)
-        resultsDB = open(main.dbFileName, "w+")
-        resultsDB.close()
-
-    def CASE1( self, main ):
-        # Clean up test environment and set up
-        import time
-        main.log.info("Get ONOS cluster IP")
-        print(main.scale)
-        main.numCtrls = int(main.scale[0])
-        main.ONOSip = []
-        main.maxNumBatch = 0
-        main.AllONOSip = main.ONOSbench.getOnosIps()
-        for i in range(main.numCtrls):
-            main.ONOSip.append(main.AllONOSip[i])
-        main.log.info(main.ONOSip)
-        main.CLIs = []
-        main.log.info("Creating list of ONOS cli handles")
-        for i in range(main.numCtrls):
-            main.CLIs.append(getattr(main, 'ONOS%scli' % (i + 1)))
-
-        if not main.CLIs:
-            main.log.error("Failed to create the list of ONOS cli handles")
-            main.cleanup()
-            main.exit()
-
-        main.commit = main.ONOSbench.getVersion(report=True)
-        main.commit = main.commit.split(" ")[1]
-        main.log.info("Starting up %s node(s) ONOS cluster" % main.numCtrls)
-        main.log.info("Safety check, killing all ONOS processes" +
-                      " before initiating environment setup")
-
-        for i in range(main.numCtrls):
-            main.ONOSbench.onosDie(main.ONOSip[i])
-
-        main.log.info("NODE COUNT = %s" % main.numCtrls)
-        main.ONOSbench.createCellFile(main.ONOSbench.ip_address,
-                                      main.cellName,
-                                      main.MN1Ip,
-                                      main.apps,
-                                      main.ONOSip)
-        main.step("Apply cell to environment")
-        cellResult = main.ONOSbench.setCell(main.cellName)
-        verifyResult = main.ONOSbench.verifyCell()
-        stepResult = cellResult and verifyResult
-        utilities.assert_equals(expect=main.TRUE,
-                                actual=stepResult,
-                                onpass="Successfully applied cell to " + \
-                                       "environment",
-                                onfail="Failed to apply cell to environment ")
-
-        main.step("Creating ONOS package")
-        packageResult = main.ONOSbench.onosPackage()
-        stepResult = packageResult
-        utilities.assert_equals(expect=main.TRUE,
-                                actual=stepResult,
-                                onpass="Successfully created ONOS package",
-                                onfail="Failed to create ONOS package")
-
-        main.step("Uninstall ONOS package on all Nodes")
-        uninstallResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("Uninstalling package on ONOS Node IP: " + main.ONOSip[i])
-            u_result = main.ONOSbench.onosUninstall(main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=u_result,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            uninstallResult = (uninstallResult and u_result)
-
-        main.step("Install ONOS package on all Nodes")
-        installResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("Installing package on ONOS Node IP: " + main.ONOSip[i])
-            i_result = main.ONOSbench.onosInstall(node=main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=i_result,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            installResult = installResult and i_result
-
-        main.step("Verify ONOS nodes UP status")
-        statusResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("ONOS Node " + main.ONOSip[i] + " status:")
-            onos_status = main.ONOSbench.onosStatus(node=main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=onos_status,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            statusResult = (statusResult and onos_status)
-        time.sleep(2)
-        main.step("Start ONOS CLI on all nodes")
-        cliResult = main.TRUE
-        main.step(" Start ONOS cli using thread ")
-        startCliResult = main.TRUE
-        pool = []
-        main.threadID = 0
-        for i in range(int(main.numCtrls)):
-            t = main.Thread(target=main.CLIs[i].startOnosCli,
-                            threadID=main.threadID,
-                            name="startOnosCli",
-                            args=[main.ONOSip[i]],
-                            kwargs={"onosStartTimeout": main.timeout})
-            pool.append(t)
-            t.start()
-            main.threadID = main.threadID + 1
-        for t in pool:
-            t.join()
-            startCliResult = startCliResult and t.result
-        time.sleep(main.startUpSleep)
-
-        # configure apps
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=7)
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "topoShape", value="linear")
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-        main.CLIs[0].setCfg("org.onosproject.net.intent.impl.IntentManager",
-        "skipReleaseResourcesOnWithdrawal", value="true")
-        main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
-                            "useFlowObjectives", value="true")
-        time.sleep(main.startUpSleep)
-
-        # balanceMasters
-        main.CLIs[0].balanceMasters()
-        time.sleep(main.startUpSleep)
-
-    def CASE2( self, main ):
-        import time
-        import numpy
-        import json
-        print(main.intentsList)
-        for batchSize in main.intentsList:
-            main.log.report("Intent Batch size: {}".format(batchSize))
-            main.installLatList = []
-            main.withdrawLatList = []
-            validrun = 0
-            invalidrun = 0
-            # we use two variables to control the iteration
-            while validrun <= main.warmUp + main.sampleSize and invalidrun < 20:
-                if validrun >= main.warmUp:
-                    main.log.info("================================================")
-                    main.log.info("Starting test iteration " + str(validrun - main.warmUp))
-                    main.log.info("Total test iteration: " + str(invalidrun + validrun))
-                    main.log.info("================================================")
-                else:
-                    main.log.info("====================Warm Up=====================")
-
-                # push intents
-                installResult = main.CLIs[0].pushTestIntents(main.ingress, main.egress, batchSize,
-                                                             offset=1, options="-i", timeout=main.timeout,
-                                                             getResponse=True)
-                if type(installResult) is str:
-                    if "Failure" in installResult:
-                        main.log.error("Install Intents failure, ignore this iteration.")
-                        if validrun < main.warmUp:
-                            validrun += 1
-                            continue
-                        else:
-                            invalidrun += 1
-                            continue
-
-                    try:
-                        latency = int(installResult.split()[5])
-                        main.log.info(installResult)
-                    except:
-                        main.log.error("Failed to get latency, ignore this iteration.")
-                        main.log.error("Response from ONOS:")
-                        print(installResult)
-                        if validrun < main.warmUp:
-                            validrun += 1
-                            continue
-                        else:
-                            invalidrun += 1
-                            continue
-
-                    if validrun >= main.warmUp:
-                        main.installLatList.append(latency)
-                else:
-                    invalidrun += 1
-                    continue
-                time.sleep(2)
-                # Withdraw Intents
-                withdrawResult = main.CLIs[0].pushTestIntents(main.ingress, main.egress, batchSize,
-                                                              offset=1, options="-w", timeout=main.timeout,
-                                                              getResponse=True)
-
-                if type(withdrawResult) is str:
-                    if "Failure" in withdrawResult:
-                        main.log.error("withdraw Intents failure, ignore this iteration.")
-                        if validrun < main.warmUp:
-                            validrun += 1
-                            continue
-                        else:
-                            invalidrun += 1
-                            continue
-
-                    try:
-                        latency = int(withdrawResult.split()[5])
-                        main.log.info(withdrawResult)
-                    except:
-                        main.log.error("Failed to get latency, ignore this iteration.")
-                        main.log.error("Response from ONOS:")
-                        print(withdrawResult)
-                        if validrun < main.warmUp:
-                            validrun += 1
-                            continue
-                        else:
-                            invalidrun += 1
-                            continue
-
-                    if validrun >= main.warmUp:
-                        main.withdrawLatList.append(latency)
-                else:
-                    invalidrun += 1
-                    continue
-                time.sleep(2)
-                main.CLIs[0].purgeWithdrawnIntents()
-                validrun += 1
-            installave = numpy.average(main.installLatList)
-            installstd = numpy.std(main.installLatList)
-            withdrawave = numpy.average(main.withdrawLatList)
-            withdrawstd = numpy.std(main.withdrawLatList)
-            # log report
-            main.log.report("----------------------------------------------------")
-            main.log.report("Scale: " + str(main.numCtrls))
-            main.log.report("Intent batch: " + str(batchSize))
-            main.log.report("Install average: {}    std: {}".format(installave, installstd))
-            main.log.report("Withdraw average: {}   std: {}".format(withdrawave, withdrawstd))
-            # write result to database file
-            if not (numpy.isnan(installave) or numpy.isnan(installstd) or \
-                    numpy.isnan(withdrawstd) or numpy.isnan(withdrawave)):
-                databaseString = "'" + main.commit + "',"
-                databaseString += str(main.numCtrls) + ","
-                databaseString += str(batchSize) + ","
-                databaseString += str(installave) + ","
-                databaseString += str(installstd) + ","
-                databaseString += str(withdrawave) + ","
-                databaseString += str(withdrawstd) + "\n"
-                resultsDB = open(main.dbFileName, "a")
-                resultsDB.write(databaseString)
-                resultsDB.close()
-        del main.scale[0]
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.topo b/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.topo
deleted file mode 100644
index 915d033..0000000
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/SCPFintentInstallWithdrawLatWithFlowObj.topo
+++ /dev/null
@@ -1,147 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-
-        <ONOSbench>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-                <home>~/onos</home>
-                <nodes>7</nodes> 
-            </COMPONENTS>
-        </ONOSbench>
-
-        <ONOS1cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1cli>
-
-        <ONOS2cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2cli>
-
-        <ONOS3cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3cli>
-
-        <ONOS4cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4cli>
-
-        <ONOS5cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5cli>
-
-        <ONOS6cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6cli>
-
-        <ONOS7cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7cli>
-
-        <ONOS1>
-            <host>OC1</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>9</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1>
-
-        <ONOS2>
-            <host>OC2</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2>
-
-        <ONOS3>
-            <host>OC3</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>11</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3>
-
-        <ONOS4>
-            <host>OC4</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>12</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4>
-
-    
-        <ONOS5>
-            <host>OC5</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>13</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5>
-
-        <ONOS6>
-            <host>OC6</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>14</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6>
-
-        <ONOS7>
-            <host>OC7</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>15</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7>
-
-    </COMPONENT>
-
-</TOPOLOGY>
- 
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/__init__.py b/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLatWithFlowObj/__init__.py
+++ /dev/null
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.params b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.params
index 6d684cc..7c69450 100644
--- a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.params
+++ b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.params
@@ -15,12 +15,15 @@
         <warmUp>5</warmUp>
         <sampleSize>20</sampleSize>
         <intents>1,100,1000</intents>                       #list format, will be split on ','
+        <FObjintents>1,100</FObjintents>
         <ingress>null:0000000000000001/0</ingress>
         <egress>null:0000000000000007/0</egress>
         <debug>False</debug>
+        <flowObj>False</flowObj>
     </TEST>
     <DATABASE>
-        <file>/tmp/IntentRerouteLatDB</file>
+        <dbName>/tmp/IntentRerouteLatDB</dbName>
+        <dbFlowObj>/tmp/IntentRerouteLatDBWithFlowObj</dbFlowObj>
     </DATABASE>
 
     <GIT>
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
index 4a63f18..93c467c 100644
--- a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
+++ b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
@@ -69,7 +69,6 @@
         main.skipMvn = main.params['TEST']['skipCleanInstall']
         main.cellName = main.params['ENV']['cellName']
         main.scale = (main.params['SCALE']).split(",")
-        main.dbFileName = main.params['DATABASE']['file']
         main.timeout = int(main.params['SLEEP']['timeout'])
         main.startUpSleep = int(main.params['SLEEP']['startup'])
         main.installSleep = int(main.params['SLEEP']['install'])
@@ -78,10 +77,20 @@
         main.verifyAttempts = int(main.params['ATTEMPTS']['verify'])
         main.sampleSize = int(main.params['TEST']['sampleSize'])
         main.warmUp = int(main.params['TEST']['warmUp'])
-        main.intentsList = (main.params['TEST']['intents']).split(",")
         main.ingress = main.params['TEST']['ingress']
         main.egress = main.params['TEST']['egress']
         main.debug = main.params['TEST']['debug']
+        main.flowObj = main.params['TEST']['flowObj']
+
+        if main.flowObj == "True":
+            main.flowObj = True
+            main.dbFileName = main.params['DATABASE']['dbFlowObj']
+            main.intentsList = (main.params['TEST']['FObjintents']).split(",")
+        else:
+            main.flowObj = False
+            main.dbFileName = main.params['DATABASE']['dbName']
+            main.intentsList = (main.params['TEST']['intents']).split(",")
+
         for i in range(0, len(main.intentsList)):
             main.intentsList[i] = int(main.intentsList[i])
             # Create DataBase file
@@ -202,7 +211,9 @@
         main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "topoShape", value="reroute")
         main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
         main.CLIs[0].setCfg("org.onosproject.store.flow.impl.DistributedFlowRuleStore", "backupEnabled", value="false")
-
+        if main.flowObj:
+            main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
+                                "useFlowObjectives", value="true")
         time.sleep(main.startUpSleep)
 
         # Balance Master
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/README b/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/README
deleted file mode 100644
index 26b551b..0000000
--- a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/README
+++ /dev/null
@@ -1,29 +0,0 @@
-INTENT REROUTE LATENCY
-
-Summary: This is a performance test designed to benchmark the
-    intent reroute speed of ONOS at various controller cluster sizes.
-
-Pre-requisites: To run out-of-the box this test requires 7 NODES.
-    OC1->OC7 must be set before initiating the test. Passwordless login
-    must be set from TestStation "sdn" root user.
-
-***If you wish to run this test with less than 7 nodes the
-    following alterations must be made:
-
-NOTE: Only scale sizes 1,3,5 and 7 will be functional
-
-Modifying .params file:
--- Remove any values in the comma separated list in
-    the <scale> tag that are above your desired cluster size.
-
--- Remove one instance of “1,2” from the <testcases> tag for
-    each value you removed from <scale> (case1 and 2 are each
-    called once for each scale value)
-
--- Change the value in the <max> tag to your desired scale size (1,3,5)
-
-Modifying .topo file:
--- Change the <ONOSbench/COMPONENTS/nodes> tag to
-    your desired scale size
-
--- Remove all unneeded <ONOS#cli> tags and their contents
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.params b/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.params
deleted file mode 100644
index 237dc5d..0000000
--- a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.params
+++ /dev/null
@@ -1,83 +0,0 @@
-<PARAMS>
-
-    <testcases>0,1,2,1,2,1,2,1,2</testcases>
-
-    <SCALE>1,3,5,7</SCALE>
-    <max>7</max>
-
-    <ENV>
-        <cellName>intentRerouteCell</cellName>
-        <cellApps>drivers,null,intentperf,metrics</cellApps>
-    </ENV>
-
-    <TEST>
-        <skipCleanInstall>yes</skipCleanInstall>
-        <warmUp>5</warmUp>
-        <sampleSize>20</sampleSize>
-        <intents>1,100</intents>                       #list format, will be split on ','
-        <ingress>null:0000000000000001/0</ingress>
-        <egress>null:0000000000000007/0</egress>
-        <debug>False</debug>
-    </TEST>
-    <DATABASE>
-        <file>/tmp/IntentRerouteLatDBWithFlowObj</file>
-    </DATABASE>
-
-    <GIT>
-        <gitPull>False</gitPull>
-        <gitBranch>master</gitBranch>
-    </GIT>
-
-    <ATTEMPTS>
-        <verify>3</verify>
-    </ATTEMPTS>
-
-    <SLEEP>
-        <startup>10</startup>
-        <install>10</install>
-        <setmaster>5</setmaster>
-        <verify>5</verify>
-        <reroute>3</reroute>
-        # timeout for pexpect
-        <timeout>300</timeout>
-    </SLEEP>
-
-    <CTRL>
-        <USER>sdn</USER>
-
-        <ip1>OC1</ip1>
-        <port1>6653</port1>
-
-        <ip2>OC2</ip2>
-        <port2>6653</port2>
-
-        <ip3>OC3</ip3>
-        <port3>6653</port3>
-
-        <ip4>OC4</ip4>
-        <port4>6653</port4>
-
-        <ip5>OC5</ip5>
-        <port5>6653</port5>
-
-        <ip6>OC6</ip6>
-        <port6>6653</port6>
-
-        <ip7>OC7</ip7>
-        <port7>6653</port7>
-
-    </CTRL>
-
-    <MN>
-        <ip1>OCN</ip1>
-    </MN>
-
-    <BENCH>
-        <user>sdn</user>
-        <ip1>localhost</ip1>
-    </BENCH>
-
-    <JSON>
-    </JSON>
-
-</PARAMS>
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.py b/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.py
deleted file mode 100644
index bc6ff0d..0000000
--- a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.py
+++ /dev/null
@@ -1,441 +0,0 @@
-# SCPFintentRerouteLatWithFlowObj
-"""
-SCPFintentRerouteLat
-    - Test Intent Reroute Latency
-    - Test Algorithm:
-        1. Start Null Provider reroute Topology
-        2. Using Push-test-intents to push batch size intents from switch 1 to switch 7
-        3. Cut the link between switch 3 and switch 4 (the path will reroute to switch 8)
-        4. Get the topology time stamp
-        5. Get Intent reroute(Installed) time stamp from each nodes
-        6. Use the latest intent time stamp subtract topology time stamp
-    - This test will run 5 warm up by default, warm up iteration can be setup in Param file
-    - The intent batch size will default set to 1 and 100, also can be set in Param file
-    - The unit of the latency result is milliseconds
-    - Ues flowObject set to True
-"""
-
-class SCPFintentRerouteLatWithFlowObj:
-    def __init__(self):
-        self.default = ''
-
-    def CASE0( self, main ):
-        '''
-        - GIT
-        - BUILDING ONOS
-            Pull specific ONOS branch, then Build ONOS ono ONOS Bench.
-            This step is usually skipped. Because in a Jenkins driven automated
-            test env. We want Jenkins jobs to pull&build for flexibility to handle
-            different versions of ONOS.
-        - Construct tests variables
-        '''
-        gitPull = main.params['GIT']['gitPull']
-        gitBranch = main.params['GIT']['gitBranch']
-
-        main.case("Pull onos branch and build onos on Teststation.")
-
-        if gitPull == 'True':
-            main.step("Git Checkout ONOS branch: " + gitBranch)
-            stepResult = main.ONOSbench.gitCheckout(branch=gitBranch)
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully checkout onos branch.",
-                                    onfail="Failed to checkout onos branch. Exiting test...")
-            if not stepResult: main.exit()
-
-            main.step("Git Pull on ONOS branch:" + gitBranch)
-            stepResult = main.ONOSbench.gitPull()
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully pull onos. ",
-                                    onfail="Failed to pull onos. Exiting test ...")
-            if not stepResult: main.exit()
-
-            main.step("Building ONOS branch: " + gitBranch)
-            stepResult = main.ONOSbench.cleanInstall(skipTest=True)
-            utilities.assert_equals(expect=main.TRUE,
-                                    actual=stepResult,
-                                    onpass="Successfully build onos.",
-                                    onfail="Failed to build onos. Exiting test...")
-            if not stepResult: main.exit()
-
-        else:
-            main.log.warn("Skipped pulling onos and Skipped building ONOS")
-
-        main.apps = main.params['ENV']['cellApps']
-        main.BENCHUser = main.params['BENCH']['user']
-        main.BENCHIp = main.params['BENCH']['ip1']
-        main.MN1Ip = main.params['MN']['ip1']
-        main.maxNodes = int(main.params['max'])
-        main.skipMvn = main.params['TEST']['skipCleanInstall']
-        main.cellName = main.params['ENV']['cellName']
-        main.scale = (main.params['SCALE']).split(",")
-        main.dbFileName = main.params['DATABASE']['file']
-        main.timeout = int(main.params['SLEEP']['timeout'])
-        main.startUpSleep = int(main.params['SLEEP']['startup'])
-        main.installSleep = int(main.params['SLEEP']['install'])
-        main.setMasterSleep = int(main.params['SLEEP']['setmaster'])
-        main.verifySleep = int(main.params['SLEEP']['verify'])
-        main.verifyAttempts = int(main.params['ATTEMPTS']['verify'])
-        main.sampleSize = int(main.params['TEST']['sampleSize'])
-        main.warmUp = int(main.params['TEST']['warmUp'])
-        main.intentsList = (main.params['TEST']['intents']).split(",")
-        main.ingress = main.params['TEST']['ingress']
-        main.egress = main.params['TEST']['egress']
-        main.debug = main.params['TEST']['debug']
-        for i in range(0, len(main.intentsList)):
-            main.intentsList[i] = int(main.intentsList[i])
-            # Create DataBase file
-        main.log.info("Create Database file " + main.dbFileName)
-        resultsDB = open(main.dbFileName, "w+")
-        resultsDB.close()
-
-    def CASE1( self, main ):
-        '''
-            clean up test environment and set up
-        '''
-        import time
-
-        main.log.info("Get ONOS cluster IP")
-        print(main.scale)
-        main.numCtrls = int(main.scale[0])
-        main.ONOSip = []
-        main.maxNumBatch = 0
-        main.AllONOSip = main.ONOSbench.getOnosIps()
-        for i in range(main.numCtrls):
-            main.ONOSip.append(main.AllONOSip[i])
-        main.log.info(main.ONOSip)
-        main.CLIs = []
-        main.log.info("Creating list of ONOS cli handles")
-        for i in range(main.numCtrls):
-            main.CLIs.append(getattr(main, 'ONOS%scli' % (i + 1)))
-
-        if not main.CLIs:
-            main.log.error("Failed to create the list of ONOS cli handles")
-            main.cleanup()
-            main.exit()
-
-        main.commit = main.ONOSbench.getVersion(report=True)
-        main.commit = main.commit.split(" ")[1]
-        main.log.info("Starting up %s node(s) ONOS cluster" % main.numCtrls)
-        main.log.info("Safety check, killing all ONOS processes" +
-                      " before initiating environment setup")
-
-        for i in range(main.numCtrls):
-            main.ONOSbench.onosDie(main.ONOSip[i])
-
-        main.log.info("NODE COUNT = %s" % main.numCtrls)
-        main.ONOSbench.createCellFile(main.ONOSbench.ip_address,
-                                      main.cellName,
-                                      main.MN1Ip,
-                                      main.apps,
-                                      main.ONOSip)
-        main.step("Apply cell to environment")
-        cellResult = main.ONOSbench.setCell(main.cellName)
-        verifyResult = main.ONOSbench.verifyCell()
-        stepResult = cellResult and verifyResult
-        utilities.assert_equals(expect=main.TRUE,
-                                actual=stepResult,
-                                onpass="Successfully applied cell to " + \
-                                       "environment",
-                                onfail="Failed to apply cell to environment ")
-
-        main.step("Creating ONOS package")
-        packageResult = main.ONOSbench.onosPackage()
-        stepResult = packageResult
-        utilities.assert_equals(expect=main.TRUE,
-                                actual=stepResult,
-                                onpass="Successfully created ONOS package",
-                                onfail="Failed to create ONOS package")
-
-        main.step("Uninstall ONOS package on all Nodes")
-        uninstallResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("Uninstalling package on ONOS Node IP: " + main.ONOSip[i])
-            u_result = main.ONOSbench.onosUninstall(main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=u_result,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            uninstallResult = (uninstallResult and u_result)
-
-        main.step("Install ONOS package on all Nodes")
-        installResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("Installing package on ONOS Node IP: " + main.ONOSip[i])
-            i_result = main.ONOSbench.onosInstall(node=main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=i_result,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            installResult = installResult and i_result
-
-        main.step("Verify ONOS nodes UP status")
-        statusResult = main.TRUE
-        for i in range(int(main.numCtrls)):
-            main.log.info("ONOS Node " + main.ONOSip[i] + " status:")
-            onos_status = main.ONOSbench.onosStatus(node=main.ONOSip[i])
-            utilities.assert_equals(expect=main.TRUE, actual=onos_status,
-                                    onpass="Test step PASS",
-                                    onfail="Test step FAIL")
-            statusResult = (statusResult and onos_status)
-        time.sleep(2)
-        main.step("Start ONOS CLI on all nodes")
-        cliResult = main.TRUE
-        main.step(" Start ONOS cli using thread ")
-        startCliResult = main.TRUE
-        pool = []
-        main.threadID = 0
-        for i in range(int(main.numCtrls)):
-            t = main.Thread(target=main.CLIs[i].startOnosCli,
-                            threadID=main.threadID,
-                            name="startOnosCli",
-                            args=[main.ONOSip[i]],
-                            kwargs={"onosStartTimeout": main.timeout})
-            pool.append(t)
-            t.start()
-            main.threadID = main.threadID + 1
-        for t in pool:
-            t.join()
-            startCliResult = startCliResult and t.result
-        time.sleep(main.startUpSleep)
-
-        # configure apps
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "topoShape", value="reroute")
-        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-        main.CLIs[0].setCfg("org.onosproject.store.flow.impl.DistributedFlowRuleStore", "backupEnabled", value="false")
-        main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
-                            "useFlowObjectives", value="true")
-
-        time.sleep(main.startUpSleep)
-
-        # Balance Master
-        main.CLIs[0].balanceMasters()
-        if len(main.ONOSip) > 1:
-            main.CLIs[0].deviceRole("null:0000000000000003", main.ONOSip[0])
-            main.CLIs[0].deviceRole("null:0000000000000004", main.ONOSip[0])
-        time.sleep( main.setMasterSleep )
-
-    def CASE2( self, main ):
-        import time
-        import numpy
-        import datetime
-        import json
-        # from scipy import stats
-
-        ts = time.time()
-        print(main.intentsList)
-        for batchSize in main.intentsList:
-            main.log.report("Intent Batch size: " + str(batchSize) + "\n      ")
-            main.LatencyList = []
-            validRun = 0
-            invalidRun = 0
-            while validRun <= main.warmUp + main.sampleSize and invalidRun <= 20:
-                if validRun >= main.warmUp:
-                    main.log.info("================================================")
-                    main.log.info("Starting test iteration: {} ".format(validRun - main.warmUp))
-                    main.log.info("Total iteration: {}".format(validRun + invalidRun))
-                    main.log.info("================================================")
-                else:
-                    main.log.info("====================Warm Up=====================")
-
-                # push intents
-                main.CLIs[0].pushTestIntents(main.ingress, main.egress, batchSize,
-                                             offset=1, options="-i", timeout=main.timeout)
-
-                # check links and flows
-                k = 0
-                verify = main.FALSE
-                linkCheck = 0
-                flowsCheck = 0
-                while k <= main.verifyAttempts:
-                    time.sleep(main.verifySleep)
-                    summary = json.loads(main.CLIs[0].summary(timeout=main.timeout))
-                    linkCheck = summary.get("links")
-                    flowsCheck = summary.get("flows")
-                    if linkCheck == 16 and flowsCheck == batchSize * 7:
-                        main.log.info("links: {}, flows: {} ".format(linkCheck, flowsCheck))
-                        verify = main.TRUE
-                        break
-                    k += 1
-                if not verify:
-                    main.log.warn("Links or flows number are not match!")
-                    main.log.warn("links: {}, flows: {} ".format(linkCheck, flowsCheck))
-                    # bring back topology
-                    main.log.info("Bring back topology...")
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
-                    main.CLIs[0].purgeWithdrawnIntents()
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=0)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="false")
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-                    if validRun >= main.warmUp:
-                        invalidRun += 1
-                        continue
-                    else:
-                        validRun += 1
-                        continue
-
-                # Bring link down
-                main.CLIs[0].link("0000000000000004/1", "0000000000000003/2", "down",
-                                  timeout=main.timeout, showResponse=False)
-                verify = main.FALSE
-                k = 0
-                topoManagerLog = ""
-                while k <= main.verifyAttempts:
-                    time.sleep(main.verifySleep)
-                    summary = json.loads(main.CLIs[0].summary(timeout=main.timeout))
-                    linkCheck = summary.get("links")
-                    flowsCheck = summary.get("flows")
-                    if linkCheck == 14:
-                        main.log.info("links: {}, flows: {} ".format(linkCheck, flowsCheck))
-                        verify = main.TRUE
-                        break
-                    k += 1
-                if not verify:
-                    main.log.warn("Links number are not match in TopologyManager log!")
-                    main.log.warn(topoManagerLog)
-                    # bring back topology
-                    main.log.info("Bring back topology...")
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
-                    main.CLIs[0].purgeWithdrawnIntents()
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=0)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="false")
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-                    if validRun >= main.warmUp:
-                        invalidRun += 1
-                        continue
-                    else:
-                        validRun += 1
-                        continue
-
-                try:
-                    # expect twice to clean the pexpect buffer
-                    main.ONOSbench.handle.sendline("")
-                    main.ONOSbench.handle.expect("\$")
-                    main.ONOSbench.handle.expect("\$")
-                    # send line by using bench, can't use driver because pexpect buffer problem
-                    cmd = "onos-ssh $OC1 cat /opt/onos/log/karaf.log | grep TopologyManager| tail -1"
-                    main.ONOSbench.handle.sendline(cmd)
-                    time.sleep(1)
-                    main.ONOSbench.handle.expect(":~")
-                    topoManagerLog = main.ONOSbench.handle.before
-                    topoManagerLogTemp = topoManagerLog.splitlines()
-                    # To make sure we get correct topology log
-                    for lines in topoManagerLogTemp:
-                        if "creationTime" in lines:
-                            topoManagerLog = lines
-                    main.log.info("Topology Manager log:")
-                    print(topoManagerLog)
-                    cutTimestamp = float(topoManagerLog.split("creationTime=")[1].split(",")[0])
-                except:
-                    main.log.error("Topology Log is not correct!")
-                    print(topoManagerLog)
-                    # bring back topology
-                    main.log.info("Bring back topology...")
-                    verify = main.FALSE
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
-                    main.CLIs[0].purgeWithdrawnIntents()
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=0)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="false")
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-                    if validRun >= main.warmUp:
-                        invalidRun += 1
-                    else:
-                        validRun += 1
-                    # If we got wrong Topology log, we should skip this iteration, and continue for next one
-                    continue
-
-                installedTemp = []
-                time.sleep(10)
-                for cli in main.CLIs:
-                    tempJson = json.loads(cli.intentsEventsMetrics())
-                    Installedtime = tempJson.get('intentInstalledTimestamp').get('value')
-                    installedTemp.append(float(Installedtime))
-                for i in range(0, len(installedTemp)):
-                    main.log.info("ONOS Node {} Installed Time stemp: {}".format((i + 1), installedTemp[i]))
-                maxInstallTime = float(max(installedTemp))
-                if validRun >= main.warmUp and verify:
-                    main.log.info("Installed time stemp: {0:f}".format(maxInstallTime))
-                    main.log.info("CutTimestamp: {0:f}".format(cutTimestamp))
-                    # Both timeStemps are milliseconds
-                    main.log.info("Latency: {0:f}".format(float(maxInstallTime - cutTimestamp)))
-                    if float(maxInstallTime - cutTimestamp) < 0:
-                        main.log.info("Latency less than 0!")
-                        # bring back topology
-                        main.log.info("Bring back topology...")
-                        verify = main.FALSE
-                        main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                        time.sleep(1)
-                        main.CLIs[0].purgeWithdrawnIntents()
-                        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=0)
-                        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="false")
-                        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-                        main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-                        if validRun >= main.warmUp:
-                            invalidRun += 1
-                        else:
-                            validRun += 1
-                        continue
-                    main.LatencyList.append(float(maxInstallTime - cutTimestamp))
-                # We get valid latency, validRun + 1
-                validRun += 1
-
-                # Verify Summary after we bring up link, and withdrawn intents
-                main.CLIs[0].link("0000000000000004/1", "0000000000000003/2", "up",
-                                  timeout=main.timeout)
-                k = 0
-                verify = main.FALSE
-                linkCheck = 0
-                flowsCheck = 0
-                while k <= main.verifyAttempts:
-                    time.sleep(main.verifySleep)
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
-                    main.CLIs[0].purgeWithdrawnIntents()
-                    summary = json.loads(main.CLIs[0].summary())
-                    linkCheck = summary.get("links")
-                    flowsCheck = summary.get("flows")
-                    intentCheck = summary.get("intents")
-                    if linkCheck == 16 and flowsCheck == 0 and intentCheck == 0:
-                        main.log.info("links: {}, flows: {}, intents: {} ".format(linkCheck, flowsCheck, intentCheck))
-                        verify = main.TRUE
-                        break
-                    k += 1
-                if not verify:
-                    main.log.error("links, flows, or intents are not correct!")
-                    main.log.info("links: {}, flows: {}, intents: {} ".format(linkCheck, flowsCheck, intentCheck))
-                    # bring back topology
-                    main.log.info("Bring back topology...")
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
-                    main.CLIs[0].purgeWithdrawnIntents()
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=0)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="false")
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "deviceCount", value=8)
-                    main.CLIs[0].setCfg("org.onosproject.provider.nil.NullProviders", "enabled", value="true")
-                    continue
-
-            aveLatency = 0
-            stdLatency = 0
-            aveLatency = numpy.average(main.LatencyList)
-            stdLatency = numpy.std(main.LatencyList)
-            main.log.report("Scale: " + str(main.numCtrls) + "  \tIntent batch: " + str(batchSize))
-            main.log.report("Latency average:................" + str(aveLatency))
-            main.log.report("Latency standard deviation:....." + str(stdLatency))
-            main.log.report("________________________________________________________")
-
-            if not (numpy.isnan(aveLatency) or numpy.isnan(stdLatency)):
-                # check if got NaN for result
-                resultsDB = open(main.dbFileName, "a")
-                resultsDB.write("'" + main.commit + "',")
-                resultsDB.write(str(main.numCtrls) + ",")
-                resultsDB.write(str(batchSize) + ",")
-                resultsDB.write(str(aveLatency) + ",")
-                resultsDB.write(str(stdLatency) + "\n")
-                resultsDB.close()
-        del main.scale[0]
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.topo b/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.topo
deleted file mode 100644
index 915d033..0000000
--- a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/SCPFintentRerouteLatWithFlowObj.topo
+++ /dev/null
@@ -1,147 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-
-        <ONOSbench>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-                <home>~/onos</home>
-                <nodes>7</nodes> 
-            </COMPONENTS>
-        </ONOSbench>
-
-        <ONOS1cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1cli>
-
-        <ONOS2cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2cli>
-
-        <ONOS3cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3cli>
-
-        <ONOS4cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4cli>
-
-        <ONOS5cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5cli>
-
-        <ONOS6cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6cli>
-
-        <ONOS7cli>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7cli>
-
-        <ONOS1>
-            <host>OC1</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>9</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS1>
-
-        <ONOS2>
-            <host>OC2</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS2>
-
-        <ONOS3>
-            <host>OC3</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>11</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS3>
-
-        <ONOS4>
-            <host>OC4</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>12</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS4>
-
-    
-        <ONOS5>
-            <host>OC5</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>13</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS5>
-
-        <ONOS6>
-            <host>OC6</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>14</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS6>
-
-        <ONOS7>
-            <host>OC7</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>15</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOS7>
-
-    </COMPONENT>
-
-</TOPOLOGY>
- 
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/__init__.py b/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/SCPF/SCPFintentRerouteLatWithFlowObj/__init__.py
+++ /dev/null
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/README b/TestON/tests/SCPF/SCPFmaxIntents/README
deleted file mode 100644
index cb53df8..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/README
+++ /dev/null
@@ -1,6 +0,0 @@
-Summary:
-        This is a performance test suit, designed to test the upper limits
-        of onos and ovsdb with respect to installing intents and rerouting flows.
-NOTE:
-        This test is largely based on the hardware used to run onos and mininet.
-        Therefore, results will very test station to test station.
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.params b/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.params
deleted file mode 100755
index 56ad4d8..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.params
+++ /dev/null
@@ -1,103 +0,0 @@
-<PARAMS>
-
-    # 1-init
-    # 2-setup
-    # 10-null provider setup
-    # 11-mininet setup
-    # 20-pushing intents, and rerouting intents if reroute is true
-    # 1,2,10,20,2,11,20,100
-    <testcases>1,2,10,20</testcases>
-
-    <reroute>False</reroute>
-
-    <SCALE>
-        <size>1</size>
-        <max>1</max>
-    </SCALE>
-
-    <DEPENDENCY>
-        <path>/tests/SCPFmaxIntents/dependencies/</path>
-        <wrapper1>startUp</wrapper1>
-        <wrapper2>maxIntentFunctions</wrapper2>
-        <topology>rerouteTopo.py</topology>
-    </DEPENDENCY>
-
-    <ENV>
-        <cellName>productionCell</cellName>
-        <cellApps>drivers</cellApps>
-    </ENV>
-
-    <GIT>
-        <pull>False</pull>
-        <branch>master</branch>
-    </GIT>
-
-    <CTRL>
-        <port>6653</port>
-    </CTRL>
-
-    <SLEEP>
-        <startup>3</startup>
-        <install>1</install>
-        <verify>5</verify>
-        <reroute>3</reroute>
-        # timeout for pexpect
-        <timeout>120</timeout>
-    </SLEEP>
-
-    <ATTEMPTS>
-        <verify>3</verify>
-        <push>3</push>
-    </ATTEMPTS>
-
-    <DATABASE>
-        <file>/tmp/MaxIntentDB</file>
-        <nic>1gig</nic>
-        <node>baremetal</node>
-    </DATABASE>
-
-    <LINK>
-        <ingress>0000000000000001/9</ingress>
-        <egress>0000000000000002/9</egress>
-    </LINK>
-
-    # CASE10
-    <NULL>
-        # CASE20
-        <PUSH>
-            <batch_size>1000</batch_size>
-            <min_intents>100000</min_intents>
-            <max_intents>1000000</max_intents>
-            <check_interval>100000</check_interval>
-        </PUSH>
-
-        # if reroute is true
-        <REROUTE>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>10000</max_intents>
-            <check_interval>10000</check_interval>
-        </REROUTE>
-    </NULL>
-
-    # CASE11
-    <OVS>
-        # CASE20
-        <PUSH>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>500000</max_intents>
-            <check_interval>10000</check_interval>
-        </PUSH>
-
-        # if reroute is true
-        <REROUTE>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>500000</max_intents>
-            <check_interval>10000</check_interval>
-        </REROUTE>
-    </OVS>
-
-
-</PARAMS>
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.py b/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.py
deleted file mode 100644
index 4bca4da..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.py
+++ /dev/null
@@ -1,517 +0,0 @@
-
-# This is a performance scale intent that test onos to see how many intents can
-# be installed and rerouted using the null provider and mininet.
-'''
-This test will not test on reroute and OVS!!!
-If you need test on reroute or OVS, change the params file
-
-Test information:
-    - BatchSize: 1000
-    - Minimum intents: 10,000
-    - Maximum Intents: 1,000,000
-    - Check Interval: 10,000
-    - Link:
-        - ingress: 0000000000000001/9
-        - egress: 0000000000000002/9
-    - Timeout: 120 Seconds
-'''
-
-class SCPFmaxIntents:
-
-    def __init__( self ):
-        self.default = ''
-
-    def CASE1( self, main ):
-        import time
-        import os
-        import imp
-
-        """
-        - Construct tests variables
-        - GIT ( optional )
-            - Checkout ONOS master branch
-            - Pull latest ONOS code
-        - Building ONOS ( optional )
-            - Install ONOS package
-            - Build ONOS package
-        - Set up cell
-            - Create cell file
-            - Set cell file
-            - Verify cell file
-        - Kill ONOS process
-        """
-
-        main.case( "Constructing test variables and building ONOS package" )
-        main.step( "Constructing test variables" )
-        stepResult = main.FALSE
-
-        # Test variables
-        main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
-        main.dependencyPath = main.testOnDirectory + \
-                main.params['DEPENDENCY']['path']
-        main.cellName = main.params[ 'ENV' ][ 'cellName' ]
-        main.apps = main.params[ 'ENV' ][ 'cellApps' ]
-        main.topology = main.params[ 'DEPENDENCY' ][ 'topology' ]
-        main.scale = ( main.params[ 'SCALE' ][ 'size' ] ).split( "," )
-        main.maxNodes = int( main.params[ 'SCALE' ][ 'max' ] )
-        main.ONOSport = main.params[ 'CTRL' ][ 'port' ]
-        main.timeout = int(main.params['SLEEP']['timeout'])
-        main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
-        main.installSleep = int( main.params[ 'SLEEP' ][ 'install' ] )
-        main.verifySleep = int( main.params[ 'SLEEP' ][ 'verify' ] )
-        main.rerouteSleep = int ( main.params['SLEEP']['reroute'] )
-        main.verifyAttempts = int( main.params['ATTEMPTS']['verify'] )
-        main.ingress = main.params['LINK']['ingress']
-        main.egress = main.params['LINK']['egress']
-        main.dbFileName = main.params['DATABASE']['file']
-        main.cellData = {} # for creating cell file
-        main.reroute = main.params['reroute']
-        if main.reroute == "True":
-            main.reroute = True
-        else:
-            main.reroute = False
-        main.CLIs = []
-        main.ONOSip = []
-        main.maxNumBatch = 0
-        main.ONOSip = main.ONOSbench.getOnosIps()
-        main.log.info(main.ONOSip)
-        main.setupSkipped = False
-
-        wrapperFile1 = main.params[ 'DEPENDENCY' ][ 'wrapper1' ]
-        wrapperFile2 = main.params[ 'DEPENDENCY' ][ 'wrapper2' ]
-        gitBranch = main.params[ 'GIT' ][ 'branch' ]
-        gitPull = main.params[ 'GIT' ][ 'pull' ]
-        nic = main.params['DATABASE']['nic']
-        node = main.params['DATABASE']['node']
-        nic = main.params['DATABASE']['nic']
-        node = main.params['DATABASE']['node']
-
-        # main.scale[ 0 ] determines the current number of ONOS controller
-        main.numCtrls = int( main.scale[ 0 ] )
-
-        main.log.info("Creating list of ONOS cli handles")
-        for i in range(main.maxNodes):
-            main.CLIs.append( getattr( main, 'ONOScli' + str( i+1 )))
-
-        if not main.CLIs:
-            main.log.error("Failed to create the list of ONOS cli handles")
-            main.cleanup()
-            main.exit()
-
-        main.log.info("Loading wrapper files")
-        main.startUp = imp.load_source( wrapperFile1,
-                                        main.dependencyPath +
-                                        wrapperFile1 +
-                                        ".py" )
-
-        main.intentFunctions = imp.load_source( wrapperFile2,
-                                               main.dependencyPath +
-                                               wrapperFile2 +
-                                               ".py" )
-
-        copyResult = main.ONOSbench.copyMininetFile( main.topology,
-                                                    main.dependencyPath,
-                                                    main.Mininet1.user_name,
-                                                    main.Mininet1.ip_address )
-
-        commit = main.ONOSbench.getVersion(report=True)
-        commit = commit.split(" ")[1]
-
-        if gitPull == 'True':
-            if not main.startUp.onosBuild( main, gitBranch ):
-                main.log.error("Failed to build ONOS")
-                main.cleanup()
-                main.exit()
-        else:
-            main.log.warn( "Did not pull new code so skipping mvn " +
-                           "clean install" )
-
-        main.log.info( "Starting up %s node(s) ONOS cluster" % main.numCtrls)
-        main.log.info( "Safety check, killing all ONOS processes" +
-                       " before initiating environment setup" )
-
-        for i in range( main.maxNodes ):
-            main.ONOSbench.onosDie( main.ONOSip[ i ] )
-
-        main.log.info( "NODE COUNT = %s" % main.numCtrls)
-
-        tempOnosIp = []
-        for i in range( main.numCtrls ):
-            tempOnosIp.append( main.ONOSip[i] )
-
-        main.ONOSbench.createCellFile( main.ONOSbench.ip_address,
-                                       "temp",
-                                       main.Mininet1.ip_address,
-                                       main.apps,
-                                       tempOnosIp )
-
-        main.step( "Apply cell to environment" )
-        cellResult = main.ONOSbench.setCell( "temp" )
-        verifyResult = main.ONOSbench.verifyCell()
-        stepResult = cellResult and verifyResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully applied cell to " + \
-                                        "environment",
-                                 onfail="Failed to apply cell to environment " )
-
-        main.step( "Creating ONOS package" )
-        packageResult = main.ONOSbench.onosPackage()
-        stepResult = packageResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully created ONOS package",
-                                 onfail="Failed to create ONOS package" )
-
-        main.log.info("Creating DB file")
-        with open(main.dbFileName, "w+") as dbFile:
-            temp = "'" + commit + "',"
-            temp += "'" + nic + "',"
-            temp += str(main.numCtrls) + ","
-            temp += "'" + node + "1" + "'"
-            temp += ",0"
-            temp += ",0"
-            temp += ",0"
-            temp += ",0"
-            dbFile.write(temp)
-
-    def CASE2( self, main ):
-        """
-        - Uninstall ONOS cluster
-        - Verify ONOS start up
-        - Install ONOS cluster
-        - Connect to cli
-        """
-
-        main.step( "Installing ONOS with -f" )
-        onosInstallResult = main.TRUE
-        for i in range( main.numCtrls ):
-            onosInstallResult = onosInstallResult and \
-                    main.ONOSbench.onosInstall( node=main.ONOSip[ i ] )
-        stepResult = onosInstallResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully installed ONOS package",
-                                 onfail="Failed to install ONOS package" )
-
-        time.sleep( main.startUpSleep )
-
-        main.step( "Start ONOS cli" )
-        cliResult = main.TRUE
-        for i in range( main.numCtrls ):
-            cliResult = cliResult and \
-                        main.CLIs[ i ].startOnosCli( main.ONOSip[ i ] )
-        stepResult = cliResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully start ONOS cli",
-                                 onfail="Failed to start ONOS cli" )
-
-        time.sleep( main.startUpSleep )
-
-    def CASE10( self, main ):
-        """
-            Setting up null-provider
-        """
-        import json
-        # Activate apps
-        main.step("Activating null-provider")
-        appStatus = utilities.retry( main.CLIs[0].activateApp,
-                                     main.FALSE,
-                                     ['org.onosproject.null'],
-                                     sleep=main.verifySleep,
-                                     attempts=main.verifyAttempts )
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=appStatus,
-                                 onpass="Successfully activated null-provider",
-                                 onfail="Failed activate null-provider" )
-
-        # Setup the null-provider
-        main.step("Configuring null-provider")
-        cfgStatus = utilities.retry( main.ONOSbench.onosCfgSet,
-                                     main.FALSE,
-                                     [ main.ONOSip[0],
-                                      'org.onosproject.provider.nil.NullProviders', 'deviceCount 3'],
-                                     sleep=main.verifySleep,
-                                     attempts = main.verifyAttempts )
-        cfgStatus = cfgStatus and utilities.retry( main.ONOSbench.onosCfgSet,
-                                                   main.FALSE,
-                                                   [ main.ONOSip[0],
-                                                     'org.onosproject.provider.nil.NullProviders', 'topoShape reroute'],
-                                                   sleep=main.verifySleep,
-                                                   attempts = main.verifyAttempts )
-
-        cfgStatus = cfgStatus and utilities.retry( main.ONOSbench.onosCfgSet,
-                                                   main.FALSE,
-                                                   [ main.ONOSip[0],
-                                                     'org.onosproject.provider.nil.NullProviders', 'enabled true'],
-                                                   sleep=main.verifySleep,
-                                                   attempts = main.verifyAttempts )
-
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=cfgStatus,
-                                 onpass="Successfully configured null-provider",
-                                 onfail="Failed to configure null-provider" )
-
-        # give onos some time to settle
-        time.sleep(main.startUpSleep)
-
-        main.log.info("Setting default flows to zero")
-        main.defaultFlows = 0
-
-        main.step("Check status of null-provider setup")
-        caseResult = appStatus and cfgStatus
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=caseResult,
-                                 onpass="Setting up null-provider was successfull",
-                                 onfail="Failed to setup null-provider" )
-
-        # This tells the following cases if we are using the null-provider or ovs
-        main.switchType = "null:"
-
-        # If the null-provider setup was unsuccessfull, then there is no point to
-        # run the subsequent cases
-        if not caseResult:
-            main.setupSkipped = True
-
-    def CASE11( self, main ):
-        '''
-            Setting up mininet
-        '''
-        import json
-        import time
-
-        time.sleep(main.startUpSleep)
-
-        main.step("Activating openflow")
-        appStatus = main.CLIs[0].activateApp('org.onosproject.openflow')
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=appStatus,
-                                 onpass="Successfully activated openflow",
-                                 onfail="Failed activate openflow" )
-
-        time.sleep(main.startUpSleep)
-
-        main.step('Starting mininet topology')
-        mnStatus = main.Mininet1.startNet(topoFile='~/mininet/custom/rerouteTopo.py')
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=mnStatus,
-                                 onpass="Successfully started Mininet",
-                                 onfail="Failed to activate Mininet" )
-
-        main.step("Assinging masters to switches")
-        switches = main.Mininet1.getSwitches()
-        swStatus = main.Mininet1.assignSwController( sw=switches.keys(), ip=main.ONOSip )
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=swStatus,
-                                 onpass="Successfully assigned switches to masters",
-                                 onfail="Failed assign switches to masters" )
-
-        time.sleep(main.startUpSleep)
-
-        main.log.info("Getting default flows")
-        jsonSum = json.loads(main.CLIs[0].summary())
-        main.defaultFlows = jsonSum["flows"]
-
-        main.step("Check status of Mininet setup")
-        caseResult = appStatus and mnStatus and swStatus
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=caseResult,
-                                 onpass="Successfully setup Mininet",
-                                 onfail="Failed setup Mininet" )
-
-        # This tells the following cases if we are using the null-provider or ovs
-        main.switchType = "of:"
-
-        if not caseResult:
-            main.setupSkipped = True
-
-    def CASE20( self, main ):
-        '''
-            Pushing intents
-        '''
-
-        if main.reroute:
-            if main.switchType == "of:":
-                main.minIntents = int(main.params['OVS']['REROUTE']['min_intents'])
-                main.maxIntents = int(main.params['OVS']['REROUTE']['max_intents'])
-                main.checkInterval = int(main.params['OVS']['REROUTE']['check_interval'])
-                main.batchSize = int(main.params['OVS']['REROUTE']['batch_size'])
-            else:
-                main.minIntents = int(main.params['NULL']['REROUTE']['min_intents'])
-                main.maxIntents = int(main.params['NULL']['REROUTE']['max_intents'])
-                main.checkInterval = int(main.params['NULL']['REROUTE']['check_interval'])
-                main.batchSize = int(main.params['NULL']['REROUTE']['batch_size'])
-        else:
-            if main.switchType == "of:":
-                main.minIntents = int(main.params['OVS']['PUSH']['min_intents'])
-                main.maxIntents = int(main.params['OVS']['PUSH']['max_intents'])
-                main.checkInterval = int(main.params['OVS']['PUSH']['check_interval'])
-                main.batchSize = int(main.params['OVS']['PUSH']['batch_size'])
-            else:
-                main.minIntents = int(main.params['NULL']['PUSH']['min_intents'])
-                main.maxIntents = int(main.params['NULL']['PUSH']['max_intents'])
-                main.checkInterval = int(main.params['NULL']['PUSH']['check_interval'])
-                main.batchSize = int(main.params['NULL']['PUSH']['batch_size'])
-
-        # check if the case needs to be skipped
-        if main.setupSkipped:
-            main.setupSkipped = False
-            main.skipCase()
-
-        # the index where the next intents will be installed
-        offset = 0
-        # keeps track of how many intents have been installed
-        currIntents = 0
-        # keeps track of how many flows have been installed
-        currFlows = main.defaultFlows
-        # limit for the number of intents that can be installed
-        limit = main.maxIntents / main.batchSize
-
-        main.step( "Pushing intents" )
-        for i in range(limit):
-            pushResult = main.ONOScli1.pushTestIntents( main.switchType +  main.ingress,
-                                                        main.switchType +  main.egress,
-                                                        main.batchSize,
-                                                        offset = offset,
-                                                        options = "-i",
-                                                        timeout = main.timeout )
-            if pushResult == None:
-                main.log.info( "Timeout!" )
-                main.skipCase()
-            time.sleep(1)
-
-            # Update offset
-            offset += main.batchSize
-
-            if offset >= main.minIntents and offset % main.checkInterval == 0:
-                intentVerify = utilities.retry( main.ONOScli1.checkIntentSummary,
-                                                main.FALSE,
-                                                [main.timeout],
-                                                sleep=main.verifySleep,
-                                                attempts=main.verifyAttempts )
-
-                flowVerify = utilities.retry( main.ONOScli1.checkFlowsState,
-                                              main.FALSE,
-                                              [False,main.timeout],
-                                              sleep=main.verifySleep,
-                                              attempts=main.verifyAttempts )
-
-                if not intentVerify:
-                    main.log.error( "Failed to install intents" )
-                    break
-
-                if main.reroute:
-                    main.step( "Reroute" )
-                    # tear down a link
-                    main.log.info("Tearing down link")
-                    if main.switchType == "of:":
-                        downlink = main.Mininet1.link( END1 = "s1", END2 = "s3", OPTION = "down" )
-                    else:
-                        downlink = main.ONOScli1.link( main.ingress, main.egress, "down")
-
-                    if downlink:
-                        main.log.info( "Successfully tear down link" )
-                    else:
-                        main.log.warn( "Failed to tear down link" )
-
-                    time.sleep(main.rerouteSleep)
-
-                    # Verifying intents
-                    main.step( "Checking intents and flows" )
-                    intentVerify = utilities.retry( main.ONOScli1.checkIntentSummary,
-                                                    main.FALSE,
-                                                    [main.timeout],
-                                                    sleep=main.verifySleep,
-                                                    attempts=main.verifyAttempts )
-                    # Verfying flows
-                    flowVerify = utilities.retry( main.ONOScli1.checkFlowsState,
-                                                  main.FALSE,
-                                                  [False, main.timeout],
-                                                  sleep = main.verifySleep,
-                                                  attempts = main.verifyAttempts )
-
-                    if not intentVerify:
-                        main.log.error( "Failed to install intents" )
-                    # Bring link back up
-                    main.log.info("Bringing link back up")
-                    if main.switchType == "of:":
-                        uplink = main.Mininet1.link( END1 = "s1", END2 = "s3", OPTION = "up" )
-                    else:
-                        uplink = main.ONOScli1.link( main.ingress, main.egress, "up" )
-
-                    if uplink:
-                        main.log.info( "Successfully bring link back up" )
-                    else:
-                        main.log.warn( "Failed to bring link back up" )
-
-                    time.sleep(main.rerouteSleep)
-
-                    # Verifying intents
-                    main.step( "Checking intents and flows" )
-                    intentVerify = utilities.retry( main.ONOScli1.checkIntentSummary,
-                                                    main.FALSE,
-                                                    [main.timeout],
-                                                    sleep=main.verifySleep,
-                                                    attempts=main.verifyAttempts )
-                    # Verfying flows
-                    flowVerify = utilities.retry( main.ONOScli1.checkFlowsState,
-                                                  main.FALSE,
-                                                  [False, main.timeout],
-                                                  sleep = main.verifySleep,
-                                                  attempts = main.verifyAttempts )
-
-                    if not intentVerify:
-                        main.log.error( "Failed to install intents" )
-
-                    rerouteResult = downlink and uplink
-                    utilities.assert_equals( expect = main.TRUE,
-                                             actual = rerouteResult,
-                                             onpass = "Successfully reroute",
-                                             onfail = "Failed to reroute" )
-
-        utilities.assert_equals( expect = main.TRUE,
-                                 actual = intentVerify,
-                                 onpass = "Successfully pushed and verified intents",
-                                 onfail = "Failed to push and verify intents" )
-        currIntents = main.ONOScli1.getTotalIntentsNum()
-        currFlows = 0
-        # Get current flows from REST API
-        temp = json.loads( main.ONOSrest1.flows() )
-        for t in temp:
-            if t.get("state") == "ADDED":
-                currFlows = currFlows + 1
-        main.log.info( "Total Intents Installed: {}".format( currIntents ) )
-        main.log.info( "Total Flows ADDED: {}".format( currFlows ) )
-
-        main.log.info("Writing results to DB file")
-        with open(main.dbFileName, "a") as dbFile:
-            temp = "," + str(currIntents)
-            temp += "," + str(currFlows)
-            temp += ",0"
-            temp += ",0\n"
-            dbFile.write(temp)
-
-        if main.switchType == "of:":
-            main.step( "Stopping mininet" )
-            stepResult = main.Mininet1.stopNet()
-            utilities.assert_equals( expect = main.TRUE,
-                                     actual = stepResult,
-                                     oppass = "Successfully stop Mininet",
-                                     opfail = "Failed stop Mininet" )
-
-
-    def CASE100( self, main ):
-        '''
-            Report errors/warnings/exceptions
-        '''
-        main.log.info("Error report: \n")
-        main.ONOSbench.logReport( main.ONOSip[ 0 ],
-                                  [ "INFO",
-                                    "FOLLOWER",
-                                    "WARN",
-                                    "flow",
-                                    "ERROR",
-                                    "Except" ],
-                                  "s" )
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.topo b/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.topo
deleted file mode 100755
index cdd16f1..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/SCPFmaxIntents.topo
+++ /dev/null
@@ -1,46 +0,0 @@
-<TOPOLOGY>
-    <COMPONENT>
-
-        <ONOSbench>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSbench>
-
-        <ONOScli1>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOScli1>
-
-        <ONOSrest1>
-            <host>OC1</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest1>
-
-        <Mininet1>
-            <host>OCN</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>MininetCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </Mininet1>
-
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/__init__.py b/TestON/tests/SCPF/SCPFmaxIntents/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/__init__.py
+++ /dev/null
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/dependencies/maxIntentFunctions.py b/TestON/tests/SCPF/SCPFmaxIntents/dependencies/maxIntentFunctions.py
deleted file mode 100644
index 268279c..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/dependencies/maxIntentFunctions.py
+++ /dev/null
@@ -1,114 +0,0 @@
-'''
-    Wrapper functions for maxIntent
-'''
-
-import json
-import time
-import pexpect
-
-def __init__( self ):
-    self.default = ""
-
-def getIntents( main, state="INSTALLED", sleep=1, timeout=120 ):
-    intents = 0
-    try:
-        cmd = "intents | grep " + state + " | wc -l"
-        main.log.info("Sending: " + cmd)
-        main.CLIs[0].handle.sendline(cmd)
-
-        time.sleep(sleep)
-
-        main.CLIs[0].handle.expect("onos>", timeout=timeout)
-        raw = main.CLIs[0].handle.before
-        intents = int(main.CLIs[0].handle.before.split()[7])
-        main.log.info(state + " intents: " + str(intents))
-    except pexpect.TIMEOUT:
-        main.log.exception("Timeout exception caught in getIntent")
-    return intents
-
-def getFlows( main, state="ADDED", sleep=1, timeout=120 ):
-    flows = 0
-    try:
-        cmd = "flows | grep " + state + " | wc -l"
-        main.log.info("Sending: " + cmd)
-        main.CLIs[0].handle.sendline(cmd)
-
-        time.sleep(sleep)
-
-        main.CLIs[0].handle.expect("onos>", timeout=timeout)
-        raw = main.CLIs[0].handle.before
-        flows = int(main.CLIs[0].handle.before.split()[7])
-        main.log.info(state + " flows: " + str(flows))
-    except pexpect.TIMEOUT:
-        main.log.exception("Timeout exception caught in getFlows")
-    return flows
-
-
-def pushIntents( main,
-                 switch,
-                 ingress,
-                 egress,
-                 batch,
-                 offset,
-                 sleep=1,
-                 options="",
-                 timeout=120):
-    '''
-        Pushes intents using the push-test-intents cli command.
-    '''
-    try:
-        cmd = "push-test-intents " + options + " " + switch + ingress + " " +\
-                switch + egress + " " + str(batch) + " " + str(offset)
-        main.log.info("Installing " + str(offset+batch) + " intents")
-        main.log.debug("Sending: " + cmd)
-        main.CLIs[0].handle.sendline(cmd)
-        time.sleep(sleep)
-        main.CLIs[0].handle.expect("onos>", timeout=timeout)
-
-        raw = main.CLIs[0].handle.before
-        if "Failure:" not in raw and "GC" not in raw:
-            return main.TRUE
-    except pexpect.TIMEOUT:
-        main.log.exception("Timeout exception caught in pushIntents")
-    return main.FALSE
-
-def verifyFlows( main, expectedFlows, state="ADDED", sleep=1, numcheck=10, timeout=120):
-    '''
-        This function returns main.TRUE if the number of expected flows are in
-        the specified state
-
-        @params
-            expectedFlows: the flows you expect to see in the specified state
-            state: the state of the flow to check for
-            sleep: how long it should sleep for each check
-            numcheck: how many times it should check
-            timeout: the timeout for pexpect
-    '''
-    cmd = "flows | grep " + state + " | wc -l"
-    for i in range(numcheck):
-        flows = getFlows( main, state, sleep, timeout )
-        if expectedFlows == flows:
-            return main.TRUE
-
-    return main.FALSE
-
-def verifyIntents( main, expectedIntents, state="INSTALLED", sleep=1, numcheck=10, timeout=120):
-    '''
-        This function returns main.TRUE if the number of expected intents are in
-        the specified state
-
-        @params
-            expectedFlows: the intents you expect to see in the specified state
-            state: the state of the intent to check for
-            sleep: how long it should sleep for each check
-            numcheck: how many times it should check
-            timeout: the timeout for pexpect
-    '''
-    cmd = "intents | grep " + state + " | wc -l"
-    for i in range(numcheck):
-        intents = getIntents( main, state, sleep, timeout )
-        if expectedIntents == intents:
-            return main.TRUE
-        time.sleep(sleep)
-
-    return main.FALSE
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/dependencies/rerouteTopo.py b/TestON/tests/SCPF/SCPFmaxIntents/dependencies/rerouteTopo.py
deleted file mode 100755
index a2fe9fe..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/dependencies/rerouteTopo.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/python
-
-"""
-Custom topology for Mininet
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Host, RemoteController
-from mininet.node import Node
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class MyTopo( Topo ):
-
-    def __init__( self ):
-        # Initialize topology
-        Topo.__init__( self )
-
-        host1 = self.addHost('h1', ip='10.1.0.1/24')
-        host2 = self.addHost('h2', ip='10.1.0.2/24')
-        host3 = self.addHost('h3', ip='10.1.0.3/24')
-
-        s1 = self.addSwitch( 's1' )
-        s2 = self.addSwitch( 's2' )
-        s3 = self.addSwitch( 's3' )
-
-        self.addLink(s1, host1)
-        self.addLink(s2, host2)
-        self.addLink(s3, host3)
-
-        self.addLink(s1,s2)
-        self.addLink(s1,s3)
-        self.addLink(s2,s3)
-
-        topos = { 'mytopo': ( lambda: MyTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
-    "Create network"
-    topo = MyTopo()
-    network = Mininet(topo=topo, autoSetMacs=True, controller=None)
-    network.start()
-    CLI( network )
-    network.stop()
-
-if __name__ == '__main__':
-    setLogLevel('info')
-    #setLogLevel('debug')
-    setupNetwork()
diff --git a/TestON/tests/SCPF/SCPFmaxIntents/dependencies/startUp.py b/TestON/tests/SCPF/SCPFmaxIntents/dependencies/startUp.py
deleted file mode 100644
index bf2a2b6..0000000
--- a/TestON/tests/SCPF/SCPFmaxIntents/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
-
-
-
-
diff --git a/TestON/tests/SCPF/SCPFportLat/SCPFportLat.params b/TestON/tests/SCPF/SCPFportLat/SCPFportLat.params
index 0d8687e..0a81dc6 100644
--- a/TestON/tests/SCPF/SCPFportLat/SCPFportLat.params
+++ b/TestON/tests/SCPF/SCPFportLat/SCPFportLat.params
@@ -9,6 +9,11 @@
         <cellApps>drivers,metrics,openflow</cellApps>
     </ENV>
 
+    <DEPENDENCY>
+        <path>/tests/SCPF/SCPFportLat/dependencies/</path>
+        <topology>topo-perf-2sw.py</topology>
+    </DEPENDENCY>
+
     <GIT>
         <autopull>off</autopull>
         <checkout>master</checkout>
diff --git a/TestON/tests/SCPF/SCPFportLat/SCPFportLat.py b/TestON/tests/SCPF/SCPFportLat/SCPFportLat.py
index 35147ca..e6f62ef 100644
--- a/TestON/tests/SCPF/SCPFportLat/SCPFportLat.py
+++ b/TestON/tests/SCPF/SCPFportLat/SCPFportLat.py
@@ -21,6 +21,7 @@
             init = False
 
         #Load values from params file
+        main.testOnDirectory = os.path.dirname(os.getcwd())
         checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
         gitPull = main.params[ 'GIT' ][ 'autopull' ]
         cellName = main.params[ 'ENV' ][ 'cellName' ]
@@ -34,6 +35,9 @@
         topoCfgName = main.params['TEST']['topoConfigName']
         resultPath = main.params['DB']['portEventResultPath']
         skipMvn = main.params ['TEST']['mci']
+        main.topology = main.params['DEPENDENCY']['topology']
+        main.dependencyPath = main.testOnDirectory + \
+                              main.params['DEPENDENCY']['path']
         testONpath = re.sub( "(tests)$", "bin", main.testDir )  # TestON/bin
 
         # -- INIT SECTION, ONLY RUNS ONCE -- #
@@ -135,6 +139,10 @@
         verifyCellResult = main.ONOSbench.verifyCell()
 
         main.step('Starting mininet topology ')
+        copyResult = main.ONOSbench.copyMininetFile(main.topology,
+                                                    main.dependencyPath,
+                                                    main.Mininet1.user_name,
+                                                    main.Mininet1.ip_address)
         main.Mininet1.startNet()
 
         main.log.report( "Initializeing " + str( clusterCount ) + " node cluster." )
diff --git a/TestON/tests/SCPF/SCPFportLat/dependencies/topo-perf-2sw.py b/TestON/tests/SCPF/SCPFportLat/dependencies/topo-perf-2sw.py
new file mode 100644
index 0000000..ad88767
--- /dev/null
+++ b/TestON/tests/SCPF/SCPFportLat/dependencies/topo-perf-2sw.py
@@ -0,0 +1,19 @@
+'''
+imple 2 switch topology for topologoy performance test
+'''
+
+from mininet.topo import Topo
+
+class MyTopo( Topo ):
+    def __init__(self):
+        Topo.__init__(self)
+        s1 = self.addSwitch( "s1", dpid="0000000000000001")
+        s2 = self.addSwitch( "s2", dpid="0000000000000002")
+
+        h1 = self.addHost( "h1" )
+        h2 = self.addHost( "h2" )
+        self.addLink( s1, s2 )
+        self.addLink( s1, h1 )
+        self.addLink( s2, h2 )
+
+topos = { 'mytopo': ( lambda: MyTopo() ) }
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.params b/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.params
index cb75b01..8510204 100644
--- a/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.params
+++ b/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.params
@@ -22,7 +22,9 @@
         <cellName>productionCell</cellName>
         <cellApps>drivers,openflow</cellApps>
     </ENV>
-
+    <TEST>
+        <flowObj>False</flowObj>
+    </TEST>
     <GIT>
         <pull>False</pull>
         <branch>master</branch>
@@ -47,7 +49,8 @@
     </ATTEMPTS>
 
     <DATABASE>
-        <file>/tmp/ScalingMaxIntentDB</file>
+        <dbName>/tmp/ScalingMaxIntentDB</dbName>
+        <dbFlowObj>/tmp/ScalingMaxIntentDBWFO</dbFlowObj>
         <nic>1gig</nic>
         <node>baremetal</node>
     </DATABASE>
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.py b/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.py
index 5420010..c688207 100644
--- a/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.py
+++ b/TestON/tests/SCPF/SCPFscalingMaxIntents/SCPFscalingMaxIntents.py
@@ -43,9 +43,15 @@
         main.verifyAttempts = int( main.params['ATTEMPTS']['verify'] )
         main.ingress = main.params['LINK']['ingress']
         main.egress = main.params['LINK']['egress']
-        main.dbFileName = main.params['DATABASE']['file']
         main.cellData = {} # for creating cell file
         main.reroute = main.params['reroute']
+        main.flowObj = main.params['TEST']['flowObj']
+        if main.flowObj == "True":
+            main.flowObj = True
+            main.dbFileName = main.params['DATABASE']['dbFlowObj']
+        else:
+            main.flowObj = False
+            main.dbFileName = main.params['DATABASE']['dbName']
         main.threadID = 0
 
         if main.reroute == "True":
@@ -312,6 +318,9 @@
             main.CLIs[0].deviceRemove( d )
 
         time.sleep(main.startUpSleep)
+        if main.flowObj:
+            main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
+                                "useFlowObjectives", value="true")
         main.step('Starting mininet topology')
         mnStatus = main.Mininet1.startNet(topoFile='~/mininet/custom/rerouteTopo.py')
         utilities.assert_equals( expect=main.TRUE,
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/README b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/README
deleted file mode 100644
index 0c16859..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/README
+++ /dev/null
@@ -1,11 +0,0 @@
-Summary:
-        This is a performance test suit, designed to test the upper limits
-        of onos and ovsdb with respect to installing intents.
-        In this test, CASE10 set up null provoder, CASE 11 set up ovs. Start from
-        1 node, and scale to 7 nodes.
-        We push intents to every node by using Thread, and when the intents number
-        reach to the minimun number, we will verify intents and flows. If intents are
-        not installed correctly, test will stop pushing and finish this case.
-NOTE:
-        This test is largely based on the hardware used to run onos and mininet.
-        Therefore, results will very test station to test station.
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.params b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.params
deleted file mode 100644
index 8083e7a..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.params
+++ /dev/null
@@ -1,99 +0,0 @@
-<PARAMS>
-
-    # 0-init
-    # 1-setup
-    # 2-Install
-    # 10-null provider setup
-    # 20-pushing intents, and rerouting intents if reroute is true
-    # 0,1,2,10,20,1,2,10,20,1,2,10,20
-   <testcases>0,1,2,11,20,1,2,11,20,1,2,11,20,1,2,11,20</testcases>
-
-    <reroute>False</reroute>
-
-    <SCALE>1,3,5,7</SCALE>
-
-    <DEPENDENCY>
-        <path>/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/</path>
-        <wrapper1>startUp</wrapper1>
-        <topology>rerouteTopo.py</topology>
-    </DEPENDENCY>
-
-    <ENV>
-        <cellName>productionCell</cellName>
-        <cellApps>drivers,openflow</cellApps>
-    </ENV>
-
-    <GIT>
-        <pull>False</pull>
-        <branch>master</branch>
-    </GIT>
-
-    <CTRL>
-        <port>6653</port>
-    </CTRL>
-
-    <SLEEP>
-        <startup>10</startup>
-        <install>10</install>
-        <verify>15</verify>
-        <reroute>3</reroute>
-        # timeout for pexpect
-        <timeout>300</timeout>
-    </SLEEP>
-
-    <ATTEMPTS>
-        <verify>3</verify>
-        <push>3</push>
-    </ATTEMPTS>
-
-    <DATABASE>
-        <file>/tmp/ScalingMaxIntentDBWFO</file>
-        <nic>1gig</nic>
-        <node>baremetal</node>
-    </DATABASE>
-
-    <LINK>
-        <ingress>0000000000000001/5</ingress>
-        <egress>0000000000000007/5</egress>
-    </LINK>
-
-    # CASE10
-    <NULL>
-        # CASE20
-        <PUSH>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>70000</max_intents>
-            <check_interval>10000</check_interval>
-        </PUSH>
-
-        # if reroute is true
-        <REROUTE>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>1000000</max_intents>
-            <check_interval>100000</check_interval>
-        </REROUTE>
-    </NULL>
-
-    # CASE11
-    <OVS>
-        # CASE20
-        <PUSH>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>500000</max_intents>
-            <check_interval>10000</check_interval>
-        </PUSH>
-
-        # if reroute is true
-        <REROUTE>
-            <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
-            <max_intents>500000</max_intents>
-            <check_interval>10000</check_interval>
-        </REROUTE>
-    </OVS>
-
-
-</PARAMS>
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.py b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.py
deleted file mode 100644
index 6177b1a..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.py
+++ /dev/null
@@ -1,516 +0,0 @@
-import sys
-import json
-import time
-import os
-'''
-SCPFscalingMaxIntents
-Push test Intents to onos
-CASE10: set up Null Provider
-CASE11: set up Open Flows
-Scale up when reach the Limited
-Start from 1 nodes, 8 devices. Then Scale up to 3,5,7 nodes
-Recommand batch size: 100, check interval: 100
-'''
-class SCPFscalingMaxIntentsWithFlowObj:
-    def __init__( self ):
-        self.default = ''
-
-    def CASE0( self, main):
-        import sys
-        import json
-        import time
-        import os
-        import imp
-
-        main.case( "Constructing test variables and building ONOS package" )
-        main.step( "Constructing test variables" )
-        stepResult = main.FALSE
-
-        # Test variables
-        main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
-        main.dependencyPath = main.testOnDirectory + \
-                main.params['DEPENDENCY']['path']
-        main.cellName = main.params[ 'ENV' ][ 'cellName' ]
-        main.apps = main.params[ 'ENV' ][ 'cellApps' ]
-        main.topology = main.params[ 'DEPENDENCY' ][ 'topology' ]
-        main.scale = ( main.params[ 'SCALE' ] ).split( "," )
-        main.ONOSport = main.params[ 'CTRL' ][ 'port' ]
-        main.timeout = int(main.params['SLEEP']['timeout'])
-        main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
-        main.installSleep = int( main.params[ 'SLEEP' ][ 'install' ] )
-        main.verifySleep = int( main.params[ 'SLEEP' ][ 'verify' ] )
-        main.rerouteSleep = int ( main.params['SLEEP']['reroute'] )
-        main.verifyAttempts = int( main.params['ATTEMPTS']['verify'] )
-        main.ingress = main.params['LINK']['ingress']
-        main.egress = main.params['LINK']['egress']
-        main.dbFileName = main.params['DATABASE']['file']
-        main.cellData = {} # for creating cell file
-        main.reroute = main.params['reroute']
-        main.threadID = 0
-
-        if main.reroute == "True":
-            main.reroute = True
-        else:
-            main.reroute = False
-
-        main.CLIs = []
-        main.setupSkipped = False
-
-        wrapperFile1 = main.params[ 'DEPENDENCY' ][ 'wrapper1' ]
-        gitBranch = main.params[ 'GIT' ][ 'branch' ]
-        gitPull = main.params[ 'GIT' ][ 'pull' ]
-        nic = main.params['DATABASE']['nic']
-        node = main.params['DATABASE']['node']
-        nic = main.params['DATABASE']['nic']
-        node = main.params['DATABASE']['node']
-        stepResult = main.TRUE
-
-        main.log.info("Cresting DB file")
-        with open(main.dbFileName, "w+") as dbFile:
-            dbFile.write("")
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="environment set up successfull",
-                                 onfail="environment set up Failed" )
-
-    def CASE1( self ):
-        # main.scale[ 0 ] determines the current number of ONOS controller
-        main.CLIs = []
-        main.numCtrls = int( main.scale[ 0 ] )
-        main.ONOSip = []
-        main.maxNumBatch = 0
-        main.AllONOSip = main.ONOSbench.getOnosIps()
-        for i in range(main.numCtrls):
-            main.ONOSip.append(main.AllONOSip[i])
-        main.log.info(main.ONOSip)
-
-        main.log.info( "Creating list of ONOS cli handles" )
-        for i in range(main.numCtrls):
-            main.CLIs.append( getattr( main, 'ONOScli%s' % (i+1) ) )
-
-        main.log.info(main.CLIs)
-        if not main.CLIs:
-            main.log.error( "Failed to create the list of ONOS cli handles" )
-            main.cleanup()
-            main.exit()
-
-        main.log.info( "Loading wrapper files" )
-        main.startUp = imp.load_source( wrapperFile1,
-                                        main.dependencyPath +
-                                        wrapperFile1 +
-                                        ".py" )
-
-        copyResult = main.ONOSbench.copyMininetFile( main.topology,
-                                                     main.dependencyPath,
-                                                     main.Mininet1.user_name,
-                                                     main.Mininet1.ip_address )
-
-        commit = main.ONOSbench.getVersion(report=True)
-        commit = commit.split(" ")[1]
-
-        if gitPull == 'True':
-            if not main.startUp.onosBuild( main, gitBranch ):
-                main.log.error( "Failed to build ONOS" )
-                main.cleanup()
-                main.exit()
-        else:
-            main.log.warn( "Did not pull new code so skipping mvn " +
-                           "clean install" )
-        with open(main.dbFileName, "a") as dbFile:
-            temp = "'" + commit + "',"
-            temp += "'" + nic + "',"
-            dbFile.write(temp)
-
-    def CASE2( self, main ):
-        """
-        - Uninstall ONOS cluster
-        - Verify ONOS start up
-        - Install ONOS cluster
-        - Connect to cli
-        """
-        main.log.info( "Starting up %s node(s) ONOS cluster" % main.numCtrls)
-        main.log.info( "Safety check, killing all ONOS processes" +
-                       " before initiating environment setup" )
-
-        for i in range( main.numCtrls ):
-            main.ONOSbench.onosDie( main.ONOSip[ i ] )
-
-        main.log.info( "NODE COUNT = %s" % main.numCtrls)
-
-        tempOnosIp = []
-        for i in range( main.numCtrls ):
-            tempOnosIp.append( main.ONOSip[i] )
-
-        main.ONOSbench.createCellFile( main.ONOSbench.ip_address,
-                                       "temp",
-                                       main.Mininet1.ip_address,
-                                       main.apps,
-                                       tempOnosIp )
-
-        main.step( "Apply cell to environment" )
-        cellResult = main.ONOSbench.setCell( "temp" )
-        verifyResult = main.ONOSbench.verifyCell()
-        stepResult = cellResult and verifyResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully applied cell to " + \
-                                        "environment",
-                                 onfail="Failed to apply cell to environment " )
-
-        main.step( "Creating ONOS package" )
-        packageResult = main.ONOSbench.onosPackage()
-        stepResult = packageResult
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Successfully created ONOS package",
-                                 onfail="Failed to create ONOS package" )
-
-        main.step( "Uninstall ONOS package on all Nodes" )
-        uninstallResult = main.TRUE
-        for i in range( int( main.numCtrls ) ):
-            main.log.info( "Uninstalling package on ONOS Node IP: " + main.ONOSip[i] )
-            u_result = main.ONOSbench.onosUninstall( main.ONOSip[i] )
-            utilities.assert_equals( expect=main.TRUE, actual=u_result,
-                                     onpass="Test step PASS",
-                                     onfail="Test step FAIL" )
-            uninstallResult = ( uninstallResult and u_result )
-
-        main.step( "Install ONOS package on all Nodes" )
-        installResult = main.TRUE
-        for i in range( int( main.numCtrls ) ):
-            main.log.info( "Installing package on ONOS Node IP: " + main.ONOSip[i] )
-            i_result = main.ONOSbench.onosInstall( node=main.ONOSip[i] )
-            utilities.assert_equals( expect=main.TRUE, actual=i_result,
-                                     onpass="Test step PASS",
-                                     onfail="Test step FAIL" )
-            installResult = installResult and i_result
-
-        main.step( "Verify ONOS nodes UP status" )
-        statusResult = main.TRUE
-        for i in range( int( main.numCtrls ) ):
-            main.log.info( "ONOS Node " + main.ONOSip[i] + " status:" )
-            onos_status = main.ONOSbench.onosStatus( node=main.ONOSip[i] )
-            utilities.assert_equals( expect=main.TRUE, actual=onos_status,
-                                     onpass="Test step PASS",
-                                     onfail="Test step FAIL" )
-            statusResult = ( statusResult and onos_status )
-
-        main.step( "Start ONOS CLI on all nodes" )
-        cliResult = main.TRUE
-        main.step(" Start ONOS cli using thread ")
-        startCliResult  = main.TRUE
-        pool = []
-
-        for i in range( int( main.numCtrls) ):
-            t = main.Thread( target=main.CLIs[i].startOnosCli,
-                             threadID=main.threadID,
-                             name="startOnosCli",
-                             args=[ main.ONOSip[i] ],
-                             kwargs = {"onosStartTimeout":main.timeout} )
-            pool.append(t)
-            t.start()
-            main.threadID = main.threadID + 1
-        for t in pool:
-            t.join()
-            startCliResult = startCliResult and t.result
-        time.sleep( main.startUpSleep )
-
-    def CASE10( self, main ):
-        """
-            Setting up null-provider
-        """
-        import json
-        # Activate apps
-        main.step("Activating null-provider")
-        appStatus = utilities.retry( main.CLIs[0].activateApp,
-                                     main.FALSE,
-                                     ['org.onosproject.null'],
-                                     sleep=main.verifySleep,
-                                     attempts=main.verifyAttempts )
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=appStatus,
-                                 onpass="Successfully activated null-provider",
-                                 onfail="Failed activate null-provider" )
-
-        # Setup the null-provider
-        main.step("Configuring null-provider")
-        cfgStatus = utilities.retry( main.ONOSbench.onosCfgSet,
-                                    main.FALSE,
-                                    [ main.ONOSip[0],
-                                      'org.onosproject.provider.nil.NullProviders', 'deviceCount 8'],
-                                    sleep=main.verifySleep,
-                                    attempts = main.verifyAttempts )
-        cfgStatus = cfgStatus and utilities.retry( main.ONOSbench.onosCfgSet,
-                                                   main.FALSE,
-                                                   [ main.ONOSip[0],
-                                                     'org.onosproject.provider.nil.NullProviders', 'topoShape reroute'],
-                                                   sleep=main.verifySleep,
-                                                   attempts = main.verifyAttempts )
-
-        cfgStatus = cfgStatus and utilities.retry( main.ONOSbench.onosCfgSet,
-                                                   main.FALSE,
-                                                   [ main.ONOSip[0],
-                                                     'org.onosproject.provider.nil.NullProviders', 'enabled true'],
-                                                   sleep=main.verifySleep,
-                                                   attempts = main.verifyAttempts )
-
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=cfgStatus,
-                                 onpass="Successfully configured null-provider",
-                                 onfail="Failed to configure null-provider" )
-
-        # give onos some time to settle
-        time.sleep(main.startUpSleep)
-
-        main.log.info("Setting default flows to zero")
-        main.defaultFlows = 0
-
-        main.step("Check status of null-provider setup")
-        caseResult = appStatus and cfgStatus
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=caseResult,
-                                 onpass="Setting up null-provider was successfull",
-                                 onfail="Failed to setup null-provider" )
-
-        # This tells the following cases if we are using the null-provider or ovs
-        main.switchType = "null:"
-
-        # If the null-provider setup was unsuccessfull, then there is no point to
-        # run the subsequent cases
-
-        time.sleep(main.startUpSleep)
-        main.step( "Balancing Masters" )
-
-        stepResult = main.FALSE
-        stepResult = utilities.retry( main.CLIs[0].balanceMasters,
-                                      main.FALSE,
-                                      [],
-                                      sleep=3,
-                                      attempts=3 )
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Balance masters was successfull",
-                                 onfail="Failed to balance masters")
-
-        time.sleep( 5 )
-        if not caseResult:
-            main.setupSkipped = True
-
-    def CASE11( self, main):
-        '''
-            Setting up mininet
-        '''
-        import json
-        import time 
-        devices = []
-        devices = main.CLIs[0].getAllDevicesId()
-        for d in devices:
-            main.CLIs[0].deviceRemove( d )
-
-        main.log.info("Set Intent Compiler use Flow Object")
-        main.CLIs[0].setCfg("org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator",
-        "useFlowObjectives", "true")
-        time.sleep(main.startUpSleep)
-        main.step('Starting mininet topology')
-        mnStatus = main.Mininet1.startNet(topoFile='~/mininet/custom/rerouteTopo.py')
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=mnStatus,
-                                 onpass="Successfully started Mininet",
-                                 onfail="Failed to activate Mininet" )
-
-        main.step("Assinging masters to switches")
-        switches = main.Mininet1.getSwitches()
-        swStatus = main.Mininet1.assignSwController( sw=switches.keys(), ip=main.ONOSip )
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=swStatus,
-                                 onpass="Successfully assigned switches to masters",
-                                 onfail="Failed assign switches to masters" )
-
-        time.sleep(main.startUpSleep)
-        # Balancing Masters
-        main.step( "Balancing Masters" )
-        stepResult = main.FALSE
-        stepResult = utilities.retry( main.CLIs[0].balanceMasters,
-                                      main.FALSE,
-                                      [],
-                                      sleep=3,
-                                      attempts=3 )
-
-        utilities.assert_equals( expect=main.TRUE,
-                                       actual=stepResult,
-                                       onpass="Balance masters was successfull",
-                                       onfail="Failed to balance masters" )
-
-        main.log.info("Getting default flows")
-        jsonSum = json.loads(main.CLIs[0].summary())
-        main.defaultFlows = jsonSum["flows"]
-
-        main.step("Check status of Mininet setup")
-        caseResult = mnStatus and swStatus
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=caseResult,
-                                 onpass="Successfully setup Mininet",
-                                 onfail="Failed setup Mininet" )
-
-        # This tells the following cases if we are using the null-provider or ovs
-        main.switchType = "of:"
-
-        time.sleep(main.startUpSleep)
-        main.step( "Balancing Masters" )
-
-        stepResult = main.FALSE
-        stepResult = utilities.retry( main.CLIs[0].balanceMasters,
-                                      main.FALSE,
-                                      [],
-                                      sleep=3,
-                                      attempts=3 )
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Balance masters was successfull",
-                                 onfail="Failed to balance masters")
-
-        time.sleep(5)
-        if not caseResult:
-            main.setupSkipped = True
-
-
-
-    def CASE20( self, main ):
-        if main.reroute:
-            main.minIntents = int(main.params['NULL']['REROUTE']['min_intents'])
-            main.maxIntents = int(main.params['NULL']['REROUTE']['max_intents'])
-            main.checkInterval = int(main.params['NULL']['REROUTE']['check_interval'])
-            main.batchSize = int(main.params['NULL']['REROUTE']['batch_size'])
-        else:
-            main.minIntents = int(main.params['NULL']['PUSH']['min_intents'])
-            main.maxIntents = int(main.params['NULL']['PUSH']['max_intents'])
-            main.checkInterval = int(main.params['NULL']['PUSH']['check_interval'])
-            main.batchSize = int(main.params['NULL']['PUSH']['batch_size'])
-
-        # check if the case needs to be skipped
-        if main.setupSkipped:
-            main.setupSkipped = False
-            main.skipCase()
-
-        # the index where the next intents will be installed
-        offfset = 0
-        # keeps track of how many intents have been installed
-        currIntents = 0
-        # keeps track of how many flows have been installed, set to 0 at start
-        currFlows = 0
-        # limit for the number of intents that can be installed
-        main.batchSize = int( int(main.batchSize)/int(main.numCtrls))
-        limit = main.maxIntents / main.batchSize
-        # total intents installed
-        totalIntents = 0
-
-        intentsState = None
-
-        offtmp = 0
-        main.step( "Pushing intents" )
-        stepResult = main.TRUE
-        # temp variable to contain the number of flows
-        flowsNum = 0
-        if main.numCtrls > 1:
-            # if more than one onos nodes, we should check more frequently
-            main.checkInterval = main.checkInterval/4
-
-        # make sure the checkInterval divisible batchSize
-        main.checkInterval = int( int( main.checkInterval / main.batchSize ) * main.batchSize )
-        flowTemp=0
-        totalFlows=0
-        verifyTotalIntents=0
-        for i in range(limit):
-
-            # Threads pool
-            pool = []
-
-            for j in range( int( main.numCtrls) ):
-                if main.numCtrls > 1:
-                    time.sleep( 1 )
-                offtmp = offfset + main.maxIntents * j
-                # Push intents by using threads
-                t = main.Thread( target=main.CLIs[j].pushTestIntents,
-                                 threadID=main.threadID,
-                                 name="Push-Test-Intents",
-                                 args=[ main.switchType + main.ingress,
-                                        main.switchType + main.egress,
-                                        main.batchSize ],
-                                 kwargs={ "offset": offtmp,
-                                          "options": "-i",
-                                          "timeout": main.timeout,
-                                          "background":False,
-                                          "noExit":True} )
-                pool.append(t)
-                t.start()
-                main.threadID = main.threadID + 1
-            for t in pool:
-                t.join()
-                stepResult = stepResult and t.result
-            offfset = offfset + main.batchSize
-
-            totalIntents = main.batchSize * main.numCtrls + totalIntents
-            if totalIntents >= main.minIntents and totalIntents % main.checkInterval == 0:
-                # if reach to minimum number and check interval, verify Intetns and flows
-                time.sleep( main.verifySleep * main.numCtrls )
-
-                main.log.info("Verify Intents states")
-                # k is a control variable for verify retry attempts
-                k = 1
-
-                while k <= main.verifyAttempts:
-                    # while loop for check intents by using REST api
-                    time.sleep(5)
-                    temp = 0
-                    intentsState = main.CLIs[0].checkIntentSummary(timeout=600)
-                    if intentsState:
-                        verifyTotalIntents = main.CLIs[0].getTotalIntentsNum(timeout=600)
-                        if temp < verifyTotalIntents:
-                            temp = verifyTotalIntents
-                        else:
-                            verifyTotalIntents = temp
-                        break
-                        main.log.info("Total Intents: {}".format( totalIntents) )
-                    k = k+1
-
-                totalFlows = main.CLIs[0].getTotalFlowsNum( timeout=600, noExit=True )
-                if flowTemp<totalFlows:
-                    flowTemp = totalFlows
-                else:
-                    totalFlows = flowTemp
-
-                if not intentsState:
-                    # If some intents are not installed, grep the previous flows list, and finished this test case
-                    main.log.warn( "Some intens did not install" )
-                    verifyTotalIntents = main.CLIs[0].getTotalIntentsNum(timeout=600)
-                    main.log.info("Total Intents: {}".format( totalIntents) )
-                    break
-
-        del main.scale[0]
-        utilities.assert_equals( expect = main.TRUE,
-                                 actual = intentsState,
-                                 onpass = "Successfully pushed and verified intents",
-                                 onfail = "Failed to push and verify intents" )
-
-        main.log.info( "Total Intents Installed before crash: {}".format( totalIntents ) )
-        main.log.info( "Total Flows ADDED before crash: {}".format( totalFlows ) )
-
-        main.step('clean up Mininet')
-        main.Mininet1.stopNet()
-        main.log.info("Writing results to DS file")
-        with open(main.dbFileName, "a") as dbFile:
-            # Scale number
-            temp = str(main.numCtrls)
-            temp += ",'" + "baremetal1" + "'"
-            # how many intents we installed before crash
-            temp += "," + str(totalIntents)
-            # how many flows we installed before crash
-            temp += "," + str(totalFlows)
-            # other columns in database, but we didn't use in this test
-            temp += "," + "0,0,0,0,0,0"
-            temp += "\n"
-            dbFile.write( temp )
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.topo b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.topo
deleted file mode 100755
index 8e58be7..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/SCPFscalingMaxIntentsWithFlowObj.topo
+++ /dev/null
@@ -1,101 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-
-        <ONOSbench>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-                <home>~/onos</home>
-                <nodes>7</nodes> 
-            </COMPONENTS>
-        </ONOSbench>
-
-        <ONOSrest1>
-            <host>OC1</host>
-            <port>8181</port>
-            <user>onos</user>
-            <password>rocks</password>
-            <type>OnosRestDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </ONOSrest1>
-        <ONOScli1>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli1>
-
-        <ONOScli2>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli2>
-
-        <ONOScli3>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli3>
-
-        <ONOScli4>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli4>
-
-        <ONOScli5>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli5>
-
-        <ONOScli6>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli6>
-
-        <ONOScli7>
-            <host>localhost</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS> </COMPONENTS>
-        </ONOScli7>
-
-        <Mininet1>
-            <host>OCN</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>MininetCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </Mininet1>
-
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/__init__.py b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/__init__.py
+++ /dev/null
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/rerouteTopo.py b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/rerouteTopo.py
deleted file mode 100755
index 774f12f..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/rerouteTopo.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/python
-
-"""
-Custom topology for Mininet
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Host, RemoteController
-from mininet.node import Node
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class MyTopo( Topo ):
-
-    def __init__( self ):
-        # Initialize topology
-        Topo.__init__( self )
-
-        host1 = self.addHost('h1', ip='10.1.0.1/24')
-        host2 = self.addHost('h2', ip='10.1.0.2/24')
-        host3 = self.addHost('h3', ip='10.1.0.3/24')
-        host4 = self.addHost('h4', ip='10.1.0.4/24')
-        host5 = self.addHost('h5', ip='10.1.0.5/24')
-        host6 = self.addHost('h6', ip='10.1.0.6/24')
-        host7 = self.addHost('h7', ip='10.1.0.7/24')
-
-        s1 = self.addSwitch( 's1' )
-        s2 = self.addSwitch( 's2' )
-        s3 = self.addSwitch( 's3' )
-        s4 = self.addSwitch( 's4' )
-        s5 = self.addSwitch( 's5' )
-        s6 = self.addSwitch( 's6' )
-        s7 = self.addSwitch( 's7' )
-        s8 = self.addSwitch( 's8' )
-
-
-        self.addLink(s1, host1)
-        self.addLink(s2, host2)
-        self.addLink(s3, host3)
-        self.addLink(s4, host4)
-        self.addLink(s5, host5)
-        self.addLink(s6, host6)
-        self.addLink(s7, host7)
-
-
-
-        self.addLink(s1,s2)
-        self.addLink(s2,s3)
-        self.addLink(s3,s4)
-        self.addLink(s4,s5)
-        self.addLink(s5,s6)
-        self.addLink(s6,s7)
-        self.addLink(s4,s8)
-        self.addLink(s8,s5)
-
-        topos = { 'mytopo': ( lambda: MyTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
-    "Create network"
-    topo = MyTopo()
-    network = Mininet(topo=topo, autoSetMacs=True, controller=None)
-    network.start()
-    CLI( network )
-    network.stop()
-
-if __name__ == '__main__':
-    setLogLevel('info')
-    #setLogLevel('debug')
-    setupNetwork()
diff --git a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/startUp.py b/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/dependencies/startUp.py
deleted file mode 100644
index bf2a2b6..0000000
--- a/TestON/tests/SCPF/SCPFscalingMaxIntentsWithFlowObj/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
-
-
-
-
diff --git a/TestON/tests/SCPF/SCPFswitchLat/SCPFswitchLat.py b/TestON/tests/SCPF/SCPFswitchLat/SCPFswitchLat.py
index e905e5a..55cef23 100644
--- a/TestON/tests/SCPF/SCPFswitchLat/SCPFswitchLat.py
+++ b/TestON/tests/SCPF/SCPFswitchLat/SCPFswitchLat.py
@@ -88,7 +88,7 @@
             commit = main.ONOSbench.getVersion()       ####
             commit = (commit.split(" "))[1]
 
-            temp = testONpath.replace("bin","") + "tests/SCPFswitchLat/dependencies/"
+            temp = testONpath.replace("bin","") + "tests/SCPF/SCPFswitchLat/dependencies/"
             main.ONOSbench.scp( main.Mininet1,
                                 temp + "topo-perf-1sw.py",
                                 main.Mininet1.home,
diff --git a/TestON/tests/USECASE/SegmentRouting/SRSwitchFailure/SRSwitchFailure.py b/TestON/tests/USECASE/SegmentRouting/SRSwitchFailure/SRSwitchFailure.py
index b516cc0..19ee08c 100755
--- a/TestON/tests/USECASE/SegmentRouting/SRSwitchFailure/SRSwitchFailure.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRSwitchFailure/SRSwitchFailure.py
@@ -55,6 +55,7 @@
         """
         from tests.USECASE.SegmentRouting.dependencies.Testcaselib import \
             Testcaselib as run
+        import time
         if not hasattr( main, 'apps' ):
             run.initTest( main )
         description = "Bridging and Routing sanity test with 4x4 Leaf-spine "
@@ -69,6 +70,7 @@
         # switch failure
         switch = main.params[ 'kill' ][ 'switch' ]
         run.killSwitch( main, switch, switches='7', links='24' )
+        time.sleep( main.switchSleep )
         run.pingAll( main, "CASE2_Failure" )
         run.recoverSwitch( main, switch, switches='8', links='32' )
         run.checkFlows( main, minFlowCount=350 )
@@ -125,6 +127,7 @@
         """
         from tests.USECASE.SegmentRouting.dependencies.Testcaselib import \
             Testcaselib as run
+        import time
         if not hasattr( main, 'apps' ):
             run.initTest( main )
         description = "Bridging and Routing sanity test with 4x4 Leaf-spine "
@@ -139,6 +142,7 @@
         # switch failure
         switch = main.params[ 'kill' ][ 'switch' ]
         run.killSwitch( main, switch, switches='7', links='24' )
+        time.sleep( main.switchSleep )
         run.pingAll( main, "CASE4_Failure" )
         run.recoverSwitch( main, switch, switches='8', links='32' )
         run.checkFlows( main, minFlowCount=350 )
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json b/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json
index 8232036..867785a 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json
@@ -41,6 +41,24 @@
                 "location": "of:0000000000000001/2"
             }
         }
+    },
+    "apps": {
+        "org.onosproject.segmentrouting": {
+          "xconnect": {
+            "of:0000000000000001": [
+              {
+                "vlan": 5,
+                "ports": [3, 4],
+                "name": "OLT 1"
+              },
+              {
+                "vlan": 10,
+                "ports": [3, 5],
+                "name": "OLT 2"
+              }
+            ]
+          }
+        }
     }
 
 }
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/2x2.json b/TestON/tests/USECASE/SegmentRouting/dependencies/2x2.json
index a5ec00d..d4fa3fb 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/2x2.json
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/2x2.json
@@ -100,5 +100,23 @@
                 "location": "of:0000000000000002/4"
             }
         }
+    },
+    "apps": {
+        "org.onosproject.segmentrouting": {
+          "xconnect": {
+            "of:0000000000000001": [
+              {
+                "vlan": 5,
+                "ports": [5, 6],
+                "name": "OLT 1"
+              },
+              {
+                "vlan": 10,
+                "ports": [5, 7],
+                "name": "OLT 2"
+              }
+            ]
+          }
+        }
     }
 }
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/4x4.json b/TestON/tests/USECASE/SegmentRouting/dependencies/4x4.json
index 7442359..55f3225 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/4x4.json
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/4x4.json
@@ -196,5 +196,23 @@
                 "location": "of:0000000000000004/6"
             }
         }
+    },
+    "apps": {
+        "org.onosproject.segmentrouting": {
+          "xconnect": {
+            "of:0000000000000001": [
+              {
+                "vlan": 5,
+                "ports": [7, 8],
+                "name": "OLT 1"
+              },
+              {
+                "vlan": 10,
+                "ports": [7, 9],
+                "name": "OLT 2"
+              }
+            ]
+          }
+        }
     }
 }
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 8565930..c1efd93 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -84,7 +84,6 @@
             apps = main.apps + "," + main.diff
         else:
             main.log.error( "App list is empty" )
-        main.case( "Package and start ONOS using apps:" + apps )
         print "NODE COUNT = ", main.numCtrls
         print main.ONOSip
         tempOnosIp = [ ]
@@ -234,11 +233,21 @@
     @staticmethod
     def pingAll( main, tag="", dumpflows=True ):
         main.log.report( "Check full connectivity" )
-        main.step( "Check full connectivity %s" % tag )
-        pa = main.Mininet1.pingall( )
+        main.step("Check IP connectivity %s" %tag)
+        hosts = main.Mininet1.getHosts().keys()
+        vlan10 = [ '%s10' % s for s in [ 'olt', 'vsg' ] ]
+        vlan5 = [ '%s5' % s for s in [ 'olt', 'vsg' ] ]
+        IPHosts = [ host for host in hosts if host not in ( vlan10 + vlan5 ) ]
+        pa = main.Mininet1.pingallHosts(IPHosts)
         utilities.assert_equals( expect=main.TRUE, actual=pa,
-                                 onpass="Full connectivity successfully tested",
-                                 onfail="Full connectivity failed" )
+                                 onpass="IP connectivity successfully tested",
+                                 onfail="IP connectivity failed" )
+        main.step("Check VLAN  connectivity %s" %tag)
+        p1 = main.Mininet1.pingallHosts(vlan5)
+        p2 = main.Mininet1.pingallHosts(vlan10)
+        utilities.assert_equals( expect=main.TRUE, actual=p1&p2,
+                             onpass="Vlan connectivity successfully tested",
+                             onfail="Vlan connectivity failed" )
         if dumpflows:
             main.ONOSbench.dumpFlows( main.ONOSip[ main.active ],
                                       main.logdir, "flowsOn" + tag )
@@ -284,7 +293,7 @@
         result = False
         count = 0
         while True:
-            count += 0
+            count += 1
             main.Mininet1.link( END1=end1, END2=end2, OPTION="up" )
             main.Mininet1.link( END2=end1, END1=end2, OPTION="up" )
             main.log.info(
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/cord_fabric.py b/TestON/tests/USECASE/SegmentRouting/dependencies/cord_fabric.py
index c890177..4f52689 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/cord_fabric.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/cord_fabric.py
@@ -5,7 +5,7 @@
 
 from mininet.net import Mininet
 from mininet.topo import Topo
-from mininet.node import RemoteController, UserSwitch, Host
+from mininet.node import RemoteController, UserSwitch, Host, OVSBridge
 from mininet.link import TCLink
 from mininet.log import setLogLevel
 from mininet.cli import CLI
@@ -23,7 +23,6 @@
                        help='number of hosts per leaf switch, default=2' )
     parser.add_option( '--onos', dest='onos', type='int', default=0,
                        help='number of ONOS Instances, default=0, 0 means localhost, 1 will use OC1 and so on' )
-
     (options, args) = parser.parse_args( )
     return options, args
 
@@ -34,32 +33,42 @@
 class LeafAndSpine( Topo ):
     def __init__( self, spine=2, leaf=2, fanout=2, **opts ):
         "Create Leaf and Spine Topo."
-
         Topo.__init__( self, **opts )
-
         # Add spine switches
         spines = { }
+        leafs = { }
         for s in range( spine ):
             spines[ s ] = self.addSwitch( 'spine10%s' % (s + 1),
                                           dpid="00000000010%s" % (s + 1) )
         # Set link speeds to 100Mb/s
         linkopts = dict( bw=100 )
-
         # Add Leaf switches
         for ls in range( leaf ):
-            leafSwitch = self.addSwitch( 'leaf%s' % (ls + 1),
-                                         dpid="00000000000%s" % (1 + ls) )
+            leafs[ ls ] = self.addSwitch( 'leaf%s' % (ls + 1),
+                                          dpid="00000000000%s" % (1 + ls) )
             # Connect leaf to all spines
             for s in range( spine ):
                 switch = spines[ s ]
-                self.addLink( leafSwitch, switch, **linkopts )
+                self.addLink( leafs[ ls ], switch, **linkopts )
             # Add hosts under a leaf, fanout hosts per leaf switch
             for f in range( fanout ):
                 host = self.addHost( 'h%s' % (ls * fanout + f + 1),
                                      cls=IpHost,
                                      ip='10.0.%s.%s/24' % ((ls + 1), (f + 1)),
                                      gateway='10.0.%s.254' % (ls + 1) )
-                self.addLink( host, leafSwitch, **linkopts )
+                self.addLink( host, leafs[ ls ], **linkopts )
+                # Add Xconnect simulation
+        br1 = self.addSwitch( 'br1', cls=OVSBridge )
+        self.addLink( br1, leafs[ 0 ], **linkopts )
+        for vid in [ 5, 10 ]:
+            olt = self.addHost( 'olt%s' % vid, cls=VLANHost, vlan=vid,
+                                ip="10.%s.0.1/24" % vid
+                                , mac="00:00:%02d:00:00:01" % vid )
+            vsg = self.addHost( 'vsg%s' % vid, cls=VLANHost, vlan=vid,
+                                ip="10.%s.0.2/24" % vid
+                                , mac="00:00:%02d:00:00:02" % vid )
+            self.addLink( olt, leafs[ 0 ], **linkopts )
+            self.addLink( vsg, br1, **linkopts )
 
 
 class IpHost( Host ):
@@ -74,6 +83,29 @@
         self.cmd( 'ip route add default via %s' % self.gateway )
 
 
+class VLANHost( Host ):
+    "Host connected to VLAN interface"
+
+    def config( self, vlan=100, **params ):
+        """Configure VLANHost according to (optional) parameters:
+           vlan: VLAN ID for default interface"""
+        r = super( VLANHost, self ).config( **params )
+        intf = self.defaultIntf( )
+        # remove IP from default, "physical" interface
+        self.cmd( 'ifconfig %s inet 0' % intf )
+        intf = self.defaultIntf( )
+        # create VLAN interface
+        self.cmd( 'vconfig add %s %d' % (intf, vlan) )
+        self.cmd( 'ifconfig %s.%d %s' % (intf, vlan, params[ 'ip' ]) )
+        # update the intf name and host's intf map
+        self.cmd( 'ifconfig %s.%d mtu 1480' % (intf, vlan) )
+        newName = '%s.%d' % (intf, vlan)
+        # update the (Mininet) interface to refer to VLAN interface name
+        intf.name = newName
+        # add VLAN interface to host's name to intf map
+        self.nameToIntf[ newName ] = intf
+
+
 def config( opts ):
     spine = opts.spine
     leaf = opts.leaf
@@ -83,9 +115,7 @@
         '127.0.0.1' ]
     topo = LeafAndSpine( spine=spine, leaf=leaf, fanout=fanout )
     net = Mininet( topo=topo, link=TCLink, build=False,
-                   switch=UserSwitch,
-                   controller=None,
-                   autoSetMacs=True )
+                   switch=UserSwitch, controller=None, autoSetMacs=True )
     i = 0
     for ip in controllers:
         net.addController( "c%s" % (i), controller=RemoteController, ip=ip )
