How to use the mx_l3_firewall.updateNetworkL3FirewallRules()

Solved
Edgar-VO
Building a reputation

How to use the mx_l3_firewall.updateNetworkL3FirewallRules()

I am new to programming in Python and the use of Meraki API. Getting information using the API calls is not a problem. Modifying that information is difficult.

 

I have the following code for reading the L3 firewall and putting it in an excel sheet. (as a back) 

 

import meraki
import xlrd
import xlwt
from xlwt import Workbook
 
wb = Workbook()
 
#
# create sheet
#
 
# Demo Key
api_key = '89476587346587583475873875687532578875'
 
dashboard = meraki.DashboardAPI(api_key)
 my_org = dashboard.organizations.getOrganizations()
 
for org in my_org:
        print(f'\nAnalyzing organization {org["name"]}:')
        org_id = org['id']
 
site_code = "SITENAME"
 
my_networks = dashboard.networks.getOrganizationNetworks(org_id)
 
for my_net in my_networks:
    if site_code in my_net['name']:
 
        sheet1 = wb.add_sheet(my_net['name'])
 
        sheet1.write(0,0,'comment')
        sheet1.write(0,1,'policy')
        sheet1.write(0,2,'protocol')
        sheet1.write(0,3,'srcPort')
        sheet1.write(0,4,'srcCidr')
        sheet1.write(0,5,'destPort')
        sheet1.write(0,6,'destCidr')
        sheet1.write(0,7,'syslogEnabled')
 
        net_id=my_net["id"]
        my_MX_firewall = dashboard.mx_l3_firewall.getNetworkL3FirewallRules(net_id)
        row_count = 0
        
        for my_FW_rule in my_MX_firewall:
 
            row_count += 1
 
            sheet1.write(row_count,0,my_FW_rule['comment'])
            sheet1.write(row_count,1,my_FW_rule['policy'])
            sheet1.write(row_count,2,my_FW_rule['protocol'])
            sheet1.write(row_count,3,my_FW_rule['srcPort'])
            sheet1.write(row_count,4,my_FW_rule['srcCidr'])
            sheet1.write(row_count,5,my_FW_rule['destPort'])
            sheet1.write(row_count,6,my_FW_rule['destCidr'])
            sheet1.write(row_count,7,my_FW_rule['syslogEnabled'])
 
 
wb.save('firewall-bck.xls')
 
Now i want to use the mx_l3_firewall.updateNetworkL3FirewallRules() API call to restore / change a L3 Firewall on a site...
 
When i look at the documentation, i see i have to parse networkid and **kwargs to the API call.
 
I would like to see some code (like above) which i can use to restore the firewall rules...
 
 
I am looking for some sample code where i can use that API call. If i have this running, i can create a template and create a new site with specific Firewall rules
 
 
 
1 Accepted Solution
PhilipDAth
Kind of a big deal
Kind of a big deal

It should be something more like:

 

esponse = dashboard.mx_l3_firewall.updateNetworkL3FirewallRules(def_network,rules=payload)

View solution in original post

4 Replies 4
PhilipDAth
Kind of a big deal
Kind of a big deal

kwargs just means you use named parameters.  For example, the updateNetworkDevice call (which also uses kwargs) might look like:

 

dashboard.devices.updateNetworkDevice(netId,serial,lat=lat,lng=long)

Edgar-VO
Building a reputation


I tried the following ;

def_rule ='{"rules": [{"comment":"Allow test","policy":"allow","protocol":"any","srcCidr":"10.13.64.0/24","srcPort":"Any","destCidr":"Any","destPort":"Any","syslogEnabled":False},{"comment":"Allow BLAH","policy":"allow","protocol":"Any","srcCidr":"10.24.10.0/16","srcPort":"Any","destCidr":"Any","destPort":"Any","syslogEnabled":False}]}'

payload = json.dumps(def_rule)

response = dashboard.mx_l3_firewall.updateNetworkL3FirewallRules(def_network,payload)

TypeError: updateNetworkL3FirewallRules() takes 2 positional arguments but 3 were given

So...... how now to use the **kwargs.....

I know... still newbie at programming....
PhilipDAth
Kind of a big deal
Kind of a big deal

It should be something more like:

 

esponse = dashboard.mx_l3_firewall.updateNetworkL3FirewallRules(def_network,rules=payload)

Edgar-VO
Building a reputation

Yup.... that worked, and i got much more information back from the API then using the REST

Anyway..... Thanks.... this also solves some other issues i had with parameter parsing with python and Meraki API


Get notified when there are additional replies to this discussion.
Welcome to the Meraki Community!
To start contributing, simply sign in with your Cisco account. If you don't yet have a Cisco account, you can sign up.