diff --git a/generator/batch_class_template.jinja2 b/generator/batch_class_template.jinja2 index 681e6d2c..7e0eb967 100644 --- a/generator/batch_class_template.jinja2 +++ b/generator/batch_class_template.jinja2 @@ -2,6 +2,6 @@ import urllib class ActionBatch{{ class_name }}(object): - def __init__(self): + def __init__(self, enable_kwargs_validation): super(ActionBatch{{ class_name }}, self).__init__() - + self.enable_kwargs_validation = enable_kwargs_validation diff --git a/generator/batch_function_template.jinja2 b/generator/batch_function_template.jinja2 index f08b67f8..84deb9d0 100644 --- a/generator/batch_function_template.jinja2 +++ b/generator/batch_function_template.jinja2 @@ -31,6 +31,8 @@ {% if query_params|length > 0 %} query_params = [{% for param in query_params %}'{{ param }}', {% endfor %}] + if self.enable_kwargs_validation: + validate_kwargs(query_params) params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} {% endif %} @@ -44,6 +46,8 @@ {% endif %} {% if body_params|length > 0 %} body_params = [{% for param in body_params %}'{{ param }}', {% endfor %}] + if self.enable_kwargs_validation: + validate_kwargs(body_params) {% if batch_operation != 'destroy'%} payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} {% endif %} diff --git a/generator/class_template.jinja2 b/generator/class_template.jinja2 index 983ff759..e143db40 100644 --- a/generator/class_template.jinja2 +++ b/generator/class_template.jinja2 @@ -2,7 +2,7 @@ import urllib class {{ class_name }}(object): - def __init__(self, session): + def __init__(self, session, enable_kwargs_validation): super({{ class_name }}, self).__init__() self._session = session - + self.enable_kwargs_validation = enable_kwargs_validation diff --git a/generator/function_template.jinja2 b/generator/function_template.jinja2 index 730f8a1f..67b2a807 100644 --- a/generator/function_template.jinja2 +++ b/generator/function_template.jinja2 @@ -31,6 +31,8 @@ {% if query_params|length > 0 %} query_params = [{% for param in query_params %}'{{ param }}', {% endfor %}] + if self.enable_kwargs_validation: + validate_kwargs(query_params) params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} {% endif %} @@ -44,6 +46,8 @@ {% endif %} {% if body_params|length > 0 %} body_params = [{% for param in body_params %}'{{ param }}', {% endfor %}] + if self.enable_kwargs_validation: + validate_kwargs(body_params) payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} {% endif %} diff --git a/meraki/__init__.py b/meraki/__init__.py index 738518ae..fa78ebc8 100644 --- a/meraki/__init__.py +++ b/meraki/__init__.py @@ -40,6 +40,7 @@ BE_GEO_ID, MERAKI_PYTHON_SDK_CALLER, USE_ITERATOR_FOR_GET_PAGES, + ENABLE_KWARGS_VALIDATION, ) from meraki.rest_session import * @@ -72,6 +73,7 @@ class DashboardAPI(object): - be_geo_id (string): optional partner identifier for API usage tracking; can also be set as an environment variable BE_GEO_ID - caller (string): optional identifier for API usage tracking; can also be set as an environment variable MERAKI_PYTHON_SDK_CALLER - use_iterator_for_get_pages (boolean): list* methods will return an iterator with each object instead of a complete list with all items + - enable_kwarg_validation (boolean): enable kwargs validation? """ def __init__(self, @@ -97,6 +99,7 @@ def __init__(self, caller=MERAKI_PYTHON_SDK_CALLER, use_iterator_for_get_pages=USE_ITERATOR_FOR_GET_PAGES, inherit_logging_config=INHERIT_LOGGING_CONFIG, + enable_kwarg_validation=ENABLE_KWARGS_VALIDATION, ): # Check API key @@ -167,20 +170,21 @@ def __init__(self, use_iterator_for_get_pages=use_iterator_for_get_pages, ) + self._enable_kwargs_validation = enable_kwarg_validation # API endpoints by section - self.administered = Administered(self._session) - self.organizations = Organizations(self._session) - self.networks = Networks(self._session) - self.devices = Devices(self._session) - self.appliance = Appliance(self._session) - self.camera = Camera(self._session) - self.cellularGateway = CellularGateway(self._session) - self.insight = Insight(self._session) - self.licensing = Licensing(self._session) - self.sensor = Sensor(self._session) - self.sm = Sm(self._session) - self.switch = Switch(self._session) - self.wireless = Wireless(self._session) + self.administered = Administered(self._session, self._enable_kwargs_validation ) + self.organizations = Organizations(self._session, self._enable_kwargs_validation ) + self.networks = Networks(self._session, self._enable_kwargs_validation ) + self.devices = Devices(self._session, self._enable_kwargs_validation ) + self.appliance = Appliance(self._session, self._enable_kwargs_validation ) + self.camera = Camera(self._session, self._enable_kwargs_validation ) + self.cellularGateway = CellularGateway(self._session, self._enable_kwargs_validation ) + self.insight = Insight(self._session, self._enable_kwargs_validation ) + self.licensing = Licensing(self._session, self._enable_kwargs_validation ) + self.sensor = Sensor(self._session, self._enable_kwargs_validation ) + self.sm = Sm(self._session, self._enable_kwargs_validation ) + self.switch = Switch(self._session, self._enable_kwargs_validation ) + self.wireless = Wireless(self._session, self._enable_kwargs_validation ) # Batch definitions - self.batch = Batch() + self.batch = Batch(self._enable_kwargs_validation ) diff --git a/meraki/api/batch/__init__.py b/meraki/api/batch/__init__.py index e716147b..a001f5a5 100644 --- a/meraki/api/batch/__init__.py +++ b/meraki/api/batch/__init__.py @@ -13,16 +13,16 @@ # Batch class class Batch: - def __init__(self): + def __init__(self, enable_kwarg_validation): # Action Batch helper API endpoints by section - self.organizations = ActionBatchOrganizations() - self.networks = ActionBatchNetworks() - self.devices = ActionBatchDevices() - self.appliance = ActionBatchAppliance() - self.camera = ActionBatchCamera() - self.cellularGateway = ActionBatchCellularGateway() - self.insight = ActionBatchInsight() - self.sensor = ActionBatchSensor() - self.sm = ActionBatchSm() - self.switch = ActionBatchSwitch() - self.wireless = ActionBatchWireless() + self.organizations = ActionBatchOrganizations(enable_kwarg_validation) + self.networks = ActionBatchNetworks(enable_kwarg_validation) + self.devices = ActionBatchDevices(enable_kwarg_validation) + self.appliance = ActionBatchAppliance(enable_kwarg_validation) + self.camera = ActionBatchCamera(enable_kwarg_validation) + self.cellularGateway = ActionBatchCellularGateway(enable_kwarg_validation) + self.insight = ActionBatchInsight(enable_kwarg_validation) + self.sensor = ActionBatchSensor(enable_kwarg_validation) + self.sm = ActionBatchSm(enable_kwarg_validation) + self.switch = ActionBatchSwitch(enable_kwarg_validation) + self.wireless = ActionBatchWireless(enable_kwarg_validation) diff --git a/meraki/config.py b/meraki/config.py index 43d33434..4251f216 100644 --- a/meraki/config.py +++ b/meraki/config.py @@ -84,3 +84,6 @@ # The choice is yours as long as you follow the format. You should **not** include other information in this string. # If you are an official ecosystem partner, this is required. MERAKI_PYTHON_SDK_CALLER = "" + +# Enable or disable kwargs validation +ENABLE_KWARGS_VALIDATION = False