summaryrefslogtreecommitdiff
path: root/opendc-web
AgeCommit message (Collapse)Author
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-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-21simulator: Re-organize compute simulator moduleFabian Mastenbroek
This change re-organizes the classes of the compute simulator module to make a clearer distinction between the hardware, firmware and software interfaces in this module.
2021-06-02api: Bump urllib3 in /opendc-web/opendc-web-api (#141)dependabot[bot]
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-01ci: Fix code coverage reporting for web APIFabian Mastenbroek
This change updates the build workflow to properly report the code coverage reports of the web API to Codecov.
2021-06-01build: Update to Next.js 10.2.3Fabian Mastenbroek
This change updates the web frontend to Next.js version 10.2.3. This addresses a vulnerability in a dependency in Next.js as well as enabling use of native ESLint integration of Next.js.
2021-05-18Migrate to Auth0 as Identity ProviderFabian Mastenbroek
This pull request removes the hard dependency on Google for authenticating users and migrates to Auth0 as Identity Provider for OpenDC. This has as benefit that we can authenticate users without having to manage user data ourselves and do not have a dependency on Google accounts anymore. - Frontend cleanup: - Use CSS modules everywhere to encapsulate the styling of React components. - Perform all communication in the frontend via the REST API (as opposed to WebSockets). The original approach was aimed at collaborative editing, but made normal operations harder to implement and debug. If we want to implement collaborative editing in the future, we can expose only a small WebSocket API specifically for collaborative editing. - Move to FontAwesome 5 (using the official React libraries) - Use Reactstrap where possible. Previously, we mixed raw Bootstrap classes with Reactstrap, which is confusing. - Reduce the scope of the Redux state. Some state in the frontend application can be kept locally and does not need to be managed by Redux. - Migrate from Create React App (CRA) to Next.js since it allows us to pre-render multiple pages as well as opt-in to Server Side Rendering. - Remove the Google login and use Auth0 for authentication now. - Use Node 16 - Backend cleanup: - Remove Socket.IO endpoint from backend, since it is not needed by the frontend anymore. Removing it reduces the attack surface of OpenDC as well as the maintenance efforts. - Use Auth0 JWT token for authorizing API accesses - Refactor API endpoints to use Flask Restful as opposed to our custom in-house routing logic. Previously, this was needed to support the Socket.IO endpoint, but increases maintenance effort. - Expose Swagger UI from API - Use Python 3.9 and uwsgi to host Flask application - Actualize OpenAPI schema and update to version 3.0. **Breaking API Changes** * This pull request removes the users collection from the database table. Instead, we now use the user identifier passed by Auth0 to identify the data that belongs to a user.
2021-05-18ui: Fix frontend deployment scriptsFabian Mastenbroek
This change fixes the deployment scripts necessary for the frontend and ensures that runtime variables work again.
2021-05-18ui: Re-add support for SentryFabian Mastenbroek
This change re-adds the support for Sentry. This was lost during the migration from CRA to Next.js.
2021-05-18docs: Add instructions on configuring Auth0 for OpenDCFabian Mastenbroek
This change updates the deployment guide to include instructions on configuring Auth0 for OpenDC. This process should not be much more difficult than creating the Google Application.
2021-05-18api: Add support for pre-specified Swagger OAuth2 client idFabian Mastenbroek
This change adds support for specifying the OAuth2 client identifier for Swagger API docs authentication. This allows users to experiment with the API documentation without needing to create an Auth0 account themselves.
2021-05-18ui: Migrate to FontAwesome 5 React libraryFabian Mastenbroek
This change updates the frontend to use the FontAwesome 5 React library that renders SVG icons as opposed to CSS icon fonts. This migration resolves a couple of issues we had with server-side rendering of the previous FontAwesome icons.
2021-05-18api: Upgrade to Python 3.9 as defaultFabian Mastenbroek
This change updates the API server to run by default using Python 3.9.
2021-05-18ui: Migrate to Auth0 as Identity ProviderFabian Mastenbroek
This change updates the frontend codebase to move away from the Google login and instead use Auth0 as generic Identity Provider. This allows users to login with other accounts as well. Since Auth0 has a free tier, users can experiment themselves with OpenDC locally without having to pay for the login functionality. The code has been written so that we should be able to migrate away from Auth0 once it is not a suitable Identity Provider for OpenDC anymore.
2021-05-18api: Update API Schema to OpenAPI v3Fabian Mastenbroek
This change updates the API Schema to the more recent OpenAPI version 3 and in addition actualizes the API specification to match the API again.
2021-05-18api: Add Swagger UI for API documentationFabian Mastenbroek
This change adds Swagger UI to the REST API endpoint in order to experiment with the API endpoints interactively. It also serves as the documentation for the API endpoints.
2021-05-18api: Migrate to Flask RestfulFabian Mastenbroek
This change updates the API to use Flask Restful instead of our own in-house REST library. This change reduces the maintenance effort and allows us to drastically simplify the API implementation needed for the OpenDC v2 API.
2021-05-18chore: Address deprecations due to Kotlin 1.5Fabian Mastenbroek
This change addresses the deprecations that were caused by the migration to Kotlin 1.5.
2021-05-18build: Update to Kotlin 1.5.0Fabian Mastenbroek
2021-05-17api: Remove user handling from OpenDC API serverFabian Mastenbroek
This change removes any of the user handling and endpoints from the OpenDC API server. The API server does not need to store user information other than an identifier in the database.
2021-05-17api: Migrate to Auth0 for API authorizationFabian Mastenbroek
This change updates the OpenDC API to use Auth0 for API authorization. This removes the hard dependency on Google for logging into OpenDC and simplifies implementation as we do not have to store user information anymore, other than the user identifier.
2021-05-17api: Remove Socket.IO endpoint from public APIFabian Mastenbroek
This change removes the Socket.IO endpoint from the public API now that we have switched to the REST API instead. This decreases the possible exposure to vulnerabilities as well as the maintenance burden.
2021-05-17ui: Restructure OpenDC frontendFabian Mastenbroek
This change updates the structure of the OpenDC frontend in order to improve the maintainability of the frontend.
2021-05-17ui: Move modal state outside of ReduxFabian Mastenbroek
This change updates the frontend so that the modal state is not stored inside Redux but instead is stored using the useState hook. This simplifies the design of the modal components.
2021-05-17ui: Simplify projects pageFabian Mastenbroek
This change simplifies the logic and components of the projects page and reduces its dependency on Redux for simple operations.
2021-05-17ui: Address technical dept in frontendFabian Mastenbroek
2021-05-17ui: Migrate from CRA to Next.jsFabian Mastenbroek
This change updates the web frontend to use Next.js instead of Create React App (CRA). Next.js enables the possibility of rendering pages on the server side (which reduces the time to first frame) and overall provides a better development experience. Future commits will try to futher optimize the implementation for Next.js.
2021-05-12ui: Ensure Redux logger is last in middleware chainFabian Mastenbroek
This change updates the Redux store initialization to ensure that the Redux logger is last in the middleware change. If we do not do this, Redux Logger might log thunds and promises, but not actual actions. See https://github.com/LogRocket/redux-logger/issues/20
2021-05-12ui: Move communication to REST APIFabian Mastenbroek
This change removes the socket.io websocket connection/client in favour of the OpenDC REST API. The socket.io websocket implementation was intended to be used for interactive and collaborative datacenter design and exploration. However, we do not support this functionality at the moment (collaborative design and exploration) and having the entire API run over this websocket connection is fragile and not standard practice. To improve maintainability, we therefore remove the websocket implementation in favour of the OpenDC REST API implementation using the fetch API. If we want to implement collaboration in the future, we will develop appropriate extensions in conjuction with the existing REST API. For this, we should look for standard and existing implementation of this functionality.
2021-05-12ui: Move component styling into CSS modulesFabian Mastenbroek
This change updates the frontend codebase by moving the component styling into CSS module files as opposed to the global styles which we used before. In addition, I have changed the syntax to the newer SCSS syntax, which is more similar to CSS. These changes reduces the styling conflicts that can occur between components and allows us to migrate to systems that do not support importing global styles in components. Moreover, we can benefit from treeshaking using CSS modules.
2021-05-10ui: Update mathjsFabian Mastenbroek
This change updates the mathjs dependency to version 7.6.0 in order to fix the high-severity vulnerability in mathjs version lower than 7.5.1.
2021-05-10ui: Fix version number in package.jsonFabian Mastenbroek
This change fixes the version number in package.json which contained the suffix "-rc1", which is apparently not supported by npm.
2021-05-10ui: Update Bootstrap dependenciesFabian Mastenbroek
2021-05-10ui: Update Sentry dependenciesFabian Mastenbroek
2021-05-10ui: Update React dependenciesFabian Mastenbroek
This change updates the React dependencies to version 17, in order to keep up to date with React.
2021-05-10ui: Adapt home components to ReactstrapFabian Mastenbroek
2021-05-10ui: Fix undefined project in NewScenarioModalFabian Mastenbroek
2021-05-10ui: Do not prevent default on mouse scrollFabian Mastenbroek
This change removes the prevent default from the mouse scroll since Chrome does not allow it anymore.
2021-05-10ui: Do not clutter component tree with Redux connectsFabian Mastenbroek
This change refactors the frontend to use hooks for obtaining state within the Redux store as opposed to using Higher-Order Components (HOCs). This eliminates a lot of clutter in the components.
2021-05-10build: Move to next releaseFabian Mastenbroek
This change moves the version number to the next release, v2.1-rc1.
2021-05-10build: Mark v2.0 releaseFabian Mastenbroek
This change updates the version numbers officially to v2.0 in order to start the release process.
2021-05-10api: Restore trace endpointFabian Mastenbroek
This change adds the trace endpoint, which was unfortunately removed due to an incorrect .gitignore statement.
2021-05-09ui: Remove unnecessary print statementFabian Mastenbroek
2021-05-09ui: Update OpenDC homepageFabian Mastenbroek
This pull request contains various updates to the opendc.org homepage, in order to reflect the updates from OpenDC 2.0.
2021-05-09ui: Update runtime variable workaroundFabian Mastenbroek
This change updates the workaround used to access runtime variables in the React frontend, in order to improve the ergonimics when using the development mode of CRA (Create React App).