From bb292d2f9df0270ea0a366638b47568966d98482 Mon Sep 17 00:00:00 2001 From: akhilbatra898 Date: Sun, 27 Aug 2017 01:35:25 +0530 Subject: Add developer guide for QTIP-WEB services Change-Id: Idadd343367841cfa9e10b5f6f3d3a9ccc0917d5a Signed-off-by: akhilbatra898 --- docs/testing/developer/devguide/index.rst | 1 + docs/testing/developer/devguide/web.rst | 100 ++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 docs/testing/developer/devguide/web.rst diff --git a/docs/testing/developer/devguide/index.rst b/docs/testing/developer/devguide/index.rst index 40baca9c..48bbda49 100644 --- a/docs/testing/developer/devguide/index.rst +++ b/docs/testing/developer/devguide/index.rst @@ -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 index 00000000..ae4e3156 --- /dev/null +++ b/docs/testing/developer/devguide/web.rst @@ -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_`` 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 -- cgit 1.2.3-korg