Moved to https://github.com/eu-nebulous; NebulOuS optimiser's controller.
Go to file
Rudi Schlatte fbb6162b0f Make log file names on Windows less illegal
Also document requirements on the `name` parameter of `Main.logFile`.

Change-Id: I7d2e15595f0fe5667ddf15911cd036ffd1bc87cf
2024-06-04 10:02:27 +02:00
charts/nebulous-optimiser-controller Set more environment variables in defineCluster 2024-05-17 12:37:46 +00:00
gradle/wrapper Update dependencies 2024-04-23 17:04:58 +02:00
nebulous-requirements-extractor Concretize what is a persistent volume component. 2024-06-03 16:33:43 +02:00
optimiser-controller Make log file names on Windows less illegal 2024-06-04 10:02:27 +02:00
zuul.d [CI] Include zuul.d/jobs.yaml as a trigger for image jobs 2024-05-27 15:18:32 +02:00
.gitattributes Initial check-in: application skeleton 2023-10-30 10:05:21 +01:00
.gitignore Extract KubeVela analysis to separate library 2024-02-29 15:48:09 +01:00
.gitreview Added .gitreview 2023-09-19 14:26:55 +00:00
.java-version Initial check-in: application skeleton 2023-10-30 10:05:21 +01:00
.yamllint Init repo from the component-template 2023-09-19 20:11:30 +02:00
Dockerfile Extract KubeVela analysis to separate library 2024-02-29 15:48:09 +01:00
gradlew Initial check-in: application skeleton 2023-10-30 10:05:21 +01:00
gradlew.bat Update dependencies 2024-04-23 17:04:58 +02:00
LICENSE Init repo from the component-template 2023-09-19 20:11:30 +02:00
noxfile.py Init repo from the component-template 2023-09-19 20:11:30 +02:00
README.md Remove spring-boot-demo leftovers 2024-03-01 10:48:07 +01:00
settings.gradle Extract KubeVela analysis to separate library 2024-02-29 15:48:09 +01:00

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.

The nebulous-requirements-extractor library

This library offers the utility class KubevelaAnalyzer that extracts component requirements from KubeVela files. This code is used both in the optimiser-controller and in other components of the NebulOuS optimiser.

The library will be built and deployed automatically as part of the build process of the optimiser-controller.

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:

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.