summaryrefslogtreecommitdiff
path: root/opendc/opendc-format
diff options
context:
space:
mode:
authorGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-02-28 14:34:45 +0100
committerGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-02-28 14:34:45 +0100
commit3a5eac673fb67a6cff7fc79f16312db78d706322 (patch)
tree6c0e37e994d0a1ada6cef8d42d7dfbd9cdde3ccc /opendc/opendc-format
parent0c19b32433e2086e72e0d22595f4daa6ef04b64b (diff)
parent2ed1e47b5d82229a873febebb2d8bd3d8f5832ea (diff)
Merge branch 'refactor/domains' into 'feat/2.x'
Change from logical processes to simulation domains See merge request opendc/opendc-simulator!28
Diffstat (limited to 'opendc/opendc-format')
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt5
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt24
-rw-r--r--opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt21
3 files changed, 22 insertions, 28 deletions
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt
index 6ca53a05..42551f43 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt
@@ -24,6 +24,7 @@
package com.atlarge.opendc.format.environment
+import com.atlarge.odcsim.Domain
import com.atlarge.opendc.core.Environment
import java.io.Closeable
@@ -32,7 +33,7 @@ import java.io.Closeable
*/
interface EnvironmentReader : Closeable {
/**
- * Read the description of the datacenter environment as [Environment].
+ * Construct an [Environment] in the specified domain.
*/
- fun read(): Environment
+ suspend fun construct(dom: Domain): Environment
}
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt
index ac44337a..8898ddc7 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt
@@ -24,6 +24,7 @@
package com.atlarge.opendc.format.environment.sc18
+import com.atlarge.odcsim.Domain
import com.atlarge.opendc.compute.core.ProcessingUnit
import com.atlarge.opendc.compute.core.MemoryUnit
import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
@@ -37,7 +38,6 @@ import com.atlarge.opendc.format.environment.EnvironmentReader
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
-import kotlinx.coroutines.runBlocking
import java.io.InputStream
import java.util.UUID
@@ -52,10 +52,11 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
/**
* The environment that was read from the file.
*/
- private val environment: Environment
+ private val setup: Setup = mapper.readValue(input)
+
+ override suspend fun construct(dom: Domain): Environment {
+ val provisioningDomain = dom.newDomain("provisioner")
- init {
- val setup = mapper.readValue<Setup>(input)
var counter = 0
val nodes = setup.rooms.flatMap { room ->
room.objects.flatMap { roomObject ->
@@ -69,18 +70,17 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
else -> throw IllegalArgumentException("The cpu id $id is not recognized")
}
}
- SimpleBareMetalDriver(UUID.randomUUID(), "node-${counter++}", cores, listOf(MemoryUnit("", "", 2300.0, 16000)))
+ SimpleBareMetalDriver(UUID.randomUUID(), "node-${counter++}", cores, listOf(MemoryUnit("", "", 2300.0, 16000)),
+ dom.newDomain("node-$counter"))
}
}
}
}
}
- val provisioningService = SimpleProvisioningService()
- runBlocking {
- for (node in nodes) {
- provisioningService.create(node)
- }
+ val provisioningService = SimpleProvisioningService(provisioningDomain)
+ for (node in nodes) {
+ provisioningService.create(node)
}
val serviceRegistry = ServiceRegistryImpl()
@@ -92,10 +92,8 @@ class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
)
)
- environment = Environment(setup.name, null, listOf(platform))
+ return Environment(setup.name, null, listOf(platform))
}
- override fun read(): Environment = environment
-
override fun close() {}
}
diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt
index 5eb711cc..fecba302 100644
--- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt
+++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt
@@ -24,6 +24,7 @@
package com.atlarge.opendc.format.environment.sc20
+import com.atlarge.odcsim.Domain
import com.atlarge.opendc.compute.core.MemoryUnit
import com.atlarge.opendc.compute.core.ProcessingUnit
import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
@@ -37,7 +38,6 @@ import com.atlarge.opendc.format.environment.EnvironmentReader
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
-import kotlinx.coroutines.runBlocking
import java.io.InputStream
import java.util.UUID
@@ -51,10 +51,9 @@ class Sc20EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
/**
* The environment that was read from the file.
*/
- private val environment: Environment
+ private val setup: Setup = mapper.readValue(input)
- init {
- val setup = mapper.readValue<Setup>(input)
+ override suspend fun construct(dom: Domain): Environment {
var counter = 0
val nodes = setup.rooms.flatMap { room ->
room.objects.flatMap { roomObject ->
@@ -74,18 +73,16 @@ class Sc20EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
else -> throw IllegalArgumentException("The cpu id $id is not recognized")
}
}
- SimpleBareMetalDriver(UUID.randomUUID(), "node-${counter++}", cores, memories)
+ SimpleBareMetalDriver(UUID.randomUUID(), "node-${counter++}", cores, memories, dom.newDomain("node-$counter"))
}
}
}
}
}
- val provisioningService = SimpleProvisioningService()
- runBlocking {
- for (node in nodes) {
- provisioningService.create(node)
- }
+ val provisioningService = SimpleProvisioningService(dom.newDomain("provisioner"))
+ for (node in nodes) {
+ provisioningService.create(node)
}
val serviceRegistry = ServiceRegistryImpl()
@@ -97,10 +94,8 @@ class Sc20EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonOb
)
)
- environment = Environment(setup.name, null, listOf(platform))
+ return Environment(setup.name, null, listOf(platform))
}
- override fun read(): Environment = environment
-
override fun close() {}
}