wiki:Manifold
Last modified 4 years ago Last modified on 06/03/2013 05:44:19

The MANIFOLD component is a generic codebase, building on the concept of Query Aware Networks?. It allows the seamless integration and manipulation of multiple data sources, though a consistent query interface that abstracts the implementation details of the different sources. It is used in the testbed context to offer two distinct services to experimenters:

  • TopHat? aggregates monitoring and measurement systems. It builds on MANIFOLD to perform the UNION of semantically similar data sources, and the JOIN of complementary data sources.
  • MySlice? is a portal to the federation. It builds on MANIFOLD to provide access to a multitude of services and tools, and in particular, to expose measurements in the context of the testbed substrate, resources or experiments.

MANIFOLD is composed of three sub-components:

  1. A library (in Python)

This component is where the core functionalities allowing the integration of the different platforms is implemented.

  • MANIFOLD rely on the use of a small set of known ontologies allowing an easier integration of platforms;
  • MANIFOLD propose a common data representation, a query language and a communication protocol allowing the different platforms to talk together, and forming a robust base for extending the capabilities of the framework;
  • MANIFOLD allows the federation of platforms by allowing those queries to be routed through multiple platforms. This extend the value of individual platforms by allowing the federation to answer queries that were not previously answerable by individual platforms.

Transparency? is ensure by exposing the source and timestamp information upon request. Debug information? about the different platforms can also be provided.

In addition, it provides two convenience mechanisms

  • The support of multiple users, and various authentication methods
  • A mechanism of gateways which acts as an adaptation layer for platforms not conforming to the standard interface proposed above. New gateways can be developed to extend the reach of the system.

LINKS: List of existing gateways? -- Gateway developer guide?

A set of use cases? of this framework are presented, allowing the realization of various functionalities.

  1. An API layer (in Python)

This sub-component consists in a set of thin layers exposing the MANIFOLD functionalities for a remote access. Current interfaces are : XMLRPC, XMPP and a HTTP interface (see third sub-component).

  1. A Web GUI (in PHP/JS/JQuery within Joomla, and Python/JS/JQuery within Django)

The Web interface is presented as a separate component due to its higher complexity, and the importance of the GUI for users' experience. It is designed as a modular and extensible layer, that can be extended through various plugins. It presents the following advantages:

  • a convenient synchronous or asynchronous query mechanism relying on the mechanisms described above: a plugin can only rely on the adopted semantic, and be agnostic of the details of the data source(s) thanks to metadata;
  • the transparent support for js and non-js browsers;
  • a publish-subscribe mechanism allowing plugin synchronization (different plugins can easily and transparently display the same data, or different facets of it);
  • etc.