Custom functions

Just like with storage finders, it is possible to extend Graphite-API to add custom processing functions.

To give an example, let’s implement a function that reverses the time series, placing old values at the end and recent values at the beginning.

# reverse.py

def reverseSeries(requestContex, seriesList):
    reverse = []
    for series in seriesList:
        reverse.append(TimeSeries(series.name, series.start, series.end,
                                  series.step, series[::-1]))
    return reverse

The first argument, requestContext, holds some information about the request parameters. seriesList is the list of paths found for the request target.

Once you’ve created your function, declare it in a dictionnary:

ReverseFunctions = {
    'reverseSeries': reverseSeries,
}

Add your module to the Graphite-API Python path and add it to the configuration:

functions:
  - graphite_api.functions.SeriesFunctions
  - graphite_api.functions.PieFunctions
  - reverse.ReverseFunctions