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) {
