| Age | Commit message (Collapse) | Author |
|
This pull request attempts to simplify the deployment process necessary for
deploying OpenDC locally or using Docker. There was currently not a clear
and simple way to deploy OpenDC locally, yet the Docker-based deployment
was also out-of-sync.
## Implementation Notes :hammer_and_pick:
* Address several bugs in the OpenDC web runner
* Fix dependency related issues
* Rename `opendc-web-api` to `opendc-web-server`
* Create a local distribution of `opendc-web-server`.
* Fix Docker deployment
* Update deployment guide
## External Dependencies :four_leaf_clover:
* Quarkus 2.11.1
* `jandex-gradle-plugin` 0.13.2
## Breaking API Changes :warning:
* `TraceFormat.installedProviders` has been changed to `TraceFormat.getInstalledProviders`.
The list of installed providers is now not cached at first access, but queried every time the
method is invoked and its results depend on the caller context (e.g., context class loader).
* `OpenDCRunner` now requires a `JobManager` as constructor argument, which can be
constructed as follows: `JobManager.create(client)`
* `opendc-web-api` is now renamed to `opendc-web-server`.
|
|
This change updates the deployment guide based on the latest changes to
the Quarkus application. Quite a few existing configuration options can
be removed now.
|
|
This change adds a build step for building the OpenDC web UI as Docker
image. We forgot this step and found that the image failed to build
during previous commits.
|
|
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 Quarkus to version 2.11.1 which fixes an issue with
the Gradle development mode where the working directory was incorrect.
This meant that the traces failed to be loaded.
|
|
This change updates the TraceFormat lookup algorithm to prevent caching
the available trace format on first access. Since the result of
ServiceLoader depends on the Thread's context ClassLoader, they may
differ between different threads.
Furthermore, ServiceLoader maintains its own thread-local cache, so we
can instead utilize that cache and always use the results returned by
it.
|
|
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/v3.1.0...v3.2.0)
---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This change updates the build configuration to ignore the reload4j
dependency that was recently added to the hadoop-common module. Reload4j
replaces the old unmaintained log4j1 module.
However, since we expose this module as a library, we do not want to
include a logging implementation in the dependencies. Currently, there
are already instances where this new dependency leads to duplicate
logging implementations on the classpath.
|
|
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/v3.0.3...v3.1.0)
---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
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
* Fix conversion from UUID to Binary
|
|
This change fixes an issue with the metric exporting code in OpenDC
where a UUID is not converted correctly into a `Binary` object that is
consumed by the Apache Parquet library.
|
|
This change updates the simulator dependencies to the latest available
version where possible.
|
|
This pull request fixes an issue where the distributed strategies for the
TensorFlow experiments did not work correctly.
## Implementation Notes :hammer_and_pick:
* Limit growth rate for trace construction
* Derive device statistics directly from SimMachine
* Always recompute power usage when a `SImBareMetalMachine` converges
* Add a test case for `MirroredStrategy`
|
|
This change fixes an issue in the `SimBareMetalMachine` implementation
where the power usage was only updated after a non-zero duration. However,
this would mean that OpenDC would possibly report incorrect power usage
values when multiple convergence calls occured at the same timestamp.
|
|
This change updates the implementation of SimTFDevice to directly use
the metrics provided by the `SimBareMetalMachine` class, instead of
computing these metrics itself.
|
|
This change fixes an issue where the `SimTrace.Builder` would quickly
allocate too much memory when constructing a trace, due to doubling the
array sizes each time. Instead, we use the approach used by `ArrayList`,
where we increase the array size by 50% every step.
|
|
This pull request updates the OpenDC trace API to support proper specification
of a schema of the tables exposed by the traces. This functionality makes it easier
for the API consumer to understand the types exposed by the API.
## Implementation Notes :hammer_and_pick:
* Introduce type system for trace API
* Add benchmarks for odcvm trace format
* Add benchmarks for Azure trace format
* Add conformance suite for OpenDC trace API
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* Removal of typed `TableColumn`. Instead, `TableColumn` instances are now
used to describe the columns belonging to some table.
* `TableReader` and `TableWriter` do not support accessing arbitrary objects
anymore. Instead, only the types supported by the type system are exposed.
|
|
This change adds a re-usable test suite for the interface of the OpenDC
trace API, so implementors can verify whether they match the
specification of the interfaces.
|
|
This change adds JMH benchmarks for the parsing logic of the Azure VM
trace format in order to catch performance regressions.
|
|
This change adds JMH benchmarks for the parsing logic of the OpenDC VM
trace format in order to catch performance regressions.
|
|
This change updates the trace API by introducing a limited type system
for the table columns. Previously, the table columns could have any
possible type representable by the JVM. With this change, we limit the
available types to a small type system.
|
|
This pull request adds a new Quarkus extension that starts an embedded
experiment runner while the user is in development mode. This allows users
to deploy the entire OpenDC stack by using the `quarkusDev` command.
By default, the experiment runner will only run experiments on one thread.
Though, this setting is configurable.
## Implementation Notes :hammer_and_pick:
* Use correct group for Gradle modules
* Support client construction without AuthController
* Move runner CLI into separate configuration
* Remove module nesting in Quarkus extension
* Add Quarkus extension for OpenDC runner
* Add initial server distribution
## Breaking API Changes :warning:
* N/A
|
|
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 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
* Fix hotkeys support for React 18
* Update dependencies of web UI
* Remove unused dependencies
## Breaking API Changes :warning:
* N/A
|
|
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 simulator dependencies to the latest available
version where possible.
|
|
This pull request updates the CI build pipeline to also build the Docker
images in order to catch any regressions in the deployment process via
Docker.
## Implementation Notes :hammer_and_pick:
* Build Docker images for build pipeline
* Reduce build steps for Docker image
* Ensure Node.js is downloaded
## Breaking API Changes :warning:
N/A
|
|
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 updates the CI build pipeline to also build the Docker
images in order to catch any regressions in the deployment process via
Docker.
|
|
Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1...v2)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 3.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2...v3)
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This pull request restructures the experiments present in the `opendc-experiments` directory
and removes the legacy OpenDC Harness. Previously, the experiments were written against
the OpenDC Harness, which facilitates generation and execution of scenarios.
However, the OpenDC Harness does not integrate well into the web-based workflow of OpenDC,
where users should be able to submit scenarios in the web interface and automatically simulate
it in the cloud, since the harness relied on a special Kotlin DSL to specify experiments.
In future pull request, we'll attempt to introduce a similar approach for specifying and
running experiments as we have done for the Radice experiments, where the entire
experiment is described in a serializable (JSON/YAML) format.
## Implementation Notes :hammer_and_pick:
* Add helper tools for FaaS simulations
* Fix infinite loop due to invalid rounding
* Convert experiment into integration test
* Add independent Capelin distribution
* Remove OpenDC Harness modules
* Remove unnecessary dependencies
## Breaking API Changes :warning:
* Removal of the OpenDC Harness modules. Instead, we now package each experiment individually.
We'll focus in the future on extracting common code from the Capelin and Radice experiments
so they can be re-used by other experiments as well.
|
|
This change removes several dependencies from the `opendc-trace-parquet`
helper module, which are part of Hadoop Common, but are not actually
used by the Parquet project.
|