| Age | Commit message (Collapse) | Author |
|
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 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 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 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 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.
|
|
This change addresses an issue with the context selector component where
the dropdown would fall behind a sticky tab bar in the main content.
|
|
This change replaces the classnames dependency for the clsx dependency,
which uses less code and is in general faster than the classnames
dependency.
|
|
This change fixes an issue with the web interface where all available
metrics were shown to the user, instead of the metrics belonging to the
portfolio.
|
|
This change addresses an issue where a new topology did not correctly
clone an existing topology.
|
|
This change fixes an issue with the OpenDC web interface where the user
cannot remove an existing topology from the topology table due to a
programming mistake.
|
|
This change updates the dependencies of the OpenDC web interface were
possible. We remain on React 17 until PatternFly adds support for the
new React version.
|
|
This change updates the build script of the OpenDC web server to include
the sample traces in the repository.
|
|
This change fixes the Dockerfile for the OpenDC web server by also
providing the custom Auth0 configuration values during build time of the
image. These settings cannot be changed during runtime, so we need to
declare them in the Dockerfile.
|
|
This change fixes the Docker deployment of the OpenDC web UI. There have
been several updates to the build process of the web UI, which have not
taken into account the Docker deployment process. This change addresses
these discrepancies.
|
|
This change updates the Quarkus-based web server to use Flyway for
migrating between schema versions. This enables us to evolve the schema
and denote it in SQL.
|
|
This change updates the Quarkus configuration of the OpenDC web server
to serve as a fully standalone distribution that is capable of serving
the web UI, web API, and experiment runner. Such an approach vastly
simplifies local deployments.
For Docker deployments, we create a custom Quarkus profile that uses
PostgreSQL and disables the web UI.
|
|
This change updates the web server configuration to reduce the logging
output produced by simulation runs.
|
|
This change updates the Quarkus extension for the OpenDC runner to avoid
the REST layer if possible, by providing an implementation of `JobManager`
that directly communicates with the `JobService`. This means the runner
does not have to traverse the authentication layer.
|
|
This change introduces a new interface `JobManager` that is responsible
for communicating with the backend about the available jobs and updating
their status when the runner is simulating a job. This manager can be
injected into the `OpenDCRunner` class and allows users to provide
different sources for the jobs, not only the current REST API.
|
|
This change updates the runner configuration to support specifying the
parallelism as zero to let the runtime decide the appropriate number of
threads based on the available CPU cores on the machine.
|
|
This change fixes an issue with the OpenDC web runner where it would
report NaN values for some of the metrics due to the topology being
empty. This in turn causes issues in the frontend.
|
|
This change updates the web runner implementation to gracefully exit the
current thread when interrupted.
|
|
This change updates the OpenDC web runner implementation to use the
correct context ClassLoader for simulation jobs running inside a
ForkJoinPool. By default, the ForkJoinPool will use the system class
loader which does not have access to the services needed by the web
runner.
|
|
This change updates the Quarkus extension to register all the available
trace formats that are on the class path during processing time.
Without this change, the OpenDC web runner is unable to load any of the
available trace formats via Quarkus.
|
|
This change updates the simulator dependencies to the latest available
version where possible.
|
|
This change adds a distribution that contains the OpenDC web server
implementation based on Quarkus. This distribution should be used by
advanced users that whish to deploy a custom OpenDC instance.
|
|
This change adds a Quarkus extension that hosts the OpenDC web runner
for a (potentially local) OpenDC API instance. This functionality
enables a simplified developer experience by allowing users to spawn the
complete OpenDC stack with a single command.
|
|
This change updates the OpenDC web UI Quarkus extension to live
completely in the `opendc-web` directory, as opposed to adding another
level of nesting. This also allows us to properly name the artifacts of
the Quarkus extension modules.
|
|
This change splits the command line interface from the OpenDC web runner
into a separate configuration. We plan to re-use the runner code for a Quarkus
extension that integrates the runner in development mode.
|
|
This change updates the `OpenDCClient` and `OpenDCRunnerClient` to
support connecting to an API that is not protected by authorization.
This is useful in a local development context where authorization is
explicitly disabled.
|
|
|
|
This change updates the dependencies of the Next.js-based web UI to
their latest available versions where possible.
|
|
This change fixes an issue where the library for hotkeys that we
previously used does not (yet) support React 18. Instead, we switch to a
simpler solution based on React Hooks which is compatible with React 18.
|
|
This change updates the build configuration in order to ensure that
Node.js is downloaded onto the build system. This drops an explicit
dependency on a system installation of Node.js and allows us to ensure
that the project is built against the correct Node.js version.
|
|
This change updates the Dockerfile for the web runner to reduce the
number of build steps necessary to build the web runner. Previously, the
build would also include/build the web API which is not used in the
image.
|
|
This change removes the OpenTelemetry integration from the OpenDC
Compute modules. Previously, we chose to integrate OpenTelemetry to
provide a unified way to report metrics to the users.
Although this worked as expected, the overhead of the OpenTelemetry when
collecting metrics during simulation was considerable and lacked more
optimization opportunities (other than providing a separate API
implementation). Furthermore, since we were tied to OpenTelemetry's SDK
implementation, we experienced issues with throttling and registering
multiple instruments.
We will instead use another approach, where we expose the core metrics
in OpenDC via specialized interfaces (see the commits before) such that
access is fast and can be done without having to interface with
OpenTelemetry. In addition, we will provide an adapter to that is able
to forward these metrics to OpenTelemetry implementations, so we can
still integrate with the wider ecosystem.
|
|
This change introduces a `ComputeMetricReader` class that can be used as
a replacement for the `CoroutineMetricReader` class when reading metrics
from the Compute service. This implementation operates directly on a
`ComputeService` instance, providing better performance.
|
|
This change updates the Gradle build configuration of the project to
publish the different type of modules (e.g., opendc-compute,
opendc-simulator) into their own groups.
|
|
This change updates the Gradle build configuration to ensure that all
library modules (that will be published) use testing and are included in
coverage reports. This should ensure the public modules remain well
tested.
|
|
This change updates the compute support library to load the VM
interference model via the OpenDC trace library, which provides a
generic interface for reading interference models associated with
workload traces.
|
|
This change contains a rewrite of the OpenDC web runner implementation,
which now supports terminating simulations when exceeding a deadline, as
well as executing multiple simulation jobs at the same time.
Furthermore, we have extracted the runner from the command line
interface, so that we can offer this functionality as a library in the
future.
|