Add task-args(from yaml file) candidates in /api/v2/yardstick/testcases API 91/38391/2
authorchenjiankun <chenjiankun1@huawei.com>
Mon, 31 Jul 2017 02:49:12 +0000 (02:49 +0000)
committerJack Chan <chenjiankun1@huawei.com>
Wed, 2 Aug 2017 01:00:12 +0000 (01:00 +0000)
JIRA: YARDSTICK-766

We have the demand to get all task-args candidates in test case yaml
file,
so that user get easily change it.
The response will like:
{
    'status': 1,
    'result': {
        'testcase': case content,
        'args': {
            'image': {'description': '', 'type': 'String'}
        }
    }
}

In this patch, I add jinja2schema 0.1.4 in requirements.txt.

Change-Id: I450082402370add5ab29090286f026fe3cc8c36e
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
api/resources/v2/testcases.py
requirements.txt

index b47a8f6..316ef26 100644 (file)
@@ -10,6 +10,8 @@ import logging
 import errno
 import os
 
+import jinja2schema
+
 from api import ApiResource
 from yardstick.common.utils import result_handler
 from yardstick.common import constants as consts
@@ -56,7 +58,10 @@ class V2Testcase(ApiResource):
             if e.errno == errno.ENOENT:
                 return result_handler(consts.API_ERROR, 'case does not exist')
 
-        return result_handler(consts.API_SUCCESS, {'testcase': data})
+        options = {k: {'description': '', 'type': v.__class__.__name__}
+                   for k, v in jinja2schema.infer(data).items()}
+
+        return result_handler(consts.API_SUCCESS, {'testcase': data, 'args': options})
 
     def delete(self, case_name):
         case_path = os.path.join(consts.TESTCASE_DIR, '{}.yaml'.format(case_name))
index 2bcc4df..d03c437 100644 (file)
@@ -38,6 +38,7 @@ iso8601==0.1.11
 jsonpatch==1.15
 jsonpointer==1.10
 jsonschema==2.5.1
+jinja2schema==0.1.4
 keystoneauth1==2.18.0
 kubernetes==3.0.0a1
 linecache2==1.0.0