This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit e5bd83ea6a380c4435bb00c5bab6a58ab8622e2b
Merge: 8925ac72018 8d819ec5811
Author: Daan Hoogland <d...@onecht.net>
AuthorDate: Thu Oct 10 20:53:17 2024 +0200

    Merge branch '4.19'

 .../motion/StorageSystemDataMotionStrategy.java    | 73 ++++++++++++----------
 .../java/com/cloud/utils/db/GenericDaoBase.java    | 41 ++++++++----
 .../hypervisor/kvm/resource/MigrateKVMAsync.java   |  2 +
 .../java/com/cloud/api/query/QueryManagerImpl.java | 26 +++++++-
 4 files changed, 97 insertions(+), 45 deletions(-)

diff --cc 
engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
index 07b53842640,82f9a84cdb5..27b7e7748f9
--- 
a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
+++ 
b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java
@@@ -2161,6 -2153,22 +2154,22 @@@ public class StorageSystemDataMotionStr
          }
      }
  
+     private MigrationOptions.Type 
decideMigrationTypeAndCopyTemplateIfNeeded(Host destHost, VMInstanceVO 
vmInstance, VolumeInfo srcVolumeInfo, StoragePoolVO sourceStoragePool, 
StoragePoolVO destStoragePool, DataStore destDataStore) {
+         VMTemplateVO vmTemplate = 
_vmTemplateDao.findById(vmInstance.getTemplateId());
+         String srcVolumeBackingFile = getVolumeBackingFile(srcVolumeInfo);
+         if (StringUtils.isNotBlank(srcVolumeBackingFile) && 
supportStoragePoolType(destStoragePool.getPoolType(), 
StoragePoolType.Filesystem) &&
+                 srcVolumeInfo.getTemplateId() != null &&
+                 Objects.nonNull(vmTemplate) &&
+                 !Arrays.asList(KVM_VM_IMPORT_DEFAULT_TEMPLATE_NAME, 
VM_IMPORT_DEFAULT_TEMPLATE_NAME).contains(vmTemplate.getName())) {
 -            LOGGER.debug(String.format("Copying template [%s] of volume [%s] 
from source storage pool [%s] to target storage pool [%s].", 
srcVolumeInfo.getTemplateId(), srcVolumeInfo.getId(), 
sourceStoragePool.getId(), destStoragePool.getId()));
++            logger.debug(String.format("Copying template [%s] of volume [%s] 
from source storage pool [%s] to target storage pool [%s].", 
srcVolumeInfo.getTemplateId(), srcVolumeInfo.getId(), 
sourceStoragePool.getId(), destStoragePool.getId()));
+             copyTemplateToTargetFilesystemStorageIfNeeded(srcVolumeInfo, 
sourceStoragePool, destDataStore, destStoragePool, destHost);
+             return MigrationOptions.Type.LinkedClone;
+         }
 -        LOGGER.debug(String.format("Skipping copy template from source 
storage pool [%s] to target storage pool [%s] before migration due to volume 
[%s] does not have a " +
++        logger.debug(String.format("Skipping copy template from source 
storage pool [%s] to target storage pool [%s] before migration due to volume 
[%s] does not have a " +
+                 "template or we are doing full clone migration.", 
sourceStoragePool.getId(), destStoragePool.getId(), srcVolumeInfo.getId()));
+         return MigrationOptions.Type.FullClone;
+     }
+ 
      protected String formatMigrationElementsAsJsonToDisplayOnLog(String 
objectName, Object object, Object from, Object to){
          return String.format("{%s: \"%s\", from: \"%s\", to:\"%s\"}", 
objectName, object, from, to);
      }
diff --cc server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
index 4063cfe7a18,a702e92e0bd..af81df03790
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@@ -36,7 -34,39 +36,6 @@@ import java.util.stream.Stream
  
  import javax.inject.Inject;
  
- import com.cloud.cpu.CPU;
 -import com.cloud.network.dao.IPAddressDao;
 -import com.cloud.network.dao.IPAddressVO;
 -import com.cloud.storage.StoragePool;
 -import com.cloud.storage.StoragePoolHostVO;
 -import com.cloud.event.EventVO;
 -import com.cloud.event.dao.EventDao;
 -import com.cloud.host.HostVO;
 -import com.cloud.offering.ServiceOffering;
 -import com.cloud.service.ServiceOfferingDetailsVO;
 -import com.cloud.storage.VMTemplateStoragePoolVO;
 -import com.cloud.storage.dao.StoragePoolHostDao;
 -import com.cloud.storage.dao.VMTemplatePoolDao;
 -import com.cloud.host.Host;
 -import com.cloud.host.dao.HostDao;
 -import com.cloud.network.as.AutoScaleVmGroupVmMapVO;
 -import com.cloud.network.as.dao.AutoScaleVmGroupDao;
 -import com.cloud.network.as.dao.AutoScaleVmGroupVmMapDao;
 -import com.cloud.network.dao.NetworkDao;
 -import com.cloud.network.dao.NetworkVO;
 -import com.cloud.network.dao.PublicIpQuarantineDao;
 -import com.cloud.network.PublicIpQuarantine;
 -import com.cloud.network.vo.PublicIpQuarantineVO;
 -import com.cloud.storage.dao.VolumeDao;
 -import com.cloud.user.AccountVO;
 -import com.cloud.user.SSHKeyPairVO;
 -import com.cloud.user.dao.SSHKeyPairDao;
 -import com.cloud.vm.InstanceGroupVMMapVO;
 -import com.cloud.vm.NicVO;
 -import com.cloud.vm.UserVmDetailVO;
 -import com.cloud.vm.dao.InstanceGroupVMMapDao;
 -import com.cloud.vm.dao.NicDao;
 -import com.cloud.vm.dao.UserVmDetailsDao;
 -import com.cloud.storage.VolumeVO;
  import org.apache.cloudstack.acl.ControlledEntity;
  import org.apache.cloudstack.acl.ControlledEntity.ACLType;
  import org.apache.cloudstack.acl.SecurityChecker;
@@@ -216,6 -247,6 +215,7 @@@ import com.cloud.api.query.vo.UserVmJoi
  import com.cloud.api.query.vo.VolumeJoinVO;
  import com.cloud.cluster.ManagementServerHostVO;
  import com.cloud.cluster.dao.ManagementServerHostDao;
++import com.cloud.cpu.CPU;
  import com.cloud.dc.ClusterVO;
  import com.cloud.dc.DataCenter;
  import com.cloud.dc.DedicatedResourceVO;
@@@ -242,12 -265,6 +242,14 @@@ import com.cloud.network.PublicIpQuaran
  import com.cloud.network.RouterHealthCheckResult;
  import com.cloud.network.VNF;
  import com.cloud.network.VpcVirtualNetworkApplianceService;
 +import com.cloud.network.as.AutoScaleVmGroupVmMapVO;
 +import com.cloud.network.as.dao.AutoScaleVmGroupDao;
 +import com.cloud.network.as.dao.AutoScaleVmGroupVmMapDao;
++import com.cloud.network.dao.IPAddressDao;
++import com.cloud.network.dao.IPAddressVO;
 +import com.cloud.network.dao.NetworkDao;
 +import com.cloud.network.dao.NetworkVO;
 +import com.cloud.network.dao.PublicIpQuarantineDao;
  import com.cloud.network.dao.RouterHealthCheckResultDao;
  import com.cloud.network.dao.RouterHealthCheckResultVO;
  import com.cloud.network.router.VirtualNetworkApplianceManager;

Reply via email to