Repository: ambari
Updated Branches:
  refs/heads/trunk fb03976ad -> 08e5eef44


AMBARI-11316. Prerequisite config checks should provide detail about merged 
values (ncole)


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

Branch: refs/heads/trunk
Commit: 08e5eef44d34935a5551af2beb7ea4e9cd8372f1
Parents: fb03976
Author: Nate Cole <[email protected]>
Authored: Thu May 21 16:09:26 2015 -0400
Committer: Nate Cole <[email protected]>
Committed: Thu May 21 19:53:37 2015 -0400

----------------------------------------------------------------------
 .../server/checks/ConfigurationMergeCheck.java  | 30 +++++++++++++++++++-
 .../PreUpgradeCheckResourceProvider.java        |  3 ++
 .../server/state/stack/PrerequisiteCheck.java   |  6 ++++
 .../checks/ConfigurationMergeCheckTest.java     | 21 ++++++++++----
 4 files changed, 54 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/08e5eef4/ambari-server/src/main/java/org/apache/ambari/server/checks/ConfigurationMergeCheck.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/checks/ConfigurationMergeCheck.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/checks/ConfigurationMergeCheck.java
index 095ecd5..c648434 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/checks/ConfigurationMergeCheck.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/checks/ConfigurationMergeCheck.java
@@ -100,12 +100,31 @@ public class ConfigurationMergeCheck extends 
AbstractCheckDescriptor {
         ThreeWayValue twv = configEntry.getValue();
         if (null == twv.oldStackValue) { // !!! did not exist and in the map 
means changed
           failedTypes.add(entry.getKey());
+
           prerequisiteCheck.getFailedOn().add(entry.getKey() + "/" + 
configEntry.getKey());
+
+          MergeDetail md = new MergeDetail();
+          md.type = entry.getKey();
+          md.property = configEntry.getKey();
+          md.current = twv.savedValue;
+          md.new_stack_value = twv.newStackValue;
+          md.result_value = md.current;
+          prerequisiteCheck.getFailedDetail().add(md);
+
         } else if (!twv.oldStackValue.equals(twv.savedValue)) {  // !!! value 
customized
           if (null == twv.newStackValue || // !!! not in new stack
               !twv.oldStackValue.equals(twv.newStackValue)) { // !!! or the 
default value changed
             failedTypes.add(entry.getKey());
+
             prerequisiteCheck.getFailedOn().add(entry.getKey() + "/" + 
configEntry.getKey());
+
+            MergeDetail md = new MergeDetail();
+            md.type = entry.getKey();
+            md.property = configEntry.getKey();
+            md.current = twv.savedValue;
+            md.new_stack_value = twv.newStackValue;
+            md.result_value = md.current;
+            prerequisiteCheck.getFailedDetail().add(md);
           }
         }
       }
@@ -123,6 +142,15 @@ public class ConfigurationMergeCheck extends 
AbstractCheckDescriptor {
     }
   }
 
-
+  /**
+   * Used to represent specific detail about merge failures.
+   */
+  public static class MergeDetail {
+    public String type = null;
+    public String property = null;
+    public String current = null;
+    public String new_stack_value = null;
+    public String result_value = null;
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/08e5eef4/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
index 207bf89..66a8db3 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
@@ -61,6 +61,7 @@ public class PreUpgradeCheckResourceProvider extends 
ReadOnlyResourceProvider {
   public static final String UPGRADE_CHECK_STATUS_PROPERTY_ID             = 
PropertyHelper.getPropertyId("UpgradeChecks", "status");
   public static final String UPGRADE_CHECK_REASON_PROPERTY_ID             = 
PropertyHelper.getPropertyId("UpgradeChecks", "reason");
   public static final String UPGRADE_CHECK_FAILED_ON_PROPERTY_ID          = 
PropertyHelper.getPropertyId("UpgradeChecks", "failed_on");
+  public static final String UPGRADE_CHECK_FAILED_DETAIL_PROPERTY_ID      = 
PropertyHelper.getPropertyId("UpgradeChecks", "failed_detail");
   public static final String UPGRADE_CHECK_CHECK_TYPE_PROPERTY_ID         = 
PropertyHelper.getPropertyId("UpgradeChecks", "check_type");
   public static final String UPGRADE_CHECK_CLUSTER_NAME_PROPERTY_ID       = 
PropertyHelper.getPropertyId("UpgradeChecks", "cluster_name");
   public static final String UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID = 
PropertyHelper.getPropertyId("UpgradeChecks", "repository_version");
@@ -82,6 +83,7 @@ public class PreUpgradeCheckResourceProvider extends 
ReadOnlyResourceProvider {
       UPGRADE_CHECK_STATUS_PROPERTY_ID,
       UPGRADE_CHECK_REASON_PROPERTY_ID,
       UPGRADE_CHECK_FAILED_ON_PROPERTY_ID,
+      UPGRADE_CHECK_FAILED_DETAIL_PROPERTY_ID,
       UPGRADE_CHECK_CHECK_TYPE_PROPERTY_ID,
       UPGRADE_CHECK_CLUSTER_NAME_PROPERTY_ID,
       UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID);
@@ -144,6 +146,7 @@ public class PreUpgradeCheckResourceProvider extends 
ReadOnlyResourceProvider {
         setResourceProperty(resource, UPGRADE_CHECK_STATUS_PROPERTY_ID, 
prerequisiteCheck.getStatus(), requestedIds);
         setResourceProperty(resource, UPGRADE_CHECK_REASON_PROPERTY_ID, 
prerequisiteCheck.getFailReason(), requestedIds);
         setResourceProperty(resource, UPGRADE_CHECK_FAILED_ON_PROPERTY_ID, 
prerequisiteCheck.getFailedOn(), requestedIds);
+        setResourceProperty(resource, 
UPGRADE_CHECK_FAILED_DETAIL_PROPERTY_ID,prerequisiteCheck.getFailedDetail(), 
requestedIds);
         setResourceProperty(resource, UPGRADE_CHECK_CHECK_TYPE_PROPERTY_ID, 
prerequisiteCheck.getType(), requestedIds);
         setResourceProperty(resource, UPGRADE_CHECK_CLUSTER_NAME_PROPERTY_ID, 
prerequisiteCheck.getClusterName(), requestedIds);
         if (upgradeCheckRequest.getRepositoryVersion() != null) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/08e5eef4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/PrerequisiteCheck.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/PrerequisiteCheck.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/PrerequisiteCheck.java
index a538dd9..49efd4d 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/PrerequisiteCheck.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/PrerequisiteCheck.java
@@ -32,6 +32,7 @@ public class PrerequisiteCheck {
   private PrereqCheckStatus m_status = PrereqCheckStatus.PASS;
   private String m_failReason = "";
   private List<String> m_failedOn = new ArrayList<String>();
+  private List<Object> m_failedDetail = new ArrayList<Object>();
 
   public PrerequisiteCheck(CheckDescription description, String clusterName) {
     m_description = description;
@@ -66,6 +67,11 @@ public class PrerequisiteCheck {
     return m_failedOn;
   }
 
+  public List<Object> getFailedDetail() {
+    return m_failedDetail;
+  }
+
+
   public void setFailedOn(List<String> failedOn) {
     m_failedOn = failedOn;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/08e5eef4/ambari-server/src/test/java/org/apache/ambari/server/checks/ConfigurationMergeCheckTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/checks/ConfigurationMergeCheckTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/checks/ConfigurationMergeCheckTest.java
index 71ea30c..d9f70e2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/checks/ConfigurationMergeCheckTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/checks/ConfigurationMergeCheckTest.java
@@ -164,12 +164,12 @@ public class ConfigurationMergeCheckTest {
     PropertyInfo pi10 = new PropertyInfo();
     pi10.setFilename(CONFIG_FILE);
     pi10.setName(CONFIG_PROPERTY);
-    pi10.setValue("1024m");
+    pi10.setValue("1024");
 
     PropertyInfo pi11 = new PropertyInfo();
     pi11.setFilename(CONFIG_FILE);
     pi11.setName(CONFIG_PROPERTY);
-    pi11.setValue("1024m");
+    pi11.setValue("1024");
 
     expect(ami.getServiceProperties("HDP", "1.0", "HDFS")).andReturn(
         Collections.singleton(pi10)).anyTimes();
@@ -190,17 +190,25 @@ public class ConfigurationMergeCheckTest {
     Assert.assertEquals("Expect no warnings", 0, check.getFailedOn().size());
 
     check = new PrerequisiteCheck(null, "cluster");
-    pi11.setValue("1026m");
+    m_configMap.put(CONFIG_PROPERTY, "1025m");
+    pi11.setValue("1026");
     cmc.perform(check, request);
     Assert.assertEquals("Expect warning when user-set has changed from new 
default",
         1, check.getFailedOn().size());
+    Assert.assertEquals(1, check.getFailedDetail().size());
+    ConfigurationMergeCheck.MergeDetail detail = 
(ConfigurationMergeCheck.MergeDetail) check.getFailedDetail().get(0);
+    Assert.assertEquals("1025m", detail.current);
+    Assert.assertEquals("1026m", detail.new_stack_value);
+    Assert.assertEquals("1025m", detail.result_value);
+    Assert.assertEquals(CONFIG_TYPE, detail.type);
+    Assert.assertEquals(CONFIG_PROPERTY, detail.property);
 
     check = new PrerequisiteCheck(null, "cluster");
     pi11.setName(CONFIG_PROPERTY + ".foo");
     cmc.perform(check, request);
     Assert.assertEquals("Expect no warning when user new stack is empty",
         0, check.getFailedOn().size());
-
+    Assert.assertEquals(0, check.getFailedDetail().size());
 
     check = new PrerequisiteCheck(null, "cluster");
     pi11.setName(CONFIG_PROPERTY);
@@ -208,7 +216,10 @@ public class ConfigurationMergeCheckTest {
     cmc.perform(check, request);
     Assert.assertEquals("Expect warning when user old stack is empty, and 
value changed",
         1, check.getFailedOn().size());
-
+    Assert.assertEquals(1, check.getFailedDetail().size());
+    detail = (ConfigurationMergeCheck.MergeDetail) 
check.getFailedDetail().get(0);
+    Assert.assertEquals("1025m", detail.current);
+    Assert.assertEquals("1026m", detail.new_stack_value);
   }
 
   private RepositoryVersionEntity createFor(final String stackVersion) {

Reply via email to