You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/12/05 16:37:27 UTC
git commit: AMBARI-3987 - Resource providers are set with wrong stack
version.
Updated Branches:
refs/heads/trunk 107aa5808 -> e353a1f5d
AMBARI-3987 - Resource providers are set with wrong stack version.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e353a1f5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e353a1f5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e353a1f5
Branch: refs/heads/trunk
Commit: e353a1f5d0a4cb53026bdeca746e56cbfd4fdafc
Parents: 107aa58
Author: tbeerbower <tb...@hortonworks.com>
Authored: Thu Dec 5 10:20:06 2013 -0500
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Thu Dec 5 10:36:53 2013 -0500
----------------------------------------------------------------------
.../internal/AbstractProviderModule.java | 27 ++++-
.../internal/AbstractProviderModuleTest.java | 121 +++++++++++++++++++
2 files changed, 144 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e353a1f5/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
index 5d106bd..051eb31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
@@ -43,11 +43,12 @@ import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.HostState;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.State;
-import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* An abstract provider module implementation.
@@ -309,6 +310,18 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
// ----- utility methods ---------------------------------------------------
+ /**
+ * Get the metrics version for the given cluster name.
+ *
+ * @param clusterName the cluster name
+ *
+ * @return the metrics version for the given cluster name
+ */
+ protected PropertyHelper.MetricsVersion getMetricsVersion(String clusterName) {
+ updateClusterVersion();
+ return clusterVersionsMap.get(clusterName);
+ }
+
protected abstract ResourceProvider createResourceProvider(Resource.Type type);
protected void registerResourceProvider(Resource.Type type) {
@@ -465,9 +478,15 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
for (Resource cluster : clusters) {
String clusterVersion = (String) cluster.getPropertyValue(CLUSTER_VERSION_PROPERTY_ID);
-
- PropertyHelper.MetricsVersion version = clusterVersion.startsWith("HDP-1") ?
- PropertyHelper.MetricsVersion.HDP1 : PropertyHelper.MetricsVersion.HDP2;
+ PropertyHelper.MetricsVersion version = PropertyHelper.MetricsVersion.HDP2;
+
+ Matcher m = Pattern.compile("[0-9]+(\\.[0-9]+)+").matcher(clusterVersion);
+ if (m.find()) {
+ clusterVersion = m.group(0);
+ if (clusterVersion.equals("1") || clusterVersion.startsWith("1.")) {
+ version = PropertyHelper.MetricsVersion.HDP1;
+ }
+ }
clusterVersionsMap.put(
(String) cluster.getPropertyValue(CLUSTER_NAME_PROPERTY_ID),
http://git-wip-us.apache.org/repos/asf/ambari/blob/e353a1f5/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
new file mode 100644
index 0000000..36410c9
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
@@ -0,0 +1,121 @@
+package org.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
+import org.apache.ambari.server.controller.spi.NoSuchResourceException;
+import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
+import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.controller.spi.SystemException;
+import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * AbstractProviderModule tests.
+ */
+public class AbstractProviderModuleTest {
+ @Test
+ public void testGetMetricsVersion() throws Exception {
+
+ TestAbstractProviderModule module = new TestAbstractProviderModule("HDP-1.0");
+ PropertyHelper.MetricsVersion version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP1, version);
+ version = module.getMetricsVersion("c2");
+ Assert.assertNull(version);
+
+ module = new TestAbstractProviderModule("HDPLocal-1.3.2");
+ version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP1, version);
+
+ module = new TestAbstractProviderModule("HDP-2.0.1");
+ version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
+
+ module = new TestAbstractProviderModule("HDP-2.0.1.x");
+ version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
+
+ module = new TestAbstractProviderModule("HDP-9.9.9");
+ version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
+
+ module = new TestAbstractProviderModule("HDPLocal-2.0.0");
+ version = module.getMetricsVersion("c1");
+ Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
+ }
+
+ private static class TestAbstractProviderModule extends AbstractProviderModule {
+ private final String clusterVersion;
+
+ private TestAbstractProviderModule(String clusterVersion) {
+ this.clusterVersion = clusterVersion;
+ }
+
+ @Override
+ protected ResourceProvider createResourceProvider(Resource.Type type) {
+ return new TestResourceProvider(type, clusterVersion);
+ }
+ }
+
+ private static class TestResourceProvider implements ResourceProvider {
+ private final Resource.Type type;
+ private final String clusterVersion;
+
+ private TestResourceProvider(Resource.Type type, String clusterVersion) {
+ this.type = type;
+ this.clusterVersion = clusterVersion;
+ }
+
+ @Override
+ public RequestStatus createResources(Request request)
+ throws SystemException, UnsupportedPropertyException,
+ ResourceAlreadyExistsException, NoSuchParentResourceException {
+ return null;
+ }
+
+ @Override
+ public Set<Resource> getResources(Request request, Predicate predicate)
+ throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
+
+ if (type == Resource.Type.Cluster) {
+ Resource cluster = new ResourceImpl(Resource.Type.Cluster);
+ cluster.setProperty(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID, 1);
+ cluster.setProperty(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, "c1");
+ cluster.setProperty(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, clusterVersion);
+
+ return Collections.singleton(cluster);
+ }
+ return Collections.emptySet();
+ }
+
+ @Override
+ public RequestStatus updateResources(Request request, Predicate predicate)
+ throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
+ return null;
+ }
+
+ @Override
+ public RequestStatus deleteResources(Predicate predicate)
+ throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
+ return null;
+ }
+
+ @Override
+ public Map<Resource.Type, String> getKeyPropertyIds() {
+ return null;
+ }
+
+ @Override
+ public Set<String> checkPropertyIds(Set<String> propertyIds) {
+ return null;
+ }
+ }
+}