summaryrefslogtreecommitdiff
path: root/opendc-web
AgeCommit message (Collapse)Author
2023-03-25ci: Migrate to GitHub Container Registry (#143)Fabian Mastenbroek
Docker Inc is sunsetting free team organizations for the Docker registry, which our organization is one of. Instead, a paid subscription is now required to maintain the organization. Given our relatively small usage of the account, it makes more sense to start publishing the container images on the GitHub Container Registry, since it is free for open source projects and integrates well with GitHub Actions. Fixes #141
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-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>
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-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-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-10-27fix(web/ui): Disable configuration of basePathFabian Mastenbroek
This change removes the ability to configure the basePath of the Next.js application using the Quarkus extension. This functionality was brittle due to relying on Next.js internals coping with out replacement strategy. We should wait for Next.js to implement proper support for changing the base path at runtime before making this functionality available again.
2022-10-27fix(web/ui): Default to anonymous auth domainFabian Mastenbroek
This change updates the auth code in the OpenDC web UI to default to the anonymous auth domain if no configuration is provided.
2022-10-27docs(web/ui): Update READMEFabian Mastenbroek
This change updates the README to match the updated build process for the web interface.
2022-10-27build(web/ui): Ensure consistency of build tasksFabian Mastenbroek
This change updates the build script for the web UI to use consistent names for the build tasks.
2022-10-27build(web/ui): Update to Node 18Fabian Mastenbroek
This change updates the build process to use Node 18 for building the web application.
2022-10-27build(web/ui): Do not optimize images for exportFabian Mastenbroek
This change disables optimizing images for exporting, since we do not want to depend on an external service.
2022-10-27fix(web/ui): Make root redirect non-permanentFabian Mastenbroek
This change makes the root redirect to the projects page temporary, to prevent browsers from caching this route indefinitely, while we might add a home page in the future.
2022-10-27fix(web/ui): Drop dependency on Roboto fontFabian Mastenbroek
This change removes the dependency on the Roboto font which was downloaded for every page of OpenDC. Since we do not actually use this font in any of our page, we can safely drop the dependency.
2022-10-27build(web/ui): Update to Next 13 and React 18Fabian Mastenbroek
This change updates the web interface to use Next 13 and React 18. This release has a couple breaking changes (related to links) which we have fixed accordingly.
2022-10-27refactor(web/ui): Drop dependency on FontAwesomeFabian Mastenbroek
This change removes the explicit dependency on FontAwesome. PatternFly also ships with the FontAwesome icons, so use these icons instead to reduce the footprint of the application.
2022-10-21fix: Add log4j-core dependencyFabian Mastenbroek
This change adds the log4j-core dependency to various modules of OpenDC using log4j2, to ensure logging keeps working. The upgrade to SLF4J 2.0 broke the Log4j2 functionality, since the log4j-core artifact is not automatically shipped with the SLF4J implementation.
2022-10-21refactor(sim/compute): Re-implement using flow2Fabian Mastenbroek
This change re-implements the OpenDC compute simulator framework using the new flow2 framework for modelling multi-edge flow networks. The re-implementation is written in Java and focusses on performance and clean API surface.
2022-10-10fix(web/ui): Fix UnitInfo popoverFabian Mastenbroek
This change addresses an issue with the topology sidebar where hovering a CPU or GPU would not present the correct information due to bug.
2022-10-10fix(web/runner): Increase default job timeoutFabian Mastenbroek
This change fixes an issue with the OpenDC web runner where the default job timeout was set to 10 ms instead of 10 minutes. For longer simulations, this would cause the job to be terminated.
2022-10-10fix(web/runner): Fix service metric reportingFabian Mastenbroek
This change resolves an issue in the web runner where the finished VMs would always be reported as zero.
2022-10-10feat(web/ui): Show monthly simulation budget in UIFabian Mastenbroek
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.
2022-10-10feat(web/server): Add API for querying user accounting dataFabian Mastenbroek
This change updates the Quarkus-based web server with a new endpoint for querying data about the active user including accounting data.
2022-10-10feat(web/server): Add support for accounting simulation timeFabian Mastenbroek
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.
2022-10-07fix(web/server): Limit exception mapper to WebApplicationExceptionFabian Mastenbroek
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.
2022-10-06build: Switch to Spotless for formattingFabian Mastenbroek
This change updates the build configuration to use Spotless for code formating of both Kotlin and Java.
2022-10-06style: Eliminate use of wildcard importsFabian Mastenbroek
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.
2022-10-06build: Update next version to 3.0Fabian Mastenbroek
This change updates the build script in preparation for the OpenDC v3.0 release changing the version numbers to the appropriate values.
2022-10-05refactor(sim/core): Rename runBlockingSimulation to runSimulationFabian Mastenbroek
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.
2022-10-05refactor(sim/core): Use SimulationScheduler in coroutine dispatcherFabian Mastenbroek
This change updates the implementation of `SimulationDispatcher` to use a (possibly user-provided) `SimulationScheduler` for managing the execution of the simulation and future tasks.
2022-10-03refactor(exp/compute): Remove Topology interfaceFabian Mastenbroek
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.
2022-10-03refactor(exp/compute): Integrate compute workload classesFabian Mastenbroek
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.
2022-10-03refactor(web/runner): Use experiment base for web runnerFabian Mastenbroek
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.
2022-09-23refactor(compute): Provide access to instances in compute serviceFabian Mastenbroek
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.
2022-09-22refactor(compute): Pass failure model during workload evaluationFabian Mastenbroek
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.
2022-09-22refactor(sim/compute): Make interference domain independent of profileFabian Mastenbroek
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.
2022-09-22refactor(sim/compute): Extract Random dependency from interference modelFabian Mastenbroek
This change moves the Random dependency outside the interference model, to allow the interference model to be completely immutable and passable between different simulations.
2022-09-20refactor(web/ui): Migrate to composable tableFabian Mastenbroek
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.
2022-09-20fix(web/server): Fix deletion of portfoliosFabian Mastenbroek
This change fixes an issue where the deletion of portfolios would fail due to no transaction context being active.
2022-09-20fix(web/ui): Fix overflow of topology sidebarFabian Mastenbroek
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.
2022-09-20fix(web/ui): Do not fail on stale Redux stateFabian Mastenbroek
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.
2022-09-20refactor(web/ui): Use PatternFly Charts for plotsFabian Mastenbroek
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.
2022-09-20feat(web/ui): Redesign projects pageFabian Mastenbroek
This change updates the design of the projects page to use a gallery overview.
2022-09-20feat(web/ui): Reduce height of application headerFabian Mastenbroek
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.