Repository: ambari Updated Branches: refs/heads/trunk cf0877cea -> 747e5ba23
AMBARI-11224 - Views: attempt to save cluster-related view fails w/o default value (tbeerbower) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/747e5ba2 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/747e5ba2 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/747e5ba2 Branch: refs/heads/trunk Commit: 747e5ba2398e16022ddf2d6af3bb7a2f67f9183a Parents: cf0877c Author: tbeerbower <tbeerbo...@hortonworks.com> Authored: Mon May 18 17:20:09 2015 -0400 Committer: tbeerbower <tbeerbo...@hortonworks.com> Committed: Mon May 18 17:20:19 2015 -0400 ---------------------------------------------------------------------- .../server/orm/entities/ViewInstanceEntity.java | 6 +++- .../orm/entities/ViewInstanceEntityTest.java | 30 ++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/747e5ba2/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java index 6855b56..dc3876c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java @@ -778,7 +778,11 @@ public class ViewInstanceEntity implements ViewInstanceDefinition { Set<String> requiredParameterNames = new HashSet<String>(); for (ViewParameterEntity parameter : viewEntity.getParameters()) { if (parameter.isRequired()) { - requiredParameterNames.add(parameter.getName()); + // Don't enforce 'required' validation for cluster config parameters since + // the value will be obtained through cluster association, not user input + if (parameter.getClusterConfig()== null) { + requiredParameterNames.add(parameter.getName()); + } } } Map<String, String> propertyMap = getPropertyMap(); http://git-wip-us.apache.org/repos/asf/ambari/blob/747e5ba2/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java index 036fa03..6110a66 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java @@ -129,6 +129,21 @@ public class ViewInstanceEntityTest { " </instance>\n" + "</view>"; + private static String XML_CONFIG_INSTANCE = "<view>\n" + + " <name>MY_VIEW</name>\n" + + " <label>My View!</label>\n" + + " <version>1.0.0</version>\n" + + " <parameter>\n" + + " <name>p1</name>\n" + + " <cluster-config>hadoop-env/hdfs_user</cluster-config>\n" + + " <required>true</required>\n" + + " </parameter>\n" + + " <instance>\n" + + " <name>INSTANCE1</name>\n" + + " <label>My Instance 1!</label>\n" + + " </instance>\n" + + "</view>"; + @Test public void testGetViewEntity() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); @@ -414,6 +429,21 @@ public class ViewInstanceEntityTest { } @Test + public void testValidateWithClusterConfig() throws Exception { + + Properties properties = new Properties(); + properties.put("p1", "v1"); + + Configuration ambariConfig = new Configuration(properties); + + ViewConfig config = ViewConfigTest.getConfig(XML_CONFIG_INSTANCE); + ViewEntity viewEntity = ViewRegistryTest.getViewEntity(config, ambariConfig, getClass().getClassLoader(), ""); + ViewInstanceEntity viewInstanceEntity = ViewRegistryTest.getViewInstanceEntity(viewEntity, config.getInstances().get(0)); + + viewInstanceEntity.validate(viewEntity, Validator.ValidationContext.PRE_CREATE); + } + + @Test public void testValidateWithValidator() throws Exception { Properties properties = new Properties();