like filter addition for name and type_name
default filter for name and type_name does not allow to use like operator by default due to performance issue, therefore we have added filters_ops for name in base_artifact and type_name in all.py Change-Id: Ib6c5f0d249c33f52858c03c454a0a7a0859e9301
This commit is contained in:
parent
82c5aab94f
commit
328ee48815
@ -29,7 +29,11 @@ class All(base.BaseArtifact):
|
||||
fields = {
|
||||
'type_name': Field(fields.StringField,
|
||||
description="Name of artifact type.",
|
||||
sortable=True),
|
||||
sortable=True,
|
||||
filter_ops=(wrappers.FILTER_LIKE,
|
||||
wrappers.FILTER_EQ,
|
||||
wrappers.FILTER_NEQ,
|
||||
wrappers.FILTER_IN)),
|
||||
'display_type_name': Field(fields.StringField,
|
||||
description="Display name of "
|
||||
"artifact type.",
|
||||
|
@ -83,7 +83,9 @@ class BaseArtifact(base.VersionedObject):
|
||||
'name': Field(fields.StringField, required_on_activate=False,
|
||||
nullable=False, sortable=True,
|
||||
validators=[validators.MinStrLen(1)],
|
||||
description="Artifact Name."),
|
||||
description="Artifact Name.",
|
||||
filter_ops=(wrappers.FILTER_LIKE, wrappers.FILTER_EQ,
|
||||
wrappers.FILTER_NEQ, wrappers.FILTER_IN)),
|
||||
'owner': Field(fields.StringField, system=True,
|
||||
required_on_activate=False, nullable=False,
|
||||
sortable=True, description="ID of user/tenant who "
|
||||
|
@ -82,6 +82,13 @@ class TestAll(base.TestArtifact):
|
||||
for art in res:
|
||||
self.assertEqual('Heat', art['display_type_name'][:4])
|
||||
|
||||
# search artifact using like for heat_templates and heat_environments
|
||||
url = '/all?type_name=like:heat%'
|
||||
res = self.get(url=url, status=200)['artifacts']
|
||||
self.assertEqual(18, len(res))
|
||||
for art in res:
|
||||
self.assertEqual('heat', art['type_name'][:4])
|
||||
|
||||
# TODO(kushalagrawal): Need to Add test case for display_type_name with
|
||||
# null once https://bugs.launchpad.net/glare/+bug/1741400 is resolved
|
||||
|
||||
|
@ -273,6 +273,12 @@ class TestList(base.TestArtifact):
|
||||
result = sort_results(self.get(url=url)['artifacts'])
|
||||
self.assertEqual(art_list[5:], result)
|
||||
|
||||
# Like filter test cases for name, status
|
||||
url = '/sample_artifact?name=like:name%'
|
||||
artifacts = self.get(url=url)['artifacts']
|
||||
for artifact in artifacts:
|
||||
self.assertEqual("name", artifact.get("name")[:4])
|
||||
|
||||
def test_artifact_list_dict_filters(self):
|
||||
lists_of_str = [
|
||||
['aaa', 'bbb', 'ccc'],
|
||||
|
@ -69,7 +69,8 @@ fixture_base_props = {
|
||||
u'type': [u'object',
|
||||
u'null']},
|
||||
u'name': {u'description': u'Artifact Name.',
|
||||
u'filter_ops': [u'eq',
|
||||
u'filter_ops': [u'like',
|
||||
u'eq',
|
||||
u'neq',
|
||||
u'in'],
|
||||
u'glareType': u'String',
|
||||
@ -927,7 +928,7 @@ fixtures = {
|
||||
u'name': u'all',
|
||||
u'properties': generate_type_props({
|
||||
u'type_name': {u'description': u'Name of artifact type.',
|
||||
u'filter_ops': [u'eq', u'neq', u'in'],
|
||||
u'filter_ops': [u'like', u'eq', u'neq', u'in'],
|
||||
u'glareType': u'String',
|
||||
u'maxLength': 255,
|
||||
u'sortable': True,
|
||||
|
Loading…
x
Reference in New Issue
Block a user