@@ -511,9 +511,9 @@ def parse_dpg(dpg, hname):
511
511
intfs_inpc .append (pcmbr_list [i ])
512
512
pc_members [(pcintfname , pcmbr_list [i ])] = {}
513
513
if pcintf .find (str (QName (ns , "Fallback" ))) != None :
514
- 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' }
514
+ pcs [pcintfname ] = {'fallback' : pcintf .find (str (QName (ns , "Fallback" ))).text , 'min_links' : str (int (math .ceil (len () * 0.75 ))), 'lacp_key' : 'auto' }
515
515
else :
516
- pcs [pcintfname ] = {'members' : pcmbr_list , ' min_links' : str (int (math .ceil (len (pcmbr_list ) * 0.75 ))), 'lacp_key' : 'auto' }
516
+ pcs [pcintfname ] = {'min_links' : str (int (math .ceil (len (pcmbr_list ) * 0.75 ))), 'lacp_key' : 'auto' }
517
517
port_nhipv4_map = {}
518
518
port_nhipv6_map = {}
519
519
nhg_int = ""
@@ -1223,7 +1223,7 @@ def filter_acl_table_for_backend(acls, vlan_members):
1223
1223
}
1224
1224
return filter_acls
1225
1225
1226
- def filter_acl_table_bindings (acls , neighbors , port_channels , sub_role , device_type , is_storage_device , vlan_members ):
1226
+ def filter_acl_table_bindings (acls , neighbors , port_channels , pc_members , sub_role , device_type , is_storage_device , vlan_members ):
1227
1227
if device_type == 'BackEndToRRouter' and is_storage_device :
1228
1228
return filter_acl_table_for_backend (acls , vlan_members )
1229
1229
@@ -1242,8 +1242,8 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_t
1242
1242
1243
1243
# Get the front panel port channel.
1244
1244
for port_channel_intf in port_channels :
1245
- backend_port_channel = any (lag_member in backplane_port_list \
1246
- for lag_member in port_channels [ port_channel_intf ][ 'members' ] )
1245
+ backend_port_channel = any (lag_member [ 1 ] in backplane_port_list \
1246
+ for lag_member in list ( pc_members . keys ()) if lag_member [ 0 ] == port_channel_intf )
1247
1247
if not backend_port_channel :
1248
1248
front_port_channel_intf .append (port_channel_intf )
1249
1249
@@ -1754,12 +1754,15 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
1754
1754
1755
1755
if port_config_file :
1756
1756
port_set = set (ports .keys ())
1757
- for (pc_name , mbr_map ) in list (pcs . items ()):
1757
+ for (pc_name , pc_member ) in list (pc_members . keys ()):
1758
1758
# remove portchannels that contain ports not existing in port_config.ini
1759
1759
# when port_config.ini exists
1760
- if not set ( mbr_map [ 'members' ]). issubset ( port_set ) :
1761
- print ("Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name , file = sys .stderr )
1760
+ if ( pc_name , pc_member ) in pc_members and pc_member not in port_set :
1761
+ 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 )
1762
1762
del pcs [pc_name ]
1763
+ pc_mbr_del_keys = [f for f in list (pc_members .keys ()) if f [0 ] == pc_name ]
1764
+ for pc_mbr_del_key in pc_mbr_del_keys :
1765
+ del pc_members [pc_mbr_del_key ]
1763
1766
1764
1767
# set default port channel MTU as 9100 and admin status up and default TPID 0x8100
1765
1768
for pc in pcs .values ():
@@ -1863,7 +1866,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
1863
1866
results ['DHCP_RELAY' ] = dhcp_relay_table
1864
1867
results ['NTP_SERVER' ] = dict ((item , {}) for item in ntp_servers )
1865
1868
results ['TACPLUS_SERVER' ] = dict ((item , {'priority' : '1' , 'tcp_port' : '49' }) for item in tacacs_servers )
1866
- results ['ACL_TABLE' ] = filter_acl_table_bindings (acls , neighbors , pcs , sub_role , current_device ['type' ], is_storage_device , vlan_members )
1869
+ results ['ACL_TABLE' ] = filter_acl_table_bindings (acls , neighbors , pcs , pc_members , sub_role , current_device ['type' ], is_storage_device , vlan_members )
1867
1870
results ['FEATURE' ] = {
1868
1871
'telemetry' : {
1869
1872
'state' : 'enabled'
0 commit comments