diff --git a/core/src/main/java/com/cloud/agent/api/CleanupConvertedInstanceDisksAnswer.java b/core/src/main/java/com/cloud/agent/api/CleanupConvertedInstanceDisksAnswer.java deleted file mode 100644 index ce4fb85ddd6..00000000000 --- a/core/src/main/java/com/cloud/agent/api/CleanupConvertedInstanceDisksAnswer.java +++ /dev/null @@ -1,23 +0,0 @@ -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -// - -package com.cloud.agent.api; - -public class CleanupConvertedInstanceDisksAnswer extends Answer { -} diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtBaseConvertCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtBaseConvertCommandWrapper.java index 4d8599032e3..a5e6467da03 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtBaseConvertCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtBaseConvertCommandWrapper.java @@ -51,7 +51,7 @@ import java.util.List; import java.util.UUID; import java.util.stream.Collectors; -public abstract class LibvirtBaseConvertCommandWrapper extends CommandWrapper { +public abstract class LibvirtBaseConvertCommandWrapper extends CommandWrapper { protected KVMStoragePool getTemporaryStoragePool(DataStoreTO conversionTemporaryLocation, KVMStoragePoolManager storagePoolMgr) { if (conversionTemporaryLocation instanceof NfsTO) { @@ -237,8 +237,10 @@ public abstract class LibvirtBaseConvertCommandWrapper { @Override - public Answer execute(Command command, ServerResource resource) { - CleanupConvertedInstanceDisksCommand cmd = (CleanupConvertedInstanceDisksCommand) command; - LibvirtComputingResource serverResource = (LibvirtComputingResource) resource; - DataStoreTO vmVolumesStore = cmd.getVmVolumesStore(); - String vmVolumesPrefix = cmd.getVmVolumesPrefix(); + public Answer execute(CleanupConvertedInstanceDisksCommand command, LibvirtComputingResource serverResource) { + DataStoreTO vmVolumesStore = command.getVmVolumesStore(); + String vmVolumesPrefix = command.getVmVolumesPrefix(); final KVMStoragePoolManager storagePoolMgr = serverResource.getStoragePoolMgr(); KVMStoragePool conversionPool = getTemporaryStoragePool(vmVolumesStore, storagePoolMgr); @@ -53,7 +49,7 @@ public class LibvirtCleanupConvertedInstanceDisksCommandWrapper extends LibvirtB boolean xmlExists = new File(xmlPath).exists(); LibvirtDomainXMLParser xmlParser = xmlExists ? parseMigratedVMXmlDomain(volumesBasePath) : null; - List temporaryDisks = xmlExists ? + List temporaryDisks = xmlExists && xmlParser != null ? getTemporaryDisksFromParsedXml(conversionPool, xmlParser, volumesBasePath) : getTemporaryDisksWithPrefixFromTemporaryPool(conversionPool, conversionPoolPath, vmVolumesPrefix); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtImportConvertedInstanceCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtImportConvertedInstanceCommandWrapper.java index 5b1a99797f1..54f765aca1e 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtImportConvertedInstanceCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtImportConvertedInstanceCommandWrapper.java @@ -20,8 +20,6 @@ package com.cloud.hypervisor.kvm.resource.wrapper; import java.util.List; -import com.cloud.agent.api.Command; -import com.cloud.resource.ServerResource; import org.apache.cloudstack.vm.UnmanagedInstanceTO; import com.cloud.agent.api.Answer; @@ -42,9 +40,7 @@ import com.cloud.resource.ResourceWrapper; public class LibvirtImportConvertedInstanceCommandWrapper extends LibvirtBaseConvertCommandWrapper { @Override - public Answer execute(Command command, ServerResource resource) { - ImportConvertedInstanceCommand cmd = (ImportConvertedInstanceCommand) command; - LibvirtComputingResource serverResource = (LibvirtComputingResource) resource; + public Answer execute(ImportConvertedInstanceCommand cmd, LibvirtComputingResource serverResource) { RemoteInstanceTO sourceInstance = cmd.getSourceInstance(); Hypervisor.HypervisorType sourceHypervisorType = sourceInstance.getHypervisorType(); String sourceInstanceName = sourceInstance.getInstanceName(); diff --git a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java index 817dfa2d699..12b39d88b17 100644 --- a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java @@ -2248,7 +2248,11 @@ public class UnmanagedVMsManagerImpl implements UnmanagedVMsManager { CleanupConvertedInstanceDisksCommand cleanupCommand = new CleanupConvertedInstanceDisksCommand(temporaryConvertLocation, convertedDisksPrefix); try { - agentManager.send(convertHost.getId(), cleanupCommand); + Answer cleanupAnswer = agentManager.send(convertHost.getId(), cleanupCommand); + if (!cleanupAnswer.getResult()) { + logger.warn("Failed to cleanup the converted disks for the VM {} through " + + "the conversion host {}: {}", sourceVM, convertHost.getName(), cleanupAnswer.getDetails()); + } } catch (AgentUnavailableException | OperationTimedoutException e) { logger.error("Error cleaning up converted disks for VM {} through the conversion host {}", sourceVM, convertHost.getName(), e);