summaryrefslogtreecommitdiffstats
path: root/docs/testing/developer/devguide/web.rst
blob: ae4e31568c4394cbb7706e17c7aa14d47d81a96a (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0


***************************************
Web Portal for Benchmarking Services
***************************************

QTIP consists of different tools(metrics) to benchmark the NFVI. These metrics
fall under different NFVI subsystems(QPI's) such as compute, storage and network.
QTIP benchmarking tasks are built upon `Ansible`_ playbooks and roles.
QTIP web portal is a platform to expose QTIP as a benchmarking service hosted on a central host.

Framework
=========

The web travel has been developed on Python `Django`_ framework. Dig into the documentation to learn about Django.

Design
======

Django is a MTV (Model Template View) framework. Database objects are mapped to models in ``models.py``. Views handle the
requests from client side and interact with database using Django ORM. Templates are responsible for
UI rendering based on response context from Views.

Models
------

Repo
~~~~

Model for `workspace`_ repos

::

    Repo:
        name
        git_link


Task
~~~~

Tasks keep track of every benchmark run through QTIP-Web Services. Whenever you run a benchmark,
a new task is created which keep track of time stats and log task progress and ansible output for
the respective playbook.

::

    Task
        start_time
        end_time
        status
        run_time
        repo
        log


Views
-----

Dashboard
~~~~~~~~~

    - Base class - TemplateVIew

Class based view serving as home page for the application.


ReposView
~~~~~~~~~

    - Base class - LoginRequiredMixin, CreateView

Class based view for listing and add new repos


RepoUpdate
~~~~~~~~~~

    - Base class - LoginRequiredMixin, UpdateView

Class based View for listing and updating an existing repo details.

*Both ReposView and RepoUpdate View use same template ``repo_form.html``. The context has an extra variable ``template_role`` which is used to distinguish if repo form is for create or edit operation.*


Run
~~~

    - Base class - LoginRequiredMixin, View
    - template name - run.html

Class based View for adding new task and run benchmark based on task details. The logs are saved
in ``logs/run_<log_id>`` directory.


.. _Ansible: https://www.ansible.com/
.. _Django: https://docs.djangoproject.com/en/1.11/
.. _workspace: https://github.com/opnfv/qtip/blob/master/docs/testing/developer/devguide/ansible.rst#create-workspace