aboutsummaryrefslogtreecommitdiffstats
path: root/sdv/docker/sdvconfig/testapi/testapi.py
blob: 5546ee91c8b214f4c85157e691b649f9ee67b186 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python

# Copyright (C) 2020 Ashwin Nayak
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

""" testapi class to push results to opnfv testapi """

from datetime import datetime as dt
import requests

OPNFV_URL = "http://testresults.opnfv.org/test/api/v1"
POD_NAME = 'intel-pod10'
INSTALLER = 'Airship'
BUILD_TAG = "none"
PKG_LIST = 'package-list.mk'
START_TIME = dt.now().strftime('%Y-%m-%d %H:%M:%S')
STOP_TIME = dt.now().strftime('%Y-%m-%d %H:%M:%S')
TC_NAME = 'SDV_config_basic'
VERSION = '1.0'
CRITERIA = 'PASS'


class PushResults():
    """ Push results to opnfv test api """

    def __init__(self, results, logger):
        """ constructor """
        # store external values
        self.results = results
        self.logger = logger
        # initialize internal values
        self.push_vals = dict()
        # call functions
        self.generate_response()
        self.push_results()

    def generate_response(self):
        """ generate json output to be pushed """
        # Build body
        body = {
            "project_name": "sdv",
            "scenario": "none",
            "start_date": START_TIME,
            "stop_date": STOP_TIME,
            "case_name": TC_NAME,
            "pod_name": POD_NAME,
            "installer": INSTALLER,
            "version": VERSION,
            "build_tag": BUILD_TAG,
            "criteria": CRITERIA,
            "details": self.results
        }
        self.logger.debug("The generated json response to be pushed:%s", body)
        # store this value in the class variable
        self.push_vals = body

    def push_results(self):
        """ push results to testapi """
        url = OPNFV_URL + "/results"

        try:
            response = requests.post(url, json=self.push_vals)
            self.logger.info("testapi push response:%s", response)
        except ConnectionError:
            self.logger.exception("error while pushing results to testapi")
            self.logger.error("failed to push results")