Apache Airavata

Title:

Dashboards to get quick statistics .


Abstract:

Apache Airavata is a software framework for executing and managing computational jobs on distributed computing resources including local clusters, supercomputers, national grids, academic and commercial clouds. Gateway admins needs periodical reports of number of users, experiments running , resources in use etc for various reporting and planning purposes. The goal is to use the existing experimental and user data that is already present in apache Airavata’s databases and take the advantage of apache superset and visualize these statistics on webpage using VueJS as well ability to download the report in Csv or pdf format.

Project Design and details:

     Proposed architecture diagram :


Study the Apache Airavata’s User and Experiment Database

There are multiple databases like profile_service, experiment_catalog, app_catalog, replica_catalog, sharing_catalog, credential_store which contains information such as user’s name, demography, input, queue_status, credentials, token_id, resource status etc. These are the details that need to be fetched and  structured and experimented upon and later on visualized by converting into charts, bars etc using apache superset.


 Creation of the feature API’s

I’ll working on implementing API’s to achieve the following features:


  • Computing the resources that had at least one job submitted during the period <start date - End date>.
  • User groups created within a given period and how many users are in those and with permission levels and also number of jobs each user have submitted.
  • To List applications and number of jobs for each applications for a given period and group them by job status.
  • Number of users that at least submitted a single job for the period <start date - End date>
  • Total number of Unique Users
  • User Registration Trends
  • Number of experiments for a given period <Start date - End date> grouped by the experiment status
  • The total cpu-hours used by a users, sorted, quarterly, plotted over a period of time
  • The total cpu-hours consumed by application, sorted, quarterly, plotted over a period of time

Creation of the dashboard to visualize the the data

Once I have developed the API’s to fetch the relevant  API’s I’ll be working on creating the dashboard using Vue.js . I’ll be working on creating the components and the object vue . Further to make visualization better apache superset provides feature to create bar , charts , pie diagram and it can be easily integrated with Vue.js .


End to End Testing 

Testing is important part of any product development . So I’ll be specifically  dedicating some time on doing unit testing as well as integration testing . For unit testing I’ll be writing some unit test cases to test test the individual  functionality on the API or class level by creating mock objects.

For integration testing I’ll test entire workflow with various scenario and edge cases .


Deliverables:

Task

Timelines

Deliverables

Study the Apache Airavata’s User and Experiment Database

May 27, 2022

  • Understand Apache Airavata end to end architecture.
  • Setup apache airavata locally .
  • Go through all the database schema.

Creation of the few feature API’s


June 20, 2022

  • Develop resource utilization API.
  • Develop API to list all the application.
  • Develop API to summarize user groups created

Creation of the dashboard to visualize the the data

july 5, 2022 

  • Develop the dashboard to visualize the API’s developed in above point.

Completion of all the API and finish the Dashboard implementation 

July 30, 2022

  • Finish developing all the API and integrating it with the dashboard to finish visualization.

End to End Testing

August 15, 2022

  • Develop a test plan 
  • Complete unit and integration testing .

Prepare project report and documentation 

August 30, 2022

  • Consolidate all the API documentation ,  test results , user guideline documentation.
  • Consolidated project report.
  • Consolidated GSOC journey. 


JIRA:

  • No labels