meraki/dashboard-api-python

No way to define band selection per SSID using API

Philippe-Ragon opened this issue · 3 comments

Meraki has recently introduced (around Oct 12th) a new way to handle band selection per SSID in the GUI.

Before this change:

  • RF profile contained a toggle to indicate that band selection is defined 'per SSID' or for 'all SSIDs'
  • when toggle was set to 'all SSIDs' the value common to all SSIDs (2.4Ghz or 5Ghz or both) was defined within RF profile
  • when toggle was set to 'per SSID', the value for each SSID was defined within SSID settings

In order to handle 'per SSID' case with API, one had to use:

  • wireless.createNetworkWirelessRfProfile() or wireless.updateNetworkWirelessRfProfile() to set the toggle to 'per SSID'
  • wireless.updateNetworkWirelessSsid() for each SSID to set its band selection value

This was working fine, I had prepared a script (using library 1.12.0) to perform harmonization of band selection settings across 400 networks worlwide.

After the change:
All band selection settings are managed within RF profile i.e. for both 'all ssids' (as before) and for 'per SSID' (new).
From an ergonomy point view, this change is a good thing because all information about band selection 'per SSID' are gathered into a single GUI page (RF profile definition), instead of several pages (RF profile for toggle setting, and Access Control page of each SSID).

However, the issue is that API has not been modified to reflect the change in GUI / data structure related to band selection.
wireless.createNetworkWirelessRfProfile() or wireless.updateNetworkWirelessRfProfile():

  • are still allowing to set the toggle 'all SSIDs' / 'per SSID'
  • are still allowing to set the common value to 'all SSIDs'
    BUT they are not allowing to define one value per SSIDs

My request is to add a calling argument to these endpoints to define band selection setting of one or several SSIDs.
This would restore the possibility to handle 'per SSID' case using API.

Remark :
wireless.getNetworkWirelessRfProfile() is correctly providing 'per SSID' settings that have been defined using new version of the GUI.
Result of this endpoint now contains a new key named 'perSsidSettings' whose value is a dictionnary which contains 15 keys (one per SSID) with the following structure
'ssidNumber' : {'name' : 'nameofSSIDnumber', 'minbitrate' : xx, 'bandOperationMode' : 'dual|5Ghz|2.4Ghz', 'bandSteeringEnabled' : True|False}

This same structure could be used to set value when calling create or update endpoints.
The dictionary passed in argument could contains a definition for each ssid number (0 to 14), or only for a subset of those numbers ==> only those numbers would be updated
Before updating the values for a given ssid number, a consistency check based on 'name' key must be implemented.
If 'ssidNumber' and 'name' are not in accordance, then an error is returned.

Definitely! This is coming to the official API, and a short time thereafter, it will be added to the corresponding version of this Python library.

Latest version of the library (v1.15.0) is still exhibiting the same issue.
Said otherwise, 3 months later the issue has not been corrected.
Is there any possibility to increase the priority of my request ?

Now available in library version 1.18.2.