blob: ccf40849c7a3e9d3002bb9f4180905f2782e47c0 [file] [log] [blame]
Jon Hall46fdea12017-05-24 15:48:57 -07001"**** Scripted by Antony Silvester ****** "
AntonySilvestera1080f22016-04-26 13:05:57 +05302import json
3from urllib import addbase
4import os
5
6
7import requests
8from requests.auth import HTTPBasicAuth
9
10
11class BgpLs:
12
Jon Hall46fdea12017-05-24 15:48:57 -070013 def __init__( self ):
AntonySilvestera1080f22016-04-26 13:05:57 +053014 self.localAs = 100
15 self.maxSession = 20
16 self.lsCapability = True
17 self.holdTime = 180
18 self.largeAsCapability = False
19 self.flowSpecCapability = 'IPV4'
20 self.flowSpecRpdCapability = False
21 self.remoteAs = 100
22 self.peerHoldTime = 120
23 self.connectMode = 'active'
24 self.bgpPeer = []
25 self.routerId = ''
26 self.peerIp = ''
AntonySilvestera1080f22016-04-26 13:05:57 +053027
Jon Hall46fdea12017-05-24 15:48:57 -070028 def ipValue( self, localip, remoteip ):
AntonySilvestera1080f22016-04-26 13:05:57 +053029 self.routerId = localip
30 self.peerIp = remoteip
Jon Hall46fdea12017-05-24 15:48:57 -070031 return self.routerId, self.peerIp
AntonySilvestera1080f22016-04-26 13:05:57 +053032
Jon Hall46fdea12017-05-24 15:48:57 -070033 def DictoJson( self ):
AntonySilvestera1080f22016-04-26 13:05:57 +053034 Dicdata = {}
Jon Hall46fdea12017-05-24 15:48:57 -070035 org_bgp = []
36 org_bgp.append( { 'peerIp': self.peerIp, 'remoteAs': self.remoteAs,
37 'peerHoldTime': self.peerHoldTime, 'connectMode': self.connectMode } )
AntonySilvestera1080f22016-04-26 13:05:57 +053038 if self.routerId != '':
Jon Hall46fdea12017-05-24 15:48:57 -070039 Dicdata[ 'routerId' ] = self.routerId
AntonySilvestera1080f22016-04-26 13:05:57 +053040 if self.localAs != '':
Jon Hall46fdea12017-05-24 15:48:57 -070041 Dicdata[ 'localAs' ] = self.localAs
AntonySilvestera1080f22016-04-26 13:05:57 +053042 if self.maxSession != '':
Jon Hall46fdea12017-05-24 15:48:57 -070043 Dicdata[ 'maxSession' ] = self.maxSession
AntonySilvestera1080f22016-04-26 13:05:57 +053044 if self.lsCapability != '':
Jon Hall46fdea12017-05-24 15:48:57 -070045 Dicdata[ 'lsCapability' ] = self.lsCapability
AntonySilvestera1080f22016-04-26 13:05:57 +053046 if self.holdTime != '':
Jon Hall46fdea12017-05-24 15:48:57 -070047 Dicdata[ 'holdTime' ] = self.holdTime
AntonySilvestera1080f22016-04-26 13:05:57 +053048 if self.largeAsCapability != '':
Jon Hall46fdea12017-05-24 15:48:57 -070049 Dicdata[ 'largeAsCapability' ] = self.largeAsCapability
AntonySilvestera1080f22016-04-26 13:05:57 +053050 if self.flowSpecCapability != '':
Jon Hall46fdea12017-05-24 15:48:57 -070051 Dicdata[ 'flowSpecCapability' ] = self.flowSpecCapability
AntonySilvestera1080f22016-04-26 13:05:57 +053052 if self.flowSpecRpdCapability != '':
Jon Hall46fdea12017-05-24 15:48:57 -070053 Dicdata[ 'flowSpecRpdCapability' ] = self.flowSpecRpdCapability
AntonySilvestera1080f22016-04-26 13:05:57 +053054 if self.bgpPeer != '':
Jon Hall46fdea12017-05-24 15:48:57 -070055 Dicdata[ 'bgpPeer' ] = org_bgp
AntonySilvestera1080f22016-04-26 13:05:57 +053056
Jon Hall46fdea12017-05-24 15:48:57 -070057 Dicdata = { 'bgpapp': Dicdata }
58 Dicdata = { 'org.onosproject.provider.bgp.cfg': Dicdata }
59 Dicdata = { 'apps': Dicdata }
60 return json.dumps( Dicdata, indent=4 )
AntonySilvestera1080f22016-04-26 13:05:57 +053061
Jon Hall46fdea12017-05-24 15:48:57 -070062 def Comments( self ):
63 print( "**********************************************************************************\n" )
AntonySilvestera1080f22016-04-26 13:05:57 +053064
Jon Hall46fdea12017-05-24 15:48:57 -070065 def Constants( self ):
66 self.Ne_id_1 = '1111.1111.0011'
AntonySilvestera1080f22016-04-26 13:05:57 +053067 self.Ne_id_2 = '2222.2222.0022'
68 self.Ne_id_3 = '3333.3333.0033'
69 self.Ne_id_4 = '4444.4444.0044'
Jon Hall46fdea12017-05-24 15:48:57 -070070 listnum = [ self.Ne_id_1, self.Ne_id_2, self.Ne_id_3, self.Ne_id_4, ]
71 var = [ self.peerIp ]
72 return var, listnum
AntonySilvestera1080f22016-04-26 13:05:57 +053073
Jon Hall46fdea12017-05-24 15:48:57 -070074 def apps( self ):
AntonySilvestera1080f22016-04-26 13:05:57 +053075 self.app_bgp = 'org.onosproject.bgp'
76 self.app_bgpflow = 'org.onosproject.bgpflow'
Jon Hall46fdea12017-05-24 15:48:57 -070077 self.list1 = [ self.app_bgp, self.app_bgpflow ]
AntonySilvestera1080f22016-04-26 13:05:57 +053078 return self.list1
AntonySilvester02652382016-07-13 16:44:45 +053079
Jon Hall46fdea12017-05-24 15:48:57 -070080 def checkLinks( self, linksResp ):
Jon Hall64b17572017-06-06 09:39:19 -070081 # Declaring the links values
Jon Hall46fdea12017-05-24 15:48:57 -070082 links = { 'link1_src': "1650.5555.0055", 'link1_dst': "1660.6666.0066",
83 'link2_src': "1630.3333.0033", 'link2_dst': "1620.2222.0022",
84 'link3_src': "1660.6666.0066", 'link3_dst': "1650.5555.0055",
85 'link4_src': "1630.3333.0033", 'link4_dst': "1650.5555.0055",
86 'link5_src': "1640.4444.0044", 'link5_dst': "1610.1111.0011",
87 'link6_src': "1650.5555.0055", 'link4_dst': "1630.3333.0033",
88 'link7_src': "1620.2222.0022", 'link4_dst': "1630.3333.0033",
89 'link8_src': "1620.2222.0022", 'link4_dst': "1610.1111.0011",
90 'link9_src': "1630.3333.0033", 'link4_dst': "1640.4444.0044",
91 'link10_src': "1650.5555.0055", 'link4_dst': "1640.4444.0044",
92 'link11_src': "1610.1111.0011", 'link4_dst': "1640.4444.0044",
93 'link12_src': "1640.4444.0044", 'link4_dst': "1620.2222.0022",
94 'link13_src': "1660.6666.0066", 'link4_dst': "1630.3333.0033",
95 'link14_src': "1640.4444.0044", 'link4_dst': "1660.6666.0066",
96 'link15_src': "1640.4444.0044", 'link4_dst': "1630.3333.0033",
97 'link16_src': "1610.1111.0011", 'link4_dst': "1630.3333.0033",
98 'link17_src': "1630.3333.0033", 'link4_dst': "1610.1111.0011",
99 'link18_src': "1610.1111.0011", 'link4_dst': "1620.2222.0022",
100 'link19_src': "1620.2222.0022", 'link4_dst': "1640.4444.0044",
101 'link20_src': "1630.3333.0033", 'link4_dst': "1660.6666.0066",
102 'link21_src': "1640.4444.0044", 'link4_dst': "1650.5555.0055",
103 'link22_src': "1660.6666.0066", 'link4_dst': "1640.4444.0044"
104 }
AntonySilvester02652382016-07-13 16:44:45 +0530105
Jon Hall64b17572017-06-06 09:39:19 -0700106 # Comparing the Links
Jon Hall46fdea12017-05-24 15:48:57 -0700107 for x in xrange( 22 ):
108 link_src_info = linksResp[ x ][ 'src' ][ 'device' ]
109 link_dst_info = linksResp[ x ][ 'dst' ][ 'device' ]
110 link_src_split = link_src_info.split( "=" )
111 link_src = link_src_split[ 4 ]
112 link_dst_split = link_dst_info.split( "=" )
113 link_dst = link_dst_split[ 4 ]
114 y = x + 1
115 link_src_ref = links[ 'link' + str( y ) + '_src' ]
116 link_dst_ref = links[ 'link' + str( y ) + '_dst' ]
117 if ( link_src == link_src_ref ) and ( link_dst == ( link_dst_ref ) and
118 linksResp[ x ][ 'type' ] == 'DIRECT' and linksResp[ x ][ 'state' ] ==
119 'ACTIVE' ):
AntonySilvester02652382016-07-13 16:44:45 +0530120 return True
121 else:
122 return False