Adding verbose option to the cloudpulse server
Change-Id: I07dde100abaef4803e93c21996dd7bf80f8823c8
This commit is contained in:
@@ -26,7 +26,6 @@ from cloudpulse.api.controllers import link
|
|||||||
from cloudpulse.api.controllers.v1 import collection
|
from cloudpulse.api.controllers.v1 import collection
|
||||||
from cloudpulse.api.controllers.v1 import types
|
from cloudpulse.api.controllers.v1 import types
|
||||||
from cloudpulse.api.controllers.v1 import utils as api_utils
|
from cloudpulse.api.controllers.v1 import utils as api_utils
|
||||||
from cloudpulse.common import exception
|
|
||||||
from cloudpulse import objects
|
from cloudpulse import objects
|
||||||
|
|
||||||
|
|
||||||
@@ -165,29 +164,6 @@ class cpulseController(rest.RestController):
|
|||||||
return self._get_tests_collection(marker, limit, sort_key,
|
return self._get_tests_collection(marker, limit, sort_key,
|
||||||
sort_dir)
|
sort_dir)
|
||||||
|
|
||||||
@wsme_pecan.wsexpose(CpulseCollection, types.uuid,
|
|
||||||
types.uuid, int, wtypes.text, wtypes.text)
|
|
||||||
def detail(self, test_uuid=None, marker=None, limit=None,
|
|
||||||
sort_key='id', sort_dir='asc'):
|
|
||||||
"""Retrieve a list of tests with detail.
|
|
||||||
|
|
||||||
:param test_uuid: UUID of a test, to get only tests for that test.
|
|
||||||
:param marker: pagination marker for large data sets.
|
|
||||||
:param limit: maximum number of resources to return in a single result.
|
|
||||||
:param sort_key: column to sort results by. Default: id.
|
|
||||||
:param sort_dir: direction to sort. "asc" or "desc". Default: asc.
|
|
||||||
"""
|
|
||||||
# NOTE(lucasagomes): /detail should only work agaist collections
|
|
||||||
parent = pecan.request.path.split('/')[:-1][-1]
|
|
||||||
if parent != "tests":
|
|
||||||
raise exception.HTTPNotFound
|
|
||||||
|
|
||||||
expand = True
|
|
||||||
resource_url = '/'.join(['tests', 'detail'])
|
|
||||||
return self._get_tests_collection(marker, limit,
|
|
||||||
sort_key, sort_dir, expand,
|
|
||||||
resource_url)
|
|
||||||
|
|
||||||
@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):
|
||||||
"""Retrieve information about the given test.
|
"""Retrieve information about the given test.
|
||||||
@@ -199,6 +175,16 @@ class cpulseController(rest.RestController):
|
|||||||
|
|
||||||
return Cpulse.convert_with_links(rpc_test)
|
return Cpulse.convert_with_links(rpc_test)
|
||||||
|
|
||||||
|
@pecan.expose('json')
|
||||||
|
def detail(self, test_ident):
|
||||||
|
"""Retrieve detail information about the given test.
|
||||||
|
|
||||||
|
:param test_ident: UUID of a test or logical name of the test.
|
||||||
|
"""
|
||||||
|
rpc_test_detail = api_utils.get_rpc_resource_detail('Cpulse',
|
||||||
|
test_ident)
|
||||||
|
return rpc_test_detail
|
||||||
|
|
||||||
@wsme_pecan.wsexpose(Cpulse, body=Cpulse, status_code=201)
|
@wsme_pecan.wsexpose(Cpulse, body=Cpulse, status_code=201)
|
||||||
def post(self, test):
|
def post(self, test):
|
||||||
"""Create a new test.
|
"""Create a new test.
|
||||||
|
|||||||
@@ -19,9 +19,11 @@ import pecan
|
|||||||
import wsme
|
import wsme
|
||||||
|
|
||||||
from cloudpulse.common import exception
|
from cloudpulse.common import exception
|
||||||
|
from cloudpulse.common.plugin import discover
|
||||||
from cloudpulse.common import utils
|
from cloudpulse.common import utils
|
||||||
from cloudpulse import objects
|
from cloudpulse import objects
|
||||||
from cloudpulse.openstack.common._i18n import _
|
from cloudpulse.openstack.common._i18n import _
|
||||||
|
from cloudpulse.scenario import base
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
@@ -68,3 +70,15 @@ def get_rpc_resource(resource, resource_ident):
|
|||||||
return resource.get_by_name(pecan.request.context, resource_ident)
|
return resource.get_by_name(pecan.request.context, resource_ident)
|
||||||
|
|
||||||
raise exception.InvalidUuidOrName(name=resource_ident)
|
raise exception.InvalidUuidOrName(name=resource_ident)
|
||||||
|
|
||||||
|
|
||||||
|
def get_rpc_resource_detail(resource, resource_ident):
|
||||||
|
resource = getattr(objects, resource)
|
||||||
|
test = resource.get_by_uuid(pecan.request.context, resource_ident)
|
||||||
|
discover.import_modules_from_package("cloudpulse.scenario.plugins")
|
||||||
|
for scenario_group in discover.itersubclasses(base.Scenario):
|
||||||
|
for method in dir(scenario_group):
|
||||||
|
if test['name'] == method:
|
||||||
|
scenario = scenario_group()
|
||||||
|
callback = getattr(scenario, 'verbose')
|
||||||
|
return callback()
|
||||||
|
|||||||
@@ -30,3 +30,9 @@ class dummy_scenario(base.Scenario):
|
|||||||
@base.scenario(operator=True)
|
@base.scenario(operator=True)
|
||||||
def dummy_cloudtest(self, *args, **kwargs):
|
def dummy_cloudtest(self, *args, **kwargs):
|
||||||
return (200, "success", ['dummy_result'])
|
return (200, "success", ['dummy_result'])
|
||||||
|
|
||||||
|
def verbose(self, *args, **kwargs):
|
||||||
|
# This is a sample entry which spcifies how the verbose call
|
||||||
|
# should handle in each module.
|
||||||
|
return [{'result': 'success',
|
||||||
|
'description': 'The test run successfully'}]
|
||||||
|
|||||||
Reference in New Issue
Block a user