diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-05-20 15:09:55 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-05-20 15:09:55 +0200 |
| commit | e0ccb42ecbaf98cef7c73df7564c669c2d464b0e (patch) | |
| tree | ae1d8594a626a5e3d8d3325e3daa7b47c5c847ca /opendc/opendc-compute | |
| parent | 5c3c7315da50d7bcd862fefe1b80f7a84f75f584 (diff) | |
bug: Reschedule after hypervisor becomes active
Diffstat (limited to 'opendc/opendc-compute')
| -rw-r--r-- | opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt | 12 |
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 |
