Convert filters to empty dict if None in DB's get_subnetpools().

When calling ML2 plugin's get_subnetpools(), 'fields' parameters may be
passed. By default it is set to None. The 'filters' is passed to
SubnetPool.get_objects() as kwargs (using **).  If someone calls plugin's
get_subnetpools() without passing filters, the method will raise exception.

This patch is adding support for 'filters' being None when calling
plugin get_subnetpools(), by converting it to be empty dict '{}'.

Change-Id: Ic7432cb167583e82b3c0e237ef25a5c9f21986e6
Closes-Bug: 1647715
This commit is contained in:
Artur Korzeniewski 2016-12-06 14:28:38 +01:00
parent 24b5a3b73e
commit 3ee76d4980
2 changed files with 13 additions and 0 deletions

View File

@ -1115,6 +1115,7 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
sorts=None, limit=None, marker=None,
page_reverse=False):
pager = base_obj.Pager(sorts, limit, page_reverse, marker)
filters = filters or {}
subnetpools = subnetpool_obj.SubnetPool.get_objects(
context, _pager=pager, validate_filters=False, **filters)
return [

View File

@ -5541,6 +5541,18 @@ class TestSubnetPoolsV2(NeutronDbPluginV2TestCase):
self.assertEqual(1, len(admin_res['subnetpools']))
self.assertEqual(0, len(mortal_res['subnetpools']))
def test_list_subnetpools_filters_none(self):
subnet_pool = self._test_create_subnetpool(['10.10.10.0/24'],
None,
True,
name=self._POOL_NAME,
min_prefixlen='24',
shared=True)
sp_list = self.plugin.get_subnetpools(
context.Context('', 'not-the-owner'))
self.assertEqual(1, len(sp_list))
self.assertEqual(subnet_pool['subnetpool']['id'], sp_list[0]['id'])
def test_delete_subnetpool(self):
subnetpool = self._test_create_subnetpool(['10.10.10.0/24'],
tenant_id=self._tenant_id,