| Age | Commit message (Collapse) | Author |
|
This change updates the OpenDC web UI to show the monthly simulation
budget of the user in the user dropdown. This provides the user with a
progress bar of the used simulation minutes.
|
|
This change updates the Quarkus-based web server with a new endpoint for
querying data about the active user including accounting data.
|
|
This change updates the Quarkus-based web server to add support for
tracking and limiting the simulation minutes used by the user in order
to prevent misuse of shared resources.
|
|
This change updates the Quarkus-based web server to limit the default
exception mapper to just WebApplicationException. Other exceptions
should be considered internal server errors and must not be shared with
users.
|
|
This pull request updates the build and runtime dependencies used by OpenDC to their latest
version compatible with the project.
## Implementation Notes :hammer_and_pick:
* Update simulator dependency versions
* Remove unused distribution conventions
* Update next version to 3.0
* Eliminate use of wildcard imports
* Switch to Spotless for formatting
|
|
This change updates the build configuration to use Spotless for code
formating of both Kotlin and Java.
|
|
This change updates the repository to remove the use of wildcard imports
everywhere. Wildcard imports are not allowed by default by Ktlint as
well as Google's Java style guide.
|
|
This change updates the build script in preparation for the OpenDC v3.0
release changing the version numbers to the appropriate values.
|
|
This change removes the distribution conventions used by the root
project of OpenDC. Previously, we used this to build a single
distribution for OpenDC containing the experiment uberjars and scripts
to start OpenDC.
However, with the introduction of the Quarkus-based web server, we have
decided to split releases into (potentially) multiple distributions
(e.g., one for the web server, one for just the web runner, etc.).
Furthermore, the implementation of this convention caused issues with
several other Gradle plugins.
|
|
This change updates the simulator dependencies to the latest available
version where possible.
|
|
This pull request extracts the scheduler from the `SimulationCoroutineDispatcher` into
a separate `SimulationScheduler` class which allows users to re-use the scheduler
between different coroutine dispatchers.
We implement the `SimulationScheduler` in Java, removing the explicit dependency on
Kotlin or `kotlinx-coroutines`. The scheduler uses a separate specialized priority queue
implementation that eliminates allocation in the hot path of the simulator.
## Implementation Notes :hammer_and_pick:
* Add Java-based simulator core
* Use SimulationScheduler in coroutine dispatcher
* Rename runBlockingSimulation to runSimulation
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* The Kotlin API for simulation has been moved to `org.opendc.simulator.kotlin`.
* `runBlockingSImulation` renamed to `runSimulation`
|
|
This change renames the method `runBlockingSimulation` to
`runSimulation` to put more emphasis on the simulation part of the
method. The blocking part is not that important, but this behavior is
still described in the method documentation.
|
|
This change updates the implementation of `SimulationDispatcher` to use
a (possibly user-provided) `SimulationScheduler` for managing the
execution of the simulation and future tasks.
|
|
This change introduces a new class, `SimulationScheduler`, which
provides the basis for simulations in OpenDC by allowing components to
schedule future tasks using delay-skipping queue and a virtual clock.
This new class is written in Java to remove any dependency on the
Kotlin and kotlinx-coroutines runtime when not necessary.
|
|
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/v3.5.0...v3.5.1)
---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This pull request implements a new tool to help provision and manage the
experimental environment.
## Implementation Notes :hammer_and_pick:
* Add service registry for cloud services
* Add provisioning tool for experiments
* Add provisioning step for workflow service
* Add provisioners for FaaS service
* Use experiment base for Capelin experiments
* Use experiment base for web runner
* Integrate compute workload classes
* Remove Topology interface
## Breaking API Changes :warning:
* Removal of the `opendc-compute-workload`, `opendc-faas-workload`,
and `opendc-workflow-workload` modules. These are now located
inside `opendc-experiments`
* Removal of `ComputeServiceHelper`. Use `Provisioner` to provision
a `ComputeService`.
|
|
This change removes the Topology interface from the
`opendc-experiments-compute` module, which was meant for provisioning
the experimental topology. Howerver, with the stateless `HostSpec`
class, it is not needed to resolve the topology everytime.
|
|
This change integrates the classes from the old
`opendc-compute-workload` module into the `opendc-experiments-compute`
module. This new module contains helper classes for setting up
experiments with the OpenDC compute service.
|
|
This change updates the OpenDC web runner to use the new
`opendc-experiments-base` module for setting up the experimental
environment and simulate the workload.
|
|
This change updates the Capelin experiments to use the new
`opendc-experiments-base` module for setting up the experimental
environment and simulate the workloads.
|
|
This change adds a new module `opendc-experiments-faas` that provides
provisioner implementations for experiments to use for setting up the
FaaS service of OpenDC.
|
|
This change adds a new module `opendc-experiments-workflow` that provides
provisioner implementations for experiments to use for setting up and
using the workflow engine in OpenDC.
|
|
This change adds a new module `opendc-experiments-compute` that provides
provisioner implementations for experiments to use for setting up the
compute service of OpenDC and provisioning (simulated) hosts.
|
|
This change adds to the experiment base in OpenDC a provisioning tool to
help setup the experimental environment in a reproducible manner.
The experimental environment can be defined in terms of *provisioning
steps* which manage the allocation, configuration, and clean-up of all
resources necessary for the experiments.
The provisioning steps are executed sequentially, so in case of dependencies,
the steps need to be ordered correctly.
|
|
This change adds a new module called opendc-experiments-base which will
provide a base for doing experiments with OpenDC. The initial feature we
introduce is the service registry which acts as DNS for services to
register during experimentation.
|
|
This pull request refactors the existing workload interference model in order
to remove a dependency on it during the topology construction. With this change,
interference domains (e.g., a single host) can be constructed independently of the
interference profiles of virtual machines.
## Implementation Notes :hammer_and_pick:
* Move VM interference model into compute simulator
* Remove convergence listener parameter
* Remove FlowEngine from SimMachineContext
* Remove timestamp parameter from SimTrace
* Pass interference key via parameter
* Move interference logic into VmInterferenceMember
* Prevent boxing in interference algorithm
* Extract Random dependency from interference model
* Add separate error host state
* Simplify constructor of SimHost
* Make interference domain independent of profile
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* The interface of `VmInterferenceModel` is changed. Users do not need to
provide a seed for the model anymore.
* A `VmInterferenceModel` should be passed via the metadata parameter of
`startWorkload` to enable workload interference.
|
|
This change updates the interface of `ComputeService` to provide access
to the instances (servers) that have been registered with the compute
service. This allows metric collectors to query the metrics of the
servers that are currently running.
|
|
This change updates the `ComputeServiceHelper` class to provide the
failure model via a parameter to the `run` method instead of constructor
parameter. This separates the construction of the topology from the
simulation of the workload.
|
|
This change simplifies the SimHypervisor class into a single
implementation. Previously, it was implemented as an abstract class with
multiple implementations for each multiplexer type. We now pass the
multiplexer type as parameter to the SimHypervisor constructor.
|
|
This change updates the virtual machine performance interference model
so that the interference domain can be constructed independently of the
interference profile. As a consequence, the construction of the topology
now does not depend anymore on the interference profile.
|
|
This change updates the constructor of SimHost to receive a
`SimBareMetalMachine` and `SimHypervisor` directly instead of
construction these objects itself. This ensures better testability and
also simplifies the constructor of this class, especially when future
changes to `SimBareMetalMachine` or `SimHypervisor` change their
constructors.
|
|
This change adds a new HostState to indicate that the host is in an
error state as opposed to being purposefully unavailable.
|
|
This change moves the Random dependency outside the interference model,
to allow the interference model to be completely immutable and passable
between different simulations.
|
|
This change updates the performance interference algorithm to remove the
boxing that happened due to using a generic collection for storing
integers. This collection was accessed in the algorithm's hot path, so
could cause slowdown.
|
|
This change updates the design of the VM interference model, where we
move more of the logic into the `VmInterferenceMember` interface. This
removes the dependency on the `VmInterferenceModel` for the hypervisor
interface.
|
|
This change updates the signature of the `SimHypervisor` interface to
accept a `VmInterferenceKey` when creating a new virtual machine,
instead of providing a string identifier. This is in preparation for
removing the dependency on the `VmInterferenceModel` in the
`SimAbstractHypervisor` class.
|
|
This change removes the timestamp parameter from `SimTrace`. Instead, it
is now assumed that the trace is continuous and the end of a fragment
starts a new fragment, in order to simplify replaying of the trace.
|
|
This change removes the reference to the active FlowEngine from the
SimMachineContext interface. This prevents leaking the lower layer into
this module.
|
|
This change removes the convergence listener parameter in for the
`SimBareMetalMachine` and the hypervisors. This parameter was not used
in the code-base and is being removed with the introduction of the new
flow2 module.
|
|
This change moves the core of the VM interference model from the flow
module into the compute simulator. This logic can be contained in the
compute simulator and does not need to leak into the flow-level
simulator.
|
|
This change adds support for (anti-)affinity scheduling of servers onto hosts,
which happens at the compute service level.
In the future, we might add support for server groups, which also enables
soft (anti-)affinity scheduling.
Implements #26
## Implementation Notes :hammer_and_pick:
* Add `DifferentHostFilter` to schedule instances on different hosts from a set of instances.
* Add `SameHostFilter` to schedule instances on the same hosts as a set of instances.
|
|
This pull request addresses several issues with the current web interface.
## Implementation Notes :hammer_and_pick:
* Update dependencies of web UI where possible
* Fix deletion of topology
* Fix duplication of topology
* Only display selected metrics
* Use correct color for login button
* Fix z-index of context selector
* Move project selector into masthead
* Reduce height of application header
* Redesign projects page
* Use PatternFly Charts for plots
* Do not fail on stale Redux state
* Fix overflow of topology sidebar
* Fix deletion of portfolios
* Migrate to composable table
## External Dependencies :four_leaf_clover:
* `classnames` has been replaced by `clsx`
* PatternFly Charts have replaced the use of `recharts`
|
|
This change updates the web interface to use the composable table API
offered by PatternFly 4. This has replaced the legacy table API which
will be removed in the next major version of PatternFly.
|
|
This change fixes an issue where the deletion of portfolios would fail
due to no transaction context being active.
|
|
This change fixes an issue with the web interface where the sidebar
would overflow due to the large number of rack slots that are displayed
in the sidebar.
|
|
This change fixes an issue where switching between different topologies
would fail due to stale Redux state. We have updated the components to
take into account that ids may not exist in the Redux store.
|
|
This change updates the OpenDC web interface to use the PatternFly
Charts package to render the results of a portfolio. Previously, we used
Recharts, but this package does not support SSR, whereas the PatternFly
Charts package matches our design framework.
|
|
This change updates the design of the projects page to use a gallery
overview.
|
|
This change reduces the height of the application header to 3.5rem to
increase the screen real-estate that we can use for the application
content.
|
|
This change moves the project selector into the masthead since it
affects the whole application. This follows the PatternFly guidelines.
|