Page tree
Skip to end of metadata
Go to start of metadata

About this project:

  • The project aims at creating graphs to support the SNIA reports. The data for the reports are fetched from the OPNFV Test Results ReST API. 
  • The report (generated by the reporting module) looks like the following example:


A Flask server is used to fetch the data and is sent to the client side for formation of the graphs (Using Javascript).

  • Step 1: Data is fetched from the OPNFV Test Results ReST API
  • Step 2: The fields "report_data" and "metrics" are taken from the JSON object retrieved in the above step and sent to the client side.
  • Step 3: The "report_data" is obtained by the client side and a parser written in Javascript along with Plotly.js forms the graphs.


Directory structure:-

storperf/docker/storperf-reporting/ contains the code used for this project.

The file structure is as follows:-


|-- Dockerfile                         # Dockerfile for the storperf-reporting container
|-- requirements.txt                   # pip requirements for the container
`-- src                                # Contains the code for the flask server
    |--                         # Code to run the flask application
    |-- static                         # Contains the static files (js,css)
    |   |-- css                        # Contains css files
    |   |   `-- bootstrap.min.css      
    |   `-- js                         # Contains the javascript files
    |       |-- bootstrap.min.js
    |       |-- Chart.min.js
    |       |-- jquery-2.1.3.min.js
    |       |-- jquery.bootpag.min.js
    |       `-- plotly-latest.min.js   # Used for plotting the graphs
    `-- templates
        |-- index.html
        `-- plot_tables.html

Graphing libraries and tools:-

  • Plotly.js is used as the graphing library for this project (Link:
  • Bootstrap is used for the UI of the project.


  • No labels


  1. Notes from the meeting held on 26th July 2017:
    Following changes to be made
    • Indexing
    • graph above the series
    • x axis more descriptive
    • show discarded data


  2. Chart should have labels and legend as shown in this sample from SNIA:

    Add Y Axis label to indicate IOPS, Bandwidth (KB/s) or Latency (nanoseconds/ns).

    Add X Axis label "Round".  Do not add 0 or extra value at end, just use the values present.

    Colours are good as is, do not change.

    Remove the text at top of page, add table under chart as shown:

    The allowed maximum data excursion is 20% of the average (or average x 0.20)

    The allowed maximum slope excursion is 10% of the average.

    The measured data excursion is the value from range.

    The measured slope excursion is the value from range.

  3. Progress done in the week:

    • Parsing of the data will now be done using the Flask server i.e. server side and Javascript will only do the rendering part on the client side.
    • Container is now compatible with the static data files on the server. Just use the filename present in the testdata and it will work.
    • Finalized of the structuring of the dictionary that will be send to the client side. 

    Tasks for the following week:

    • Client side changes to handle the dictionary.
    • UI changes suggested till now.
    • Clearing out the documentation backlog -  STORPERF-165 - Getting issue details... STATUS  . I would like to do this at the end of the week when all the changes are done, so the documentation is not changed again and again.