diff options
author | zhihui wu <wu.zhihui1@zte.com.cn> | 2017-04-13 08:04:39 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-04-13 08:04:39 +0000 |
commit | c70d80c0abbc50e2d12f4eb64ae16cddfcc6b6cd (patch) | |
tree | 2e377cca7b825d18b501efc8b0edac1b551697d5 | |
parent | 8ee70654479bff695a6781a9f3eaea9f5eb6b765 (diff) | |
parent | a68d7f591a85f5d6eb0113b2a692d2aaa0ddfb4f (diff) |
Merge "Consume OPNFV TestAPI to push results"
-rw-r--r-- | qtip/reporter/testapi.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/qtip/reporter/testapi.py b/qtip/reporter/testapi.py new file mode 100644 index 00000000..a0be5379 --- /dev/null +++ b/qtip/reporter/testapi.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2017 akhil.batra@research.iiit.ac.in and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import requests + + +payload_template = {'project_name', + 'case_name', + 'pod_name', + 'installer', + 'version', + 'scenario', + 'criteria', + 'build_tag', + 'start_date', + 'stop_date', + 'details'} + + +def validate_payload(): + def _decorator(func): + def _execute(testapi_url, payload): + if set(payload.keys()) != payload_template: + missing_parameters = list(payload_template - + set(payload.keys())) + print "Missing Parameters -- {}".\ + format(",".join(missing_parameters)) + raise MissingParamsError("push_results", missing_parameters) + invalid_params = [] + for key in payload: + if (payload[key] == "") or (payload[key] is None): + invalid_params.append(key) + if len(invalid_params) > 0: + print "Invalid or missing values of parameters -- `{}`".\ + format(",".join(invalid_params)) + raise InvalidParamsError("push_results", invalid_params) + return func(testapi_url, payload) + return _execute + return _decorator + + +class InvalidParamsError(Exception): + def __init__(self, method, params): + self.method = method + self.params = params + + +class MissingParamsError(Exception): + def __init__(self, method, params): + self.method = method + self.params = params + + +@validate_payload() +def push_results(testapi_url, payload): + """ push results to OPNFV TestAPI """ + + response = requests.post(testapi_url + '/results', json=payload) + if response.status_code == requests.codes.ok: + return response.json() + else: + response.raise_for_status() |