===========
OML4PY
===========

This is a Python module for the OML measurement library based on the OML text
protocol: http://mytestbed.net/projects/oml/wiki/Description_of_Text_protocol

Installation
-------------

Install using pip::

    pip install oml4py

or download the package and run::

    python setup.py install


Usage
-------------

This module provides the OMLBase class, which contains the following methods:

* init

* start

* addmp

* inject

* close


To use OML in a python project, import the OMLBase class::

   from oml4py import OMLBase

Start by initializing an OMLBase object. The init method takes up to four
arguments:

*  the name of the application,

*  the name of the experiment,

*  the name of the node,

*  and the OML server URI in the form ``tcp:hostname:port``


For example::

    x=OMLBase("app", "an-exp","r","tcp:myomlserver.com:3003")


The only mandatory argument is the first one (the name of the application).
If you skip any of the others, they may be defined by environment variables
(OML_EXP_ID, OML_NAME, OML_SERVER). If these environment variables are not
defined and they are not passed in explicitly, then the application will
run with OML disabled, and the measurements that would have been sent
to OML will be printed on stdout instead.


Next, add one or more measurement points. Pass the name of the measurement
point and a schema string to the start method. The schema string should
be in the format
``measurement_name1:measurement_type1 measurement_name2:measurement_type2``
for example::

    x.addmp("fft", "freq:long amplitude:double fft_val:double")

When you have set up all your measurement points, call start()::

    x.start()

When you have a measurement point to send to OML, store them in a list.
Then pass the name of the measurement point and list of values to inject,
as follows::

   x.inject("fft", [259888, 15, -38])

At the end of your program, call close to gracefully close the database::

   x.close()
