Accumulate Processor

The Accumulate processor in IBA probes creates a time-series output for each input with the same properties. When the input changes, it appends the timestamp and value to the output series. If total_duration is set and the series exceeds this duration, it removes old samples. Similarly, if max_samples is set and the series exceeds this limit, it removes old samples.

Parameter Description
Input Types Table (number or discrete state)
Output Types Table (number or discrete state, accumulate=True)
Max Samples (max_samples) Limits the maximum number of samples or an expression that evaluates to number of samples (default:1024)
Total Duration (total_duration) Limits the number of samples by their total duration. (in seconds) or an expression that evaluates to number of seconds (default:0)
Graph Query (graph_query)

One or more queries on graph specified as strings, or a list of such queries. (String will be deprecated in a future release.) Multiple queries should provide all the named nodes referenced by the expression fields (including additional_properties). Graph query is executed on the "operation" graph. Results of the queries can be accessed using the "query_result" variable with the appropriate index. For example, if querying property set nodes under name "ps", the result will be available as "query_result[0]["ps"]".

In collector processors (*_collector, if_counter) it is used to choose a set of nodes for further processing (for example, all leaf devices, or all interfaces between leaf and spine devices)

In other processors it is used for general parameterization and it is only supported as a list of queries.

graph_query: "node("system", role="leaf", name="system").
              out("hosted_interfaces").
              node("interface", name="iface").out("link").
              node("link", role="spine_leaf")"
graph_query: ["node("system", role="leaf", name="system")",
              "node("system", role="spine", name="system")"]

Non-collector processors containing the graph_query configuration parameter, can be parameterized to use data from arbitrary nodes in the graph, such as property set nodes. Property sets allow you to parameterize macro level SLAs for individual business units. In the example below, graph_query matches a node of type property_set with label probe_propset. It's accessed using the special query_result variable, where Index 0 means it's the first node in query results. If a query returned N nodes, they could be accessed using indices starting from 0 to N-1. ps is what the actual node is referred to in the query; the rest depends on the structure of the node. The int() casting is required because values of property_set nodes are strings. Here it's assumed that a property set node has the label probe_propset and that the value accumulate_duration was already created.

graph_query: [node("property_set", label="probe_propset", name="ps")]
duration: int(query_result[0]["ps"].values["accumulate_duration"])

Another example is a that probes can validate a compliance requirement; the compliance value may change over time and/or it can be used by more than one probe. Also, a probe can validate NOS versions on devices. In this case, property sets can be used to define the current NOS version requirement. If it changes tomorrow: change the property set value, instead of going under the probe stage.


Flow diagram with three components: Input data, Accumulate operation, and Output result. Data flows from Input to Accumulate to Output.

In the Add Processor window of the GUI, hover over the "Accumulate Integers" or "Accumulate Strings" tooltips for visual examples of how the Accumulate Processor functions.


Data processing flow diagram for an Accumulate operation. Input data includes system ID, if_name, and values. Accumulation parameters: Total Duration 20 seconds, Max Samples 3. Output data shows count, sum, avg, and std_dev for each system and interface.

Example: Accumulate

Assume a configuration of

Assume the following input at time t=1

We have the following output at time t=1

Assume the following input at time t=2

We have the following output at time t=2

Assume the following input at time t=3

We have the following output at time t=3

Assume the following input at time t=4

We have the following output at time t=4

If the expressions are used for max_samples or total_duration, then they are evaluated for each input item and the corresponding key is added for each output item.

Sample input:

Output