| "**** Scripted by Antony Silvester ****** " |
| import json |
| from urllib import addbase |
| import os |
| |
| |
| import requests |
| from requests.auth import HTTPBasicAuth |
| |
| |
| class BgpLs: |
| |
| def __init__( self ): |
| self.localAs = 100 |
| self.maxSession = 20 |
| self.lsCapability = True |
| self.holdTime = 180 |
| self.largeAsCapability = False |
| self.flowSpecCapability = 'IPV4' |
| self.flowSpecRpdCapability = False |
| self.remoteAs = 100 |
| self.peerHoldTime = 120 |
| self.connectMode = 'active' |
| self.bgpPeer = [] |
| self.routerId = '' |
| self.peerIp = '' |
| #self.org_bgp = [] |
| |
| def ipValue( self, localip, remoteip ): |
| self.routerId = localip |
| self.peerIp = remoteip |
| return self.routerId, self.peerIp |
| |
| def DictoJson( self ): |
| Dicdata = {} |
| org_bgp = [] |
| org_bgp.append( { 'peerIp': self.peerIp, 'remoteAs': self.remoteAs, |
| 'peerHoldTime': self.peerHoldTime, 'connectMode': self.connectMode } ) |
| if self.routerId != '': |
| Dicdata[ 'routerId' ] = self.routerId |
| if self.localAs != '': |
| Dicdata[ 'localAs' ] = self.localAs |
| if self.maxSession != '': |
| Dicdata[ 'maxSession' ] = self.maxSession |
| if self.lsCapability != '': |
| Dicdata[ 'lsCapability' ] = self.lsCapability |
| if self.holdTime != '': |
| Dicdata[ 'holdTime' ] = self.holdTime |
| if self.largeAsCapability != '': |
| Dicdata[ 'largeAsCapability' ] = self.largeAsCapability |
| if self.flowSpecCapability != '': |
| Dicdata[ 'flowSpecCapability' ] = self.flowSpecCapability |
| if self.flowSpecRpdCapability != '': |
| Dicdata[ 'flowSpecRpdCapability' ] = self.flowSpecRpdCapability |
| if self.bgpPeer != '': |
| Dicdata[ 'bgpPeer' ] = org_bgp |
| |
| 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 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 |
| |
| def apps( self ): |
| self.app_bgp = 'org.onosproject.bgp' |
| 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 |