Merge "Don't glob match name_or_id"
This commit is contained in:
commit
986540665c
@ -13,7 +13,6 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import contextlib
|
import contextlib
|
||||||
import fnmatch
|
|
||||||
import inspect
|
import inspect
|
||||||
import jmespath
|
import jmespath
|
||||||
import munch
|
import munch
|
||||||
@ -84,8 +83,7 @@ def _filter_list(data, name_or_id, filters):
|
|||||||
each dictionary contains an 'id' and 'name'
|
each dictionary contains an 'id' and 'name'
|
||||||
key if a value for name_or_id is given.
|
key if a value for name_or_id is given.
|
||||||
:param string name_or_id:
|
:param string name_or_id:
|
||||||
The name or ID of the entity being filtered. Can be a glob pattern,
|
The name or ID of the entity being filtered.
|
||||||
such as 'nb01*'.
|
|
||||||
:param filters:
|
:param filters:
|
||||||
A dictionary of meta data to use for further filtering. Elements
|
A dictionary of meta data to use for further filtering. Elements
|
||||||
of this dictionary may, themselves, be dictionaries. Example::
|
of this dictionary may, themselves, be dictionaries. Example::
|
||||||
@ -104,9 +102,8 @@ def _filter_list(data, name_or_id, filters):
|
|||||||
for e in data:
|
for e in data:
|
||||||
e_id = e.get('id', None)
|
e_id = e.get('id', None)
|
||||||
e_name = e.get('name', None)
|
e_name = e.get('name', None)
|
||||||
if ((e_id and fnmatch.fnmatch(str(e_id), str(name_or_id))) or
|
if ((e_id and str(e_id) == str(name_or_id)) or
|
||||||
(e_name and fnmatch.fnmatch(
|
(e_name and str(e_name) == str(name_or_id))):
|
||||||
str(e_name), str(name_or_id)))):
|
|
||||||
identifier_matches.append(e)
|
identifier_matches.append(e)
|
||||||
data = identifier_matches
|
data = identifier_matches
|
||||||
|
|
||||||
|
@ -40,21 +40,12 @@ class TestUtils(base.TestCase):
|
|||||||
ret = _utils._filter_list(data, 'donald', None)
|
ret = _utils._filter_list(data, 'donald', None)
|
||||||
self.assertEqual([el1], ret)
|
self.assertEqual([el1], ret)
|
||||||
|
|
||||||
def test__filter_list_name_or_id_glob(self):
|
def test__filter_list_name_or_id_special(self):
|
||||||
el1 = dict(id=100, name='donald')
|
el1 = dict(id=100, name='donald')
|
||||||
el2 = dict(id=200, name='pluto')
|
el2 = dict(id=200, name='pluto[2017-01-10]')
|
||||||
el3 = dict(id=200, name='pluto-2')
|
data = [el1, el2]
|
||||||
data = [el1, el2, el3]
|
ret = _utils._filter_list(data, 'pluto[2017-01-10]', None)
|
||||||
ret = _utils._filter_list(data, 'pluto*', None)
|
self.assertEqual([el2], ret)
|
||||||
self.assertEqual([el2, el3], ret)
|
|
||||||
|
|
||||||
def test__filter_list_name_or_id_glob_not_found(self):
|
|
||||||
el1 = dict(id=100, name='donald')
|
|
||||||
el2 = dict(id=200, name='pluto')
|
|
||||||
el3 = dict(id=200, name='pluto-2')
|
|
||||||
data = [el1, el2, el3]
|
|
||||||
ret = _utils._filter_list(data, 'q*', None)
|
|
||||||
self.assertEqual([], ret)
|
|
||||||
|
|
||||||
def test__filter_list_filter(self):
|
def test__filter_list_filter(self):
|
||||||
el1 = dict(id=100, name='donald', other='duck')
|
el1 = dict(id=100, name='donald', other='duck')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user