summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-20ci: Add reports and coverage tracking for APIFabian Mastenbroek
2021-03-20ci: Generate test reports for CI buildsFabian Mastenbroek
This change updates the Github Actions workflow configuration to generate test reports for the simulator CI builds.
2021-03-20ci: Add Codecov support to repositoryFabian Mastenbroek
This change enables Codecov coverage reports when building changes.
2021-03-20ci: Enable stricter CI triggersFabian Mastenbroek
This change will cause the CI to only trigger when opening a pull request.
2021-03-20build: Update dependencies for simulatorFabian Mastenbroek
This change updates the dependencies for the OpenDC simulator.
2021-03-20build: Add support for aggregate code coverage resultsFabian Mastenbroek
This change adds support for aggregating code coverage results from the different modules.
2021-03-18simulator: Add the CPU power model from iCanCloud/E-mc2Hongyu
This change implements the CPU energy model with p-states from iCanCloud/E-mc2: - Only pushed a portion of the code for discussion as not sure if the idea is on track. - Inline comments have been added, and formal documents will follow once the model is finalized. - The p-state power consumptions are currently hard-coded in a companion object, which should be improved in the next PR(s). **Breaking Changes** - CpuPowerModel: directly interact with the machine it is measuring. - SimBareMetalMachine: expose the speeds of its CPU cores and its clock instant.
2021-03-17Add uniform resource consumption model (v1)Fabian Mastenbroek
This is the first in the series of pull requests to add a uniform resource consumption model to OpenDC. This pull request introduces the `opendc-simulator-resources` module which introduces the primitives with which we can model resource consumption of CPUs, disks and network: * `SimResourceProvider` represents a provider of some generic resource `R`, which may be consumed via `consume(SimResourceConsumer<R>)` * `SimResourceConsumer` represents a resource consumers and characterizes how the resource is being consumed. * `SimResourceSwitch` is a generic scheduler for sharing the capacity of multiple resources across multiple consumers. - `SimResourceSwitchExclusive`: A space-shared switch - each consumer is allocated a single resource exclusively. - `SimResourceSwitchMinMax`: A time-shared switch - each consumer gets a fair share of the resource capacity. * `SimResourceForwarder` converts a consumer in a provider. **Breaking Changes** * `ProcessingUnit` and `MemoryUnit` renamed to `SimProcessingUnit` and `SimMemoryUnit` respectively. * `TimerScheduler` accepts a `CoroutineContext` as opposed to a `CoroutineScope`.
2021-03-17simulator: Make hypervisors generic for the resource typeFabian Mastenbroek
This change moves the hypervisor implementations to the opendc-simulator-resources module and makes them generic to the resource type that is being used (e.g., CPU, disk or networking).
2021-03-16utils: Prevent memory leakage in TimerSchedulerFabian Mastenbroek
This change fixes a possible memory leakage issue in TimerScheduler when a large number of timers was scheduled for the same timestamp.
2021-03-16simulator: Add generic framework for resource consumption modelingFabian Mastenbroek
This change adds a generic framework for modeling resource consumptions and adapts opendc-simulator-compute to model machines and VMs on top of this framework. This framework anticipates the addition of additional resource types such as memory, disk and network to the OpenDC codebase.
2021-03-15ci: Update deployment workflowFabian Mastenbroek
This change updates the deployment workflow for opendc.org due to changes on the server.
2021-03-09compute: Improvements to cloud compute model (v2)Fabian Mastenbroek
This is the second in the series of pull requests to improve the existing cloud compute model (see #86). This pull request removes the dependency on the bare-metal provisioning code which simplifies experiment setup tremendously: - Remove bare-metal provisioning code (opendc-metal) - Remove opendc-core which was a relic of the previous codebase and was only used sparingly. - Move ownership of Server, Image and Flavor to the compute service. Users are expected to create instances via the compute service.
2021-03-09workflow: Split workflow module in API and service moduleFabian Mastenbroek
2021-03-09compute: Move implementation of Flavor into service moduleFabian Mastenbroek
2021-03-09compute: Model storage of VM imagesFabian Mastenbroek
2021-03-09compute: Extend capabilities of compute APIFabian Mastenbroek
2021-03-09utils: Remove unused StateFlowFabian Mastenbroek
This change removes the unused StateFlow from the utils module. It has been replaced by the proper implementation in the kotlinx-coroutines library.
2021-03-09core: Remove OpenDC core moduleFabian Mastenbroek
This change removes the opendc-core module. This module was an artifact of the old codebase and remained mostly unused. This change removes all usages of the module and if necessary introduces replacement classes.
2021-03-09compute: Add support for custom workload mappingsFabian Mastenbroek
2021-03-09compute: Introduce labels and meta-data for resourcesFabian Mastenbroek
This change adds the ability to define labels and meta-data for resources. This can be used in the future to identify servers and pass data between client and server.
2021-03-09compute: Improvements to cloud compute model (v1)Fabian Mastenbroek
This is the first of the pull requests in an attempt to improve the existing cloud compute model (see #86). This pull request restructures the compute API and splits the consumer and service interfaces into different modules: - opendc-compute-api now defines the API interface for the OpenDC Compute module, which can be used by consumers of the OpenDC Compute service. - opendc-compute-service hosts the service implementation for OpenDC Compute and contains all business logic regarding the IaaS platform (such as scheduling). - opendc-compute-simulator implements a "compute driver" for the OpenDC Compute platform that simulates submitted workloads. - Image is now a data-class and does not specify itself the workload to simulate. Instead, the workload should be passed via its tags currently (with key "workload"). In the future, the simulation backend will accept a mapper interface that maps Images to Workloads.
2021-03-09compute: Add lifecycle methods for Server instancesFabian Mastenbroek
This change adds more methods for controlling the lifecycle of Server instances.
2021-03-08compute: Remove use of bare-metal provisioning from compute moduleFabian Mastenbroek
This change removes the usage of bare-metal provisioning from the OpenDC Compute module. This significantly simplifies the experiment setup.
2021-03-07compute: Move bare-metal provisioning in separate moduleFabian Mastenbroek
This change moves the bare-metal provisioning packages outside the compute module since these modules represent different layers in the ecosystem and should not be mixed.
2021-03-07compute: Move ComputeService implementation in service moduleFabian Mastenbroek
This change introduces the ComputeService interface (previously VirtProvisioningService) and provides a central implementation in opendc-compute-service. Previously, the implementation of this interface was bound to the simulator package, which meant that independent business logic could not be re-used without importing the simulator code.
2021-03-07compute: Extract API from compute serviceFabian Mastenbroek
This change extracts the API for the OpenDC Compute service into a separate module to establish a clearer boundary between the interface meant for consumers and interfaces meant for the the serve implementation.
2021-03-07compute: Convert Server to stateful interfaceFabian Mastenbroek
This change converts the Server data class which can be used as a stateful object to control an instance running in the cloud.
2021-03-07workflows: Reduce output from testsFabian Mastenbroek
This change increases the logging level from INFO to WARN in order to reduce the amount of messages printed to the console during tests.
2021-03-07compute: Make VirtProvisoningService responsible for Server lifecycleFabian Mastenbroek
This change refactors the OpenDC Compute module so that the VirtProvisioningService is now responsible for managing the lifecycle of Server objects as opposed to the VirtDriver and BareMetalDriver previously.
2021-03-07compute: Remove ServiceRegistry fieldsFabian Mastenbroek
This change removes the use of ServiceRegistry in the OpenDC compute module. It was not actually being used by any of the code and we are moving to another interface in the future.
2021-03-07compute: Separate cloud compute layer from bare-metal layerFabian Mastenbroek
This change separates the cloud compute layer in OpenDC (e.g., Server) from the bare-metal layer (e.g., Node), such that Node and BareMetalDriver are unaware of the existence of Server and co.
2021-03-07compute: Pass simulation workload via image metadataFabian Mastenbroek
This change removes the SimWorkloadImage implementation and changes Image to a data class without workload. Simulation workloads should now be pased via image metadata as the image storage should be unaware of any simulation details.
2021-03-06sim: Implement energy models from CloudSim (#79)Hongyu
This commit implements the energy models that are present in CloudSim: 1. Constant 2. Linear 3. Cubic 4. Square root 5. Interpolation based on data.
2021-03-02Add a simple PR template (#78)Hongyu
This change adds a simple template for pull request which we can use as basis for future pull requests.
2021-02-26Bump httplib2 from 0.18.1 to 0.19.0 in /api (#77)dependabot[bot]
Bumps [httplib2](https://github.com/httplib2/httplib2) from 0.18.1 to 0.19.0. - [Release notes](https://github.com/httplib2/httplib2/releases) - [Changelog](https://github.com/httplib2/httplib2/blob/master/CHANGELOG) - [Commits](https://github.com/httplib2/httplib2/compare/v0.18.1...v0.19.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-23harness: Perform several improvementsFabian Mastenbroek
This commit performs several improvements to the OpenDC harness and modules utilizing the harness.
2021-02-23Use Java Platform for shared dependency constraintsFabian Mastenbroek
This change uses the Java Platform functionality from Gradle to enable shared dependency constraints across modules.
2021-02-23exp: Add support for running Capelin experiments in IntelliJFabian Mastenbroek
2021-02-23exp: Support running SC18 experiment from within IntelliJFabian Mastenbroek
2021-02-23harness: Do not finish experiment before scenario and trialsFabian Mastenbroek
This change fixes an issue with the harness where an experiment would be reported finished while its scenarios and trials were still running. This causes issues with Gradle reporting the experiments.
2021-02-23Remove unnecessary JUnit dependencies in opendc-harnessFabian Mastenbroek
This change removes unnecessary JUnit dependencies from the opendc-harness module. They are not used nor should they be used by the harness.
2021-02-23Utilize version constraints for shared versionsFabian Mastenbroek
This change updates the Gradle configuration to utilize version constraints to force the same dependency version across modules.
2021-02-23Move dependency versions to gradle.propertiesFabian Mastenbroek
This change moves the version of the dependencies from buildSrc to gradle.properties to prevent recompilation when changing dependency versions.
2021-02-23Extract testing conventions from Kotlin conventionsFabian Mastenbroek
This change extracts the configuration for test from the Kotlin library conventions.
2021-02-23Upgrade to Gradle 6.8.3Fabian Mastenbroek
2021-02-23Extract Jacoco convention from Kotlin library conventionFabian Mastenbroek
This commit extracts the configuration for Jacoco into a separate convention file.
2021-02-23Remove unnecessary dependencies on JUnit Platform LauncherFabian Mastenbroek
This change removes unnecessary dependencies on JUnit Platform launcher from the repository. Previously, the launcher was used to bootstrap tests for Gradle when it did not natively support JUnit Platform. Gradle now has native support for JUnit Platform, so the dependency is not needed anymore.
2021-02-16Merge pull request #75 from atlarge-research/chore/dependenciesFabian Mastenbroek
Update simulator build dependencies
2021-02-16Update JUnit dependencies to 5.7.1Fabian Mastenbroek