Skip to content

Commit ec11308

Browse files
authored
[cfggen] Conform With Python 3 Syntax (#5154)
Preparing sonic-cfggen for migration to Python 3. signed-off-by: Tamer Ahmed <[email protected]>
1 parent f5746f3 commit ec11308

14 files changed

+526
-495
lines changed

src/sonic-config-engine/config_samples.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def generate_t1_sample_config(data):
1313
data['INTERFACE'] = {}
1414
port_count = 0
1515
total_port_amount = len(data['PORT'])
16-
for port in natsorted(data['PORT'].keys()):
16+
for port in natsorted(data['PORT']):
1717
data['PORT'][port]['admin_status'] = 'up'
1818
data['PORT'][port]['mtu'] = '9100'
1919
local_addr = '10.0.{}.{}'.format(2 * port_count / 256, 2 * port_count % 256)
@@ -35,22 +35,22 @@ def generate_t1_sample_config(data):
3535

3636
def generate_empty_config(data):
3737
new_data = {'DEVICE_METADATA': data['DEVICE_METADATA']}
38-
if not new_data['DEVICE_METADATA']['localhost'].has_key('hostname'):
38+
if 'hostname' not in new_data['DEVICE_METADATA']['localhost']:
3939
new_data['DEVICE_METADATA']['localhost']['hostname'] = 'sonic'
40-
if not new_data['DEVICE_METADATA']['localhost'].has_key('type'):
40+
if 'type' not in new_data['DEVICE_METADATA']['localhost']:
4141
new_data['DEVICE_METADATA']['localhost']['type'] = 'LeafRouter'
4242
return new_data
4343

4444
def generate_l2_config(data):
45-
if not data['DEVICE_METADATA']['localhost'].has_key('hostname'):
45+
if 'hostname' not in data['DEVICE_METADATA']['localhost']:
4646
data['DEVICE_METADATA']['localhost']['hostname'] = 'sonic'
47-
if not data['DEVICE_METADATA']['localhost'].has_key('type'):
47+
if 'type' not in data['DEVICE_METADATA']['localhost']:
4848
data['DEVICE_METADATA']['localhost']['type'] = 'ToRRouter'
4949
data['VLAN'] = {'Vlan1000': {'vlanid': '1000'}}
50-
vp = natsorted(data['PORT'].keys())
50+
vp = natsorted(list(data['PORT'].keys()))
5151
data['VLAN']['Vlan1000'].setdefault('members', vp)
5252
data['VLAN_MEMBER'] = {}
53-
for port in natsorted(data['PORT'].keys()):
53+
for port in natsorted(data['PORT']):
5454
data['PORT'][port].setdefault('admin_status', 'up')
5555
data['VLAN_MEMBER']['Vlan1000|{}'.format(port)] = {'tagging_mode': 'untagged'}
5656
return data
@@ -62,7 +62,7 @@ def generate_l2_config(data):
6262
}
6363

6464
def get_available_config():
65-
return _sample_generators.keys()
65+
return list(_sample_generators.keys())
6666

6767
def generate_sample_config(data, setting_name):
6868
return _sample_generators[setting_name.lower()](data)

src/sonic-config-engine/minigraph.py

+37-36
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env python
2+
from __future__ import print_function
23
import calendar
34
import math
45
import os
@@ -124,13 +125,13 @@ def parse_png(png, hname):
124125
bandwidth_node = link.find(str(QName(ns, "Bandwidth")))
125126
bandwidth = bandwidth_node.text if bandwidth_node is not None else None
126127
if enddevice.lower() == hname.lower():
127-
if port_alias_map.has_key(endport):
128+
if endport in port_alias_map:
128129
endport = port_alias_map[endport]
129130
neighbors[endport] = {'name': startdevice, 'port': startport}
130131
if bandwidth:
131132
port_speeds[endport] = bandwidth
132133
elif startdevice.lower() == hname.lower():
133-
if port_alias_map.has_key(startport):
134+
if startport in port_alias_map:
134135
startport = port_alias_map[startport]
135136
neighbors[startport] = {'name': enddevice, 'port': endport}
136137
if bandwidth:
@@ -175,14 +176,14 @@ def parse_asic_external_link(link, asic_name, hostname):
175176
# if chassis internal is false, the interface name will be
176177
# interface alias which should be converted to asic port name
177178
if (enddevice.lower() == hostname.lower()):
178-
if ((port_alias_asic_map.has_key(endport)) and
179+
if ((endport in port_alias_asic_map) and
179180
(asic_name.lower() in port_alias_asic_map[endport].lower())):
180181
endport = port_alias_asic_map[endport]
181182
neighbors[port_alias_map[endport]] = {'name': startdevice, 'port': startport}
182183
if bandwidth:
183184
port_speeds[port_alias_map[endport]] = bandwidth
184185
elif (startdevice.lower() == hostname.lower()):
185-
if ((port_alias_asic_map.has_key(startport)) and
186+
if ((startport in port_alias_asic_map) and
186187
(asic_name.lower() in port_alias_asic_map[startport].lower())):
187188
startport = port_alias_asic_map[startport]
188189
neighbors[port_alias_map[startport]] = {'name': enddevice, 'port': endport}
@@ -202,14 +203,14 @@ def parse_asic_internal_link(link, asic_name, hostname):
202203
bandwidth = bandwidth_node.text if bandwidth_node is not None else None
203204
if ((enddevice.lower() == asic_name.lower()) and
204205
(startdevice.lower() != hostname.lower())):
205-
if port_alias_map.has_key(endport):
206+
if endport in port_alias_map:
206207
endport = port_alias_map[endport]
207208
neighbors[endport] = {'name': startdevice, 'port': startport}
208209
if bandwidth:
209210
port_speeds[endport] = bandwidth
210211
elif ((startdevice.lower() == asic_name.lower()) and
211212
(enddevice.lower() != hostname.lower())):
212-
if port_alias_map.has_key(startport):
213+
if startport in port_alias_map:
213214
startport = port_alias_map[startport]
214215
neighbors[startport] = {'name': enddevice, 'port': endport}
215216
if bandwidth:
@@ -288,7 +289,7 @@ def parse_dpg(dpg, hname):
288289
if vni_element.text.isdigit():
289290
vni = int(vni_element.text)
290291
else:
291-
print >> sys.stderr, "VNI must be an integer (use default VNI %d instead)" % vni_default
292+
print("VNI must be an integer (use default VNI %d instead)" % vni_default, file=sys.stderr)
292293

293294
ipintfs = child.find(str(QName(ns, "IPInterfaces")))
294295
intfs = {}
@@ -391,18 +392,18 @@ def parse_dpg(dpg, hname):
391392
# decide an ACL is a Control Plane ACL if acl_intfs is empty below.
392393
for member in aclattach:
393394
member = member.strip()
394-
if pcs.has_key(member):
395+
if member in pcs:
395396
# If try to attach ACL to a LAG interface then we shall add the LAG to
396397
# to acl_intfs directly instead of break it into member ports, ACL attach
397398
# to LAG will be applied to all the LAG members internally by SAI/SDK
398399
acl_intfs.append(member)
399-
elif vlans.has_key(member):
400+
elif member in vlans:
400401
acl_intfs.append(member)
401-
elif port_alias_map.has_key(member):
402+
elif member in port_alias_map:
402403
acl_intfs.append(port_alias_map[member])
403404
# Give a warning if trying to attach ACL to a LAG member interface, correct way is to attach ACL to the LAG interface
404405
if port_alias_map[member] in intfs_inpc:
405-
print >> sys.stderr, "Warning: ACL " + aclname + " is attached to a LAG member interface " + port_alias_map[member] + ", instead of LAG interface"
406+
print("Warning: ACL " + aclname + " is attached to a LAG member interface " + port_alias_map[member] + ", instead of LAG interface", file=sys.stderr)
406407
elif member.lower().startswith('erspan') or member.lower().startswith('egress_erspan'):
407408
if member.lower().startswith('erspanv6') or member.lower().startswith('egress_erspanv6'):
408409
is_mirror_v6 = True
@@ -439,9 +440,9 @@ def parse_dpg(dpg, hname):
439440
# append the service to our list of services
440441
if aclname in acls:
441442
if acls[aclname]['type'] != 'CTRLPLANE':
442-
print >> sys.stderr, "Warning: ACL '%s' type mismatch. Not updating ACL." % aclname
443+
print("Warning: ACL '%s' type mismatch. Not updating ACL." % aclname, file=sys.stderr)
443444
elif acls[aclname]['services'] == aclservice:
444-
print >> sys.stderr, "Warning: ACL '%s' already contains service '%s'. Not updating ACL." % (aclname, aclservice)
445+
print("Warning: ACL '%s' already contains service '%s'. Not updating ACL." % (aclname, aclservice), file=sys.stderr)
445446
else:
446447
acls[aclname]['services'].append(aclservice)
447448
else:
@@ -450,7 +451,7 @@ def parse_dpg(dpg, hname):
450451
'stage': stage,
451452
'services': [aclservice]}
452453
except:
453-
print >> sys.stderr, "Warning: Ignoring Control Plane ACL %s without type" % aclname
454+
print("Warning: Ignoring Control Plane ACL %s without type" % aclname, file=sys.stderr)
454455

455456
return intfs, lo_intfs, mvrf, mgmt_intf, vlans, vlan_members, pcs, pc_members, acls, vni
456457
return None, None, None, None, None, None, None, None, None, None
@@ -530,8 +531,8 @@ def parse_cpg(cpg, hname):
530531
if hostname.lower() == bgp_session['name'].lower():
531532
bgp_session['asn'] = asn
532533

533-
bgp_monitors = { key: bgp_sessions[key] for key in bgp_sessions if bgp_sessions[key].has_key('asn') and bgp_sessions[key]['name'] == 'BGPMonitor' }
534-
bgp_sessions = { key: bgp_sessions[key] for key in bgp_sessions if bgp_sessions[key].has_key('asn') and int(bgp_sessions[key]['asn']) != 0 }
534+
bgp_monitors = { key: bgp_sessions[key] for key in bgp_sessions if 'asn' in bgp_sessions[key] and bgp_sessions[key]['name'] == 'BGPMonitor' }
535+
bgp_sessions = { key: bgp_sessions[key] for key in bgp_sessions if 'asn' in bgp_sessions[key] and int(bgp_sessions[key]['asn']) != 0 }
535536

536537
return bgp_sessions, myasn, bgp_peers_with_range, bgp_monitors
537538

@@ -696,7 +697,7 @@ def parse_spine_chassis_fe(results, vni, lo_intfs, phyport_intfs, pc_intfs, pc_m
696697
break
697698

698699
if intf_name == None:
699-
print >> sys.stderr, 'Warning: cannot find any interfaces that belong to %s' % (pc_intf)
700+
print('Warning: cannot find any interfaces that belong to %s' % (pc_intf), file=sys.stderr)
700701
continue
701702

702703
# Get the neighbor router of this port channel interface
@@ -734,7 +735,7 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role):
734735
if not backend_port_channel:
735736
front_port_channel_intf.append(port_channel_intf)
736737

737-
for acl_table, group_params in acls.iteritems():
738+
for acl_table, group_params in acls.items():
738739
group_type = group_params.get('type', None)
739740
filter_acls[acl_table] = acls[acl_table]
740741

@@ -763,7 +764,7 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role):
763764
active_ports = [port for port in front_panel_ports if port in neighbors.keys() or port in front_port_channel_intf]
764765

765766
if not active_ports:
766-
print >> sys.stderr, 'Warning: mirror table {} in ACL_TABLE does not have any ports bound to it'.format(acl_table)
767+
print('Warning: mirror table {} in ACL_TABLE does not have any ports bound to it'.format(acl_table), file=sys.stderr)
767768

768769
filter_acls[acl_table]['ports'] = active_ports
769770

@@ -921,14 +922,14 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
921922
results['BGP_PEER_RANGE'] = bgp_peers_with_range
922923
if mgmt_routes:
923924
# TODO: differentiate v4 and v6
924-
mgmt_intf.itervalues().next()['forced_mgmt_routes'] = mgmt_routes
925+
iter(mgmt_intf.values()).next()['forced_mgmt_routes'] = mgmt_routes
925926
results['MGMT_PORT'] = {}
926927
results['MGMT_INTERFACE'] = {}
927928
mgmt_intf_count = 0
928929
mgmt_alias_reverse_mapping = {}
929930
for key in mgmt_intf:
930931
alias = key[0]
931-
if mgmt_alias_reverse_mapping.has_key(alias):
932+
if alias in mgmt_alias_reverse_mapping:
932933
name = mgmt_alias_reverse_mapping[alias]
933934
else:
934935
name = 'eth' + str(mgmt_intf_count)
@@ -953,14 +954,14 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
953954
phyport_intfs = {}
954955
vlan_intfs = {}
955956
pc_intfs = {}
956-
vlan_invert_mapping = { v['alias']:k for k,v in vlans.items() if v.has_key('alias') }
957+
vlan_invert_mapping = { v['alias']:k for k,v in vlans.items() if 'alias' in v }
957958
vlan_sub_intfs = {}
958959

959960
for intf in intfs:
960961
if intf[0][0:4] == 'Vlan':
961962
vlan_intfs[intf] = {}
962963
vlan_intfs[intf[0]] = {}
963-
elif vlan_invert_mapping.has_key(intf[0]):
964+
elif intf[0] in vlan_invert_mapping:
964965
vlan_intfs[(vlan_invert_mapping[intf[0]], intf[1])] = {}
965966
vlan_intfs[vlan_invert_mapping[intf[0]]] = {}
966967
elif intf[0][0:11] == 'PortChannel':
@@ -975,7 +976,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
975976

976977
for port_name in port_speeds_default:
977978
# ignore port not in port_config.ini
978-
if not ports.has_key(port_name):
979+
if port_name not in ports:
979980
continue
980981

981982
ports.setdefault(port_name, {})['speed'] = port_speeds_default[port_name]
@@ -985,12 +986,12 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
985986
# If no port_config_file is found ports is empty so ignore this error
986987
if port_config_file is not None:
987988
if port_name not in ports:
988-
print >> sys.stderr, "Warning: ignore interface '%s' as it is not in the port_config.ini" % port_name
989+
print("Warning: ignore interface '%s' as it is not in the port_config.ini" % port_name, file=sys.stderr)
989990
continue
990991

991992
ports.setdefault(port_name, {})['speed'] = port_speed_png[port_name]
992993

993-
for port_name, port in ports.items():
994+
for port_name, port in list(ports.items()):
994995
# get port alias from port_config.ini
995996
alias = port.get('alias', port_name)
996997
# generate default 100G FEC
@@ -1001,34 +1002,34 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
10011002
# set port description if parsed from deviceinfo
10021003
for port_name in port_descriptions:
10031004
# ignore port not in port_config.ini
1004-
if not ports.has_key(port_name):
1005+
if port_name not in ports:
10051006
continue
10061007

10071008
ports.setdefault(port_name, {})['description'] = port_descriptions[port_name]
10081009

10091010
for port_name, port in ports.items():
10101011
if not port.get('description'):
1011-
if neighbors.has_key(port_name):
1012+
if port_name in neighbors:
10121013
# for the ports w/o description set it to neighbor name:port
10131014
port['description'] = "%s:%s" % (neighbors[port_name]['name'], neighbors[port_name]['port'])
10141015
else:
10151016
# for the ports w/o neighbor info, set it to port alias
10161017
port['description'] = port.get('alias', port_name)
10171018

10181019
# set default port MTU as 9100
1019-
for port in ports.itervalues():
1020+
for port in ports.values():
10201021
port['mtu'] = '9100'
10211022

10221023
# asymmetric PFC is disabled by default
1023-
for port in ports.itervalues():
1024+
for port in ports.values():
10241025
port['pfc_asym'] = 'off'
10251026

10261027
# set physical port default admin status up
10271028
for port in phyport_intfs:
10281029
if port[0] in ports:
10291030
ports.get(port[0])['admin_status'] = 'up'
10301031

1031-
for member in pc_members.keys() + vlan_members.keys():
1032+
for member in list(pc_members.keys()) + list(vlan_members.keys()):
10321033
port = ports.get(member[1])
10331034
if port:
10341035
port['admin_status'] = 'up'
@@ -1047,11 +1048,11 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
10471048
# remove portchannels that contain ports not existing in port_config.ini
10481049
# when port_config.ini exists
10491050
if not set(mbr_map['members']).issubset(port_set):
1050-
print >> sys.stderr, "Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name
1051+
print("Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name, file=sys.stderr)
10511052
del pcs[pc_name]
10521053

10531054
# set default port channel MTU as 9100 and admin status up
1054-
for pc in pcs.itervalues():
1055+
for pc in pcs.values():
10551056
pc['mtu'] = '9100'
10561057
pc['admin_status'] = 'up'
10571058

@@ -1061,7 +1062,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
10611062
for pc_intf in pc_intfs.keys():
10621063
# remove portchannels not in PORTCHANNEL dictionary
10631064
if isinstance(pc_intf, tuple) and pc_intf[0] not in pcs:
1064-
print >> sys.stderr, "Warning: ignore '%s' interface '%s' as '%s' is not in the valid PortChannel list" % (pc_intf[0], pc_intf[1], pc_intf[0])
1065+
print("Warning: ignore '%s' interface '%s' as '%s' is not in the valid PortChannel list" % (pc_intf[0], pc_intf[1], pc_intf[0]), file=sys.stderr)
10651066
del pc_intfs[pc_intf]
10661067
pc_intfs.pop(pc_intf[0], None)
10671068

@@ -1100,7 +1101,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
11001101
# remove port not in port_config.ini
11011102
if nghbr not in ports:
11021103
if port_config_file is not None:
1103-
print >> sys.stderr, "Warning: ignore interface '%s' in DEVICE_NEIGHBOR as it is not in the port_config.ini" % nghbr
1104+
print("Warning: ignore interface '%s' in DEVICE_NEIGHBOR as it is not in the port_config.ini" % nghbr, file=sys.stderr)
11041105
del neighbors[nghbr]
11051106
results['DEVICE_NEIGHBOR'] = neighbors
11061107
if asic_name is None:
@@ -1198,4 +1199,4 @@ def parse_asic_sub_role(filename, asic_name):
11981199

11991200
def print_parse_xml(filename):
12001201
results = parse_xml(filename)
1201-
print(json.dumps(results, indent=3, cls=minigraph_encoder))
1202+
print((json.dumps(results, indent=3, cls=minigraph_encoder)))

0 commit comments

Comments
 (0)