Repository: ambari Updated Branches: refs/heads/branch-1.7.0 08c03e373 -> 71d2acc9f
AMBARI-8069 - Views: 400 error on redeploy (tbeerbower) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/71d2acc9 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/71d2acc9 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/71d2acc9 Branch: refs/heads/branch-1.7.0 Commit: 71d2acc9fa41f5bdb40f28978e113e5fabf81b2a Parents: 08c03e3 Author: tbeerbower <tbeerbo...@hortonworks.com> Authored: Fri Oct 31 15:59:27 2014 -0400 Committer: tbeerbower <tbeerbo...@hortonworks.com> Committed: Fri Oct 31 15:59:51 2014 -0400 ---------------------------------------------------------------------- .../api/resources/ResourceInstanceFactoryImpl.java | 11 +++++++---- .../org/apache/ambari/server/view/ViewRegistry.java | 8 +++++--- .../apache/ambari/server/view/ViewRegistryTest.java | 13 +++++++++++-- 3 files changed, 23 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java index b53147b..d2d9543 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java @@ -19,6 +19,7 @@ package org.apache.ambari.server.api.resources; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -223,10 +224,12 @@ public class ResourceInstanceFactoryImpl implements ResourceInstanceFactory { break; case ViewInstance: - Set<SubResourceDefinition> subResourceDefinitions = - ViewRegistry.getInstance().getSubResourceDefinitions( - mapIds.get(Resource.Type.View), - mapIds.get(Resource.Type.ViewVersion)); + String viewName = mapIds.get(Resource.Type.View); + String version = mapIds.get(Resource.Type.ViewVersion); + + Set<SubResourceDefinition> subResourceDefinitions = (viewName == null || version == null) ? + Collections.<SubResourceDefinition>emptySet() : + ViewRegistry.getInstance().getSubResourceDefinitions(viewName, version); resourceDefinition = new ViewInstanceResourceDefinition(subResourceDefinitions); break; http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java index f2173ac..6581dfe 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java @@ -414,11 +414,13 @@ public class ViewRegistry { subResourceDefinitions = new HashSet<SubResourceDefinition>(); ViewEntity definition = getDefinition(viewName); if (definition != null) { - for (Resource.Type type : definition.getViewResourceTypes()) { - subResourceDefinitions.add(new SubResourceDefinition(type)); + if (definition.isDeployed()) { + for (Resource.Type type : definition.getViewResourceTypes()) { + subResourceDefinitions.add(new SubResourceDefinition(type)); + } + subResourceDefinitionsMap.put(viewName, subResourceDefinitions); } } - subResourceDefinitionsMap.put(viewName, subResourceDefinitions); } return subResourceDefinitions; } http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java index 1bd47f3..bcbcfad 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java @@ -614,6 +614,13 @@ public class ViewRegistryTest { ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewRegistry registry = ViewRegistry.getInstance(); + viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYING); + + registry.addDefinition(viewDefinition); + Set<SubResourceDefinition> subResourceDefinitions = registry.getSubResourceDefinitions("MY_VIEW", "1.0.0"); + + Assert.assertTrue(subResourceDefinitions.isEmpty()); + ResourceConfig config = ResourceConfigTest.getResourceConfigs().get(0); Resource.Type type1 = new Resource.Type("myType"); @@ -621,8 +628,10 @@ public class ViewRegistryTest { viewDefinition.addResourceProvider(type1, provider1); viewDefinition.addResourceConfiguration(type1, config); - registry.addDefinition(viewDefinition); - Set<SubResourceDefinition> subResourceDefinitions = registry.getSubResourceDefinitions("MY_VIEW", "1.0.0"); + + viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED); + + subResourceDefinitions = registry.getSubResourceDefinitions("MY_VIEW", "1.0.0"); Assert.assertEquals(1, subResourceDefinitions.size()); Assert.assertEquals("myType", subResourceDefinitions.iterator().next().getType().name());