From ccf5d75cfbe769b34c021ab3653ed318cae25933 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 19 Oct 2015 20:49:02 +0200 Subject: [PATCH] CLOUDSTACK-8964: Can't create template or volume from snapshot This issue happens on KVM. Normally the SSVM will process the CopyCommand from snapshot to template. However, Ovm3HypervisorGuru chooses a KVM hypervisor to process the CopyCommand. This is obviously wrong. --- .../src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java b/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java index ade1b9677ac2..4dcd703370f2 100644 --- a/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java +++ b/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Component; import com.cloud.agent.api.Command; +import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.utils.Pair; @@ -74,7 +75,9 @@ public HypervisorGuru getGuru(HypervisorType hypervisorType) { @Override public long getGuruProcessedCommandTargetHost(long hostId, Command cmd) { - for (HypervisorGuru guru : _hvGuruList) { + HostVO host = _hostDao.findById(hostId); + HypervisorGuru guru = getGuru(host.getHypervisorType()); + if (guru != null) { Pair result = guru.getCommandHostDelegation(hostId, cmd); if (result.first()) { return result.second();