@@ -532,9 +532,9 @@ def parse_dpg(dpg, hname):
532
532
intfs_inpc .append (pcmbr_list [i ])
533
533
pc_members [(pcintfname , pcmbr_list [i ])] = {}
534
534
if pcintf .find (str (QName (ns , "Fallback" ))) != None :
535
- pcs [pcintfname ] = {'members' : pcmbr_list , ' fallback' : pcintf .find (str (QName (ns , "Fallback" ))).text , 'min_links' : str (int (math .ceil (len () * 0.75 ))), 'lacp_key' : 'auto' }
535
+ pcs [pcintfname ] = {'fallback' : pcintf .find (str (QName (ns , "Fallback" ))).text , 'min_links' : str (int (math .ceil (len () * 0.75 ))), 'lacp_key' : 'auto' }
536
536
else :
537
- pcs [pcintfname ] = {'members' : pcmbr_list , ' min_links' : str (int (math .ceil (len (pcmbr_list ) * 0.75 ))), 'lacp_key' : 'auto' }
537
+ pcs [pcintfname ] = {'min_links' : str (int (math .ceil (len (pcmbr_list ) * 0.75 ))), 'lacp_key' : 'auto' }
538
538
port_nhipv4_map = {}
539
539
port_nhipv6_map = {}
540
540
nhg_int = ""
@@ -1244,7 +1244,7 @@ def filter_acl_table_for_backend(acls, vlan_members):
1244
1244
}
1245
1245
return filter_acls
1246
1246
1247
- def filter_acl_table_bindings (acls , neighbors , port_channels , sub_role , device_type , is_storage_device , vlan_members ):
1247
+ def filter_acl_table_bindings (acls , neighbors , port_channels , pc_members , sub_role , device_type , is_storage_device , vlan_members ):
1248
1248
if device_type == 'BackEndToRRouter' and is_storage_device :
1249
1249
return filter_acl_table_for_backend (acls , vlan_members )
1250
1250
@@ -1263,8 +1263,8 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_t
1263
1263
1264
1264
# Get the front panel port channel.
1265
1265
for port_channel_intf in port_channels :
1266
- backend_port_channel = any (lag_member in backplane_port_list \
1267
- for lag_member in port_channels [ port_channel_intf ][ 'members' ] )
1266
+ backend_port_channel = any (lag_member [ 1 ] in backplane_port_list \
1267
+ for lag_member in list ( pc_members . keys ()) if lag_member [ 0 ] == port_channel_intf )
1268
1268
if not backend_port_channel :
1269
1269
front_port_channel_intf .append (port_channel_intf )
1270
1270
@@ -1763,12 +1763,15 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
1763
1763
1764
1764
if port_config_file :
1765
1765
port_set = set (ports .keys ())
1766
- for (pc_name , mbr_map ) in list (pcs . items ()):
1766
+ for (pc_name , pc_member ) in list (pc_members . keys ()):
1767
1767
# remove portchannels that contain ports not existing in port_config.ini
1768
1768
# when port_config.ini exists
1769
- if not set ( mbr_map [ 'members' ]). issubset ( port_set ) :
1770
- print ("Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name , file = sys .stderr )
1769
+ if ( pc_name , pc_member ) in pc_members and pc_member not in port_set :
1770
+ print ("Warning: ignore '%s' as at least one of its member interfaces ('%s') is not in the port_config.ini" % ( pc_name , pc_member ) , file = sys .stderr )
1771
1771
del pcs [pc_name ]
1772
+ pc_mbr_del_keys = [f for f in list (pc_members .keys ()) if f [0 ] == pc_name ]
1773
+ for pc_mbr_del_key in pc_mbr_del_keys :
1774
+ del pc_members [pc_mbr_del_key ]
1772
1775
1773
1776
# set default port channel MTU as 9100 and admin status up and default TPID 0x8100
1774
1777
for pc in pcs .values ():
@@ -1872,7 +1875,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
1872
1875
results ['DHCP_RELAY' ] = dhcp_relay_table
1873
1876
results ['NTP_SERVER' ] = dict ((item , {}) for item in ntp_servers )
1874
1877
results ['TACPLUS_SERVER' ] = dict ((item , {'priority' : '1' , 'tcp_port' : '49' }) for item in tacacs_servers )
1875
- results ['ACL_TABLE' ] = filter_acl_table_bindings (acls , neighbors , pcs , sub_role , current_device ['type' ], is_storage_device , vlan_members )
1878
+ results ['ACL_TABLE' ] = filter_acl_table_bindings (acls , neighbors , pcs , pc_members , sub_role , current_device ['type' ], is_storage_device , vlan_members )
1876
1879
results ['FEATURE' ] = {
1877
1880
'telemetry' : {
1878
1881
'state' : 'enabled'
0 commit comments