Portal

The BonFIRE Portal offers the experimenters a graphical interface to the BonFIRE capabilities, is a simplified entry point for the experimenters, and supports specification of an experiment at both experiment level granularity (through experiment descriptors) and resource level granularity through multiple single resources. The Portal also provides a means of monitoring and has a view of the experimenters’ data, the running experiments, the available resources at each testbed site and information for experiment support.

The BonFIRE Portal is available at https://portal.bonfire-project.eu.

APIs provided

none.

APIs used

The Portal uses the following BonFIRE APIs:

  • Resource Manager
  • Experiment Manager
  • Accounting Service
  • Authorization Service
  • IDM (LDAP)

Message queue use

The Portal does not read or write from the message queue.

Assumptions

No documented assumptions.

Implementation details

The BonFIRE Portal is implemented as a web application written in the python programming language and implemented as a set of plugins to the content management system django-cms, which in turn is built as a module for the popular web application development framework django. This solution does not rely on a specific web server implementation but rather uses a wsgi compliant interface to communicate with any compatible web server. Currently, the portal is served through mod_wsgi on Apache httpd and relies on the BonFIRE IDM for user authentication.

It is important to note that, the Portal merely accesses the functionalities exposed by the various BonFIRE APIs. Every function performed through the Portal could be performed by the experimenter without using the Portal by issuing the respective HTTP requests directly to the API. The task of the Portal, however, is to make this process much more convenient and provide a concise overview of the resources and options available to the experimenter. The Portal furthermore provides additional documentation and guidance to the user.

The portal also stores no experiment related data itself. Rather, all experiment related data a user requests is retrieved from the appropriate BonFIRE API. The only data that is stored by the portal is CMS webpage content, additional information about BonFIRE sites that can not be retrieved from the RM, and user registrations and experiment proposals which have not yet been reviewed by a BonFIRE administrator. This information is stored in an SQL database the schema of which is schown in the following diagram. Note that only the BonFIRE user management related parts are shown. The structure of the CMS’s database is considered an implementation detail of the CMS and its documentation is out of scope for the purpose of this document.

../_images/portal_db_model.png

BonFIRE Portal Database Model

CMS Plugins

All of the portal’s views are implemented as plugins for the Django CMS software. These plugins are implemented in the file cms_plugins.py. A CMS plugin consists of two parts:

  • The actual plugin code implemented as a class
  • An HTML template that is used for rendering the plugin’s output

For further information on how to write a plugin, please refer to the documentation of Django CMS here: http://docs.django-cms.org/en/2.1.3/extending_cms/custom_plugins.html

JSON Data Sources

A number of functionalites of the portal rely on the fact that data is retrieved after the initial page rendering in an asynchronous manner (AJAX). To transmit the data, the JSON data format is used. All JSON data sources are implemented in the file api.py. New datasources can easily be added by implementing an additional method to the class ApiController. This has the benefit that these methdos will automatically be available through an URL path (/api/<method name>). Furthermore, API methods defined in this manner do not need to concern themselves with actual serialization of input and output parameters. They simply return a standard Python dictionary object that will automatically be converted to JSON as appropriate.

Table Of Contents

Previous topic

Introduction

Next topic

Experiment Manager

This Page