summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-04-30feat(trace/calcite): Add support for writing via SQLFabian Mastenbroek
This change updates the Apache Calcite integration to support writing workload traces via SQL. This enables custom conversion scripts between different workload traces.
2022-04-30feat(trace/calcite): Add Calcite (SQL) integrationFabian Mastenbroek
This change adds support for querying workload trace formats implemented using the OpenDC API through Apache Calcite. This allows users to write SQL queries to explore the workload traces.
2022-04-24merge: Move modules into different groups (#77)Fabian Mastenbroek
This pull request moves the different modules of OpenDC into different groups. For instance, all submodules of `opendc-compute` are moved into `org.opendc.compute`. This provides a better separation of the artifacts. ## Implementation Notes :hammer_and_pick: * Enable testing for all library modules * Move modules into subgroups * Update to Jandex Gradle 0.12.0 ## External Dependencies :four_leaf_clover: * N/A ## Breaking API Changes :warning: * Each module has now been assigned its own group (e.g., `org.opendc.compute` or `org.opendc.simulator`)
2022-04-24build: Update to Jandex Gradle 0.12.0Fabian Mastenbroek
This change updates the Jandex Gradle plugin to version 0.12.0. This version addresses some deprecation warnings reported by Gradle for the future 8.0 release.
2022-04-24build: Move modules into subgroupsFabian Mastenbroek
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.
2022-04-23build: Enable testing for all library modulesFabian Mastenbroek
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.
2022-04-22merge: Improve discovery of interference models (#76)Fabian Mastenbroek
This pull request intends to improve discovery of interference models. Previously, interference models were not tied to the workload trace, meaning they had to be resolved separately from the workload trace. In reality, the interference model is always tied to the particular workload trace. With this pull request, we integrate the interference model into the `odcvm` trace format and make it available through the `opendc-trace` library. This has as additional benefit that we can support different interference formats in the future using the same API. Furthermore, this change allows us to ship the interference model with the workload traces and resolve them automatically in the future using some form of package manager. ## Implementation Notes :hammer_and_pick: * Incorporate interference model in trace format * Load interference model via trace library * Move conventions into separate package ## External Dependencies :four_leaf_clover: * N/A ## Breaking API Changes :warning: * `VmInterferenceModelReader` has been removed from `opendc-compute-workload` * Table and column conventions have been moved in `org.opendc.trace.conv` package
2022-04-22refactor(trace/api): Move conventions into separate packageFabian Mastenbroek
This change moves the trace conventions (such as table and column names) in a separate conv package, so that it is separated from the main API. This also allows for a potential move into a separate module in the future.
2022-04-22refactor(compute): Load interference model via trace libraryFabian Mastenbroek
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.
2022-04-22feat(trace/opendc): Incorporate interference model in trace formatFabian Mastenbroek
This change updates the OpenDC VM trace format to incorporate the VM interference model in the trace format itself. This makes sense since the model is tightly coupled to the actual trace that is being simulated. This approach has as benefit that we can directly load the interference model from the workload trace, without having to resolve the model seperately (as we did before).
2022-04-22refactor(web/runner): Improve OpenDC web runner implementationFabian Mastenbroek
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.
2022-04-22merge: Update build process (#74)Fabian Mastenbroek
This pull request brings several updates to the build process as well as new dependency versions. This should resolve several issues that occur during the build process (such as Quarkus or JaCoCo complaining). ## Implementation Notes :hammer_and_pick: * Remove use of lint-staged * Migrate from Yarn to NPM * Update to Kotlin 1.6.21 * Update to Quarkus 2.8.1.Final * Use JaCoCo 0.8.8 * Test Java 18 ## External Dependencies :four_leaf_clover: * Kotlin, Quarkus, JaCoCo, NPM ## Breaking API Changes :warning: * N/A
2022-04-22build(web/api): Move Quarkus build configuration into buildSrcFabian Mastenbroek
This change moves most of the Quarkus build configuration into buildSrc so it can possibly be re-used for other modules.
2022-04-22build: Include Quarkus tests in aggregated JaCoCo test reportFabian Mastenbroek
This change fixes an issue where the results of the Quarkus tests where not included in the aggregated JaCoCo test report, due to it not using the official Gradle JaCoCo plugin. This change defines a new configuration that exposes the execution data generated by Quarkus to the aggregation plugin.
2022-04-21ci: Test Java 18Fabian Mastenbroek
This change updates the CI pipelines to test with the latest version of Java (version 18).
2022-04-21build: Use JaCoCo 0.8.8Fabian Mastenbroek
This change updates the build script to use JaCoCo 0.8.8 for code coverage instrumentation. This version adds support for Java 18 classes.
2022-04-21build(web/api): Update to Quarkus 2.8.1.FinalFabian Mastenbroek
This change updates the web API to use Quarkus 2.8.1.Final. This release fixes an issue we had with local extensions failing to build due to some build directories missing.
2022-04-21build: Update to Kotlin 1.6.21Fabian Mastenbroek
This change updates the Kotlin version used by the build process of our project to version 1.6.21.
2022-04-21build(web/ui): Migrate from Yarn to NPMFabian Mastenbroek
This change updates the Node package manager used by the OpenDC web UI build from Yarn to NPM, which is included by default in the Node distributions that are used by node-gradle.
2022-04-21build(web/ui): Remove use of lint-stagedFabian Mastenbroek
This change removes the use of lint-staged from the project. These steps should be managed by the Gradle build logic, while we keep the Next.js build logic as minimal as possible.
2022-04-19ci: Bump mikepenz/action-junit-report from 3.0.1 to 3.0.2 (#73)dependabot[bot]
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 3.0.1 to 3.0.2. - [Release notes](https://github.com/mikepenz/action-junit-report/releases) - [Commits](https://github.com/mikepenz/action-junit-report/compare/v3.0.1...v3.0.2) --- 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> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11ci: Bump codecov/codecov-action from 2 to 3 (#72)dependabot[bot]
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2 to 3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v2...v3) --- updated-dependencies: - dependency-name: codecov/codecov-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>
2022-04-11ci: Bump actions/upload-artifact from 2 to 3 (#71)dependabot[bot]
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact 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>
2022-04-11ci: Bump actions/setup-java from 2 to 3 (#70)dependabot[bot]
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-java 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>
2022-04-06merge: Integrate UI into Quarkus web application (#69)Fabian Mastenbroek
This pull request adds a Quarkus extension that integrates with the existing Quarkus web application to provide access to the OpenDC web UI. The benefit of this approach is that in this way, OpenDC can be distributed as a single JVM application to the user, which can host its own web UI directly. Furthermore, this pull request also adds support for unauthenticated access to the API when accessing in dev mode, so that users do not have to setup Auth0 in order to use OpenDC locally. ## Implementation Notes :hammer_and_pick: * Do not use next/image * Migrate to next-global-css * Update PatternFly to latest version * Add Gradle integration with Next.js project * Build web UI via Gradle * Support building WebJar for OpenDC web UI * Add extension for serving OpenDC web UI * Include web UI in development mode * Add workaround for Quarkus Gradle build issues * Add support for unauthenticated user access ## External Dependencies :four_leaf_clover: * [node-gradle](https://github.com/node-gradle/gradle-node-plugin)
2022-04-06build(web/ui): Update ESLint dependenciesFabian Mastenbroek
This change updates the ESLint dependencies to operate correctly in Windows environments.
2022-04-06feat(web/ui): Add support for unauthenticated user accessFabian Mastenbroek
This change updates the web UI and API to support unauthenticated user access. Such functionality is helpful when there is just a single user that wants to try OpenDC.
2022-04-05fix(web/ui): Add workaround for Quarkus Gradle build issuesFabian Mastenbroek
This chnage add a workaround for the issues that appear when building the Quarkus application due to it accessing the build files of the other local modules.
2022-04-05feat(web/api): Include web UI in development modeFabian Mastenbroek
This change adds support for serving the web UI of OpenDC while in the development mode of the API server.
2022-04-05feat(web/ui): Add extension for serving OpenDC web UIFabian Mastenbroek
This change adds a new Quarkus extension that is able to serve the OpenDC web interface via the Quarkus deployment of OpenDC.
2022-04-05build(web/ui): Support building WebJar for OpenDC web UIFabian Mastenbroek
This change updates the build process to build a static WebJar out of the OpenDC web UI module. This allows us to embed the UI inside the development distribution of OpenDC for other users to readily deploy it.
2022-04-05ci(web/ui): Build web UI via GradleFabian Mastenbroek
This change updates the GitHub Actions pipeline to build the web UI via Gradle instead of using Node.js directly.
2022-04-05build(web/ui): Add Gradle integration with Next.js projectFabian Mastenbroek
This change adds support for building the OpenDC web interface project that uses Next.js using Gradle. This enables a single build pipeline using Gradle.
2022-04-05build(web/ui): Update PatternFly to latest versionFabian Mastenbroek
2022-04-05build(web/ui): Migrate to next-global-cssFabian Mastenbroek
This change updates the web interface to use next-global-css instead of next-transpile-modules. This approach is more efficient since it does not require transpilation of the dependencies.
2022-04-05fix(web/ui): Do not use next/imageFabian Mastenbroek
This change removes the use of next/image from the project. Although it is recommended by the Next.js project to use this component, it is not compatible currently with static export.
2022-04-05merge: Update build and runtime dependencies (#68)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 to Gradle 7.4.2 * Update to Kotlin 1.6.20 * Update runtime dependency versions ## External Dependencies :four_leaf_clover: * Kotlin * Gradle * OpenTelemetry * kotlin-coroutines
2022-04-05build: Update dependency versionsFabian Mastenbroek
2022-04-05build: Update to Kotlin 1.6.20Fabian Mastenbroek
2022-04-05build: Update to Gradle 7.4.2Fabian Mastenbroek
2022-04-04merge: Migrate to Quarkus-based web APIFabian Mastenbroek
This pull request changes the web API to a Quarkus-based version. Currently, the OpenDC web API is written in Python (using Flask). Although Python is a powerful language to develop web services, having another language next to Kotlin/Java and JavaScript introduces some challenges. For instance, the web API and UI lack integration with our Gradle-based build pipeline and require additional steps from the developer to start working with. Furthermore, deploying OpenDC requires having Python installed in addition to the JVM. By converting the web API into a Quarkus application, we can enjoy further integration with our Gradle-based build pipeline and simplify the development/deployment process of OpenDC, by requiring only the JVM and Node to work with OpenDC. ## Implementation Notes :hammer_and_pick: * Move build dependencies into version catalog * Design unified communication protocol * Add Quarkus API implementation * Add new web client implementation * Update runner to use new web client * Fix compatibility with React.js UI * Remove Python build steps from CI pipeline * Update Docker deployment for new web API * Remove obsolete database configuration ## External Dependencies :four_leaf_clover: * Quarkus ## Breaking API Changes :warning: * The new web API only supports SQL-based databases for storing user-data, as opposed to MongoDB currently. We intend to use H2 for development and Postgres for production.
2022-04-04ci: Fix JaCoCo report aggregationFabian Mastenbroek
This change updates the build script to fix the aggregation step for the JaCoCo coverage reports that are submitted to Codecov. Previously, not all modules were properly included in the report.
2022-04-04ci: Remove Codecov flagsFabian Mastenbroek
This change removes the API and simulator flags from the Codecov configuration, since we have unified the simulator and web API.
2022-04-04docs: Update global architecture of OpenDCFabian Mastenbroek
This change updates the document outlining the architecture of OpenDC, which does not use a Python-based web API anymore.
2022-04-04refactor(web): Remove obsolete database configurationFabian Mastenbroek
This change removes the obsolete Mongo database configuration that was stored in the repository, now that the new web API migrates to Postgres.
2022-04-04refactor(web): Update Docker deployment for new web APIFabian Mastenbroek
This change updates the Docker deployment configuration for the new web API implemented in Kotlin. The new API migrates to Postgres. Furthermore, with this change, we move the Dockerfiles to their corresponding module.
2022-04-04ci(web): Remove Python build steps from CI pipelineFabian Mastenbroek
This change removes the Python build steps from the CI pipeline. Previously, these steps were used to build the OpenDC API server that was written in Python. With the migration to a Kotlin-based API, we can unify the build steps in our pipeline.
2022-04-04refactor(web/ui): Fix compatibility with new APIFabian Mastenbroek
This change updates the web interface in React to be compatible with the new API written in Kotlin. Several changes have been made in the new API to ensure consistency.
2022-04-04refactor(web/runner): Update runner to use new web clientFabian Mastenbroek
This change updates the web runner implementation to use the new API client introduced in the previous commit.
2022-04-04feat(web/client): Add separate web client implementationFabian Mastenbroek
This change implements a simple client for the OpenDC REST API into a separate module. This allows other users to use this module as well.