Code Changes for querying failed cases and tests run in last x hours
Change-Id: I9f279581eae1bd7227e931ee672835c08a7ba7ad
This commit is contained in:
@@ -128,10 +128,9 @@ class cpulseController(rest.RestController):
|
|||||||
|
|
||||||
_custom_actions = {'detail': ['GET']}
|
_custom_actions = {'detail': ['GET']}
|
||||||
|
|
||||||
def _get_tests_collection(self, marker, limit,
|
def _get_tests_collection(self, marker, limit, sort_key, sort_dir,
|
||||||
sort_key, sort_dir, expand=False,
|
expand=False, resource_url=None, failed=None,
|
||||||
resource_url=None):
|
period=None):
|
||||||
|
|
||||||
limit = api_utils.validate_limit(limit)
|
limit = api_utils.validate_limit(limit)
|
||||||
sort_dir = api_utils.validate_sort_dir(sort_dir)
|
sort_dir = api_utils.validate_sort_dir(sort_dir)
|
||||||
|
|
||||||
@@ -142,7 +141,8 @@ class cpulseController(rest.RestController):
|
|||||||
|
|
||||||
tests = pecan.request.rpcapi.test_list(pecan.request.context, limit,
|
tests = pecan.request.rpcapi.test_list(pecan.request.context, limit,
|
||||||
marker_obj, sort_key=sort_key,
|
marker_obj, sort_key=sort_key,
|
||||||
sort_dir=sort_dir)
|
sort_dir=sort_dir,
|
||||||
|
failed=failed, period=period)
|
||||||
|
|
||||||
return CpulseCollection.convert_with_links(tests, limit,
|
return CpulseCollection.convert_with_links(tests, limit,
|
||||||
url=resource_url,
|
url=resource_url,
|
||||||
@@ -150,10 +150,10 @@ class cpulseController(rest.RestController):
|
|||||||
sort_key=sort_key,
|
sort_key=sort_key,
|
||||||
sort_dir=sort_dir)
|
sort_dir=sort_dir)
|
||||||
|
|
||||||
@wsme_pecan.wsexpose(CpulseCollection, types.uuid,
|
@wsme_pecan.wsexpose(CpulseCollection, types.uuid, types.uuid, int,
|
||||||
types.uuid, int, wtypes.text, wtypes.text)
|
wtypes.text, wtypes.text, wtypes.text, int)
|
||||||
def get_all(self, test_uuid=None, marker=None, limit=None,
|
def get_all(self, test_uuid=None, marker=None, limit=None, sort_key='id',
|
||||||
sort_key='id', sort_dir='asc'):
|
sort_dir='asc', failed=None, period=None):
|
||||||
"""Retrieve a list of tests.
|
"""Retrieve a list of tests.
|
||||||
|
|
||||||
:param marker: pagination marker for large data sets.
|
:param marker: pagination marker for large data sets.
|
||||||
@@ -161,8 +161,8 @@ class cpulseController(rest.RestController):
|
|||||||
:param sort_key: column to sort results by. Default: id.
|
:param sort_key: column to sort results by. Default: id.
|
||||||
:param sort_dir: direction to sort. "asc" or "desc". Default: asc.
|
:param sort_dir: direction to sort. "asc" or "desc". Default: asc.
|
||||||
"""
|
"""
|
||||||
return self._get_tests_collection(marker, limit, sort_key,
|
return self._get_tests_collection(marker, limit, sort_key, sort_dir,
|
||||||
sort_dir)
|
failed=failed, period=period)
|
||||||
|
|
||||||
@wsme_pecan.wsexpose(Cpulse, types.uuid_or_name)
|
@wsme_pecan.wsexpose(Cpulse, types.uuid_or_name)
|
||||||
def get_one(self, test_ident):
|
def get_one(self, test_ident):
|
||||||
|
@@ -36,8 +36,10 @@ class API(rpc_service.API):
|
|||||||
test.create(cpulse_create_timeout)
|
test.create(cpulse_create_timeout)
|
||||||
return test
|
return test
|
||||||
|
|
||||||
def test_list(self, context, limit, marker, sort_key, sort_dir):
|
def test_list(self, context, limit, marker, sort_key, sort_dir,
|
||||||
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir)
|
failed=None, period=None):
|
||||||
|
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir,
|
||||||
|
failed=failed, period=period)
|
||||||
|
|
||||||
def test_delete(self, context, uuid):
|
def test_delete(self, context, uuid):
|
||||||
# return self._call('cpulse_delete', uuid=uuid)
|
# return self._call('cpulse_delete', uuid=uuid)
|
||||||
|
@@ -42,7 +42,8 @@ class Connection(object):
|
|||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def get_test_list(self, context, columns=None, filters=None, limit=None,
|
def get_test_list(self, context, columns=None, filters=None, limit=None,
|
||||||
marker=None, sort_key=None, sort_dir=None):
|
marker=None, sort_key=None, sort_dir=None,
|
||||||
|
failed=None, period=None):
|
||||||
"""Get specific columns for matching tests.
|
"""Get specific columns for matching tests.
|
||||||
|
|
||||||
Return a list of the specified columns for all tess that match the
|
Return a list of the specified columns for all tess that match the
|
||||||
|
@@ -22,6 +22,7 @@ from cloudpulse.db.sqlalchemy import models
|
|||||||
from cloudpulse.openstack.common._i18n import _
|
from cloudpulse.openstack.common._i18n import _
|
||||||
from cloudpulse.openstack.common import log
|
from cloudpulse.openstack.common import log
|
||||||
from cloudpulse.scenario import base
|
from cloudpulse.scenario import base
|
||||||
|
from datetime import timedelta
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_db import exception as db_exc
|
from oslo_db import exception as db_exc
|
||||||
from oslo_db.sqlalchemy import session as db_session
|
from oslo_db.sqlalchemy import session as db_session
|
||||||
@@ -125,11 +126,23 @@ class Connection(api.Connection):
|
|||||||
|
|
||||||
return query
|
return query
|
||||||
|
|
||||||
|
def _add_test_failed_filter(self, query, failed):
|
||||||
|
if failed and failed == 'True':
|
||||||
|
query = query.filter_by(state='failed')
|
||||||
|
return query
|
||||||
|
|
||||||
|
def _add_test_period_filter(self, query, period):
|
||||||
|
if period:
|
||||||
|
query_time = timeutils.utcnow() - timedelta(minutes=period)
|
||||||
|
query = query.filter(models.cpulse.created_at >= query_time)
|
||||||
|
return query
|
||||||
|
|
||||||
def get_test_list(self, context, filters=None, limit=None, marker=None,
|
def get_test_list(self, context, filters=None, limit=None, marker=None,
|
||||||
sort_key=None, sort_dir=None):
|
sort_key=None, sort_dir=None, failed=None, period=None):
|
||||||
# query = model_query(models.cpulse)
|
|
||||||
query = model_query(models.cpulse)
|
query = model_query(models.cpulse)
|
||||||
query = self._add_tests_filters(query, filters)
|
query = self._add_tests_filters(query, filters)
|
||||||
|
query = self._add_test_period_filter(query, period)
|
||||||
|
query = self._add_test_failed_filter(query, failed)
|
||||||
return _paginate_query(models.cpulse, limit, marker,
|
return _paginate_query(models.cpulse, limit, marker,
|
||||||
sort_key, sort_dir, query)
|
sort_key, sort_dir, query)
|
||||||
|
|
||||||
|
@@ -117,8 +117,8 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
|
|||||||
return test
|
return test
|
||||||
|
|
||||||
@base.remotable_classmethod
|
@base.remotable_classmethod
|
||||||
def list(cls, context, limit=None, marker=None,
|
def list(cls, context, limit=None, marker=None, sort_key=None,
|
||||||
sort_key=None, sort_dir=None, filters=None):
|
sort_dir=None, filters=None, failed=None, period=None):
|
||||||
"""Return a list of Cpulse objects.
|
"""Return a list of Cpulse objects.
|
||||||
|
|
||||||
:param context: Security context.
|
:param context: Security context.
|
||||||
@@ -129,11 +129,10 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
|
|||||||
:returns: a list of :class:`Cpulse` object.
|
:returns: a list of :class:`Cpulse` object.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
db = cls.dbapi.get_test_list(context, limit=limit,
|
db = cls.dbapi.get_test_list(context, limit=limit, marker=marker,
|
||||||
marker=marker,
|
sort_key=sort_key, sort_dir=sort_dir,
|
||||||
sort_key=sort_key,
|
filters=filters, failed=failed,
|
||||||
sort_dir=sort_dir,
|
period=period)
|
||||||
filters=filters)
|
|
||||||
return Cpulse._from_db_object_list(db, cls, context)
|
return Cpulse._from_db_object_list(db, cls, context)
|
||||||
|
|
||||||
@base.remotable
|
@base.remotable
|
||||||
|
Reference in New Issue
Block a user