diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-03-16 23:07:22 +0100 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-03-25 10:48:58 +0100 |
| commit | 5ff443c799322836d532fffb3ff8f720806c32b6 (patch) | |
| tree | 6844c2c1cd3b22ff3469d7c359cf47f558400ebd /opendc/opendc-compute | |
| parent | a5d22796a95b187bc07cbd55a2289185bd9092b8 (diff) | |
feat: Add failures to SC20 experiment
Diffstat (limited to 'opendc/opendc-compute')
3 files changed, 12 insertions, 8 deletions
diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt index 7df5d99b..55948d3c 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt @@ -44,6 +44,11 @@ data class Node( public override val name: String, /** + * Meta data of the node. + */ + public val metadata: Map<String, Any> = emptyMap(), + + /** * The last known state of the compute node. */ public val state: NodeState, diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt index 4fe8d740..4b9a03a6 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt @@ -81,7 +81,7 @@ public class SimpleBareMetalDriver( /** * The machine state. */ - private var node: Node = Node(uid, name, NodeState.SHUTOFF, EmptyImage, null) + private var node: Node = Node(uid, name, mapOf("driver" to this), NodeState.SHUTOFF, EmptyImage, null) set(value) { if (field.state != value.state) { domain.launch { diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt index f0bb4e25..9fad2396 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt @@ -44,8 +44,8 @@ class SimpleVirtProvisioningService( init { ctx.domain.launch { - val provisionedNodes = provisioningService.nodes().toList() - val deployedNodes = provisionedNodes.map { node -> + val provisionedNodes = provisioningService.nodes() + provisionedNodes.forEach { node -> val hypervisorImage = HypervisorImage(hypervisorMonitor) val deployedNode = provisioningService.deploy(node, hypervisorImage, this@SimpleVirtProvisioningService) val server = deployedNode.server!! @@ -55,6 +55,7 @@ class SimpleVirtProvisioningService( 0, server.flavor.memorySize ) + hypervisors[server] = hvView yield() server.serviceRegistry[VirtDriver.Key].addMonitor(object : VirtDriverMonitor { override suspend fun onUpdate(numberOfActiveServers: Int, availableMemory: Long) { @@ -62,9 +63,7 @@ class SimpleVirtProvisioningService( hvView.availableMemory = availableMemory } }) - server to hvView } - hypervisors.putAll(deployedNodes) } } @@ -84,9 +83,10 @@ class SimpleVirtProvisioningService( val imagesToBeScheduled = incomingImages.toSet() for (imageInstance in imagesToBeScheduled) { - println("Spawning $imageInstance") val selectedNode = availableHypervisors.minWith(allocationPolicy().thenBy { it.server.uid }) ?: break try { + println("Spawning ${imageInstance.image}") + incomingImages -= imageInstance imageInstance.server = selectedNode.server.serviceRegistry[VirtDriver.Key].spawn( imageInstance.image, imageInstance.monitor, @@ -97,7 +97,6 @@ class SimpleVirtProvisioningService( println("Unable to deploy image due to insufficient memory") } - incomingImages -= imageInstance } } @@ -117,7 +116,7 @@ class SimpleVirtProvisioningService( } } - class ImageView( + data class ImageView( val image: Image, val monitor: ServerMonitor, val flavor: Flavor, |
