This is an automated email from the ASF dual-hosted git repository.
nvazquez pushed a commit to branch 4.16
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.16 by this push:
new bdab514 New upgrade schema path and workaround for system VM template
auto registration
bdab514 is described below
commit bdab51424a000178eeeef024c20354cb283df2fe
Author: nicolas <[email protected]>
AuthorDate: Wed Nov 10 12:56:52 2021 -0300
New upgrade schema path and workaround for system VM template auto
registration
---
engine/schema/pom.xml | 4 +-
.../com/cloud/upgrade/DatabaseUpgradeChecker.java | 2 +
.../upgrade/SystemVmTemplateRegistration.java | 28 +++++--
.../com/cloud/upgrade/dao/Upgrade41600to41610.java | 87 ++++++++++++++++++++++
4 files changed, 114 insertions(+), 7 deletions(-)
diff --git a/engine/schema/pom.xml b/engine/schema/pom.xml
index b1776f8..8675352 100644
--- a/engine/schema/pom.xml
+++ b/engine/schema/pom.xml
@@ -75,8 +75,8 @@
<source>
def projectVersion = project.version
String[] versionParts =
projectVersion.tokenize('.')
- pom.properties['cs.version'] = versionParts[0]
+ "." + versionParts[1]
- pom.properties['patch.version'] =
versionParts[2]
+ pom.properties['cs.version'] = "4.16"
+ pom.properties['patch.version'] = "0"
</source>
</configuration>
</execution>
diff --git
a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
index e198345..cf3f728 100644
--- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
+++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java
@@ -30,6 +30,7 @@ import java.util.Date;
import javax.inject.Inject;
import com.cloud.upgrade.dao.Upgrade41510to41520;
+import com.cloud.upgrade.dao.Upgrade41600to41610;
import org.apache.cloudstack.utils.CloudStackVersion;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
@@ -201,6 +202,7 @@ public class DatabaseUpgradeChecker implements
SystemIntegrityChecker {
.next("4.15.0.0", new Upgrade41500to41510())
.next("4.15.1.0", new Upgrade41510to41520())
.next("4.15.2.0", new Upgrade41520to41600())
+ .next("4.16.0.0", new Upgrade41600to41610())
.build();
}
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 28c37bc..d788ada 100644
---
a/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
+++
b/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
@@ -55,6 +55,7 @@ import
org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.ini4j.Ini;
@@ -120,6 +121,8 @@ public class SystemVmTemplateRegistration {
@Inject
ConfigurationDao configurationDao;
+ private String systemVmTemplateVersion;
+
public SystemVmTemplateRegistration() {
dataCenterDao = new DataCenterDaoImpl();
vmTemplateDao = new VMTemplateDaoImpl();
@@ -131,6 +134,21 @@ public class SystemVmTemplateRegistration {
configurationDao = new ConfigurationDaoImpl();
}
+ /**
+ * Convenience constructor method to use when there is no system VM
template change for a new version.
+ */
+ public SystemVmTemplateRegistration(String systemVmTemplateVersion) {
+ this();
+ this.systemVmTemplateVersion = systemVmTemplateVersion;
+ }
+
+ public String getSystemVmTemplateVersion() {
+ if (StringUtils.isEmpty(systemVmTemplateVersion)) {
+ return String.format("%s.%s", CS_MAJOR_VERSION, CS_TINY_VERSION);
+ }
+ return systemVmTemplateVersion;
+ }
+
private static class SystemVMTemplateDetails {
Long id;
String uuid;
@@ -658,7 +676,7 @@ public class SystemVmTemplateRegistration {
hypervisorImageFormat.get(hypervisor),
hypervisorGuestOsMap.get(hypervisor), storeUrlAndId.second(), null, filePath,
true);
Map<String, String> configParams = new HashMap<>();
configParams.put(RouterTemplateConfigurationNames.get(hypervisorAndTemplateName.first()),
hypervisorAndTemplateName.second());
- configParams.put("minreq.sysvmtemplate.version", CS_MAJOR_VERSION
+ "." + CS_TINY_VERSION);
+ configParams.put("minreq.sysvmtemplate.version",
getSystemVmTemplateVersion());
updateConfigurationParams(configParams);
updateSystemVMEntries(templateId,
hypervisorAndTemplateName.first());
} catch (Exception e) {
@@ -809,7 +827,7 @@ public class SystemVmTemplateRegistration {
// 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("minreq.sysvmtemplate.version", CS_MAJOR_VERSION +
"." + CS_TINY_VERSION);
+ configParams.put("minreq.sysvmtemplate.version",
getSystemVmTemplateVersion());
updateConfigurationParams(configParams);
}
@@ -854,11 +872,11 @@ public class SystemVmTemplateRegistration {
registerTemplates(hypervisorsListInUse);
break;
} catch (final Exception e) {
- throw new
CloudRuntimeException(String.format("%s.%s %s SystemVm template not found.
Cannot upgrade system Vms", CS_MAJOR_VERSION, CS_TINY_VERSION,
hypervisorAndTemplateName.getKey()));
+ throw new
CloudRuntimeException(String.format("%s %s SystemVm template not found. Cannot
upgrade system Vms", getSystemVmTemplateVersion(),
hypervisorAndTemplateName.getKey()));
}
} else {
- LOGGER.warn(String.format("%s.%s %s SystemVm
template not found. Cannot upgrade system Vms hypervisor is not used, so not
failing upgrade",
- CS_MAJOR_VERSION, CS_TINY_VERSION,
hypervisorAndTemplateName.getKey()));
+ LOGGER.warn(String.format("%s %s SystemVm
template not found. Cannot upgrade system Vms hypervisor is not used, so not
failing upgrade",
+ getSystemVmTemplateVersion(),
hypervisorAndTemplateName.getKey()));
// Update the latest template URLs for
corresponding hypervisor
VMTemplateVO templateVO =
vmTemplateDao.findLatestTemplateByTypeAndHypervisor(hypervisorAndTemplateName.getKey(),
Storage.TemplateType.SYSTEM);
if (templateVO != null) {
diff --git
a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41600to41610.java
b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41600to41610.java
new file mode 100644
index 0000000..ea796a9
--- /dev/null
+++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41600to41610.java
@@ -0,0 +1,87 @@
+// 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.upgrade.dao;
+
+import com.cloud.upgrade.SystemVmTemplateRegistration;
+import com.cloud.utils.exception.CloudRuntimeException;
+import org.apache.log4j.Logger;
+
+import java.io.InputStream;
+import java.sql.Connection;
+
+public class Upgrade41600to41610 implements DbUpgrade,
DbUpgradeSystemVmTemplate {
+
+ final static Logger LOG = Logger.getLogger(Upgrade41600to41610.class);
+ private SystemVmTemplateRegistration systemVmTemplateRegistration;
+
+ @Override
+ public String[] getUpgradableVersionRange() {
+ return new String[] {"4.16.0.0", "4.16.1.0"};
+ }
+
+ @Override
+ public String getUpgradedVersion() {
+ return "4.16.1.0";
+ }
+
+ @Override
+ public boolean supportsRollingUpgrade() {
+ return false;
+ }
+
+ @Override
+ public InputStream[] getPrepareScripts() {
+ final String scriptFile = "META-INF/db/schema-41600to41610.sql";
+ final InputStream script =
Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile);
+ if (script == null) {
+ throw new CloudRuntimeException("Unable to find " + scriptFile);
+ }
+
+ return new InputStream[] {script};
+ }
+
+ @Override
+ public void performDataMigration(Connection conn) {
+ }
+
+ @Override
+ public InputStream[] getCleanupScripts() {
+ final String scriptFile =
"META-INF/db/schema-41600to41610-cleanup.sql";
+ final InputStream script =
Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile);
+ if (script == null) {
+ throw new CloudRuntimeException("Unable to find " + scriptFile);
+ }
+
+ return new InputStream[] {script};
+ }
+
+ private void initSystemVmTemplateRegistration() {
+ systemVmTemplateRegistration = new
SystemVmTemplateRegistration("4.16.0");
+ }
+
+ @Override
+ public void updateSystemVmTemplates(Connection conn) {
+ LOG.debug("Updating System Vm template IDs");
+ initSystemVmTemplateRegistration();
+ try {
+ systemVmTemplateRegistration.updateSystemVmTemplates(conn);
+ } catch (Exception e) {
+ throw new CloudRuntimeException("Failed to find / register
SystemVM template(s)");
+ }
+ }
+}