@@ -1093,7 +1093,7 @@ def cli(self, vrf="default", output=None):
10931093 #100.100.100.5 1743 88893 51 0 27.200 bps 1
10941094 #(*,G) 0 0 0 0 0.000 bps 2
10951095 p8 = re .compile (r'^\s*(?P<source>\S+) +(?P<packets>[0-9]+) +(?P<bytes>[0-9]+) +(?P<aps>[0-9]+) +(?P<pps>[0-9]+) +'
1096- r'(?P<bitrate>[0-9.]+) +bps +(?P<oifs>[0-9]+)$' )
1096+ r'(?P<bitrate>[0-9.]+) +(?P<bitrate_unit>[kmgt]? bps) +(?P<oifs>[0-9]+)$' )
10971097
10981098 for line in out .splitlines ():
10991099 line = line .strip ()
@@ -1139,8 +1139,23 @@ def cli(self, vrf="default", output=None):
11391139 continue
11401140 m = p8 .match (line )
11411141 if m :
1142+ # Capture the values
1143+ bitrate_value = float (m .groupdict ()['bitrate' ])
1144+ bitrate_unit = m .groupdict ()['bitrate_unit' ]
1145+
1146+ # Convert to bps
1147+ conversion_factors = {
1148+ 'bps' : 1 ,
1149+ 'kbps' : 1000 ,
1150+ 'mbps' : 1000000 ,
1151+ 'gbps' : 1000000000 ,
1152+ 'tbps' : 1000000000000
1153+ }
1154+
1155+ bitrate_in_bps = bitrate_value * conversion_factors .get (bitrate_unit , 1 )
1156+
11421157 src_dict = group_dict .setdefault ('source' ,{}).setdefault (m .groupdict ()['source' ],{})
1143- src_dict .update ({'packets' : int (m .groupdict ()['packets' ]),'bytes' : int (m .groupdict ()['bytes' ]),'aps' : int (m .groupdict ()['aps' ]),'pps' : int (m .groupdict ()['pps' ]),'bitrate' : float ( m . groupdict ()[ 'bitrate' ]) ,'bitrate_unit' :'bps' ,'oifs' : int (m .groupdict ()['oifs' ])})
1158+ src_dict .update ({'packets' : int (m .groupdict ()['packets' ]),'bytes' : int (m .groupdict ()['bytes' ]),'aps' : int (m .groupdict ()['aps' ]),'pps' : int (m .groupdict ()['pps' ]),'bitrate' : bitrate_in_bps ,'bitrate_unit' :'bps' ,'oifs' : int (m .groupdict ()['oifs' ])})
11441159 continue
11451160 return mroute_dict
11461161
@@ -1231,7 +1246,7 @@ def cli(self, vrf="default", output=None):
12311246 #2001:180:1:57::1181 968 49478 51 0 0.000 bps 1
12321247 #(*,G) 0 0 0 0 0.000 bps 2
12331248 p8 = re .compile (r'^\s*(?P<source>\S+) +(?P<packets>[0-9]+) +(?P<bytes>[0-9]+) +(?P<aps>[0-9]+) +(?P<pps>[0-9]+) +'
1234- r'(?P<bitrate>[0-9.]+) +bps +(?P<oifs>[0-9]+)$' )
1249+ r'(?P<bitrate>[0-9.]+) +(?P<bitrate_unit>[kmgt]? bps) +(?P<oifs>[0-9]+)$' )
12351250
12361251 for line in out .splitlines ():
12371252 line = line .strip ()
@@ -1276,7 +1291,22 @@ def cli(self, vrf="default", output=None):
12761291 continue
12771292 m = p8 .match (line )
12781293 if m :
1294+ # Capture the values
1295+ bitrate_value = float (m .groupdict ()['bitrate' ])
1296+ bitrate_unit = m .groupdict ()['bitrate_unit' ]
1297+
1298+ # Convert to bps
1299+ conversion_factors = {
1300+ 'bps' : 1 ,
1301+ 'kbps' : 1000 ,
1302+ 'mbps' : 1000000 ,
1303+ 'gbps' : 1000000000 ,
1304+ 'tbps' : 1000000000000
1305+ }
1306+
1307+ bitrate_in_bps = bitrate_value * conversion_factors .get (bitrate_unit , 1 )
1308+
12791309 src_dict = group_dict .setdefault ('source' ,{}).setdefault (m .groupdict ()['source' ],{})
1280- src_dict .update ({'packets' : int (m .groupdict ()['packets' ]),'bytes' : int (m .groupdict ()['bytes' ]),'aps' : int (m .groupdict ()['aps' ]),'pps' : int (m .groupdict ()['pps' ]),'bitrate' : float ( m . groupdict ()[ 'bitrate' ]) ,'bitrate_unit' :'bps' ,'oifs' : int (m .groupdict ()['oifs' ])})
1310+ src_dict .update ({'packets' : int (m .groupdict ()['packets' ]),'bytes' : int (m .groupdict ()['bytes' ]),'aps' : int (m .groupdict ()['aps' ]),'pps' : int (m .groupdict ()['pps' ]),'bitrate' : bitrate_in_bps ,'bitrate_unit' :'bps' ,'oifs' : int (m .groupdict ()['oifs' ])})
12811311 continue
12821312 return mroute_dict
0 commit comments