
We want to have <timestamp>-app-message-<application-id>.json, but before we try to parse the file. Try to fish the application-id out of the message subject or, failing that, of the "application" property. Change-Id: Ibe2f517ff213a0726a10ecebe407f8cb9e5d0de4
The NebulOuS optimizer controller
This module serves two purposes:
-
When a new NebulOuS application is started, set up the initial optimizer infrastructure, parse the application structure and metric model, and pass an initial resource configuration (“Optimized Service Graph”) to the Deployment Manager.
-
When an application is running, monitor the application-specific metrics coming in via ActiveMQ and invoke the optimizer as needed, thereby possibly triggering application reconfigurations.
Building
To compile, install a JDK (Java Development Kit) version 17 or greater on the build machine.
# Compile:
./gradlew assemble
# Compile and test:
./gradlew build
Building the container
A container can be built and run with the following commands:
cd optimiser-controller
docker build -t optimiser-controller -f Dockerfile .
docker run --rm optimiser-controller
Running
To run, install a JRE (Java Runtime Environment) version 17 or greater.
A successful build creates the jar file dist/optimiser-controller-all.jar
.
This file is self-contained and can be executed via the following command:
java -jar optimiser-controller/dist/optimiser-controller-all.jar
Running in jshell
The command ./gradlew --console plain jshell
opens a REPL (read-eval-print
loop) with the package eu.nebulous.optimiser.controller
pre-imported. On
the REPL, one can write Java snippets such as:
SalConnector conn = new SalConnector(new URI("http://localhost:8088"));
conn.isConnected();
For command-line editing and history support, use the rlwrap
command:
rlwrap ./gradlew --console plain jshell
.