mirror of https://github.com/apache/cloudstack.git
upgrade: skip the upgrade paths which are not needed (#12881)
* upgrade: skip the upgrade paths which are not needed
This commit is contained in:
parent
c19630f0a4
commit
4b7370a601
|
|
@ -16,6 +16,7 @@
|
|||
// under the License.
|
||||
package com.cloud.upgrade;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -96,7 +97,9 @@ public final class DatabaseVersionHierarchy {
|
|||
// we cannot find the version specified, so get the
|
||||
// most recent one immediately before this version
|
||||
if (!contains(fromVersion)) {
|
||||
return getPath(getRecentVersion(fromVersion), toVersion);
|
||||
DbUpgrade[] dbUpgrades = getPath(getRecentVersion(fromVersion), toVersion);
|
||||
return Arrays.stream(dbUpgrades).filter(up -> CloudStackVersion.compare(up.getUpgradedVersion(), fromVersion.toString()) > 0)
|
||||
.toArray(DbUpgrade[]::new);
|
||||
}
|
||||
|
||||
final Predicate<? super VersionNode> predicate;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.account', 'api_key_access', 'boolean
|
|||
CALL `cloud_usage`.`IDEMPOTENT_ADD_COLUMN`('cloud_usage.account', 'api_key_access', 'boolean DEFAULT NULL COMMENT "is api key access allowed for the account" ');
|
||||
|
||||
-- Create a new group for Usage Server related configurations
|
||||
INSERT INTO `cloud`.`configuration_group` (`name`, `description`, `precedence`) VALUES ('Usage Server', 'Usage Server related configuration', 9);
|
||||
INSERT IGNORE INTO `cloud`.`configuration_group` (`name`, `description`, `precedence`) VALUES ('Usage Server', 'Usage Server related configuration', 9);
|
||||
UPDATE `cloud`.`configuration_subgroup` set `group_id` = (SELECT `id` FROM `cloud`.`configuration_group` WHERE `name` = 'Usage Server'), `precedence` = 1 WHERE `name`='Usage';
|
||||
UPDATE `cloud`.`configuration` SET `group_id` = (SELECT `id` FROM `cloud`.`configuration_group` WHERE `name` = 'Usage Server') where `subgroup_id` = (SELECT `id` FROM `cloud`.`configuration_subgroup` WHERE `name` = 'Usage');
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import com.cloud.upgrade.dao.Upgrade41120to41130;
|
|||
import com.cloud.upgrade.dao.Upgrade41120to41200;
|
||||
import com.cloud.upgrade.dao.Upgrade41510to41520;
|
||||
import com.cloud.upgrade.dao.Upgrade41610to41700;
|
||||
import com.cloud.upgrade.dao.Upgrade42020to42030;
|
||||
import com.cloud.upgrade.dao.Upgrade452to453;
|
||||
import com.cloud.upgrade.dao.Upgrade453to460;
|
||||
import com.cloud.upgrade.dao.Upgrade460to461;
|
||||
|
|
@ -380,4 +381,24 @@ public class DatabaseUpgradeCheckerTest {
|
|||
assertFalse("DatabaseUpgradeChecker should not be a standalone component", checker.isStandalone());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCalculateUpgradePath42010to42030() {
|
||||
|
||||
final CloudStackVersion dbVersion = CloudStackVersion.parse("4.20.1.0");
|
||||
assertNotNull(dbVersion);
|
||||
|
||||
final CloudStackVersion currentVersion = CloudStackVersion.parse("4.20.3.0");
|
||||
assertNotNull(currentVersion);
|
||||
|
||||
final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker();
|
||||
final DbUpgrade[] upgrades = checker.calculateUpgradePath(dbVersion, currentVersion);
|
||||
|
||||
assertNotNull(upgrades);
|
||||
assertEquals(1, upgrades.length);
|
||||
assertTrue(upgrades[0] instanceof Upgrade42020to42030);
|
||||
|
||||
assertArrayEquals(new String[]{"4.20.2.0", "4.20.3.0"}, upgrades[0].getUpgradableVersionRange());
|
||||
assertEquals(currentVersion.toString(), upgrades[0].getUpgradedVersion());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue