summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-05-20 15:09:55 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-05-20 15:09:55 +0200
commite0ccb42ecbaf98cef7c73df7564c669c2d464b0e (patch)
treeae1d8594a626a5e3d8d3325e3daa7b47c5c847ca
parent5c3c7315da50d7bcd862fefe1b80f7a84f75f584 (diff)
bug: Reschedule after hypervisor becomes active
-rw-r--r--opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt12
1 files changed, 10 insertions, 2 deletions
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 c3d9c745..ff4aa3d7 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
@@ -180,7 +180,7 @@ class SimpleVirtProvisioningService(
}
try {
- logger.info { "Spawning ${imageInstance.image} on ${selectedHv.server.uid} ${selectedHv.server.name} ${selectedHv.server.flavor}" }
+ logger.info { "[${ctx.clock.millis()}] Spawning ${imageInstance.image} on ${selectedHv.server.uid} ${selectedHv.server.name} ${selectedHv.server.flavor}" }
incomingImages -= imageInstance
// Speculatively update the hypervisor view information to prevent other images in the queue from
@@ -214,7 +214,7 @@ class SimpleVirtProvisioningService(
when (event) {
is ServerEvent.StateChanged -> {
if (event.server.state == ServerState.SHUTOFF) {
- logger.info { "Server ${event.server.uid} ${event.server.name} ${event.server.flavor} finished." }
+ logger.info { "[${ctx.clock.millis()}] Server ${event.server.uid} ${event.server.name} ${event.server.flavor} finished." }
eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
this@SimpleVirtProvisioningService,
@@ -254,6 +254,8 @@ class SimpleVirtProvisioningService(
private fun stateChanged(server: Server) {
when (server.state) {
ServerState.ACTIVE -> {
+ logger.debug { "[${ctx.clock.millis()}] Server ${server.uid} available: ${server.state}" }
+
if (server in hypervisors) {
// Corner case for when the hypervisor already exists
availableHypervisors += hypervisors.getValue(server)
@@ -280,8 +282,14 @@ class SimpleVirtProvisioningService(
queuedVms,
unscheduledVms
))
+
+ // Re-schedule on the new machine
+ if (incomingImages.isNotEmpty()) {
+ requestCycle()
+ }
}
ServerState.SHUTOFF, ServerState.ERROR -> {
+ logger.debug { "[${ctx.clock.millis()}] Server ${server.uid} unavailable: ${server.state}" }
val hv = hypervisors[server] ?: return
availableHypervisors -= hv