diff --git a/debian/changelog b/debian/changelog index 0c50dfa3fd5..e8d490b01b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloudstack (4.16.1.0-SNAPSHOT) unstable; urgency=low + + * Update the version to 4.16.1.0-SNAPSHOT + + -- the Apache CloudStack project Wed, 10 Nov 2021 11:31:57 -0300 + cloudstack (4.16.0.0) unstable; urgency=low * Update the version to 4.16.0.0 diff --git a/engine/schema/pom.xml b/engine/schema/pom.xml index 303501600e9..edd664eb4c1 100644 --- a/engine/schema/pom.xml +++ b/engine/schema/pom.xml @@ -75,8 +75,8 @@ 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" 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 e19834550d1..cf3f7282f9f 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 28c37bcd814..d788adac824 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 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 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 00000000000..ea796a98faa --- /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)"); + } + } +} diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41600to41610-cleanup.sql b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610-cleanup.sql new file mode 100644 index 00000000000..9db01dd374a --- /dev/null +++ b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610-cleanup.sql @@ -0,0 +1,20 @@ +-- 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. + +--; +-- Schema upgrade cleanup from 4.16.0.0 to 4.16.1.0 +--; \ No newline at end of file diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql new file mode 100644 index 00000000000..24c5b79e658 --- /dev/null +++ b/engine/schema/src/main/resources/META-INF/db/schema-41600to41610.sql @@ -0,0 +1,20 @@ +-- 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. + +--; +-- Schema upgrade from 4.16.0.0 to 4.16.1.0 +--; \ No newline at end of file diff --git a/tools/checkstyle/pom.xml b/tools/checkstyle/pom.xml index e5b2a95a681..1438819d61e 100644 --- a/tools/checkstyle/pom.xml +++ b/tools/checkstyle/pom.xml @@ -22,7 +22,7 @@ Apache CloudStack Developer Tools - Checkstyle Configuration org.apache.cloudstack checkstyle - 4.16.0.0 + 4.16.1.0-SNAPSHOT UTF-8 diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index a7f2014bd0e..31b56b88de0 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -20,7 +20,7 @@ FROM ubuntu:20.04 MAINTAINER "Apache CloudStack" -LABEL Vendor="Apache.org" License="ApacheV2" Version="4.16.0.0" +LABEL Vendor="Apache.org" License="ApacheV2" Version="4.16.1.0-SNAPSHOT" ARG DEBIAN_FRONTEND=noninteractive diff --git a/tools/docker/Dockerfile.marvin b/tools/docker/Dockerfile.marvin index a632d0ab719..b7cfaa3ca2c 100644 --- a/tools/docker/Dockerfile.marvin +++ b/tools/docker/Dockerfile.marvin @@ -20,7 +20,7 @@ FROM python:2 MAINTAINER "Apache CloudStack" -LABEL Vendor="Apache.org" License="ApacheV2" Version="4.16.0.0" +LABEL Vendor="Apache.org" License="ApacheV2" Version="4.16.1.0-SNAPSHOT" ENV WORK_DIR=/marvin diff --git a/tools/marvin/setup.py b/tools/marvin/setup.py index 883db76bc9b..d0d97a8e77c 100644 --- a/tools/marvin/setup.py +++ b/tools/marvin/setup.py @@ -27,7 +27,7 @@ except ImportError: raise RuntimeError("python setuptools is required to build Marvin") -VERSION = "4.16.0.0" +VERSION = "4.16.1.0-SNAPSHOT" setup(name="Marvin", version=VERSION,