Services‎ > ‎

Client tools

There are several ways in which you can interact with the BonFIRE API to create and manage your experiment, depending on your preference. Currently, the following tools are available: BonFIRE Portal (GUI), BonFIRE Experiment Descriptors, Restfully, command line client tools based on Python or raw HTTP calls.

BonFIRE Portal

BonFIRE Portal - creating an experiment (1)
The BonFIRE Portal is a graphical client tool which operates via your web browser, which is very intuitive to use.

No knowledge of the BonFIRE API or OCCI is required, which is why this option lends itself perfectly to non-technical users.

Creation of experiments (as seen on the left) and resources within an experiment is done by means of web forms, in which it is obvious what information is required. Once an experiment is created, compute, storage and networking resources can be created on any of the testbeds in BonFIRE, following the same simple steps. The portal automatically retrieves information about available resources on each respective testbed, which means you can set up a simple experiment in only a few moments.

Due to the step-by-step approach offered by the BonFIRE Portal, it lends itself better to smaller experiments and testing of functionality. For experiments consisting of a lot of resources, or if you wish to automate the experiment deployment (particularly desirable for repeating experiments), it is worth investing some time into learning about the BonFIRE Experiment Descriptor or Restfully, which is a more  general purpose tool for interacting with RESTful Cloud sites.




BonFIRE Experiment Descriptor

In the BonFIRE architecture, there is an Experiment Manager that allows you to create a managed experiment by uploading an experiment descriptor for the deployment of an experiment. There are 5 parts to a single descriptor, which will allow you to specify:

  1. The initial deployment of compute, storage and network resources.
  2. Monitoring metrics.
  3. Elasticity rules containing both trigger conditions (specified with respect to the monitoring metrics) and the actions to perform when the conditions are met.
  4. General rules that specify trigger conditions and actions to perform that are not necessarily related to elasticity.
  5. Shutdown sequence.

Besides being able to define the deployment of an experiment, monitoring metrics and triggering rules, the benefits of the BonFIRE experiment descriptors are many, for example:

  • Ideal for defining large experiments.
  • Share an experiment deployment.
  • Allows for repeated experimentation.
  • Quick and intuitive to write.
  • Two well known formats offered, JSON and OVF.

Release 2 of BonFIRE supports experiment descriptors that specify the initial deployment of compute, storage and networking resources, but not specification of monitoring metrics or elasticity rules in one document. This does not, however, mean that those features are not supported in BonFIRE. In the current release of BonFIRE, those features need to be defined separately within the VM images used by the experiment, rather than within an experiment descriptor.

The functionality of the Experiment Manager can also be utilised via the BonFIRE portal, via Managed Experiments.

Restfully

Since BonFIRE exposes a RESTful API, general-purpose RESTful clients can also be used, such as Restfully.

Restfully is a client tool written in Ruby, which abstracts details of the HTTP exchanges with the BonFIRE API. Moreover, it also allows you to write scripts for your experiment deployment which can be automatically executed. Therefore, it offers many of the benefits of the BonFIRE experiment descriptors.

For more information about Restfully, please refer to the documentation [here].

Python command line tools

BonFIRE also offers a Python-based command line tool, which could be used in an interactive, manual, fashion or programmatically (i.e., scripted).

The structure of these tools is inspired by the command line interface offered by the OpenNebula toolkit, in the sense that individual tools exists to interact with resources of a particular type. These individual tools are:

bfexperiment - to interact with experiments
bfcompute - to interact with compute resources
bfstorage - to interact with storage resources
bfnetwork - to interact with network resources
bfsitelink - to interact with Autobahn sitelinks
bfrouter - to interact with Federica routers
bffednet - to interact with Federica networks
bfphysicalrouter - to retrieve information on physical routers available through Federica
bflocation - to retrieve information on BonFIRE sites

For more information about how to use these tools, please refer to the online documentation [here].

HTTP

It is possible to issue raw HTTP commands via cURL, which is essentially what the BonFIRE Portal does automatically. Therefore, it is possible to write a client script based on OCCI calls to automate parts of an experiement, as desired. Below is an example of deploying a compute resource on Inria (for an experiment that already would have been set up).

curl -kni https://api.bonfire-project.eu:444/experiments/4127/computes \
  -X POST -H'Content-Type: application/vnd.bonfire+xml' \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<compute xmlns="http://api.bonfire-project.eu/doc/schemas/occi">
  <name>inria-medium</name>
  <description>Medium instance at INRIA</description>
  <instance_type>medium</instance_type>
  <disk>
    <storage href="/locations/fr-inria/storages/166"/>
    <type>DISK</type>
    <target>hda</target>
  </disk>
  <nic>
    <network href="/locations/fr-inria/networks/47"/>
  </nic>
  <link href="/locations/fr-inria" rel="location"/>
</compute>'