@ -211,6 +211,14 @@ def is_device_valid(meraki, serial, data):
return False
return False
def get_org_devices ( meraki , org_id ) :
path = meraki . construct_path ( ' get_all_org ' , org_id = org_id )
response = meraki . request ( path , method = ' GET ' )
if meraki . status != 200 :
meraki . fail_json ( msg = ' Failed to query all devices belonging to the organization ' )
return response
def temp_get_nets ( meraki , org_name , net_name ) :
def temp_get_nets ( meraki , org_name , net_name ) :
org_id = meraki . get_org_id ( org_name )
org_id = meraki . get_org_id ( org_name )
path = meraki . construct_path ( ' get_all ' , function = ' network ' , org_id = org_id )
path = meraki . construct_path ( ' get_all ' , function = ' network ' , org_id = org_id )
@ -263,24 +271,19 @@ def main():
meraki . params [ ' follow_redirects ' ] = ' all '
meraki . params [ ' follow_redirects ' ] = ' all '
query_urls = { ' device ' : ' /networks/ {net_id} /devices ' ,
query_urls = { ' device ' : ' /networks/ {net_id} /devices ' }
}
query_org_urls = { ' device ' : ' /organizations/ {org_id} /deviceStatuses ' }
query_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' }
query_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' ,
claim_device_urls = { ' device ' : ' /networks/ {net_id} /devices/claim ' }
}
bind_org_urls = { ' device ' : ' /organizations/ {org_id} /claim ' }
update_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' }
claim_device_urls = { ' device ' : ' /networks/ {net_id} /devices/claim ' ,
delete_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' }
}
update_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' ,
}
delete_device_urls = { ' device ' : ' /networks/ {net_id} /devices/ ' ,
}
meraki . url_catalog [ ' get_all ' ] . update ( query_urls )
meraki . url_catalog [ ' get_all ' ] . update ( query_urls )
meraki . url_catalog [ ' get_all_org ' ] = query_org_urls
meraki . url_catalog [ ' get_device ' ] = query_device_urls
meraki . url_catalog [ ' get_device ' ] = query_device_urls
meraki . url_catalog [ ' create ' ] = claim_device_urls
meraki . url_catalog [ ' create ' ] = claim_device_urls
meraki . url_catalog [ ' bind_org ' ] = bind_org_urls
meraki . url_catalog [ ' update ' ] = update_device_urls
meraki . url_catalog [ ' update ' ] = update_device_urls
meraki . url_catalog [ ' delete ' ] = delete_device_urls
meraki . url_catalog [ ' delete ' ] = delete_device_urls
@ -297,15 +300,19 @@ def main():
# manipulate or modify the state as needed (this is going to be the
# manipulate or modify the state as needed (this is going to be the
# part where your module will do what it needs to do)
# part where your module will do what it needs to do)
org_id = meraki . params [ ' org_id ' ]
if org_id is None :
org_id = meraki . get_org_id ( meraki . params [ ' org_name ' ] )
net_id = meraki . params [ ' net_id ' ]
if net_id is None :
if meraki . params [ ' net_name ' ] :
nets = temp_get_nets ( meraki , meraki . params [ ' org_name ' ] , meraki . params [ ' net_name ' ] )
nets = temp_get_nets ( meraki , meraki . params [ ' org_name ' ] , meraki . params [ ' net_name ' ] )
net_id = meraki . get_net_id ( net_name = meraki . params [ ' net_name ' ] , data = nets )
if meraki . params [ ' state ' ] == ' query ' :
if meraki . params [ ' state ' ] == ' query ' :
if meraki . params [ ' net_name ' ] or meraki . params [ ' net_id ' ] :
if meraki . params [ ' net_name ' ] or meraki . params [ ' net_id ' ] :
device = [ ]
device = [ ]
if meraki . params [ ' net_name ' ] :
net_id = meraki . get_net_id ( net_name = meraki . params [ ' net_name ' ] , data = nets )
elif meraki . params [ ' net_id ' ] :
net_id = meraki . params [ ' net_id ' ]
if meraki . params [ ' serial ' ] :
if meraki . params [ ' serial ' ] :
path = meraki . construct_path ( ' get_device ' , net_id = net_id ) + meraki . params [ ' serial ' ]
path = meraki . construct_path ( ' get_device ' , net_id = net_id ) + meraki . params [ ' serial ' ]
request = meraki . request ( path , method = ' GET ' )
request = meraki . request ( path , method = ' GET ' )
@ -341,24 +348,16 @@ def main():
request = meraki . request ( path , method = ' GET ' )
request = meraki . request ( path , method = ' GET ' )
meraki . result [ ' data ' ] = request
meraki . result [ ' data ' ] = request
else :
else :
devices = [ ]
path = meraki . construct_path ( ' get_all_org ' , org_id = org_id )
for net in nets : # Gather all devices in all networks
devices = meraki . request ( path , method = ' GET ' )
path = meraki . construct_path ( ' get_all ' , net_id = net [ ' id ' ] )
request = meraki . request ( path , method = ' GET ' )
devices . append ( request )
if meraki . params [ ' serial ' ] :
if meraki . params [ ' serial ' ] :
for network in devices :
for device in devices :
for dev in network :
if device [ ' serial ' ] == meraki . params [ ' serial ' ] :
if dev [ ' serial ' ] == meraki . params [ ' serial ' ] :
meraki . result [ ' data ' ] = device
meraki . result [ ' data ' ] = [ dev ]
else :
else :
meraki . result [ ' data ' ] = devices
meraki . result [ ' data ' ] = devices
elif meraki . params [ ' state ' ] == ' present ' :
elif meraki . params [ ' state ' ] == ' present ' :
device = [ ]
device = [ ]
if meraki . params [ ' net_name ' ] :
net_id = meraki . get_net_id ( net_name = meraki . params [ ' net_name ' ] , data = nets )
elif meraki . params [ ' net_id ' ] :
net_id = meraki . params [ ' net_id ' ]
if meraki . params [ ' hostname ' ] :
if meraki . params [ ' hostname ' ] :
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
device_list = meraki . request ( query_path , method = ' GET ' )
device_list = meraki . request ( query_path , method = ' GET ' )
@ -379,10 +378,21 @@ def main():
updated_device . append ( meraki . request ( path , method = ' PUT ' , payload = json . dumps ( payload ) ) )
updated_device . append ( meraki . request ( path , method = ' PUT ' , payload = json . dumps ( payload ) ) )
meraki . result [ ' data ' ] = updated_device
meraki . result [ ' data ' ] = updated_device
meraki . result [ ' changed ' ] = True
meraki . result [ ' changed ' ] = True
else :
if net_id is None :
device_list = get_org_devices ( meraki , org_id )
if is_device_valid ( meraki , meraki . params [ ' serial ' ] , device_list ) is False :
payload = { ' serial ' : meraki . params [ ' serial ' ] }
path = meraki . construct_path ( ' bind_org ' , org_id = org_id )
created_device = [ ]
created_device . append ( meraki . request ( path , method = ' POST ' , payload = json . dumps ( payload ) ) )
meraki . result [ ' data ' ] = created_device
meraki . result [ ' changed ' ] = True
else :
else :
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
device_list = meraki . request ( query_path , method = ' GET ' )
device_list = meraki . request ( query_path , method = ' GET ' )
if is_device_valid ( meraki , meraki . params [ ' serial ' ] , device_list ) is False :
if is_device_valid ( meraki , meraki . params [ ' serial ' ] , device_list ) is False :
if net_id :
payload = { ' serial ' : meraki . params [ ' serial ' ] }
payload = { ' serial ' : meraki . params [ ' serial ' ] }
path = meraki . construct_path ( ' create ' , net_id = net_id )
path = meraki . construct_path ( ' create ' , net_id = net_id )
created_device = [ ]
created_device = [ ]
@ -391,10 +401,6 @@ def main():
meraki . result [ ' changed ' ] = True
meraki . result [ ' changed ' ] = True
elif meraki . params [ ' state ' ] == ' absent ' :
elif meraki . params [ ' state ' ] == ' absent ' :
device = [ ]
device = [ ]
if meraki . params [ ' net_name ' ] :
net_id = meraki . get_net_id ( net_name = meraki . params [ ' net_name ' ] , data = nets )
elif meraki . params [ ' net_id ' ] :
net_id = meraki . params [ ' net_id ' ]
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
query_path = meraki . construct_path ( ' get_all ' , net_id = net_id )
device_list = meraki . request ( query_path , method = ' GET ' )
device_list = meraki . request ( query_path , method = ' GET ' )
if is_device_valid ( meraki , meraki . params [ ' serial ' ] , device_list ) is True :
if is_device_valid ( meraki , meraki . params [ ' serial ' ] , device_list ) is True :