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

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


The following commit(s) were added to refs/heads/4.19 by this push:
     new 7adc7329922 upgrade: consider multiple hypervisors and secondary 
storages (#10046)
7adc7329922 is described below

commit 7adc73299222fcb60ad704a19743022ee734cffe
Author: Wei Zhou <[email protected]>
AuthorDate: Mon Jan 13 09:28:18 2025 +0100

    upgrade: consider multiple hypervisors and secondary storages (#10046)
---
 .../upgrade/SystemVmTemplateRegistration.java      | 23 +++++++++++++++-------
 .../java/com/cloud/storage/StorageManagerImpl.java |  2 +-
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
 
b/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
index 671fb8c95d5..40a8cb4b11f 100644
--- 
a/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
+++ 
b/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
@@ -794,12 +794,16 @@ public class SystemVmTemplateRegistration {
                                     Long templateId = 
getRegisteredTemplateId(hypervisorAndTemplateName);
                                     if (templateId != null) {
                                         VMTemplateVO templateVO = 
vmTemplateDao.findById(templateId);
-                                        TemplateDataStoreVO 
templateDataStoreVO = templateDataStoreDao.findByTemplate(templateId, 
DataStoreRole.Image);
-                                        String installPath = 
templateDataStoreVO.getInstallPath();
-                                        if 
(validateIfSeeded(storeUrlAndId.first(), installPath, nfsVersion)) {
-                                            continue;
-                                        } else if (templateVO != null) {
+                                        TemplateDataStoreVO 
templateDataStoreVO = 
templateDataStoreDao.findByStoreTemplate(storeUrlAndId.second(), templateId);
+                                        if (templateDataStoreVO != null) {
+                                            String installPath = 
templateDataStoreVO.getInstallPath();
+                                            if 
(validateIfSeeded(storeUrlAndId.first(), installPath, nfsVersion)) {
+                                                continue;
+                                            }
+                                        }
+                                        if (templateVO != null) {
                                             
registerTemplate(hypervisorAndTemplateName, storeUrlAndId, templateVO, 
templateDataStoreVO, filePath);
+                                            
updateRegisteredTemplateDetails(templateId, hypervisorAndTemplateName);
                                             continue;
                                         }
                                     }
@@ -823,6 +827,11 @@ public class SystemVmTemplateRegistration {
     }
 
     private void updateRegisteredTemplateDetails(Long templateId, 
Map.Entry<Hypervisor.HypervisorType, String> hypervisorAndTemplateName) {
+        Pair<Hypervisor.HypervisorType, String> entry = new 
Pair<>(hypervisorAndTemplateName.getKey(), 
hypervisorAndTemplateName.getValue());
+        updateRegisteredTemplateDetails(templateId, entry);
+    }
+
+    private void updateRegisteredTemplateDetails(Long templateId, 
Pair<Hypervisor.HypervisorType, String> hypervisorAndTemplateName) {
         VMTemplateVO templateVO = vmTemplateDao.findById(templateId);
         templateVO.setTemplateType(Storage.TemplateType.SYSTEM);
         boolean updated = vmTemplateDao.update(templateVO.getId(), templateVO);
@@ -832,11 +841,11 @@ public class SystemVmTemplateRegistration {
             throw new CloudRuntimeException(errMsg);
         }
 
-        updateSystemVMEntries(templateId, hypervisorAndTemplateName.getKey());
+        updateSystemVMEntries(templateId, hypervisorAndTemplateName.first());
 
         // Change value of global configuration parameter router.template.* 
for the corresponding hypervisor and minreq.sysvmtemplate.version for the ACS 
version
         Map<String, String> configParams = new HashMap<>();
-        
configParams.put(RouterTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey()),
 hypervisorAndTemplateName.getValue());
+        
configParams.put(RouterTemplateConfigurationNames.get(hypervisorAndTemplateName.first()),
 hypervisorAndTemplateName.second());
         configParams.put("minreq.sysvmtemplate.version", 
getSystemVmTemplateVersion());
         updateConfigurationParams(configParams);
     }
diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java 
b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
index f966098c959..36e0f582df8 100644
--- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java
@@ -3441,7 +3441,7 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
                                     TemplateDataStoreVO templateVO = null;
                                     if (templateId != null) {
                                         vmTemplateVO = 
_templateDao.findById(templateId);
-                                        templateVO = 
_templateStoreDao.findByTemplate(templateId, DataStoreRole.Image);
+                                        templateVO = 
_templateStoreDao.findByStoreTemplate(store.getId(), templateId);
                                         if (templateVO != null) {
                                             try {
                                                 if 
(SystemVmTemplateRegistration.validateIfSeeded(

Reply via email to