summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-02-02refactor(web/server): Remove unnecessary service indirectionsFabian Mastenbroek
This change removes the unnecessary service classes where they are only used to forward data from the resource to the entities. Furthermore, DTOs are now moved from the service layer to the resources.
2023-02-01refactor(web/server): Convert resources to JavaFabian Mastenbroek
This change converts the resource classes of the OpenDC web server to use Java, The Quarkus integration for Java is more mature and the programming quality of experience is not that much worse.
2023-02-01refactor(web/server): Use Panache for entity modelingFabian Mastenbroek
This change updates the OpenDC web server to use Panache (provided by Quarkus) to model entities. Such approach is better supported in Quarkus and simplifies our implementation.
2023-02-01refactor(web/server): Convert web server utils to JavaFabian Mastenbroek
This change converts the existing utilities of the web server to Java in preparation for future changes.
2023-02-01refactor(web/server): Migrate to Hypersistence UtilsFabian Mastenbroek
This change updates the web server to use the Hypersistence Utils library instead of our custom code to store columns as JSON in H2 and Postgres.
2023-01-27build(site): Bump ua-parser-js from 0.7.31 to 0.7.33 (#128)dependabot[bot]
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33. - [Release notes](https://github.com/faisalman/ua-parser-js/releases) - [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md) - [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.31...0.7.33) --- updated-dependencies: - dependency-name: ua-parser-js dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-27ci: Bump actions/configure-pages from 2 to 3 (#127)dependabot[bot]
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 2 to 3. - [Release notes](https://github.com/actions/configure-pages/releases) - [Commits](https://github.com/actions/configure-pages/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/configure-pages dependency-type: direct:production update-type: version-update:semver-major ... 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>
2023-01-11Merge pull request #126 from sacheendra/heap_sizingSacheendra Talluri
Heap size comparison was incorrect. Fixed
2023-01-11Heap size comparison was incorrect. FixedSacheendra Talluri
2023-01-09build(web/ui): Bump json5 from 1.0.1 to 1.0.2 (#124)dependabot[bot]
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... 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>
2023-01-09build(site): Bump json5 from 2.2.1 to 2.2.3 (#125)dependabot[bot]
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... 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>
2023-01-09merge: Update GitHub Actions workflows (#123)Fabian Mastenbroek
This pull request updates the GitHub Actions workflows used in the OpenDC repository, addressing (impending) deprecations, broken caching and publishing steps. ## Implementation Notes :hammer_and_pick: * Fix GH Actions workflow for publishing Docker images * Enable Gradle caching on master branch * Pin version of GitHub Actions runner images * Publish to Maven Central in publish workflow * Upload distributions after CI build
2023-01-07ci: Upload distributions after CI buildFabian Mastenbroek
This change uploads the distributions build from the repository after a successful build to allow for testing of the master branch
2023-01-07ci: Publish to Maven Central in publish workflowFabian Mastenbroek
This change updates the release and publish workflows in GitHub Actions to ensure that we only publish the artifacts to Maven Central once the release on GitHub is published. When a version tag is pushed to GitHub, only a draft release will be created containing the right artifacts.
2023-01-07ci: Pin version of GitHub Actions runner imagesFabian Mastenbroek
This change pins the versions of the GitHub Actions runner images used by our workflows to prevent regressions when the latest Ubuntu/Windows image is updated.
2023-01-07ci: Enable Gradle caching on master branchFabian Mastenbroek
This change updates the build workflow in GitHub Actions to enable caching of the Gradle build when it happens on the master branch. Due to a mistake, this would only happen on a non-existent 'main' branch.
2023-01-07ci: Fix GH Actions workflow for publishing Docker imagesFabian Mastenbroek
This change updates the GitHub Actions pipeline that is used to publish the Docker images when a new release is published. Since the web API implementation was moved to `opendc-web/opendc-web-server`, this workflow started failing. Furthermore, we remove the use of the deprecated `::set-output` syntax.
2022-12-14fix(trace/wtf): Disable Parquet strict typingFabian Mastenbroek
This change fixes an issue where some of the traces from the Workflow Trace Archive would fail to load with the trace format in OpenDC. This was caused by one of the fields being stored as a double, while the formats expects it to be a long. Parquet does not support unioning primitive types. Therefore, we have to disable strict type checking when reading the file. Furthermore, we need to support double entries for storing the workflow ids.
2022-12-07bug(sim/flow): Record capacity changes on idle outletsFabian Mastenbroek
This change fixes an issue with the `ForwardingFlowMultiplexer` where the capacity of new outlets were not recorded correctly due to no handler being attached to idle outlets, causing the `pull` events to be disregarded. This bug manifested in an issue where the CPU counters where reporting negative values. This was caused by the CPU usage/demand being subtracted from a zero capacity.
2022-12-04merge: Clean up compute service (v1)Fabian Mastenbroek
This pull request is one in a series of changes that attempt to clean up the warts of the OpenDC Compute Service. These changes should make the API more robust for future developments. ## Implementation Notes :hammer_and_pick: * Do not suspend in compute API * Expose state directly to clients * Do not split interface and implementation ## External Dependencies :four_leaf_clover: * N/A ## Breaking API Changes :warning: * The methods of `ComputeClient` do not have the suspend modifier anymore. * Changes to the classes of `ComputeClient` are now immediately visible on the server side. It is not necessary to call `refresh` anymore. * `ComputeService` must be constructed via its builder class now.
2022-11-27refactor(compute/service): Do not split interface and implementationFabian Mastenbroek
This change inlines the implementation of the compute service into the `ComputeService` interface. We do not intend to provide multiple implementations of the service. In addition, this approach makes more sense for a Java implementation.
2022-11-27refactor(compute/service): Expose state directly to clientsFabian Mastenbroek
This change updates the implementation of the compute service to expose state to clients created by the compute service.
2022-11-27refactor(compute/api): Do not suspend in compute APIFabian Mastenbroek
This change updates the API interface of the OpenDC Compute service to not suspend execution using Kotlin Coroutines. The suspending modifiers were introduced in case the ComputeClient would communicate with the service over a network connection. However, the main use-case has been together with the ComputeService, where the suspending modifiers only frustrate the user experience when writing experiments. Furthermore, with the advent of Project Loom, it is not necessarily a problem to block the (virtual) thread during network communications.
2022-11-26merge: Update build and runtime dependencies (#118)Fabian Mastenbroek
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 * Update Gradle to 7.6 ## External Dependencies :four_leaf_clover: * Gradle * Quarkus * Slf4j * Spotless * Sentry
2022-11-26build: Update simulator dependenciesFabian Mastenbroek
This change updates the simulator dependencies to the latest available version where possible.
2022-11-25build: Update to Gradle 7.6Fabian Mastenbroek
This change updates the Gradle wrapper version to 7.6 in order to support building the project with Java 19.
2022-11-16build(site): Bump loader-utils from 2.0.3 to 2.0.4 (#117)dependabot[bot]
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... 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>
2022-11-13merge: Increase minimum Java version to 17 (#115)Fabian Mastenbroek
This pull request increases the minimum version of Java required by OpenDC to 17. This new version of Java introduces several new features compared to our old minimum version (11), which we attempt to apply in this conversion. ## Implementation Notes :hammer_and_pick: * Increase minimum Java version to Java 17 * Use RandomGenerator as randomness source * Add common dispatcher interface * Add compatibility with Kotlin coroutines * Use InstantSource as time source * Re-implement SimulationScheduler as Dispatcher * Replace use of CoroutineContext by Dispatcher ## External Dependencies :four_leaf_clover: * Java 17 ## Breaking API Changes :warning: * The use of `CoroutineContext` and `Clock` as parameters of classes has been replaced by the `Dispatcher` interface. * The use of `Clock` has been replaced by `InstantSource` which does not carry time zone info. * The use of `Random` and `SplittableRandom` as parameter type has been replaced by `RandomGenerator`
2022-11-13test(sim/power): Remove use of Spy object from TestInletFabian Mastenbroek
This change removes the use of a Spy object from the TestInlet class. Since the Spy is not actually used in our tests, we remove it due to the high initialization cost.
2022-11-13docs: Fix links in READMEFabian Mastenbroek
This change fixes the links to the documentation in the project README. These links assumed that the new website was already deployed at opendc.org.
2022-11-13build: Update simulator dependenciesFabian Mastenbroek
This change updates the simulator dependencies to the latest available version where possible.
2022-11-13build: Update to Gradle 7.6-rc3Fabian Mastenbroek
This change updates the Gradle wrapper version to 7.6-rc3 in order to support building the project with Java 19.
2022-11-13build: Make use of Gradle's Java Toolchains featureFabian Mastenbroek
This change updates the build configuration for Gradle to make use of its Java Toolchains feature which enables running/testing multiple Java versions at the same time. This feature can also provision a Java installation if it is not available on the user's system.
2022-11-13refactor: Replace use of CoroutineContext by DispatcherFabian Mastenbroek
This change replaces the use of `CoroutineContext` for passing the `SimulationDispatcher` across the different modules of OpenDC by the lightweight `Dispatcher` interface of the OpenDC common module.
2022-11-13refactor(sim/core): Re-implement SimulationScheduler as DispatcherFabian Mastenbroek
This change updates the `SimulationScheduler` class to implement the `Dispatcher` interface from the OpenDC Common module, so that OpenDC modules only need to depend on the common module for dispatching future task (possibly in simulation).
2022-11-13refactor: Use InstantSource as time sourceFabian Mastenbroek
This change updates the modules of OpenDC to always accept the `InstantSource` interface as source of time. Previously we used `java.time.Clock`, but this class is bound to a time zone which does not make sense for our use-cases. Since `java.time.Clock` implements `java.time.InstantSource`, it can be used in places that require an `InstantSource` as parameter. Conversion from `InstantSource` to `Clock` is also possible by invoking `InstantSource#withZone`.
2022-11-13feat(common): Add compatibility with Kotlin coroutinesFabian Mastenbroek
This change adds support for converting a `Dispatcher` implementation into a `CoroutineDispatcher` instance.
2022-11-13merge: Remove use of Sass (#116)Fabian Mastenbroek
This pull request removes the dependency on Sass for the OpenDC web UI, by converting the existing Sass files into CSS. With the recent updates of CSS, we have no use-case for Sass anymore and sticking to CSS reduces the build infrastructure necessary. ## Implementation Notes :hammer_and_pick: * Drop dependency on Sass * Update web dependencies to latest version
2022-11-13build(web/ui): Update dependencies to latest versionFabian Mastenbroek
This change updates the dependencies of the OpenDC web UI to latest version where possible.
2022-11-13refactor(web/ui): Drop dependency on SassFabian Mastenbroek
This change updates the OpenDC web UI to not rely on Sass for stylesheets. CSS in combination with PostCSS has become powerful enough for our use-cases as indicated by the small differences between the CSS and SCSS versions of our files. By switching to CSS, we can make use of Turbopack to build the project, which is a re-implementation of Webppack in Rust and is able to build projects much faster.
2022-11-09feat(common): Add common dispatcher interfaceFabian Mastenbroek
This change adds a new interface `Dispatcher` that is used throughout OpenDC for scheduling the execution of future tasks. This replaces the `CoroutineContext` and `Clock` that exist on many of the implementations in OpenDC. With this approach, we reduce the dependency on Kotlin Coroutines.
2022-11-09build(site): Bump loader-utils from 2.0.2 to 2.0.3 (#114)dependabot[bot]
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.3) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... 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>
2022-11-04refactor: Use RandomGenerator as randomness sourceFabian Mastenbroek
This change updates the modules of OpenDC to always accept the `RandomGenerator` interface as source of randomness. This interface is implemented by the slower `java.util.Random` class, but also by the faster `java.util.SplittableRandom` class
2022-11-04build: Increase minimum Java version to Java 17Fabian Mastenbroek
This change updates the Gradle configuration to target Java 17 (instead of Java 11) as the lowest denominator when running/building OpenDC. This version of Java has been available for more than a year and is the latest LTS release.
2022-10-31merge: Support snapshotting simulated workloads (#113)Fabian Mastenbroek
This pull request adds support for snapshotting simulated workloads in OpenDC, which serves as the basis for virtual machine migration/suspension support. Part of #32 ## Implementation Notes :hammer_and_pick: * Support synchronous update of FlowStage * Report exceptions in onStop as suppressed * Add support for snapshotting workloads
2022-10-31feat(sim/compute): Add support for snapshotting workloadsFabian Mastenbroek
This change updates the interface of `SimWorkload` to support snapshotting workloads. We introduce a new method `snapshot()` to this interface which returns a new `SimWorkload` that can be started at a later point in time and on another `SimMachine`, which continues progress from the moment the workload was snapshotted.
2022-10-31refactor(sim/compute): Report exceptions in onStop as suppressedFabian Mastenbroek
This change updates the implementation of `SimMachineContext` to report exceptions thrown in `onStop` as suppressed exceptions if an exception caused the workload to stop.
2022-10-31feat(sim/flow): Support synchronous update of FlowStageFabian Mastenbroek
This change adds a new method to `FlowStage` called `sync()` which enables users to synchronously update the stage at the current timestamp. This functionality is neccessary to support snapshotting since we need to synchronize the state of the `FlowStage` before creating a snapshot of the workload.
2022-10-28Support custom start-up and clean-up time for VMs (#112)Fabian Mastenbroek
This pull request implements customizable startup and clean-up time for virtual machine. We achieve this by implementing `SimWorkload` chaining and modelling start-up and clean-up time using `SimWorkload` as well. Implements #33 ## Implementation Notes :hammer_and_pick: * Store method parameters in class files * Add completion parameter to startWorkload * Provide workload constructors in SimWorkloads * Add support for resetting machine context * Add support for chaining workloads * Use workload chaining for boot delay * Model host boot time * Do not suspend on guest start * Use static logger field ## Breaking API Changes :warning: * `SimMachine#startWorkload` now has a third parameter `completion` which is invoked when the workload finishes executing (either due to failure or success). * `SimFlopsWorkload` and `SimRuntimeWorkload` can be instantiated via `SimWorkloads`.
2022-10-28perf(compute/sim): Use static logger fieldFabian Mastenbroek
This change updates the `Guest` class implementation to use a static logger field instead of allocation a new logger for every guest.