You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2015/09/10 20:54:47 UTC
ambari git commit: AMBARI-12597. Ambari should support custom stack
names (smohanty)
Repository: ambari
Updated Branches:
refs/heads/trunk f88ae30b2 -> f1d6ef340
AMBARI-12597. Ambari should support custom stack names (smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f1d6ef34
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f1d6ef34
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f1d6ef34
Branch: refs/heads/trunk
Commit: f1d6ef340718c93bba54bac661a6056a79882909
Parents: f88ae30
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Thu Sep 10 11:54:35 2015 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Thu Sep 10 11:54:35 2015 -0700
----------------------------------------------------------------------
.../orm/entities/RepositoryVersionEntity.java | 2 +-
.../ambari/server/stack/ServiceDirectory.java | 4 ++-
.../ambari/server/stack/StackDirectory.java | 12 ++++---
.../ambari/server/utils/VersionUtils.java | 34 +++++++++++++++++---
.../RepositoryVersionResourceProviderTest.java | 18 +++++++++++
.../ambari/server/utils/TestVersionUtils.java | 3 ++
6 files changed, 63 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index 0fb2f10..dafd4b2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -269,7 +269,7 @@ public class RepositoryVersionEntity {
String leading = stackId.getStackVersion(); // E.g, 2.3
// In some cases during unit tests, the leading can contain 3 digits, so only the major number (first two parts) are needed.
- String[] leadingParts = leading.split(".");
+ String[] leadingParts = leading.split("\\.");
if (null != leadingParts && leadingParts.length > 2) {
leading = leadingParts[0] + "." + leadingParts[1];
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
index 25c2260..d574d60 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
@@ -215,7 +215,9 @@ public abstract class ServiceDirectory extends StackDefinitionDirectory {
} catch (JAXBException e) {
metaInfoXml = new ServiceMetainfoXml();
metaInfoXml.setValid(false);
- metaInfoXml.setErrors(String.format("Unable to parse service metainfo.xml file '%s' ", f.getAbsolutePath()));
+ String msg = String.format("Unable to parse service metainfo.xml file '%s' ", f.getAbsolutePath());
+ metaInfoXml.setErrors(msg);
+ LOG.warn(msg);
metaInfoXml.setSchemaVersion(getAbsolutePath().replace(f.getParentFile().getParentFile().getParent()+File.separator, ""));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
index 89c10c6..b849e88 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
@@ -322,8 +322,10 @@ public class StackDirectory extends StackDefinitionDirectory {
} catch (JAXBException e) {
repoFile = new RepositoryXml();
repoFile.setValid(false);
- repoFile.setErrors("Unable to parse repo file at location: " +
- repositoryFile.getAbsolutePath());
+ String msg = "Unable to parse repo file at location: " +
+ repositoryFile.getAbsolutePath();
+ repoFile.setErrors(msg);
+ LOG.warn(msg);
}
}
}
@@ -356,8 +358,10 @@ public class StackDirectory extends StackDefinitionDirectory {
} catch (JAXBException e) {
metaInfoXml = new StackMetainfoXml();
metaInfoXml.setValid(false);
- metaInfoXml.setErrors("Unable to parse stack metainfo.xml file at location: " +
- stackMetaInfoFile.getAbsolutePath());
+ String msg = "Unable to parse stack metainfo.xml file at location: " +
+ stackMetaInfoFile.getAbsolutePath();
+ metaInfoXml.setErrors(msg);
+ LOG.warn(msg);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
index 4d1fc48..b07f7da 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
@@ -20,6 +20,9 @@ package org.apache.ambari.server.utils;
import org.apache.ambari.server.bootstrap.BootStrapImpl;
import org.apache.commons.lang.StringUtils;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Provides various utility functions to be used for version handling.
* The compatibility matrix between server, agent, store can also be maintained
@@ -28,6 +31,7 @@ import org.apache.commons.lang.StringUtils;
public class VersionUtils {
/**
* Compares two versions strings of the form N.N.N.N or even N.N.N.N-### (which should ignore everything after the dash).
+ * If the user has a custom stack, e.g., 2.3.MYNAME or MYNAME.2.3, then any segment that contains letters should be ignored.
*
* @param version1
* @param version2
@@ -72,11 +76,33 @@ public class VersionUtils {
int length = Math.max(version1Parts.length, version2Parts.length);
length = maxLengthToCompare == 0 || maxLengthToCompare > length ? length : maxLengthToCompare;
+
+ List<Integer> stack1Parts = new ArrayList<Integer>();
+ List<Integer> stack2Parts = new ArrayList<Integer>();
+
for (int i = 0; i < length; i++) {
- int stack1Part = i < version1Parts.length ?
- Integer.parseInt(version1Parts[i]) : 0;
- int stack2Part = i < version2Parts.length ?
- Integer.parseInt(version2Parts[i]) : 0;
+ // Robust enough to handle strings in the version
+ try {
+ int stack1Part = i < version1Parts.length ?
+ Integer.parseInt(version1Parts[i]) : 0;
+ stack1Parts.add(stack1Part);
+ } catch (NumberFormatException e) {
+ stack1Parts.add(0);
+ }
+ try {
+ int stack2Part = i < version2Parts.length ?
+ Integer.parseInt(version2Parts[i]) : 0;
+ stack2Parts.add(stack2Part);
+ } catch (NumberFormatException e) {
+ stack2Parts.add(0);
+ }
+ }
+
+ length = Math.max(stack1Parts.size(), stack2Parts.size());
+ for (int i = 0; i < length; i++) {
+ Integer stack1Part = stack1Parts.get(i);
+ Integer stack2Part = stack2Parts.get(i);
+
if (stack1Part < stack2Part) {
return -1;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
index 442bcb2..d55b5ce 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
@@ -47,6 +47,7 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.state.OperatingSystemInfo;
import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.stack.UpgradePack;
import org.junit.After;
@@ -399,6 +400,23 @@ public class RepositoryVersionResourceProviderTest {
}
}
+ @Test
+ public void testVersionInStack(){
+ StackId sid = new StackId("HDP-2.3");
+ StackId sid2 = new StackId("HDP-2.3.NEW");
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid, "2.3"));
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid2, "2.3"));
+
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid, "2.3.1"));
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid2, "2.3.1"));
+
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid, "2.3.2.0-2300"));
+ Assert.assertEquals(true, RepositoryVersionEntity.isVersionInStack(sid2, "2.3.2.1-3562"));
+
+ Assert.assertEquals(false, RepositoryVersionEntity.isVersionInStack(sid, "2.4.2.0-2300"));
+ Assert.assertEquals(false, RepositoryVersionEntity.isVersionInStack(sid2, "2.1"));
+ }
+
@After
public void after() {
injector.getInstance(PersistService.class).stop();
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1d6ef34/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
index 433d1c9..371660b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
@@ -45,6 +45,9 @@ public class TestVersionUtils {
Assert.assertEquals(-1, VersionUtils.compareVersions("2.2.0.0-200", "2.2.0.1-100"));
Assert.assertEquals(-1, VersionUtils.compareVersions("2.2.0.0-101", "2.2.0.10-20"));
Assert.assertEquals(-1, VersionUtils.compareVersions("2.2.2.0.20-996", "2.2.2.145-846"));
+ Assert.assertEquals(0, VersionUtils.compareVersions("2.2", "2.2.VER"));
+ Assert.assertEquals(0, VersionUtils.compareVersions("2.2.VAR", "2.2.VER"));
+ Assert.assertEquals(0, VersionUtils.compareVersions("2.2.3", "2.2.3.VER1.V"));
}
@Test