Getting Started

Have Maestro Core running on your system.

Install

Prerequisites

C compiler understanding C11

POSIX threads

autoreconf

libtool

Get to the repository

git clone <repo>
cd maestro-core

Installation commands are as follows

autoreconf -ifv
./configure [--prefix=$(MAESTRO_PATH)]
make
[make check]
[make install]

First Program

Include the maestro header in your code

#include "maestro.h"

Write a first program that can be

int main(void) {
  mstro_init("my_workflow","my_component",0);
  mstro_cdo cdo = NULL;
  mstro_cdo_declare("my_first_cdo", MSTRO_ATTR_DEFAULT, &cdo);
  mstro_cdo_offer(cdo);
  mstro_cdo_withdraw(cdo);
  mstro_cdo_dispose(cdo);
  mstro_finalize();
  return 0;
}

which does single application local Maestro Core execution. This code simply offers and withdraws a CDO to Maestro Pool, no data or metadata transfer is performed for now; for that we would need either another thread for local execution or another application demanding the offered CDO, plus a Pool Manager running.

Add the include path and library path of Maestro to the compilation/linking command

-I$(MAESTRO_PATH)/include/maestro -L$(MAESTRO_PATH)/lib -lmaestro

where $(MAESTRO_PATH) is Maestro install path specified during configuration with ./configure  --prefix=$(MAESTRO_PATH). Then export the path to Maestro library

export LD_LIBRARY_PATH=$(MAESTRO_PATH)/lib:$LD_LIBRARY_PATH

and the first program is ready to run.

Tip

You can inspect what Maestro does by setting the following environment variable MSTRO_LOG_LEVEL=info. By default Maestro Core outputs to stderr, you can also choose stdout or syslog via MSTRO_LOG_DST=syslog

Demos

TODO

Troubleshooting

TODO