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(