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']}
|
||||
|
||||
def _get_tests_collection(self, marker, limit,
|
||||
sort_key, sort_dir, expand=False,
|
||||
resource_url=None):
|
||||
|
||||
def _get_tests_collection(self, marker, limit, sort_key, sort_dir,
|
||||
expand=False, resource_url=None, failed=None,
|
||||
period=None):
|
||||
limit = api_utils.validate_limit(limit)
|
||||
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,
|
||||
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,
|
||||
url=resource_url,
|
||||
@@ -150,10 +150,10 @@ class cpulseController(rest.RestController):
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
|
||||
@wsme_pecan.wsexpose(CpulseCollection, types.uuid,
|
||||
types.uuid, int, wtypes.text, wtypes.text)
|
||||
def get_all(self, test_uuid=None, marker=None, limit=None,
|
||||
sort_key='id', sort_dir='asc'):
|
||||
@wsme_pecan.wsexpose(CpulseCollection, types.uuid, types.uuid, int,
|
||||
wtypes.text, wtypes.text, wtypes.text, int)
|
||||
def get_all(self, test_uuid=None, marker=None, limit=None, sort_key='id',
|
||||
sort_dir='asc', failed=None, period=None):
|
||||
"""Retrieve a list of tests.
|
||||
|
||||
: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_dir: direction to sort. "asc" or "desc". Default: asc.
|
||||
"""
|
||||
return self._get_tests_collection(marker, limit, sort_key,
|
||||
sort_dir)
|
||||
return self._get_tests_collection(marker, limit, sort_key, sort_dir,
|
||||
failed=failed, period=period)
|
||||
|
||||
@wsme_pecan.wsexpose(Cpulse, types.uuid_or_name)
|
||||
def get_one(self, test_ident):
|
||||
|
@@ -36,8 +36,10 @@ class API(rpc_service.API):
|
||||
test.create(cpulse_create_timeout)
|
||||
return test
|
||||
|
||||
def test_list(self, context, limit, marker, sort_key, sort_dir):
|
||||
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir)
|
||||
def test_list(self, 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):
|
||||
# return self._call('cpulse_delete', uuid=uuid)
|
||||
|
@@ -42,7 +42,8 @@ class Connection(object):
|
||||
|
||||
@abc.abstractmethod
|
||||
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.
|
||||
|
||||
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 import log
|
||||
from cloudpulse.scenario import base
|
||||
from datetime import timedelta
|
||||
from oslo_config import cfg
|
||||
from oslo_db import exception as db_exc
|
||||
from oslo_db.sqlalchemy import session as db_session
|
||||
@@ -125,11 +126,23 @@ class Connection(api.Connection):
|
||||
|
||||
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,
|
||||
sort_key=None, sort_dir=None):
|
||||
# query = model_query(models.cpulse)
|
||||
sort_key=None, sort_dir=None, failed=None, period=None):
|
||||
query = model_query(models.cpulse)
|
||||
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,
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
|
@@ -117,8 +117,8 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
|
||||
return test
|
||||
|
||||
@base.remotable_classmethod
|
||||
def list(cls, context, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None, filters=None):
|
||||
def list(cls, context, limit=None, marker=None, sort_key=None,
|
||||
sort_dir=None, filters=None, failed=None, period=None):
|
||||
"""Return a list of Cpulse objects.
|
||||
|
||||
:param context: Security context.
|
||||
@@ -129,11 +129,10 @@ class Cpulse(base.CloudpulsePersistentObject, base.CloudpulseObject,
|
||||
:returns: a list of :class:`Cpulse` object.
|
||||
|
||||
"""
|
||||
db = cls.dbapi.get_test_list(context, limit=limit,
|
||||
marker=marker,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir,
|
||||
filters=filters)
|
||||
db = cls.dbapi.get_test_list(context, limit=limit, marker=marker,
|
||||
sort_key=sort_key, sort_dir=sort_dir,
|
||||
filters=filters, failed=failed,
|
||||
period=period)
|
||||
return Cpulse._from_db_object_list(db, cls, context)
|
||||
|
||||
@base.remotable
|
||||
|
Reference in New Issue
Block a user