|
@@ -24,6 +24,8 @@
|
|
|
# SUCH DAMAGE.
|
|
|
|
|
|
|
|
|
+from __future__ import print_function
|
|
|
+from builtins import input
|
|
|
import meraki_api
|
|
|
import yaml
|
|
|
import argparse
|
|
@@ -85,7 +87,7 @@ def main():
|
|
|
for net in config['networks']:
|
|
|
nerrors = 0
|
|
|
net_obj = None
|
|
|
- nname = net.keys()[0]
|
|
|
+ nname = list(net.keys())[0]
|
|
|
print(BANNER.format('Configuring network {}'.format(nname)))
|
|
|
if configure_nets is not None and nname not in configure_nets:
|
|
|
print('{}skipping (not in specified network list){}'.format(
|
|
@@ -129,15 +131,14 @@ def main():
|
|
|
|
|
|
if 'devices' in net[nname]:
|
|
|
for dev in net[nname]['devices']:
|
|
|
- serial = dev.keys()[0]
|
|
|
+ serial = list(dev.keys())[0]
|
|
|
if 'name' not in dev[serial]:
|
|
|
print('{}Invalid device {}: name is missing!{}'.format(
|
|
|
Fore.RED, serial, Style.RESET_ALL))
|
|
|
nerrors += 1
|
|
|
continue
|
|
|
|
|
|
- inv_dev = filter(
|
|
|
- lambda device: device['serial'] == serial, inv)
|
|
|
+ inv_dev = [device for device in inv if device['serial'] == serial]
|
|
|
if len(inv_dev) == 1:
|
|
|
dev_obj = None
|
|
|
if inv_dev[0]['networkId'] is not None and inv_dev[0]['networkId'] != net_obj.get('id'):
|
|
@@ -218,11 +219,11 @@ def main():
|
|
|
#
|
|
|
if 'copy_from_network' not in net[nname]:
|
|
|
print('\n')
|
|
|
- raw_input(
|
|
|
+ input(
|
|
|
'!!! Enable VLANs for network "{}" manually in the dashboard (under Security appliance > Addressing & VLANs), then hit enter to proceed !!!'.format(nname))
|
|
|
print('')
|
|
|
for vlan in net[nname]['vlans']:
|
|
|
- vname = vlan.keys()[0]
|
|
|
+ vname = list(vlan.keys())[0]
|
|
|
done_msg = ''
|
|
|
if int(vlan[vname]['id']) != 1:
|
|
|
vlan_obj = net_obj.create_vlan(
|
|
@@ -246,7 +247,7 @@ def main():
|
|
|
vargs[key] = vlan[vname][key]
|
|
|
res = vlan_obj.update_vlan(**vargs)
|
|
|
vargs_str = ', '.join(['{}={}'.format(k, v)
|
|
|
- for k, v in vargs.iteritems()])
|
|
|
+ for k, v in vargs.items()])
|
|
|
if not res:
|
|
|
print('{}Error updating VLAN {} ({})!{}'.format(
|
|
|
Fore.RED, vname, vargs_str, Style.RESET_ALL))
|
|
@@ -263,7 +264,7 @@ def main():
|
|
|
else:
|
|
|
si = 0
|
|
|
for ssid in net[nname]['ssids']:
|
|
|
- sname = ssid.keys()[0]
|
|
|
+ sname = list(ssid.keys())[0]
|
|
|
ssid_obj = meraki_api.SSID(
|
|
|
key=config['api_key'], id=si, name=sname, net=net_obj)
|
|
|
sargs = {}
|
|
@@ -272,7 +273,7 @@ def main():
|
|
|
sargs[key] = ssid[sname][key]
|
|
|
res = ssid_obj.update_ssid(**sargs)
|
|
|
sargs_str = ', '.join(
|
|
|
- ['{}={}'.format(k, v) for k, v in sargs.iteritems()])
|
|
|
+ ['{}={}'.format(k, v) for k, v in sargs.items()])
|
|
|
if not res:
|
|
|
print('{}Error updating SSID {} ({})!{}'.format(
|
|
|
Fore.RED, sname, sargs_str, Style.RESET_ALL))
|
|
@@ -284,19 +285,19 @@ def main():
|
|
|
|
|
|
if 'switches' in net[nname]:
|
|
|
for switch in net[nname]['switches']:
|
|
|
- serial = switch.keys()[0]
|
|
|
+ serial = list(switch.keys())[0]
|
|
|
dev_obj = meraki_api.Device(
|
|
|
key=config['api_key'], id=serial, net=net_obj)
|
|
|
if not dev_obj.realize():
|
|
|
- print('{}Device {} is not in network {}{}'.format(
|
|
|
- Fore.RED, serial, net_obj.get('name')), Style.RESET_ALL)
|
|
|
+ print(('{}Device {} is not in network {}{}'.format(
|
|
|
+ Fore.RED, serial, net_obj.get('name')), Style.RESET_ALL))
|
|
|
nerrors += 1
|
|
|
continue
|
|
|
|
|
|
for switchport in switch[serial]:
|
|
|
- port_range = switchport.keys()[0]
|
|
|
+ port_range = list(switchport.keys())[0]
|
|
|
ports = []
|
|
|
- if isinstance(port_range, (int, long)):
|
|
|
+ if isinstance(port_range, int):
|
|
|
port_obj = meraki_api.SwitchPort(
|
|
|
key=config['api_key'], id=port_range, dev=dev_obj)
|
|
|
ports.append(port_obj)
|
|
@@ -304,7 +305,7 @@ def main():
|
|
|
prs = port_range.split(',')
|
|
|
for pr in prs:
|
|
|
pr = pr.strip()
|
|
|
- if isinstance(pr, (int, long)):
|
|
|
+ if isinstance(pr, int):
|
|
|
port_obj = meraki_api.SwitchPort(
|
|
|
key=config['api_key'], id=pr, dev=dev_obj)
|
|
|
ports.append(pr)
|
|
@@ -318,7 +319,7 @@ def main():
|
|
|
(start, end) = pr.split('-')
|
|
|
start = start.strip()
|
|
|
end = end.strip()
|
|
|
- if not isinstance(start, (int, long)) or not isinstance(end, (int, long)):
|
|
|
+ if not isinstance(start, int) or not isinstance(end, int):
|
|
|
print('{}Error with port range {} and {} must be integers{}'.format(
|
|
|
Fore.RED, pr, start, end, Style.RESET_ALL))
|
|
|
nerrors += 1
|
|
@@ -344,7 +345,7 @@ def main():
|
|
|
pargs[key] = switchport[port_range][key]
|
|
|
res = port.update_switchport(**pargs)
|
|
|
pargs_str = ', '.join(
|
|
|
- ['{}={}'.format(k, v) for k, v in pargs.iteritems()])
|
|
|
+ ['{}={}'.format(k, v) for k, v in pargs.items()])
|
|
|
if not res:
|
|
|
print('{}Error updating switchport range {} ({}){}'.format(
|
|
|
Fore.RED, port_range, pargs_str, Style.RESET_ALL))
|