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