Merge "indexer: teach SQL query compiler numeric and string types"

This commit is contained in:
Jenkins 2016-04-11 09:31:40 +00:00 committed by Gerrit Code Review
commit 2e693b33ab
2 changed files with 12 additions and 0 deletions

View File

@ -27,6 +27,7 @@ from oslo_db.sqlalchemy import utils as oslo_db_utils
from oslo_log import log
import six
import sqlalchemy
from sqlalchemy import types
import sqlalchemy_utils
from gnocchi import exceptions
@ -809,6 +810,12 @@ class QueryTransformer(object):
elif (isinstance(attr.type, sqlalchemy_utils.UUIDType)
and not isinstance(value, uuid.UUID)):
converter = utils.ResourceUUID
elif isinstance(attr.type, types.String):
converter = six.text_type
elif isinstance(attr.type, types.Integer):
converter = int
elif isinstance(attr.type, types.Numeric):
converter = float
if converter:
try:

View File

@ -713,6 +713,11 @@ class TestIndexerDriver(tests_base.TestCase):
'generic',
attribute_filter={"=": {"id": "f00bar" * 50}})
def test_list_resource_instance_flavor_id_numeric(self):
r = self.index.list_resources(
'instance', attribute_filter={"=": {"flavor_id": 1.0}})
self.assertEqual(0, len(r))
def test_list_resource_weird_date(self):
self.assertRaises(
indexer.QueryValueError,