summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-22fix(ui): Load correct topology viewFabian Mastenbroek
This change fixes an issue where the only the default topology view would be shown to the user.
2021-07-20refactor(ui): Perform Saga mutations through React QueryFabian Mastenbroek
This change updates the OpenDC frontend to perform mutations of the topology done in Sagas through the React Query cache, so that non-Saga parts of the application also have their topology queries updated.
2021-07-20merge: Address technical dept in topology view (#162)Fabian Mastenbroek
This pull request aims to address some of the technical debt in the topology view of the OpenDC frontend. * Add support for panning of the datacenter topology * Isolate world coordinate space (world objects do not depend on camera scale or position) * Split transpiled modules into a separate chunk to reduce deduplication * Encode state in topology actions to reduce global state * Restructure components per page * Enable more ESLint rules through `eslint:recommended` ruleset * Move page components in separate files.
2021-07-20refactor(ui): Move page components in separate filesFabian Mastenbroek
2021-07-19chore(ui): Extend ESLint configurationFabian Mastenbroek
This change extends the ESLint configuration with the ESLint recommended settings.
2021-07-19refactor(ui): Restructure components per pageFabian Mastenbroek
This change updates the source structure of the OpenDC frontend to follow the page structure.
2021-07-19refactor(ui): Encode state in topology actionsFabian Mastenbroek
This change updates the OpenDC frontend to reduce its reliance of global state during the execution of actions. Actions that modify the topology now require parameters to be passed via the action constructor instead of relying on the global interactionLevel state.
2021-07-19perf(ui): Split transpiled modules into separate chunkFabian Mastenbroek
This change updates the Next.js/Webpack configuration of the OpenDC frontend to split transpiled modules into a separate chunk during development. This prevents the duplication of the transpiled modules across the compiled files.
2021-07-16refactor(ui): Isolate world coordinate spaceFabian Mastenbroek
This change updates the topology view in the OpenDC frontend to isolate the world coordinate space. This means that zooming and panning should not affect the coordinates in world space (but only in camera space). In turn, this allows us to remove the dependency on Redux for the camera controls.
2021-07-16feat(ui): Support panning of the datacenter topologyFabian Mastenbroek
This change enables support for panning the visualized datacenter topology by using the mouse or holding shortcuts. Previously, this could only be done through repeated key presses.
2021-07-16merge: Add PatternFly 4 web interface (#161)Fabian Mastenbroek
This pull requests adds the new web interface based on the PatternFly 4 design framework. This framework enables us to develop more quickly the interfaces necessary in OpenDC. * Remove the OpenDC landing page from the web interface module * Add support for the PatternFly 4 framework in Next.js * Relax topology schema requirements * Migrate UI components to PatternFly 4
2021-07-15feat(ui): Migrate to PatternFly 4 design frameworkFabian Mastenbroek
This change is a rewrite of the existing OpenDC frontend in order to migrate to the PatternFly 4 design framework. PatternFly is used by Red Hat for various computing related services such as OpenShift, Red Hat Virtualization and Cockpit. Since their design requirements are very similar to those of OpenDC (modeling computing services), migrating to PatternFly 4 allows us to re-use design choices from these services. See https://www.patternfly.org/v4/ for more information about PatternFly.
2021-07-15fix(ui): Relax topology schema requirementsFabian Mastenbroek
This change fixes an issue where the topology generated by the frontend was not accepted by the API server.
2021-07-15feat(ui): Add initial support for PatternFly 4 frameworkFabian Mastenbroek
This change adds support in our Next.js application for the PatternFly 4 design framework. This framework is built by RedHat and provides several components that are useful for the space in which OpenDC operates.
2021-07-15refactor(ui): Extract OpenDC landing page from web interfaceFabian Mastenbroek
This change extracts the landing page from the web interface in order to separate the development of the two. This allows the landing page to be developed independently of the actual OpenDC web application.
2021-07-08ui: Simplify data fetching in frontendFabian Mastenbroek
This pull request aims to simplify the data fetching logic in the OpenDC frontend. Previously, the frontend used Redux extensively to sync the server state with the client state, which introduced a lot of unnecessary complexity. With this pull request, we move most of the data fetching logic out of Redux and instead use React Query to perform the logic for fetching and caching API requests. * Move all server data except topologies outside Redux * Use React Query for fetching server data * (De)normalize topology using Normalizr * Remove current ids state from Redux * Combine fetching of project relations
2021-07-08ui: Combine fetching of project relationsFabian Mastenbroek
This change updates the OpenDC frontend to combine the fetching of project relations. This means that for a single project, we make only one additional request to retrieve all its topologies.
2021-07-08ui: Simplify normalization of topologyFabian Mastenbroek
This change updates the OpenDC frontend to use the normalizr library for normalizing the user topology.
2021-07-08api: Re-expose simulation results from scenario endpointFabian Mastenbroek
This change updates the OpenDC API to re-expose the simulation results as they are necessary for the frontend to display the results.
2021-07-08api: Add endpoints for accessing project relationsFabian Mastenbroek
This change adds additional endpoints to the REST API to access the project relations, the portfolios and topologies that belong to a project.
2021-07-08ui: Use React Query defaults to reduce duplicationFabian Mastenbroek
2021-07-07ui: Fetch scenarios and portfolios using React QueryFabian Mastenbroek
2021-07-07ui: Fetch schedulers and traces using React QueryFabian Mastenbroek
This change updates the OpenDC frontend to fetch schedulers and traces using React Query, removing its dependency on Redux.
2021-07-07ui: Migrate project APIs to React QueryFabian Mastenbroek
This change updates the OpenDC frontend to use React Query for fetching and mutating project data. Previously, this state was tracked and synchronized via Redux. Migrating to React Query greatly simplifies the state synchronization logic necessary in the frontend.
2021-07-07ui: Remove current ids state from ReduxFabian Mastenbroek
This change removes the current active identifiers from the Redux state. Instead, we use the router query to track the active project, portfolio and topology.
2021-07-07ui: Split App container into separate componentsFabian Mastenbroek
This change splits the App container into separate pages, as a starting point for removing much of the unnecessary state from Redux.
2021-07-05ui: Upgrade to Next.js 11Fabian Mastenbroek
This pull request updates the OpenDC frontend to use Next.js 11. * Upgrade to Next.js 11 * Enable React Strict mode * Enable ESLint * Fix ESLint issues
2021-07-05ui: Fix linting errorsFabian Mastenbroek
2021-07-05ui: Add support for linting via ESLintFabian Mastenbroek
2021-07-05ui: Upgrade to Next.js 11Fabian Mastenbroek
2021-07-05web: Migrate web runner to REST APIFabian Mastenbroek
This pull request updates the web runner to remove its hard dependency on a direct database connection. Instead, it now communicates via the REST API. * Add endpoint for scheduling simulation jobs * Create simple API client for web runner * Remove direct database connection from web runner * Improve validation of API input/output data Implements #144
2021-07-05runner: Use public API for scheduling simulation jobsFabian Mastenbroek
This change updates the web runner to not require direct database access for scheduling simulation jobs. Instead, the runner polls the public REST API for available jobs and reports its results through there.
2021-07-02api: Restrict API scopesFabian Mastenbroek
This change adds support for restricting API scopes in the OpenDC API server. This is necessary to make a distinction between runners and regular users.
2021-07-02api: Add endpoint for simulation jobsFabian Mastenbroek
This change adds an API endpoint for simulation jobs which allows API consumers to manage simulation jobs without needing direct database access that is currently needed for the web runner.
2021-07-02api: Add stricter validation of input/output dataFabian Mastenbroek
This change adds stricter validation of data that enters and leaves the database. As a result, we clearly separate the database model from the data model that the REST API exports.
2021-07-02api: Pass audience during Swagger UI authenticationFabian Mastenbroek
This change updates the Swagger UI configuration to pass the Auth0 audience to the authorization URL in order to obtain a valid JWT token.
2021-07-02api: Fix OpenAPI topology schemaFabian Mastenbroek
This change addresses some issues in the OpenAPI schema for the datacenter topology.
2021-06-29ui: Enable React Strict Mode via Next.jsFabian Mastenbroek
This change enables React Strict Mode via Next.js configuration in order to highlight potential problems with the web application.
2021-06-29ui: Delete unused NGINX configurationFabian Mastenbroek
2021-06-24ci: Build pushes to master branchFabian Mastenbroek
This change updates the build workflow to trigger on pushes to the master branch. We previously removed this trigger to reduce the number of CI builds when merging changes into the master branch. However, with the integration of Codecov as well as the caching steps in the workflow, it makes sense to build every push to the master branch.
2021-06-24build: Upgrade to Kotlin 1.5.20Fabian Mastenbroek
This change updates the Kotlin version used in the Gradle build to version 1.5.20. For more details, see https://kotlinlang.org/docs/releases.html#release-details.
2021-06-24simulator: Support perf interference in uniform resource modelFabian Mastenbroek
This pull request re-implements the performance interference model to integrate with the uniform resource model in OpenDC. This forms the basis for other forms of resource interference (e.g., network or disk). * Add interface for resource interference in uniform resource model (`opendc-simulator-resources`) * Remove dependency on performance interference model from trace readers * Re-implement the performance interference model on top of the interface in the uniform resource model. **Breaking API Changes** * The original performance interference model classes are removed * The SC20 trace and environment related readers have moved to the Capelin experiments module. * Changes to the interfaces in `opendc-format`. Implements #103
2021-06-24simulator: Re-implement performance interference modelFabian Mastenbroek
This change updates reimplements the performance interference model to work on top of the universal resource model in `opendc-simulator-resources`. This enables us to model interference and performance variability of other resources such as disk or network in the future.
2021-06-24format: Remove performance interference from trace readersFabian Mastenbroek
This change updates the trace reader implementation to remove their dependency on the performance interference model. In a future commit, we will instead pass the performance interference model via the host/hypervisor.
2021-06-24simulator: Add interface for resource interferenceFabian Mastenbroek
This change introduces an interface for modelling performance variability due to resource interference in systems where resources are shared across multiple consumers.
2021-06-22simulator: Add support for storage devices (v1)Fabian Mastenbroek
This change adds initial support for storage devices in the OpenDC simulator. Currently, we focus on local disks attached to the machine. In the future, we plan to support networked storage devices using the networking support in OpenDC.
2021-06-22simulator: Add support for networking (v1)Fabian Mastenbroek
This change adds support for networking in the simulator. As outlined in #84, the network model doesn't model individual packets, but instead considers dynamic flows between network devices. This pull request adds the bare-minimum implementation necessary to model network traffic. In the future, we will add advanced functionality such as routing and other L3 concepts. * Add core model for network simulation * Add model for network adapter that attaches to machine * Add virtual network switch to bridge traffic between hosts.
2021-06-22ci: Optimize Gradle build performance in Github ActionsFabian Mastenbroek
This change updates the Github Actions Gradle workflows in order to improve the runtime performance of these workflows. We have now enabled build caching as well as parallel builds to speed up the build process. Moreover, we now cache the Gradle wrapper.
2021-06-22simulator: Add virtual network switchFabian Mastenbroek
This change adds a virtual network switch to the OpenDC networking module. Currently, the switch bridges the traffic equally across all ports. In the future, we'll also add routing support to the switch.
2021-06-22simulator: Add support for attaching network adapter to machineFabian Mastenbroek
This change bridges the compute and network simulation module by adding support for network adapters in the compute module. With these network adapters, compute workloads can communicate over the network that the adapters are connected to.