AMBARI-19053. RU: wrong version exposed when Downgrade is going (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7eb2eaa7 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7eb2eaa7 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7eb2eaa7 Branch: refs/heads/branch-dev-patch-upgrade Commit: 7eb2eaa73315189533e039b45cf90655adf25390 Parents: 232a9d8 Author: Nate Cole <nc...@hortonworks.com> Authored: Thu Dec 1 16:26:21 2016 -0500 Committer: Nate Cole <nc...@hortonworks.com> Committed: Fri Dec 2 11:19:20 2016 -0500 ---------------------------------------------------------------------- .../internal/UpgradeResourceProvider.java | 24 ++++++++++++++++---- .../internal/UpgradeResourceProviderTest.java | 4 ++-- 2 files changed, 22 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/7eb2eaa7/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java index 9034989..5931743 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java @@ -758,13 +758,17 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider upgradeContext.setSupportedServices(supportedServices); upgradeContext.setScope(scope); + String downgradeFromVersion = null; + if (direction.isDowngrade()) { if (requestMap.containsKey(UPGRADE_FROM_VERSION)) { - upgradeContext.setDowngradeFromVersion((String) requestMap.get(UPGRADE_FROM_VERSION)); + downgradeFromVersion = (String) requestMap.get(UPGRADE_FROM_VERSION); } else { UpgradeEntity lastUpgradeItemForCluster = s_upgradeDAO.findLastUpgradeForCluster(cluster.getClusterId()); - upgradeContext.setDowngradeFromVersion(lastUpgradeItemForCluster.getToVersion()); + downgradeFromVersion = lastUpgradeItemForCluster.getToVersion(); } + + upgradeContext.setDowngradeFromVersion(downgradeFromVersion); } // optionally skip failures - this can be supplied on either the request or @@ -922,7 +926,13 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider } UpgradeEntity entity = new UpgradeEntity(); - entity.setFromVersion(cluster.getCurrentClusterVersion().getRepositoryVersion().getVersion()); + + if (null != downgradeFromVersion) { + entity.setFromVersion(downgradeFromVersion); + } else { + entity.setFromVersion(cluster.getCurrentClusterVersion().getRepositoryVersion().getVersion()); + } + entity.setToVersion(version); entity.setUpgradeGroups(groupEntities); entity.setClusterId(cluster.getClusterId()); @@ -931,7 +941,13 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider entity.setUpgradeType(pack.getType()); entity.setAutoSkipComponentFailures(skipComponentFailures); entity.setAutoSkipServiceCheckFailures(skipServiceCheckFailures); - entity.setDowngradeAllowed(pack.isDowngradeAllowed()); + + if (upgradeContext.getDirection().isDowngrade()) { + // !!! You can't downgrade a Downgrade, no matter what the upgrade pack says. + entity.setDowngradeAllowed(false); + } else { + entity.setDowngradeAllowed(pack.isDowngradeAllowed()); + } req.getRequestStatusResponse(); return createUpgradeInsideTransaction(cluster, req, entity); http://git-wip-us.apache.org/repos/asf/ambari/blob/7eb2eaa7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java index 14e3d08..8efcc61 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java @@ -708,7 +708,7 @@ public class UpgradeResourceProviderTest { UpgradeEntity entity = upgradeDao.findUpgrade(Long.parseLong(id)); assertNotNull(entity); - assertEquals("2.1.1", entity.getFromVersion()); + assertEquals("2.1.1.0", entity.getFromVersion()); assertEquals("2.2.0.0", entity.getToVersion()); assertEquals(Direction.DOWNGRADE, entity.getDirection()); @@ -1249,7 +1249,7 @@ public class UpgradeResourceProviderTest { Map<String, String> map = gson.<Map<String, String>> fromJson(se.getCommandParamsStage(),Map.class); assertTrue(map.containsKey("upgrade_direction")); assertEquals("upgrade", map.get("upgrade_direction")); - + if(map.containsKey("upgrade_type")){ assertEquals("rolling_upgrade", map.get("upgrade_type")); }