Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 6ab95eda7 -> 6ebd84875


AMBARI-18778: Ambari-server: Blueprint enhancements to support enabling or 
disabling credential store


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

Branch: refs/heads/branch-2.5
Commit: 5527fd7ff57fa89e06dc23b5812053ec984f009e
Parents: 6ab95ed
Author: Nahappan Somasundaram <nsomasunda...@hortonworks.com>
Authored: Wed Nov 2 16:35:42 2016 -0700
Committer: Nahappan Somasundaram <nsomasunda...@hortonworks.com>
Committed: Mon Nov 7 08:56:24 2016 -0800

----------------------------------------------------------------------
 .../ambari/server/topology/AmbariContext.java   |  3 +-
 .../ambari/server/topology/Blueprint.java       |  9 ++++
 .../ambari/server/topology/BlueprintImpl.java   | 49 ++++++++++++++++++++
 .../apache/ambari/server/topology/Setting.java  | 21 +++++++++
 .../server/topology/AmbariContextTest.java      |  1 +
 5 files changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/5527fd7f/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
index b11d9d3..83f8470 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
@@ -199,7 +199,8 @@ public class AmbariContext {
     Set<ServiceRequest> serviceRequests = new HashSet<ServiceRequest>();
     Set<ServiceComponentRequest> componentRequests = new 
HashSet<ServiceComponentRequest>();
     for (String service : services) {
-      serviceRequests.add(new ServiceRequest(clusterName, service, null));
+      String credentialStoreEnabled = 
topology.getBlueprint().getCredentialStoreEnabled(service);
+      serviceRequests.add(new ServiceRequest(clusterName, service, null, 
credentialStoreEnabled));
       for (String component : topology.getBlueprint().getComponents(service)) {
         String recoveryEnabled = 
topology.getBlueprint().getRecoveryEnabled(service, component);
         componentRequests.add(new ServiceComponentRequest(clusterName, 
service, component, null, recoveryEnabled));

http://git-wip-us.apache.org/repos/asf/ambari/blob/5527fd7f/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
index 8061f37..a82f02a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
@@ -97,6 +97,15 @@ public interface Blueprint {
   public String getRecoveryEnabled(String serviceName, String componentName);
 
   /**
+   * Get whether a service is enabled for credential store use.
+   *
+   * @param serviceName - Service name.
+   *
+   * @return null if value is not specified; true or false if specified.
+   */
+  public String getCredentialStoreEnabled(String serviceName);
+
+  /**
    * Check if auto skip failure is enabled.
    * @return true if enabled, otherwise false.
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/5527fd7f/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
index df0187e..3ea90b4 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
@@ -208,6 +208,55 @@ public class BlueprintImpl implements Blueprint {
     return null;
   }
 
+  /**
+   * Get whether the specified service is enabled for credential store use.
+   *
+   * <pre>
+   *     {@code
+   *       {
+   *         "service_settings" : [
+   *         { "name" : "RANGER",
+   *           "recovery_enabled" : "true",
+   *           "credential_store_enabled" : "true"
+   *         },
+   *         { "name" : "HIVE",
+   *           "recovery_enabled" : "true",
+   *           "credential_store_enabled" : "false"
+   *         },
+   *         { "name" : "TEZ",
+   *           "recovery_enabled" : "false"
+   *         }
+   *       ]
+   *     }
+   *   }
+   * </pre>
+   *
+   * @param serviceName - Service name.
+   *
+   * @return null if value is not specified; true or false if specified.
+   */
+  @Override
+  public String getCredentialStoreEnabled(String serviceName) {
+    if (setting == null)
+      return null;
+
+    /**
+     * Look up the service and return the credential_store_enabled value.
+     */
+    Set<HashMap<String, String>> settingValue = 
setting.getSettingValue(Setting.SETTING_NAME_SERVICE_SETTINGS);
+    for (Map<String, String> setting : settingValue) {
+      String name = setting.get(Setting.SETTING_NAME_NAME);
+      if (StringUtils.equals(name, serviceName)) {
+        if 
(!StringUtils.isEmpty(setting.get(Setting.SETTING_NAME_CREDENTIAL_STORE_ENABLED)))
 {
+          return setting.get(Setting.SETTING_NAME_CREDENTIAL_STORE_ENABLED);
+        }
+        break;
+      }
+    }
+
+    return null;
+  }
+
   @Override
   public boolean shouldSkipFailure() {
     if (setting == null) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/5527fd7f/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java 
b/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
index 601cbfd..6a14331 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
@@ -45,6 +45,27 @@ public class Setting {
   public static final String SETTING_NAME_NAME = "name";
 
   /**
+   * When specified under the "service_settings" section, it indicates whether 
credential store
+   * use is enabled for that service. Value is "true" or "false". Specify a 
value of "true"
+   * only if the stack definition for the service has a 
credential_store_supported value of "true".
+   * If credential_store_enabled is not specified, value will be taken as null 
and default value
+   * will be picked up from the stack definition, if available.
+   *   <pre>
+   *     {@code
+   *       {
+   *         "service_settings" : [
+   *           { "name" : "RANGER",
+   *             "recovery_enabled" : "true",
+   *             "credential_store_enabled" : "true"
+   *           },
+   *           :
+   *       }
+   *     }
+   *   </pre>
+   */
+  public static final String SETTING_NAME_CREDENTIAL_STORE_ENABLED = 
"credential_store_enabled";
+
+  /**
    * Settings.
    *
    * @param properties  setting name-->Set(property name-->property value)

http://git-wip-us.apache.org/repos/asf/ambari/blob/5527fd7f/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
index 6ef240d..ee64ac9 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
@@ -185,6 +185,7 @@ public class AmbariContextTest {
     
expect(blueprint.getComponents("service1")).andReturn(Arrays.asList("s1Component1",
 "s1Component2")).anyTimes();
     
expect(blueprint.getComponents("service2")).andReturn(Collections.singleton("s2Component1")).anyTimes();
     expect(blueprint.getConfiguration()).andReturn(bpConfiguration).anyTimes();
+    
expect(blueprint.getCredentialStoreEnabled("service1")).andReturn("true").anyTimes();
 
     expect(stack.getName()).andReturn(STACK_NAME).anyTimes();
     expect(stack.getVersion()).andReturn(STACK_VERSION).anyTimes();

Reply via email to