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 <[email protected]> Authored: Wed Feb 5 13:17:15 2014 -0800 Committer: tbeerbower <[email protected]> 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
