Add developer guide for QTIP-WEB services 05/40305/6
authorakhilbatra898 <akhil.batra@research.iiit.ac.in>
Sat, 26 Aug 2017 20:05:25 +0000 (01:35 +0530)
committerakhilbatra898 <akhil.batra@research.iiit.ac.in>
Mon, 28 Aug 2017 07:11:26 +0000 (12:41 +0530)
Change-Id: Idadd343367841cfa9e10b5f6f3d3a9ccc0917d5a
Signed-off-by: akhilbatra898 <akhil.batra@research.iiit.ac.in>
docs/testing/developer/devguide/index.rst
docs/testing/developer/devguide/web.rst [new file with mode: 0644]

index 40baca9..48bbda4 100644 (file)
@@ -16,4 +16,5 @@ QTIP Developer Guide
    framework.rst
    cli.rst
    api.rst
+   web.rst
    compute-qpi.rst
diff --git a/docs/testing/developer/devguide/web.rst b/docs/testing/developer/devguide/web.rst
new file mode 100644 (file)
index 0000000..ae4e315
--- /dev/null
@@ -0,0 +1,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