You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/03/07 07:35:21 UTC
svn commit: r1453707 - in /incubator/ambari/trunk: ./
ambari-server/src/main/java/org/apache/ambari/server/controller/
ambari-server/src/main/java/org/apache/ambari/server/state/
ambari-server/src/test/java/org/apache/ambari/server/controller/ ambari-s...
Author: swagle
Date: Thu Mar 7 06:35:21 2013
New Revision: 1453707
URL: http://svn.apache.org/r1453707
Log:
AMBARI-1555. Upgrade should validate that the from->to version is an allowed combination (Sumit Mohanty via swagle)
Added:
incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.2/metainfo.xml
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1453707&r1=1453706&r2=1453707&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Thu Mar 7 06:35:21 2013
@@ -12,6 +12,9 @@ Trunk (unreleased changes):
NEW FEATURES
+ AMBARI-1555. Upgrade should validate that the from->to version is an allowed
+ combination. (Sumit Mohanty via swagle)
+
AMBARI-1568. Update the version of ambari artifacts to 1.3.0 snapshot (ncole)
AMBARI-1563. API Support: Host-component resource should include its current
Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java?rev=1453707&r1=1453706&r2=1453707&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java Thu Mar 7 06:35:21 2013
@@ -1424,6 +1424,7 @@ public class AmbariManagementControllerI
// Set the current version value if its not already set
if (currentVersion == null) {
cluster.setCurrentStackVersion(desiredVersion);
+ cluster.refresh();
currentVersion = cluster.getCurrentStackVersion();
}
@@ -1465,12 +1466,11 @@ public class AmbariManagementControllerI
throw new AmbariException("Target version : " + requestedVersion
+ " is not a recognized version");
}
- // TODO Ensure its an allowed upgrade using AmbariMetaInfo
- //if(!upgradeAllowed(stackInfo, requestedVersion))
- //{
- // throw new AmbariException("Upgrade is not allowed from " + currentVersion
- // + " to the target version " + requestedVersion);
- //}
+ if(!isUpgradeAllowed(stackInfo, currentVersion))
+ {
+ throw new AmbariException("Upgrade is not allowed from " + currentVersion
+ + " to the target version " + requestedVersion);
+ }
}
} else {
retry = true;
@@ -1528,6 +1528,19 @@ public class AmbariManagementControllerI
return null;
}
+ private boolean isUpgradeAllowed(StackInfo requestedStackInfo, StackId currentStackId) {
+ String minUpgradeVersion = requestedStackInfo.getMinUpgradeVersion();
+ if (minUpgradeVersion != null && !minUpgradeVersion.isEmpty()) {
+ StackId minUpgradeStackId =
+ new StackId(currentStackId.getStackName(), minUpgradeVersion);
+ if (currentStackId.compareTo(minUpgradeStackId) >= 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private void fillComponentsToUpgrade(ClusterRequest request, Cluster cluster,
Map<State, List<Service>> changedServices, Map<State, List<ServiceComponent>> changedComps,
Map<String, Map<State, List<ServiceComponentHost>>> changedScHosts) throws AmbariException {
@@ -1574,7 +1587,7 @@ public class AmbariManagementControllerI
State currSchState = sch.getState();
if (sch.getStackVersion().equals(sch.getDesiredStackVersion())
&& newState == currSchState) {
- LOG.info("Ignoring ServiceComponentHost"
+ LOG.info("Requesting upgrade for already upgraded ServiceComponentHost"
+ ", clusterName=" + request.getClusterName()
+ ", serviceName=" + service.getName()
+ ", componentName=" + sc.getName()
@@ -1583,8 +1596,6 @@ public class AmbariManagementControllerI
+ ", newDesiredState=" + newState
+ ", currentDesiredState=" + sch.getStackVersion()
+ ", newDesiredVersion=" + sch.getDesiredStackVersion());
- //TODO Create NOP tasks for progress tracking
- continue;
}
sch.setState(State.UPGRADING);
Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java?rev=1453707&r1=1453706&r2=1453707&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/state/StackId.java Thu Mar 7 06:35:21 2013
@@ -19,17 +19,18 @@
package org.apache.ambari.server.state;
public class StackId implements Comparable<StackId> {
+
+ private static final String NAME_SEPARATOR = "-";
+
private String stackName;
private String stackVersion;
public StackId() {
- super();
this.stackName = "";
this.stackVersion = "";
}
public StackId(String stackId) {
- super();
parseStackIdHelper(this, stackId);
}
@@ -38,6 +39,10 @@ public class StackId implements Comparab
this.stackVersion = stackInfo.getVersion();
}
+ public StackId(String stackName, String stackVersion) {
+ this(stackName + NAME_SEPARATOR + stackVersion);
+ }
+
/**
* @return the stackName
*/
@@ -60,7 +65,7 @@ public class StackId implements Comparab
&& stackVersion.isEmpty()) {
return "";
}
- return stackName + "-" + stackVersion;
+ return stackName + NAME_SEPARATOR + stackVersion;
}
/**
Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java?rev=1453707&r1=1453706&r2=1453707&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java Thu Mar 7 06:35:21 2013
@@ -3975,9 +3975,6 @@ public class AmbariManagementControllerT
}
-
-
-
@Test
public void testUpdateClusterVersionBasic() throws AmbariException {
@@ -4091,6 +4088,33 @@ public class AmbariManagementControllerT
}
@Test
+ public void testUpdateClusterUpgradabilityCheck() throws AmbariException {
+ String clusterName = "foo1";
+ StackId currentStackId = new StackId("HDP-0.2");
+
+ createCluster(clusterName);
+ Cluster c = clusters.getCluster(clusterName);
+ c.setDesiredStackVersion(currentStackId);
+ ClusterRequest r = new ClusterRequest(c.getClusterId(), clusterName, "HDP-0.3", null);
+ try {
+ controller.updateCluster(r);
+ } catch (AmbariException e) {
+ Assert.assertTrue(e.getMessage().contains("Illegal request to upgrade to"));
+ }
+
+ StackId unsupportedStackId = new StackId("HDP-0.0.1");
+ c.setDesiredStackVersion(unsupportedStackId);
+ c.setCurrentStackVersion(unsupportedStackId);
+ c.refresh();
+ r = new ClusterRequest(c.getClusterId(), clusterName, "HDP-0.2", null);
+ try {
+ controller.updateCluster(r);
+ } catch (AmbariException e) {
+ Assert.assertTrue(e.getMessage().contains("Upgrade is not allowed from"));
+ }
+ }
+
+ @Test
public void testUpdateClusterVersionCombinations() throws AmbariException {
String clusterName = "foo1";
String pigServiceName = "PIG";
@@ -4184,11 +4208,7 @@ public class AmbariManagementControllerT
trackAction = controller.updateCluster(r);
stages = actionDB.getAllStages(trackAction.getRequestId());
- expectedTasks.resetAll();
- expectedTasks.expectTask(Role.JOBTRACKER, host1);
- expectedTasks.expectTask(Role.TASKTRACKER, host2);
- expectedTasks.expectTask(Role.MAPREDUCE_CLIENT, host2);
- validateGeneratedStages(stages, 3, expectedTasks);
+ validateGeneratedStages(stages, 4, expectedTasks);
c.getService(mrServiceName).getServiceComponent(mrJobTrackerComp).getServiceComponentHost(host1)
.setState(State.UPGRADE_FAILED);
@@ -4196,7 +4216,7 @@ public class AmbariManagementControllerT
.setState(State.UPGRADE_FAILED);
trackAction = controller.updateCluster(r);
stages = actionDB.getAllStages(trackAction.getRequestId());
- validateGeneratedStages(stages, 3, expectedTasks);
+ validateGeneratedStages(stages, 4, expectedTasks);
// Add HDFS and upgrade
createService(clusterName, hdfsService, State.INIT);
Added: incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.2/metainfo.xml
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.2/metainfo.xml?rev=1453707&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.2/metainfo.xml (added)
+++ incubator/ambari/trunk/ambari-server/src/test/resources/stacks/HDP/0.2/metainfo.xml Thu Mar 7 06:35:21 2013
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+<metainfo>
+ <versions>
+ <upgrade>0.1</upgrade>
+ </versions>
+</metainfo>