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

Reply via email to