diff options
| author | vincent van beek <vincent@vlogic.nl> | 2026-03-27 16:49:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-27 15:49:40 +0000 |
| commit | 048bf777997bdbf599240645fc66612c98abf3c2 (patch) | |
| tree | c04e999cb981c98ae9dc0fd83ea70aec9eaa419c /opendc-compute | |
| parent | 235057cd170f1583db14bf93ea7d2de39e492356 (diff) | |
Add import topology (#393)
* add a the posibility to import and export topogies in JSON format
* fix web-runner integration, there were several bugs and mismatches between new implementations in OpenDC and the UI
Diffstat (limited to 'opendc-compute')
2 files changed, 20 insertions, 1 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java index 8ff78dae..ad562714 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java +++ b/opendc-compute/opendc-compute-simulator/src/main/java/org/opendc/compute/simulator/service/ComputeService.java @@ -468,6 +468,10 @@ public final class ComputeService implements AutoCloseable, CarbonReceiver { void addTerminatedTask(ServiceTask task) { + if (!task.hasChildren()) { + return; + } + for (int childTaskId : task.getChildren()) { SchedulingRequest request = blockedTasks.get(childTaskId); if (request != null) { diff --git a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/ComputeSchedulers.kt b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/ComputeSchedulers.kt index 01804a70..fc40fac0 100644 --- a/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/ComputeSchedulers.kt +++ b/opendc-compute/opendc-compute-simulator/src/main/kotlin/org/opendc/compute/simulator/scheduler/ComputeSchedulers.kt @@ -61,7 +61,22 @@ public fun createPrefabComputeScheduler( clock: InstantSource, numHosts: Int = 1000, ): ComputeScheduler { - return createPrefabComputeScheduler(ComputeSchedulerEnum.valueOf(name.uppercase()), seeder, clock, numHosts) + val trimmedName = name.trim() + + // Find the enum value case-insensitively + val schedulerEnum = + ComputeSchedulerEnum.entries.find { + it.name.equals(trimmedName, ignoreCase = true) + } + + if (schedulerEnum == null) { + val validNames = ComputeSchedulerEnum.entries.joinToString(", ") { it.name } + throw IllegalArgumentException( + "Invalid scheduler name: '$name'. Valid scheduler names are: $validNames (case-insensitive)", + ) + } + + return createPrefabComputeScheduler(schedulerEnum, seeder, clock, numHosts) } /** |
