Repository: ambari
Updated Branches:
  refs/heads/trunk 74faed7b5 -> 37e0d9104


AMBARI-19546. Add support for call context to the stack advisor (smohanty)


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

Branch: refs/heads/trunk
Commit: 37e0d91044c89c49806de87e2e25a018c01d209e
Parents: 74faed7
Author: Sumit Mohanty <[email protected]>
Authored: Wed Jan 18 22:36:30 2017 -0800
Committer: Sumit Mohanty <[email protected]>
Committed: Wed Jan 18 22:46:22 2017 -0800

----------------------------------------------------------------------
 .../StackAdvisorBlueprintProcessor.java         |  8 +++++
 .../stackadvisor/StackAdvisorRequest.java       | 15 +++++++++
 .../commands/StackAdvisorCommand.java           |  4 +++
 .../internal/StackAdvisorResourceProvider.java  | 31 +++++++++++++++++--
 .../server/upgrade/AbstractUpgradeCatalog.java  | 10 +++---
 .../src/main/resources/properties.json          |  3 ++
 .../src/main/resources/scripts/stack_advisor.py | 14 ++++++---
 .../stacks/HDP/2.0.6/services/stack_advisor.py  | 25 ++++++++++++---
 .../src/main/resources/stacks/stack_advisor.py  | 11 +++++++
 .../StackAdvisorResourceProviderTest.java       | 32 ++++++++++++++++++++
 .../stacks/2.0.6/common/test_stack_advisor.py   |  8 ++---
 11 files changed, 140 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
index 4bb4f39..4e1b3c1 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
@@ -65,6 +65,13 @@ public class StackAdvisorBlueprintProcessor {
     stackAdvisorHelper = instance;
   }
 
+  private static final Map<String, String> userContext;
+  static
+  {
+    userContext = new HashMap<String, String>();
+    userContext.put("operation", "ClusterCreate");
+  }
+
   /**
    * Recommend configurations by the stack advisor, then store the results in 
cluster topology.
    * @param clusterTopology cluster topology instance
@@ -96,6 +103,7 @@ public class StackAdvisorBlueprintProcessor {
       .forHostComponents(gatherHostGroupComponents(clusterTopology))
       .withComponentHostsMap(componentHostsMap)
       .withConfigurations(calculateConfigs(clusterTopology))
+      .withUserContext(userContext)
       .ofType(requestType)
       .build();
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
index 6c48007..044e143 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
@@ -46,6 +46,7 @@ public class StackAdvisorRequest {
   private Map<String, Map<String, Map<String, String>>> configurations = new 
HashMap<String, Map<String, Map<String, String>>>();
   private List<ChangedConfigInfo> changedConfigurations = new 
LinkedList<ChangedConfigInfo>();
   private Set<RecommendationResponse.ConfigGroup> configGroups;
+  private Map<String, String> userContext = new HashMap<String, String>();
 
   public String getStackName() {
     return stackName;
@@ -99,6 +100,14 @@ public class StackAdvisorRequest {
     this.changedConfigurations = changedConfigurations;
   }
 
+  public Map<String, String> getUserContext() {
+    return this.userContext;
+  }
+
+  public void setUserContext(Map<String, String> userContext) {
+    this.userContext = userContext;
+  }
+
   public Set<RecommendationResponse.ConfigGroup> getConfigGroups() {
     return configGroups;
   }
@@ -167,6 +176,12 @@ public class StackAdvisorRequest {
       return this;
     }
 
+    public StackAdvisorRequestBuilder withUserContext(
+        Map<String, String> userContext) {
+      this.instance.userContext = userContext;
+      return this;
+    }
+
     public StackAdvisorRequestBuilder withConfigGroups(
       Set<RecommendationResponse.ConfigGroup> configGroups) {
       this.instance.configGroups = configGroups;

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
index 5a498ac..adcb5b5 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
@@ -93,6 +93,7 @@ public abstract class StackAdvisorCommand<T extends 
StackAdvisorResponse> extend
   private static final String COMPONENT_HOSTNAMES_PROPERTY = "hostnames";
   private static final String CONFIGURATIONS_PROPERTY = "configurations";
   private static final String CHANGED_CONFIGURATIONS_PROPERTY = 
"changed-configurations";
+  private static final String USER_CONTEXT_PROPERTY = "user-context";
   private static final String AMBARI_SERVER_CONFIGURATIONS_PROPERTY = 
"ambari-server-properties";
 
   private File recommendationsDir;
@@ -201,6 +202,9 @@ public abstract class StackAdvisorCommand<T extends 
StackAdvisorResponse> extend
 
     JsonNode changedConfigs = 
mapper.valueToTree(request.getChangedConfigurations());
     root.put(CHANGED_CONFIGURATIONS_PROPERTY, changedConfigs);
+
+    JsonNode userContext = mapper.valueToTree(request.getUserContext());
+    root.put(USER_CONTEXT_PROPERTY, userContext);
   }
 
   private void populateConfigGroups(ObjectNode root,

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
index c421d9c..ba82bf7 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
@@ -57,6 +57,9 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
   private static final String SERVICES_PROPERTY = "services";
 
   private static final String CHANGED_CONFIGURATIONS_PROPERTY = 
"changed_configurations";
+  private static final String OPERATION_PROPERTY = "operation";
+  private static final String OPERATION_DETAILS_PROPERTY = "operation_details";
+
 
   private static final String BLUEPRINT_HOST_GROUPS_PROPERTY = 
"recommendations/blueprint/host_groups";
   private static final String BINDING_HOST_GROUPS_PROPERTY = 
"recommendations/blueprint_cluster_binding/host_groups";
@@ -74,6 +77,8 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
   private static final String CONFIG_GROUPS_HOSTS_PROPERTY = "hosts";
 
   protected static StackAdvisorHelper saHelper;
+  protected static final String USER_CONTEXT_OPERATION_PROPERTY = 
"user_context/operation";
+  protected static final String USER_CONTEXT_OPERATION_DETAILS_PROPERTY = 
"user_context/operation_details";
 
   @Inject
   public static void init(StackAdvisorHelper instance) {
@@ -108,6 +113,7 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
       Map<String, Set<String>> componentHostsMap = 
calculateComponentHostsMap(hgComponentsMap,
           hgHostsMap);
       Map<String, Map<String, Map<String, String>>> configurations = 
calculateConfigurations(request);
+      Map<String, String> userContext = readUserContext(request);
 
       List<ChangedConfigInfo> changedConfigurations =
         requestType == StackAdvisorRequestType.CONFIGURATION_DEPENDENCIES ?
@@ -121,9 +127,10 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
         withComponentHostsMap(componentHostsMap).
         withConfigurations(configurations).
         withConfigGroups(configGroups).
-        withChangedConfigurations(changedConfigurations).build();
+        withChangedConfigurations(changedConfigurations).
+        withUserContext(userContext).build();
     } catch (Exception e) {
-      LOG.warn("Error occured during preparation of stack advisor request", e);
+      LOG.warn("Error occurred during preparation of stack advisor request", 
e);
       Response response = Response.status(Status.BAD_REQUEST)
           .entity(String.format("Request body is not correct, error: %s", 
e.getMessage())).build();
       // TODO: Hosts and services must not be empty
@@ -239,6 +246,26 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
     return configGroups;
   }
 
+  /**
+   * Parse the user contex for the call. Typical structure
+   * { "operation" : "createCluster" }
+   * { "operation" : "addService", "services" : "Atlas,Slider" }
+   * @param request
+   * @return
+   */
+  protected Map<String, String> readUserContext(Request request) {
+    HashMap<String, String> userContext = new HashMap<>();
+    if (null != getRequestProperty(request, USER_CONTEXT_OPERATION_PROPERTY)) {
+      userContext.put(OPERATION_PROPERTY,
+                      (String) getRequestProperty(request, 
USER_CONTEXT_OPERATION_PROPERTY));
+    }
+    if (null != getRequestProperty(request, 
USER_CONTEXT_OPERATION_DETAILS_PROPERTY)) {
+      userContext.put(OPERATION_DETAILS_PROPERTY,
+                      (String) getRequestProperty(request, 
USER_CONTEXT_OPERATION_DETAILS_PROPERTY));
+    }
+    return userContext;
+  }
+
   protected static final String CONFIGURATIONS_PROPERTY_ID = 
"recommendations/blueprint/configurations/";
 
   protected Map<String, Map<String, Map<String, String>>> 
calculateConfigurations(Request request) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
index 31056b4..4b33bcd 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
@@ -17,11 +17,6 @@
  */
 package org.apache.ambari.server.upgrade;
 
-import javax.persistence.EntityManager;
-import javax.xml.bind.JAXBException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
 import java.io.File;
 import java.io.FileReader;
 import java.io.FilenameFilter;
@@ -47,6 +42,11 @@ import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.persistence.EntityManager;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.Configuration;

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/resources/properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/properties.json 
b/ambari-server/src/main/resources/properties.json
index b7e0988..698b6c5 100644
--- a/ambari-server/src/main/resources/properties.json
+++ b/ambari-server/src/main/resources/properties.json
@@ -405,6 +405,9 @@
         "hosts",
         "services",
         "changed_configurations",
+        "user_context",
+        "user_context/operation",
+        "user_context/operation_details",
         "recommendations",
         "recommendations/blueprint",
         "recommendations/blueprint/configurations",

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/resources/scripts/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/scripts/stack_advisor.py 
b/ambari-server/src/main/resources/scripts/stack_advisor.py
index 50f2b59..b728a8a 100755
--- a/ambari-server/src/main/resources/scripts/stack_advisor.py
+++ b/ambari-server/src/main/resources/scripts/stack_advisor.py
@@ -42,6 +42,10 @@ STACK_ADVISOR_DEFAULT_IMPL_CLASS = 'DefaultStackAdvisor'
 STACK_ADVISOR_IMPL_PATH_TEMPLATE = os.path.join(SCRIPT_DIRECTORY, 
'./../stacks/{0}/{1}/services/stack_advisor.py')
 STACK_ADVISOR_IMPL_CLASS_TEMPLATE = '{0}{1}StackAdvisor'
 
+ADVISOR_CONTEXT = "advisor_context"
+CALL_TYPE = "call_type"
+
+
 
 class StackAdvisorException(Exception):
   pass
@@ -100,23 +104,23 @@ def main(argv=None):
   hosts = stackAdvisor.filterHostMounts(hosts, services)
 
   if action == RECOMMEND_COMPONENT_LAYOUT_ACTION:
-    services['context'] = {'call_type': 'recommendComponentLayout'}
+    services[ADVISOR_CONTEXT] = {CALL_TYPE : 'recommendComponentLayout'}
     result = stackAdvisor.recommendComponentLayout(services, hosts)
     result_file = os.path.join(actionDir, "component-layout.json")
   elif action == VALIDATE_COMPONENT_LAYOUT_ACTION:
-    services['context'] = {'call_type': 'validateComponentLayout'}
+    services[ADVISOR_CONTEXT] = {CALL_TYPE : 'validateComponentLayout'}
     result = stackAdvisor.validateComponentLayout(services, hosts)
     result_file = os.path.join(actionDir, "component-layout-validation.json")
   elif action == RECOMMEND_CONFIGURATIONS:
-    services['context'] = {'call_type': 'recommendConfigurations'}
+    services[ADVISOR_CONTEXT] = {CALL_TYPE : 'recommendConfigurations'}
     result = stackAdvisor.recommendConfigurations(services, hosts)
     result_file = os.path.join(actionDir, "configurations.json")
   elif action == RECOMMEND_CONFIGURATION_DEPENDENCIES:
-    services['context'] = {'call_type': 'recommendConfigurationDependencies'}
+    services[ADVISOR_CONTEXT] = {CALL_TYPE : 
'recommendConfigurationDependencies'}
     result = stackAdvisor.recommendConfigurationDependencies(services, hosts)
     result_file = os.path.join(actionDir, "configurations.json")
   else:  # action == VALIDATE_CONFIGURATIONS
-    services['context'] = {'call_type': 'validateConfigurations'}
+    services[ADVISOR_CONTEXT] = {CALL_TYPE: 'validateConfigurations'}
     result = stackAdvisor.validateConfigurations(services, hosts)
     result_file = os.path.join(actionDir, "configurations-validation.json")
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
index fc989fe..6c904ae 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
@@ -908,9 +908,16 @@ class HDP206StackAdvisor(DefaultStackAdvisor):
     suggestedMinContainerRam = 1024   # new smaller value for YARN min 
container
     callContext = getCallContext(services)
 
+    operation = getUserOperationContext(services, 
DefaultStackAdvisor.OPERATION)
+    if operation:
+      Logger.info("user operation context : " + str(operation))
+
     if services:  # its never None but some unit tests pass it as None
-      if None != getOldValue(self, services, "yarn-site", 
"yarn.scheduler.minimum-allocation-mb") or \
-              'recommendConfigurations' != callContext:
+      # If min container value is changed (user is changing it)
+      # if its a validation call - just used what ever value is set
+      # If its not a cluster create or add yarn service (TBD)
+      if (getOldValue(self, services, "yarn-site", 
"yarn.scheduler.minimum-allocation-mb") or \
+              'recommendConfigurations' != callContext) and operation != 
DefaultStackAdvisor.CLUSTER_CREATE_OPERATION:
         '''yarn.scheduler.minimum-allocation-mb has changed - then pick this 
value up'''
         if "yarn-site" in services["configurations"] and \
                 "yarn.scheduler.minimum-allocation-mb" in 
services["configurations"]["yarn-site"]["properties"] and \
@@ -1712,9 +1719,9 @@ class HDP206StackAdvisor(DefaultStackAdvisor):
 
 def getCallContext(services):
   if services:
-    if 'context' in services:
-      Logger.info("context : " + str (services['context']))
-      return services['context']['call_type']
+    if DefaultStackAdvisor.ADVISOR_CONTEXT in services:
+      Logger.info("call type context : " + 
str(services[DefaultStackAdvisor.ADVISOR_CONTEXT]))
+      return 
services[DefaultStackAdvisor.ADVISOR_CONTEXT][DefaultStackAdvisor.CALL_TYPE]
   return ""
 
 
@@ -1727,6 +1734,14 @@ def getOldValue(self, services, configType, 
propertyName):
           return changedConfig["old_value"]
   return None
 
+def getUserOperationContext(services, contextName):
+  if services:
+    if 'user-context' in services.keys():
+      userContext = services["user-context"]
+      if contextName in userContext:
+        return userContext[contextName]
+  return None
+
 # Validation helper methods
 def getSiteProperties(configurations, siteName):
   siteConfig = configurations.get(siteName)

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/main/resources/stacks/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/stack_advisor.py
index 6a92934..ad3b510 100644
--- a/ambari-server/src/main/resources/stacks/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/stack_advisor.py
@@ -309,6 +309,17 @@ class StackAdvisor(object):
 
 
 class DefaultStackAdvisor(StackAdvisor):
+
+  CLUSTER_CREATE_OPERATION = "ClusterCreate"
+  ADD_SERVICE_OPERATION = "AddService"
+  EDIT_CONFIG_OPERATION = "EditConfig"
+  RECOMMEND_ATTRIBUTE_OPERATION = "RecommendAttribute"
+  OPERATION = "operation"
+  OPERATION_DETAILS = "operation_details"
+
+  ADVISOR_CONTEXT = "advisor_context"
+  CALL_TYPE = "call_type"
+
   """
   Default stack advisor implementation.
   

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
index 392ff02..0ac186d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
@@ -19,6 +19,8 @@
 package org.apache.ambari.server.controller.internal;
 
 import static 
org.apache.ambari.server.controller.internal.StackAdvisorResourceProvider.CONFIGURATIONS_PROPERTY_ID;
+import static 
org.apache.ambari.server.controller.internal.StackAdvisorResourceProvider.USER_CONTEXT_OPERATION_DETAILS_PROPERTY;
+import static 
org.apache.ambari.server.controller.internal.StackAdvisorResourceProvider.USER_CONTEXT_OPERATION_PROPERTY;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -76,6 +78,36 @@ public class StackAdvisorResourceProviderTest {
   }
 
   @Test
+  public void testReadUserContext() throws Exception {
+
+    Map<Resource.Type, String> keyPropertyIds = Collections.emptyMap();
+    Set<String> propertyIds = Collections.emptySet();
+    AmbariManagementController ambariManagementController = 
mock(AmbariManagementController.class);
+    RecommendationResourceProvider provider = new 
RecommendationResourceProvider(propertyIds,
+                                                                               
  keyPropertyIds, ambariManagementController);
+
+    Request request = mock(Request.class);
+    Set<Map<String, Object>> propertiesSet = new HashSet<Map<String, 
Object>>();
+    Map<String, Object> propertiesMap = new HashMap<String, Object>();
+    propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + 
"site/properties/string_prop", "string");
+    List<Object> array = new ArrayList<Object>();
+    array.add("array1");
+    array.add("array2");
+    propertiesMap.put(USER_CONTEXT_OPERATION_PROPERTY, "op1");
+    propertiesMap.put(USER_CONTEXT_OPERATION_DETAILS_PROPERTY, "op_det");
+    propertiesSet.add(propertiesMap);
+
+    doReturn(propertiesSet).when(request).getProperties();
+
+    Map<String, String> userContext = provider.readUserContext(request);
+
+    assertNotNull(userContext);
+    assertEquals(2, userContext.size());
+    assertEquals("op1", userContext.get("operation"));
+    assertEquals("op_det", userContext.get("operation_details"));
+  }
+
+  @Test
   public void testCalculateConfigurationsWithNullPropertyValues() throws 
Exception {
 
     Map<Resource.Type, String> keyPropertyIds = Collections.emptyMap();

http://git-wip-us.apache.org/repos/asf/ambari/blob/37e0d910/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py 
b/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py
index 2a97b75..ff25512 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py
@@ -526,7 +526,7 @@ class TestHDP206StackAdvisor(TestCase):
                   }
                 },
                 "changed-configurations": [],
-                "context": {'call_type': 'validateConfigurations'}
+                "advisor_context": {'call_type': 'validateConfigurations'}
     }
     result = self.stackAdvisor.getConfigurationClusterSummary(servicesList, 
hosts, components, services)
     self.assertEquals(result, expected)
@@ -571,7 +571,7 @@ class TestHDP206StackAdvisor(TestCase):
                   }
                 },
                 "changed-configurations": [],
-                "context": {'call_type': 'validateConfigurations'}
+                "advisor_context": {'call_type': 'validateConfigurations'}
     }
 
     expected_2048 = {
@@ -636,7 +636,7 @@ class TestHDP206StackAdvisor(TestCase):
                   }
                 },
                 "changed-configurations": [],
-                "context": {'call_type': 'recommendConfigurationDependencies'}
+                "advisor_context": {'call_type': 
'recommendConfigurationDependencies'}
     }
 
     expected_2048 = {
@@ -701,7 +701,7 @@ class TestHDP206StackAdvisor(TestCase):
                   }
                 },
                 "changed-configurations": [],
-                "context": {'call_type': 'recommendConfigurationDependencies'}
+                "advisor_context": {'call_type': 
'recommendConfigurationDependencies'}
     }
 
     expected_4096 = {

Reply via email to