diff options
author | Yongqin Liu <yongqin.liu@linaro.org> | 2020-03-02 15:34:43 +0800 |
---|---|---|
committer | Yongqin Liu <yongqin.liu@linaro.org> | 2020-03-02 15:34:43 +0800 |
commit | efa1c7d8dfabfdbcaf46090f5b33a3cf2fe881ef (patch) | |
tree | 3ea474651e28a45142aff3acc118545f9b720b70 | |
parent | bc07441c78b003d9589fca69fee7bbbcae4c89f3 (diff) |
lkft: update for the database updating policy
so that we could update the data as much as possible
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
-rw-r--r-- | lcr/qa_report.py | 13 | ||||
-rw-r--r-- | lkft/management/commands/lkftreport.py | 69 | ||||
-rw-r--r-- | lkft/templates/lkft-describe.html | 2 |
3 files changed, 48 insertions, 36 deletions
diff --git a/lcr/qa_report.py b/lcr/qa_report.py index 13e6652..5bb0f43 100644 --- a/lcr/qa_report.py +++ b/lcr/qa_report.py @@ -14,6 +14,15 @@ class DotDict(dict): __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__ +class UrlNotFoundException(Exception): + ''' + Specific Expection for UrlNotFound Error + ''' + response = None + + def __init__(self, response): + self.response = response + class RESTFullApi(): def __init__(self, domain, api_token): @@ -36,7 +45,9 @@ class RESTFullApi(): if returnResponse: return r - if not r.ok: + if not r.ok and r.status_code == 404: + raise UrlNotFoundException(r) + elif not r.ok: raise Exception(r.url, r.reason, r.status_code) if r.content: diff --git a/lkft/management/commands/lkftreport.py b/lkft/management/commands/lkftreport.py index da0f5d1..886f25e 100644 --- a/lkft/management/commands/lkftreport.py +++ b/lkft/management/commands/lkftreport.py @@ -93,7 +93,12 @@ class Command(BaseCommand): trigger_build['duration'] = datetime.timedelta(milliseconds=trigger_build['duration']) trigger_build['name'] = kernel_change.trigger_name trigger_build['kernel_change'] = kernel_change - kernel_change_finished_timestamp = trigger_build['start_timestamp'] + trigger_build['duration'] + if trigger_build.get('building'): + trigger_build['status'] = 'INPROGRESS' + kernel_change_finished_timestamp = trigger_build['start_timestamp'] + else: + trigger_build['status'] = trigger_build.get('result') # null or SUCCESS, FAILURE, ABORTED + kernel_change_finished_timestamp = trigger_build['start_timestamp'] + trigger_build['duration'] kernel_change_status = "TRIGGER_BUILD_COMPLETED" @@ -317,55 +322,51 @@ class Command(BaseCommand): ## cache to database for kernel_change_report in total_reports: status = kernel_change_report.get('kernel_change_status') - if status != 'ALL_COMPLETED': - continue - trigger_build = kernel_change_report.get('trigger_build') + + # Try to cache Trigger build information to database + try: + trigger_dbci_build = CiBuild.objects.get(name=trigger_build.get('name'), number=trigger_build.get('number')) + trigger_dbci_build.duration = trigger_build.get('duration').total_seconds() + trigger_dbci_build.timestamp = trigger_build.get('start_timestamp') + trigger_dbci_build.result = trigger_build.get('status') + trigger_dbci_build.save() + except CiBuild.DoesNotExist: + CiBuild.objects.create(name=trigger_build.get('name'), + number=trigger_build.get('number'), + kernel_change=kernel_change, + duration=trigger_build.get('duration').total_seconds(), + timestamp=trigger_build.get('start_timestamp'), + result=trigger_build.get('status')) + + + # Try to cache CI build information to database + jenkins_ci_builds = kernel_change_report.get('jenkins_ci_builds') + for ci_build in jenkins_ci_builds: + CiBuild.objects.filter(name=ci_build.get('name'), + number=ci_build.get('number') + ).update(duration=ci_build.get('duration').total_seconds(), + timestamp=ci_build.get('start_timestamp'), + result=ci_build.get('status')) + + # Try to cache kernel change result informtion to database finished_timestamp = kernel_change_report.get('finished_timestamp') start_timestamp = kernel_change_report.get('start_timestamp') test_numbers = kernel_change_report.get('test_numbers') kernel_change = kernel_change_report.get('kernel_change') - kernel_change.reported = True + kernel_change.reported = (status == 'ALL_COMPLETED') kernel_change.result = status kernel_change.timestamp = start_timestamp kernel_change.duration = (finished_timestamp - start_timestamp).total_seconds() - kernel_change.number_passed = test_numbers.number_passed kernel_change.number_failed = test_numbers.number_failed kernel_change.number_total = test_numbers.number_total kernel_change.modules_done = test_numbers.modules_done kernel_change.modules_total = test_numbers.modules_total - kernel_change.save() - trigger_build = kernel_change_report.get('trigger_build') - if not trigger_build.get('building'): - # should always be here - try: - trigger_dbci_build = CiBuild.objects.get(name=trigger_build.get('name'), number=trigger_build.get('number')) - trigger_dbci_build.duration = trigger_build.get('duration').total_seconds() - trigger_dbci_build.timestamp = trigger_build.get('start_timestamp') - trigger_dbci_build.result = trigger_build.get('result') - except CiBuild.DoesNotExist: - CiBuild.objects.create(name=trigger_build.get('name'), - number=trigger_build.get('number'), - kernel_change=kernel_change, - duration=trigger_build.get('duration').total_seconds(), - timestamp=trigger_build.get('start_timestamp'), - result=trigger_build.get('result')) - - jenkins_ci_builds = kernel_change_report.get('jenkins_ci_builds') - for ci_build in jenkins_ci_builds: - if build.get('building'): - # there should be no such case - continue - CiBuild.objects.filter(name=ci_build.get('name'), - number=ci_build.get('number') - ).update(duration=ci_build.get('duration').total_seconds(), - timestamp=ci_build.get('start_timestamp'), - result=ci_build.get('result')) - + # Try to cache report build informtion to database for qareport_build in kernel_change_report.get('qa_report_builds'): jenkins_ci_build = qareport_build.get('ci_build') dbci_build = jenkins_ci_build.get('dbci_build') diff --git a/lkft/templates/lkft-describe.html b/lkft/templates/lkft-describe.html index 826f48e..f55c4e1 100644 --- a/lkft/templates/lkft-describe.html +++ b/lkft/templates/lkft-describe.html @@ -2,7 +2,7 @@ {% block title %} {{kernel_change.describe}} {% endblock %} -{% block headline %}<h1>Kernel Change: {{kernel_change.describe}}</a></h1>{% endblock %} +{% block headline %}<h1>{{kernel_change.describe}} -- {{kernel_change.status}}</a></h1>{% endblock %} {% block content %} <div> |