- System receives message with desired configuration:
- Configuration message contains multilevel requirements. Proper serialization is used.
- Configuration contains reference to resources by id and by label type
- System notifies the observers that requirements are not met.
- Resources register and gradually fill in requirements. On every resource change observer is notified
- During the process at least two resources go down. No special action is taken
- Finally, requirements are met. Observer is notified.
- Resource A goes down
- System is partially reconfigured to keep the highest weight functionality
- After some resource goes down critical functionality goes down
- System goes in maintenance mode.
Analogous scenario will be implemented - with first resources registering and then requirements being sent.
- System receives configuration that defines custom actions to be executed after each resource is being registered
We decided to use Circe as serialization library. Circe will fail in compilation time if any serialization (or deserialization) Codec is missing. This is consistent with our type-safe approach which focus on preventing erros compile-time.
FunctionalityModel represents basic functionality that system needs to maintain
This is main Actor responsible for handling transition changes. It is implemented using persistent FSM.
Systems Research Institute, Polish Academy of Sciences, Warsaw.
Self-Configurator code is released under the Apache License 2.0. See the LICENSE file for details.
