Gi,
When a search request is done on an UUID column but an invalid uuid the API returns 500 as status code
The server shows the following backtrace:
2015-08-30 14:16:57.378235 mod_wsgi (pid=32433): Exception occurred processing WSGI script '/var/www/gnocchi/app.wsgi'.
2015-08-30 14:16:57.378253 Traceback (most recent call last):
2015-08-30 14:16:57.378265 File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2015-08-30 14:16:57.378282 resp = self.call_func(req, *args, **self.kwargs)
2015-08-30 14:16:57.378291 File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2015-08-30 14:16:57.378303 return self.func(req, *args, **kwargs)
2015-08-30 14:16:57.378311 File "/vagrant/stack-master/keystonemiddleware/keystonemiddleware/auth_token/__init__.py", line 445, in __call__
2015-08-30 14:16:57.378729 response = req.get_response(self._app)
2015-08-30 14:16:57.378741 File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
2015-08-30 14:16:57.378755 application, catch_exc_info=False)
2015-08-30 14:16:57.378762 File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
2015-08-30 14:16:57.378772 app_iter = application(self.environ, start_response)
2015-08-30 14:16:57.378781 File "/usr/local/lib/python2.7/dist-packages/webob/exc.py", line 1117, in __call__
2015-08-30 14:16:57.378792 return self.application(environ, start_response)
2015-08-30 14:16:57.378800 File "/vagrant/stack-master/gnocchi/gnocchi/rest/app.py", line 88, in __call__
2015-08-30 14:16:57.378939 return self.app(environ, start_response)
2015-08-30 14:16:57.378950 File "/usr/local/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 591, in __call__
2015-08-30 14:16:57.378963 return self.app(environ, start_response)
2015-08-30 14:16:57.378971 File "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line 56, in __call__
2015-08-30 14:16:57.378984 return self.application(environ, start_response)
2015-08-30 14:16:57.378992 File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 829, in __call__
2015-08-30 14:16:57.379003 return super(Pecan, self).__call__(environ, start_response)
2015-08-30 14:16:57.379011 File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 678, in __call__
2015-08-30 14:16:57.379022 self.invoke_controller(controller, args, kwargs, state)
2015-08-30 14:16:57.379030 File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 572, in invoke_controller
2015-08-30 14:16:57.379041 result = controller(*args, **kwargs)
2015-08-30 14:16:57.379049 File "/vagrant/stack-master/gnocchi/gnocchi/rest/__init__.py", line 1168, in post
2015-08-30 14:16:57.379099 return SearchMetricController.MetricSearchSchema(v)
2015-08-30 14:16:57.379110 File "/vagrant/stack-master/gnocchi/gnocchi/indexer/sqlalchemy.py", line 510, in list_resources
2015-08-30 14:16:57.379190 all_resources = q.all()
2015-08-30 14:16:57.379201 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2399, in all
2015-08-30 14:16:57.379214 return list(self)
2015-08-30 14:16:57.379222 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2516, in __iter__
2015-08-30 14:16:57.379233 return self._execute_and_instances(context)
2015-08-30 14:16:57.379241 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2531, in _execute_and_instances
2015-08-30 14:16:57.379256 result = conn.execute(querycontext.statement, self._params)
2015-08-30 14:16:57.379264 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
2015-08-30 14:16:57.379276 return meth(self, multiparams, params)
2015-08-30 14:16:57.379284 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
2015-08-30 14:16:57.379295 return connection._execute_clauseelement(self, multiparams, params)
2015-08-30 14:16:57.379303 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
2015-08-30 14:16:57.379315 compiled_sql, distilled_params
2015-08-30 14:16:57.379322 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1078, in _execute_context
2015-08-30 14:16:57.379333 None, None)
2015-08-30 14:16:57.379341 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception
2015-08-30 14:16:57.379352 util.raise_from_cause(newraise, exc_info)
2015-08-30 14:16:57.379360 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
2015-08-30 14:16:57.379372 reraise(type(exception), exception, tb=exc_tb)
2015-08-30 14:16:57.379380 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1073, in _execute_context
2015-08-30 14:16:57.379390 context = constructor(dialect, self, conn, *args)
2015-08-30 14:16:57.379398 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 582, in _init_compiled
2015-08-30 14:16:57.379409 param.append(processors[key](compiled_params[key]))
2015-08-30 14:16:57.379417 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/type_api.py", line 958, in process
2015-08-30 14:16:57.379427 return impl_processor(process_param(value, dialect))
2015-08-30 14:16:57.379435 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy_utils/types/uuid.py", line 64, in process_bind_param
2015-08-30 14:16:57.379447 value = self._coerce(value)
2015-08-30 14:16:57.379454 File "/usr/local/lib/python2.7/dist-packages/sqlalchemy_utils/types/uuid.py", line 55, in _coerce
2015-08-30 14:16:57.379465 value = uuid.UUID(bytes=value)
2015-08-30 14:16:57.379473 File "/usr/lib/python2.7/uuid.py", line 144, in __init__
2015-08-30 14:16:57.379484 raise ValueError('bytes is not a 16-char string')
2015-08-30 14:16:57.379500 DBError: (exceptions.ValueError) bytes is not a 16-char string [SQL: u'SELECT anon_1.resource_type AS anon_1_resource_type, anon_1.resource_created_by_user_id AS anon_1_resource_created_by_user_id, anon_1.resource_created_by_project_id AS anon_1_resource_created_by_project_id, anon_1.resource_started_at AS anon_1_resource_started_at, anon_1.resource_revision_start AS anon_1_resource_revision_start, anon_1.resource_ended_at AS anon_1_resource_ended_at, anon_1.resource_user_id AS anon_1_resource_user_id, anon_1.resource_project_id AS anon_1_resource_project_id, anon_1.resource_id AS anon_1_resource_id, archive_policy_1.name AS archive_policy_1_name, archive_policy_1.back_window AS archive_policy_1_back_window, archive_policy_1.definition AS archive_policy_1_definition, archive_policy_1.aggregation_methods AS archive_policy_1_aggregation_methods, metric_1.id AS metric_1_id, metric_1.archive_policy_name AS metric_1_archive_policy_name, metric_1.created_by_user_id AS metric_1_created_by_user_id, metric_1.created_by_project_id AS metric_1_created_by_project_id, metric_1.resource_id AS metric_1_resource_id, metric_1.name AS metric_1_name \\nFROM (SELECT resource.type AS resource_type, resource.created_by_user_id AS resource_created_by_user_id, resource.created_by_project_id AS resource_created_by_project_id, resource.started_at AS resource_started_at, resource.revision_start AS resource_revision_start, resource.ended_at AS resource_ended_at, resource.user_id AS resource_user_id, resource.project_id AS resource_project_id, resource.id AS resource_id \\nFROM resource \\nWHERE resource.id = %s ORDER BY resource.revision_start ASC, resource.started_at ASC, resource.id ASC \\n LIMIT %s) AS anon_1 LEFT OUTER JOIN metric AS metric_1 ON anon_1.resource_id = metric_1.resource_id LEFT OUTER JOIN archive_policy AS archive_policy_1 ON archive_policy_1.name = metric_1.archive_policy_name ORDER BY anon_1.resource_revision_start ASC, anon_1.resource_started_at ASC, anon_1.resource_id ASC'] [parameters: [immutabledict({})]]
Cheers,
[14:59:52] <sileht> jd__, REQ: curl -g -i -X POST http:// 192.168. 3.51:8041/ v1/search/ resource/ generic? -H "User-Agent: python- keystoneclient" -H "Content-Type: application/json" -H "X-Auth-Token: {SHA1}3621ff659 ededa91ad8ecf2b 6926a2aab35d255 8" -d '{"=": {"id": "cd9eeff"}}'