Repository: ambari Updated Branches: refs/heads/trunk e0b9e20b2 -> 694435a30
AMBARI-17560. Fix Blueprint component dependency validation messages (magyari_sandor) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/694435a3 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/694435a3 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/694435a3 Branch: refs/heads/trunk Commit: 694435a30243763b2394b28a7a5893a175d753fa Parents: e0b9e20 Author: Sandor Magyari <[email protected]> Authored: Tue Jul 12 11:43:36 2016 +0200 Committer: Sandor Magyari <[email protected]> Committed: Tue Jul 12 15:45:08 2016 +0200 ---------------------------------------------------------------------- .../server/topology/BlueprintValidatorImpl.java | 3 ++- .../topology/BlueprintValidatorImplTest.java | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/694435a3/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java index de5e2b3..45a8c5c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java @@ -245,7 +245,8 @@ public class BlueprintValidatorImpl implements BlueprintValidator { } // dependent components from the stack definitions are only added if related services are explicitly added to the blueprint! - if (!blueprint.getServices().contains(dependency.getServiceName())) { + boolean isClientDependency = stack.getComponentInfo(dependency.getComponentName()).isClient(); + if (isClientDependency && !blueprint.getServices().contains(dependency.getServiceName())) { LOGGER.debug("The service [{}] for component [{}] is missing from the blueprint [{}], skipping dependency", dependency.getServiceName(), dependency.getComponentName(), blueprint.getName()); continue; http://git-wip-us.apache.org/repos/asf/ambari/blob/694435a3/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java index b85d454..ea6bee3 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java @@ -28,6 +28,7 @@ import java.util.Map; import org.apache.ambari.server.controller.internal.Stack; import org.apache.ambari.server.state.AutoDeployInfo; +import org.apache.ambari.server.state.ComponentInfo; import org.apache.ambari.server.state.DependencyInfo; import org.easymock.EasyMockRule; import org.easymock.Mock; @@ -45,7 +46,7 @@ import static org.easymock.EasyMock.verify; /** * BlueprintValidatorImpl unit tests. */ -public class BlueprintValidatorImplTest{ +public class BlueprintValidatorImplTest { private final Map<String, HostGroup> hostGroups = new LinkedHashMap<>(); @Rule @@ -66,6 +67,9 @@ public class BlueprintValidatorImplTest{ @Mock(type = MockType.NICE) private DependencyInfo dependency1; + @Mock(type = MockType.NICE) + private ComponentInfo dependencyComponentInfo; + private final Collection<String> group1Components = new ArrayList<String>(); private final Collection<String> group2Components = new ArrayList<String>(); private final Collection<String> services = new ArrayList<String>(); @@ -188,10 +192,13 @@ public class BlueprintValidatorImplTest{ expect(dependency1.getServiceName()).andReturn("service1").anyTimes(); expect(dependency1.getName()).andReturn("dependency1").anyTimes(); + expect(dependencyComponentInfo.isClient()).andReturn(true).anyTimes(); + expect(stack.getComponentInfo("component3")).andReturn(dependencyComponentInfo).anyTimes(); + expect(group1.addComponent("component1")).andReturn(true).once(); expect(group1.addComponent("component3")).andReturn(true).once(); - replay(blueprint, stack, group1, group2, dependency1); + replay(blueprint, stack, group1, group2, dependency1, dependencyComponentInfo); BlueprintValidator validator = new BlueprintValidatorImpl(blueprint); validator.validateTopology(); @@ -277,7 +284,11 @@ public class BlueprintValidatorImplTest{ expect(dependency1.getServiceName()).andReturn("service-d").anyTimes(); expect(dependency1.getName()).andReturn("dependency-1").anyTimes(); - replay(blueprint, stack, group1, group2, dependency1); + + expect(dependencyComponentInfo.isClient()).andReturn(true).anyTimes(); + expect(stack.getComponentInfo("component-d")).andReturn(dependencyComponentInfo).anyTimes(); + + replay(blueprint, stack, group1, group2, dependency1, dependencyComponentInfo); // WHEN BlueprintValidator validator = new BlueprintValidatorImpl(blueprint);
