ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nc...@apache.org
Subject [12/50] ambari git commit: AMBARI-20243 - Include option to filter out properties from APi that returns ambari.properties file (Anita Jebaraj via jonathanhurley)
Date Tue, 14 Mar 2017 18:41:56 GMT
AMBARI-20243 - Include option to filter out properties from APi that returns ambari.properties
file (Anita Jebaraj via jonathanhurley)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0471b0c3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0471b0c3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0471b0c3

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 0471b0c373dbc7757115cccc20e20ff260b690c0
Parents: e6fc6f4
Author: Jonathan Hurley <jhurley@hortonworks.com>
Authored: Fri Mar 10 16:08:14 2017 -0500
Committer: Jonathan Hurley <jhurley@hortonworks.com>
Committed: Fri Mar 10 16:08:20 2017 -0500

----------------------------------------------------------------------
 ambari-server/docs/configuration/index.md       |  1 +
 .../server/configuration/Configuration.java     | 42 ++++++++++++++++++++
 .../controller/RootServiceResponseFactory.java  |  5 +++
 .../server/configuration/ConfigurationTest.java | 11 +++++
 4 files changed, 59 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0471b0c3/ambari-server/docs/configuration/index.md
----------------------------------------------------------------------
diff --git a/ambari-server/docs/configuration/index.md b/ambari-server/docs/configuration/index.md
index af962e1..7a7f3b9 100644
--- a/ambari-server/docs/configuration/index.md
+++ b/ambari-server/docs/configuration/index.md
@@ -162,6 +162,7 @@ The following are the properties which can be used to configure Ambari.
 | mpacks.staging.path | The Ambari Management Pack staging directory on the Ambari Server.<br/><br/>The
following are examples of valid values:<ul><li>`/var/lib/ambari-server/resources/mpacks`</ul>
| | 
 | packages.pre.installed | Determines whether Ambari Agent instances have already have the
necessary stack software installed |`false` | 
 | pam.configuration | The PAM configuration file. | | 
+| property.mask.file | The path of the file which lists the properties that should be masked
from the api that returns ambari.properties | | 
 | proxy.allowed.hostports | A comma-separated whitelist of host and port values which Ambari
Server can use to determine if a proxy value is valid. |`*:*` | 
 | recommendations.artifacts.lifetime | The amount of time that Recommendation API data is
kept on the Ambari Server file system. This is specified using a `hdwmy` syntax for pairing
the value with a time unit (hours, days, weeks, months, years)<br/><br/>The following
are examples of valid values:<ul><li>`8h`<li>`2w`<li>`1m`</ul>
|`1w` | 
 | recommendations.artifacts.rollover.max | Maximum number of recommendations artifacts at
a given time<br/><br/>The following are examples of valid values:<ul><li>`50`<li>`10`<li>`100`</ul>
|`100` | 

http://git-wip-us.apache.org/repos/asf/ambari/blob/0471b0c3/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index df334c5..20431f6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -35,6 +35,7 @@ import java.security.interfaces.RSAPublicKey;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -866,6 +867,12 @@ public class Configuration {
   @Markdown(description = "The timeout, used by the `timeout` command in linux, when checking
mounts for free capacity.")
   public static final ConfigurationProperty<String> CHECK_MOUNTS_TIMEOUT = new ConfigurationProperty<>(
       "agent.check.mounts.timeout", "0");
+  /**
+   * The path of the file which lists the properties that should be masked from the api that
returns ambari.properties
+   */
+  @Markdown(description = "The path of the file which lists the properties that should be
masked from the api that returns ambari.properties")
+  public static final ConfigurationProperty<String> PROPERTY_MASK_FILE = new ConfigurationProperty<>(
+      "property.mask.file", null);
 
   /**
    * The name of the database.
@@ -2685,6 +2692,7 @@ public class Configuration {
 
   private Properties properties;
   private Properties log4jProperties = new Properties();
+  private Set<String> propertiesToMask = null;
   private String ambariUpgradeConfigUpdatesFilePath;
   private JsonObject hostChangesJson;
   private Map<String, String> configsMap;
@@ -4067,6 +4075,9 @@ public class Configuration {
   public String getJCEName() {
     return getProperty(JCE_NAME);
   }
+  public String getAmbariBlacklistFile() {
+    return getProperty(PROPERTY_MASK_FILE);
+  }
 
   public String getServerDBName() {
     return getProperty(SERVER_DB_NAME);
@@ -4330,6 +4341,37 @@ public class Configuration {
     return Integer.parseInt(getProperty(SERVER_HTTP_RESPONSE_HEADER_SIZE));
   }
 
+  /**
+   * @return the set of properties to mask in the api that
+   * returns ambari.properties
+   */
+  public Set<String> getPropertiesToBlackList()
+  {
+    if (propertiesToMask != null) {
+      return propertiesToMask;
+    }
+    Properties blacklistProperties = new Properties();
+    String blacklistFile = getAmbariBlacklistFile();
+    propertiesToMask = new HashSet<String>();
+    if(blacklistFile != null) {
+      File propertiesMaskFile = new File(blacklistFile);
+      InputStream inputStream = null;
+      if(propertiesMaskFile.exists()) {
+        try {
+          inputStream = new FileInputStream(propertiesMaskFile);
+	  blacklistProperties.load(inputStream);
+	  propertiesToMask = blacklistProperties.stringPropertyNames();
+        } catch (Exception e) {
+	  String message = String.format("Blacklist properties file %s cannot be read", blacklistFile);
+          LOG.error(message);
+        } finally {
+	  IOUtils.closeQuietly(inputStream);
+        }
+      }
+    }
+    return propertiesToMask;
+  }
+
   public Map<String, String> getAmbariProperties() {
 
     Properties properties = readConfigFile();

http://git-wip-us.apache.org/repos/asf/ambari/blob/0471b0c3/ambari-server/src/main/java/org/apache/ambari/server/controller/RootServiceResponseFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/RootServiceResponseFactory.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/RootServiceResponseFactory.java
index dadcf09..11bc730 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/RootServiceResponseFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/RootServiceResponseFactory.java
@@ -149,6 +149,7 @@ public class RootServiceResponseFactory extends
   private Map<String, String> getComponentProperties(String componentName){
     
     Map<String, String> response;
+    Set<String> propertiesToHideInResponse;
     Components component = null;
 
     if (componentName != null) {
@@ -159,6 +160,10 @@ public class RootServiceResponseFactory extends
         response = configs.getAmbariProperties();
         response.put(JDK_LOCATION, managementController.getJdkResourceUrl());
         response.put("java.version", System.getProperty("java.specification.version"));
+        propertiesToHideInResponse = configs.getPropertiesToBlackList();
+        for(String key : propertiesToHideInResponse) {
+      	  response.remove(key);
+      	}
         break;
 
       default:

http://git-wip-us.apache.org/repos/asf/ambari/blob/0471b0c3/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
index 8111a39..7d2ebb5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
@@ -299,6 +299,17 @@ public class ConfigurationTest {
     Assert.assertEquals("value", props.get("name"));
   }
 
+  @Test
+  public void testGetAmbariBlacklistFile() {
+    Properties ambariProperties = new Properties();
+    Configuration conf = new Configuration(ambariProperties);
+    Assert.assertEquals(null, conf.getAmbariBlacklistFile());
+    ambariProperties = new Properties();
+    ambariProperties.setProperty(Configuration.PROPERTY_MASK_FILE.getKey(), "ambari-blacklist.properties");
+    conf = new Configuration(ambariProperties);
+    Assert.assertEquals("ambari-blacklist.properties", conf.getAmbariBlacklistFile());
+  }
+
   @Rule
   public ExpectedException exception = ExpectedException.none();
 


Mime
View raw message