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 2014/02/06 01:05:19 UTC
git commit: AMBARI-4538 - Expose Ambari config properties through
View context.
Updated Branches:
refs/heads/trunk e826f78e6 -> ac8afa72e
AMBARI-4538 - Expose Ambari config properties through View context.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ac8afa72
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ac8afa72
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ac8afa72
Branch: refs/heads/trunk
Commit: ac8afa72e8c3f3c6d5986c75dd801dd39bc196ba
Parents: e826f78
Author: tbeerbower <tb...@hortonworks.com>
Authored: Wed Feb 5 13:17:15 2014 -0800
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Wed Feb 5 16:04:53 2014 -0800
----------------------------------------------------------------------
.../ambari/server/view/ViewContextImpl.java | 5 ++++
.../ambari/server/view/ViewDefinition.java | 24 +++++++++++++++++---
.../apache/ambari/server/view/ViewRegistry.java | 10 ++++----
.../ambari/server/view/ViewDefinitionTest.java | 24 ++++++++++++++++----
.../org/apache/ambari/view/ViewContext.java | 9 ++++++++
5 files changed, 60 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ac8afa72/ambari-server/src/main/java/org/apache/ambari/server/view/ViewContextImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewContextImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewContextImpl.java
index 0106c1d..95f47f4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewContextImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewContextImpl.java
@@ -78,6 +78,11 @@ public class ViewContextImpl implements ViewContext {
}
@Override
+ public String getAmbariProperty(String key) {
+ return viewInstanceDefinition.getViewDefinition().getAmbariProperty(key);
+ }
+
+ @Override
public ResourceProvider<?> getResourceProvider(String type) {
return viewInstanceDefinition.getResourceProvider(type);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/ac8afa72/ambari-server/src/main/java/org/apache/ambari/server/view/ViewDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewDefinition.java
index 8a60667..4d813c6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewDefinition.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.view;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.view.configuration.ResourceConfig;
import org.apache.ambari.server.view.configuration.ViewConfig;
import org.apache.ambari.server.controller.spi.Resource;
@@ -57,6 +58,10 @@ public class ViewDefinition {
*/
private final Map<String, ViewInstanceDefinition> instanceDefinitions = new HashMap<String, ViewInstanceDefinition>();
+ /**
+ * The Ambari configuration properties.
+ */
+ private final Configuration ambariConfiguration;
/**
* The external resource type for the view.
@@ -69,10 +74,12 @@ public class ViewDefinition {
/**
* Construct a view definition from the given configuration.
*
- * @param configuration the view configuration
+ * @param configuration the view configuration
+ * @param ambariConfiguration the Ambari configuration
*/
- public ViewDefinition(ViewConfig configuration) {
- this.configuration = configuration;
+ public ViewDefinition(ViewConfig configuration, Configuration ambariConfiguration) {
+ this.configuration = configuration;
+ this.ambariConfiguration = ambariConfiguration;
this.externalResourceType =
new Resource.Type(getQualifiedResourceTypeName(ResourceConfig.EXTERNAL_RESOURCE_PLURAL_NAME));
@@ -118,6 +125,17 @@ public class ViewDefinition {
}
/**
+ * Get a property for the given key from the ambari configuration.
+ *
+ * @param key the property key
+ *
+ * @return the property value; null indicates that the configuration contains no mapping for the key
+ */
+ public String getAmbariProperty(String key) {
+ return ambariConfiguration.getProperty(key);
+ }
+
+ /**
* Add a resource provider for the given type.
*
* @param type the resource type
http://git-wip-us.apache.org/repos/asf/ambari/blob/ac8afa72/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
index a653415..8781d89 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
@@ -229,7 +229,7 @@ public class ViewRegistry {
JAXBContext jaxbContext = JAXBContext.newInstance(ViewConfig.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
ViewConfig viewConfig = (ViewConfig) jaxbUnmarshaller.unmarshal(configStream);
- ViewDefinition viewDefinition = installView(viewConfig, cl);
+ ViewDefinition viewDefinition = installView(viewConfig, cl, configuration);
List<InstanceConfig> instances = viewConfig.getInstances();
@@ -257,12 +257,12 @@ public class ViewRegistry {
}
// install a new view definition
- private static ViewDefinition installView(ViewConfig viewConfig, ClassLoader cl)
+ private static ViewDefinition installView(ViewConfig viewConfig, ClassLoader cl, Configuration ambariConfig)
throws ClassNotFoundException, IntrospectionException {
List<ResourceConfig> resourceConfigurations = viewConfig.getResources();
- ViewDefinition viewDefinition = new ViewDefinition(viewConfig);
+ ViewDefinition viewDefinition = new ViewDefinition(viewConfig, ambariConfig);
Resource.Type externalResourceType = viewDefinition.getExternalResourceType();
@@ -303,7 +303,7 @@ public class ViewRegistry {
ClassLoader cl,
ServletContextHandler root,
DelegatingFilterProxy springSecurityFilter,
- Configuration configs) throws ClassNotFoundException {
+ Configuration ambariConfig) throws ClassNotFoundException {
ViewInstanceDefinition viewInstanceDefinition = new ViewInstanceDefinition(viewDefinition, instanceConfig);
@@ -354,7 +354,7 @@ public class ViewRegistry {
root.addServlet(sh, pathSpec);
viewInstanceDefinition.addServletMapping(servletName, pathSpec);
- if (configs.getApiAuthentication()) {
+ if (ambariConfig.getApiAuthentication()) {
root.addFilter(new FilterHolder(springSecurityFilter), pathSpec, 1);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/ac8afa72/ambari-server/src/test/java/org/apache/ambari/server/view/ViewDefinitionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewDefinitionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewDefinitionTest.java
index 5cf871e..92766df 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewDefinitionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewDefinitionTest.java
@@ -18,7 +18,7 @@
package org.apache.ambari.server.view;
-import org.apache.ambari.server.api.resources.BaseResourceDefinition;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.view.configuration.ResourceConfig;
@@ -29,6 +29,7 @@ import org.junit.Assert;
import org.junit.Test;
import java.util.Collection;
+import java.util.Properties;
import java.util.Set;
import static org.easymock.EasyMock.createNiceMock;
@@ -42,11 +43,17 @@ import static org.easymock.EasyMock.verify;
public class ViewDefinitionTest {
public static ViewDefinition getViewDefinition() throws Exception {
- return new ViewDefinition(ViewConfigTest.getConfig());
+ return getViewDefinition(ViewConfigTest.getConfig());
}
- public static ViewDefinition getViewDefinition(ViewConfig config) throws Exception {
- return new ViewDefinition(config);
+ public static ViewDefinition getViewDefinition(ViewConfig viewConfig) throws Exception {
+ Properties properties = new Properties();
+ properties.put("p1", "v1");
+ properties.put("p2", "v2");
+ properties.put("p3", "v3");
+
+ Configuration ambariConfig = new Configuration(properties);
+ return new ViewDefinition(viewConfig, ambariConfig);
}
@Test
@@ -75,6 +82,15 @@ public class ViewDefinitionTest {
}
@Test
+ public void testGetAmbariProperty() throws Exception {
+ ViewConfig viewConfig = ViewConfigTest.getConfig();
+ ViewDefinition viewDefinition = getViewDefinition(viewConfig);
+ Assert.assertEquals("v1", viewDefinition.getAmbariProperty("p1"));
+ Assert.assertEquals("v2", viewDefinition.getAmbariProperty("p2"));
+ Assert.assertEquals("v3", viewDefinition.getAmbariProperty("p3"));
+ }
+
+ @Test
public void testAddGetResourceProvider() throws Exception {
ViewDefinition viewDefinition = getViewDefinition();
http://git-wip-us.apache.org/repos/asf/ambari/blob/ac8afa72/ambari-views/src/main/java/org/apache/ambari/view/ViewContext.java
----------------------------------------------------------------------
diff --git a/ambari-views/src/main/java/org/apache/ambari/view/ViewContext.java b/ambari-views/src/main/java/org/apache/ambari/view/ViewContext.java
index 37bf6d5..b81fb09 100644
--- a/ambari-views/src/main/java/org/apache/ambari/view/ViewContext.java
+++ b/ambari-views/src/main/java/org/apache/ambari/view/ViewContext.java
@@ -55,6 +55,15 @@ public interface ViewContext {
public Map<String, String> getProperties();
/**
+ * Get a property for the given key from the ambari configuration.
+ *
+ * @param key the property key
+ *
+ * @return the property value; null indicates that the configuration contains no mapping for the key
+ */
+ public String getAmbariProperty(String key);
+
+ /**
* Get the view resource provider for the given resource type.
*
* @param type the resource type