Skip to main content
This project is an incubation project being run inside the Green Software Foundation; as such, we DON’T recommend using it in any critical use case. Incubation projects are experimental, offer no support guarantee, have minimal governance and process, and may be retired at any moment. This project may one day Graduate, in which case this disclaimer will be removed.

Exhaust scripts

Exhaust scripts are scripts that can run independently of IF itself that take an executed manifest file (one with outputs) as an input, parse the yaml data and reformat it into some other representation. We provide if-csv bundled with IF, but if you want other data formats, you'll have to create an exhaust script yourself.

if-run

if-run isn't really an exhaust script, because it also grabs input data, regroups data, computes the pipeline and aggregates. However, we're mentioning it here because it does have some built-in exhaust functionality. Specifically, if-run outputs yaml data. if-run can only output yaml data. This yaml data can be dumped to the console or saved to a yaml file.

How to Use if-run

To use if-run, you need to provide a manifest file in yaml or yml foramt. The output will be in yaml format if you specify the output file path.

Here's a simple manifest file example. This manifest sums two components, cpu/energy and network/energy and assigns the result to energy in the outputs array.

name: sum
description: successful path
tags:
initialize:
plugins:
sum:
method: Sum
path: 'builtin'
config:
input-parameters: ['cpu/energy', 'network/energy']
output-parameter: 'energy'
tree:
children:
child:
pipeline:
observe:
regroup:
compute:
- sum
inputs:
- timestamp: 2023-08-06T00:00
duration: 3600
cpu/energy: 0.001
network/energy: 0.001

To execute this manifest with if-run, use the following command:

if-run -m sum.yaml -o output-sum

You will get the executed manifest in the output-sum.yaml file.

if-csv

The if-csv script allows users to pass in yaml and yml files created using if-run and save the output in csv format. You have to define the parameters you want to export from the yaml file, e.g. energy or carbon.

For the above example, you can get the following result:

Path,2023-08-06T00:00
tree.children.child.energy,0.002

by running:

if-csv -m sum.yaml -p energy -o output-sum

This command specifies the manifest file (sum.yaml), the parameter to export (energy), and the output file path (output-sum).