Rudi Schlatte 3f75c54bee Extract KubeVela analysis to separate library
The static methods in the new class
`eu.nebulouscloud.optimiser.kubevela.KubevelaAnalyzer` are used by
multiple components in the NebulOuS Solver.

Create a library `nebulous-requirements-extractor` that houses this
class.

Adapt the container build job to run at project root, not inside the
`nebulous-controller` subdirectory.

Add jobs for library build and repository upload.

Change-Id: Ic61c7064d216201031659bc362e3ed218f9c2b67
2024-02-29 15:48:09 +01:00

58 lines
1.6 KiB
Markdown

# 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.
```sh
# Compile:
./gradlew assemble
# Compile and test:
./gradlew build
```
# Building the container
A container can be built and run with the following commands:
```sh
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:
```sh
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:
```java
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`.