diff --git a/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py b/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
old mode 100755
new mode 100644
index 5661cb8..14f1500
--- a/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
+++ b/TestON/tests/FUNC/FUNCbgpls/dependencies/Nbdata.py
@@ -1,4 +1,4 @@
-"""**** Scripted by Antony Silvester ****** """
+"**** Scripted by Antony Silvester ****** "
 import json
 from urllib import addbase
 import os
@@ -10,7 +10,7 @@
 
 class BgpLs:
 
-    def __init__(self):
+    def __init__( self ):
         self.localAs = 100
         self.maxSession = 20
         self.lsCapability = True
@@ -26,99 +26,98 @@
         self.peerIp = ''
         #self.org_bgp = []
 
-    def ipValue(self,localip,remoteip):
+    def ipValue( self, localip, remoteip ):
         self.routerId = localip
         self.peerIp = remoteip
-        return self.routerId , self.peerIp
+        return self.routerId, self.peerIp
 
-    def DictoJson(self):
+    def DictoJson( self ):
         Dicdata = {}
-        org_bgp =[]
-        org_bgp.append({'peerIp': self.peerIp , 'remoteAs':self.remoteAs,
-                        'peerHoldTime':self.peerHoldTime , 'connectMode':self.connectMode })
+        org_bgp = []
+        org_bgp.append( { 'peerIp': self.peerIp, 'remoteAs': self.remoteAs,
+                          'peerHoldTime': self.peerHoldTime, 'connectMode': self.connectMode } )
         if self.routerId != '':
-            Dicdata['routerId'] = self.routerId
+            Dicdata[ 'routerId' ] = self.routerId
         if self.localAs != '':
-            Dicdata['localAs'] = self.localAs
+            Dicdata[ 'localAs' ] = self.localAs
         if self.maxSession != '':
-            Dicdata['maxSession'] = self.maxSession
+            Dicdata[ 'maxSession' ] = self.maxSession
         if self.lsCapability != '':
-            Dicdata['lsCapability'] = self.lsCapability
+            Dicdata[ 'lsCapability' ] = self.lsCapability
         if self.holdTime != '':
-            Dicdata['holdTime'] = self.holdTime
+            Dicdata[ 'holdTime' ] = self.holdTime
         if self.largeAsCapability != '':
-            Dicdata['largeAsCapability'] = self.largeAsCapability
+            Dicdata[ 'largeAsCapability' ] = self.largeAsCapability
         if self.flowSpecCapability != '':
-            Dicdata['flowSpecCapability'] = self.flowSpecCapability
+            Dicdata[ 'flowSpecCapability' ] = self.flowSpecCapability
         if self.flowSpecRpdCapability != '':
-            Dicdata['flowSpecRpdCapability'] = self.flowSpecRpdCapability
+            Dicdata[ 'flowSpecRpdCapability' ] = self.flowSpecRpdCapability
         if self.bgpPeer != '':
-            Dicdata['bgpPeer'] = org_bgp
+            Dicdata[ 'bgpPeer' ] = org_bgp
 
-        Dicdata = {'bgpapp':Dicdata}
-        Dicdata = {'org.onosproject.provider.bgp.cfg':Dicdata}
-        Dicdata = {'apps':Dicdata}
-        return json.dumps(Dicdata,indent=4)
+        Dicdata = { 'bgpapp': Dicdata }
+        Dicdata = { 'org.onosproject.provider.bgp.cfg': Dicdata }
+        Dicdata = { 'apps': Dicdata }
+        return json.dumps( Dicdata, indent=4 )
 
+    def Comments( self ):
+        print( "**********************************************************************************\n" )
 
-    def  Comments(self):
-        print("**********************************************************************************\n")
-
-    def Constants(self):
-        self.Ne_id_1 =  '1111.1111.0011'
+    def Constants( self ):
+        self.Ne_id_1 = '1111.1111.0011'
         self.Ne_id_2 = '2222.2222.0022'
         self.Ne_id_3 = '3333.3333.0033'
         self.Ne_id_4 = '4444.4444.0044'
-        listnum = [self.Ne_id_1,self.Ne_id_2,self.Ne_id_3,self.Ne_id_4,]
-        var = [self.peerIp]
-        return var,listnum
+        listnum = [ self.Ne_id_1, self.Ne_id_2, self.Ne_id_3, self.Ne_id_4, ]
+        var = [ self.peerIp ]
+        return var, listnum
 
-    def apps(self):
+    def apps( self ):
         self.app_bgp = 'org.onosproject.bgp'
         self.app_bgpflow = 'org.onosproject.bgpflow'
-        self.list1 = [self.app_bgp,self.app_bgpflow]
+        self.list1 = [ self.app_bgp, self.app_bgpflow ]
         return self.list1
 
-    def checkLinks(self,linksResp):
+    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"
-        }
+        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'):
+        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
