D6.2:RepositoryArchitecture

From West-Life
Jump to: navigation, search

Detailed architecture

The system is deployed on

  1. staff workstation as web application in common browser connecting to http://[repositorydomain]/staff
  2. scientist workstation (common browser connecting to http://[repositorydomain]/repository).
  3. external repositories are integrated via Virtual Folder D6.1
  4. backend server

Adobe SVG Viewer plugin (for Internet Explorer) or use Firefox, Opera or Safari instead.

ARIA Integration

ARIA provides community supported proposals system and finding/scheduling visit to perform experiment in facilities within Instruct network, covering different methods (NMR, CryoEM, X-Ray, ...). Visit proposals can be imported into repository on user request.

Adobe SVG Viewer plugin (for Internet Explorer) or use Firefox, Opera or Safari instead.

Entity relationship

Data stored in database (MySQL) contains entity and realationships, datasets are stored in filesystem of a node storage. There is a link between dataset entity and file/folder of the dataset. Metadata are not yet implemented in DB. There might be a link between metadata of dataset/datasets and dataset/file. Metadata DB could be either in the same (MySQL) instance or in NoSQL e.g. virtuoso installation at /cvmfs/west-life.egi.eu/software/virtuoso/latest

Adobe SVG Viewer plugin (for Internet Explorer) or use Firefox, Opera or Safari instead.

Frontend

  • /index.html - returns the default frontend. Not aurelia.
  • /repository/* - returns Aurelia application and is protected by West-life SSO, apache configuration redirects to West-Life login page if not authenticated. Mellon module in Apache ensures that requests are internally filtered and X-NAME and X-EPPN headers are added to identify logged in user.
  • /repositorytest/* - returns Aurelia application with demo user.
  • /admin/* - redirects to JSP pages implemented in spring framework - to define local staff user accounts etc.

Backend API

  • /api/ - redirect REST api of Spring framework.
    • /api/project - return projects asociated to the logged in user, e.g.:
     [{id:1, date:"06/09/2017",summary:"spectrum of strychnine process with v_noesy_pro.mac (NUTS-Pro) or v_noesy.mac (NUTS-2D)", info:"1.6 Mb"},
     {id:2,date:"07/09/2017",summary:" spectrum of sucrose (1.3 Mbytes); process with v_ghsqc_pro.mac (NUTS-Pro) or v_ghsqc.mac (NUTS-2D)", info:"1.3 Mb"},
     {id:3,date:"08/09/2017",summary:"spectrum of strychnine (2.1 Mbytes); process with v_hsqc_pro.mac (NUTS-Pro) or v_hsqc.mac (NUTS-2D).", info:"2.1 Mb"},
   ]
    • /api/project/1 - returns detail of asociated project
     {id:1, date:"06/09/2017",summary:"spectrum of strychnine process with v_noesy_pro.mac (NUTS-Pro) or v_noesy.mac (NUTS-2D)", info:"1.6 Mb", ... }
    • /api/project/1/dataset - returns list of datasets associated with project e.g.:
     [{name:"v_ghspc.mac",size:"1312412312"},{name:"v_ghspc.def",size:"16"]}
    • /api/users - GET, if the request comes from staff user (not visiting scientist) returns list of users (from West-Life SSO) authorized to access repository - e.g. sorted by approval date.

if the request comes from visiting scientist - then only his account is returned

     [{username:"content of X-NAME header",eppn:"content of X-EPPN header"}]
   
    • /api/ - (optional) to be RESTful - autogenerated list of available api request
     [{url:"project",info:"..."},{url:"users",info:"..."}]
    • /api/dataset - returns list of filelist(dataset) - available for user - who owns it or who is involving in a project related to the dataset (or all for DBA/admins?)
    • /api/dataset/{id} - returns detail of dataset -> only in case he has access to it as from previous /api/dataset call