You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2017/11/20 18:56:51 UTC
ambari git commit: AMBARI-22480. Validate blueprint does not allow
lzo enable without setup with license agreement. (Myroslav Papirkovskyy via
swagle)
Repository: ambari
Updated Branches:
refs/heads/branch-feature-AMBARI-22457 096fedbd3 -> 1fce5650b
AMBARI-22480. Validate blueprint does not allow lzo enable without setup with license agreement. (Myroslav Papirkovskyy via swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1fce5650
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1fce5650
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1fce5650
Branch: refs/heads/branch-feature-AMBARI-22457
Commit: 1fce5650ba92f68a49e8750369aea8e9d3dcf6bf
Parents: 096fedb
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Mon Nov 20 10:56:04 2017 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Mon Nov 20 10:56:04 2017 -0800
----------------------------------------------------------------------
.../internal/BlueprintResourceProvider.java | 36 +++++-----
.../ambari/server/topology/Blueprint.java | 40 ++++++------
.../ambari/server/topology/BlueprintImpl.java | 17 ++---
.../server/topology/BlueprintValidator.java | 4 +-
.../server/topology/BlueprintValidatorImpl.java | 21 +++++-
.../server/topology/BlueprintImplTest.java | 69 ++++++++++++++++++--
.../topology/BlueprintValidatorImplTest.java | 18 +++--
7 files changed, 143 insertions(+), 62 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
index 1c127c0..b313c8b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
@@ -18,11 +18,17 @@
package org.apache.ambari.server.controller.internal;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import com.google.gson.Gson;
-import org.apache.ambari.server.orm.entities.BlueprintSettingEntity;
-import org.apache.ambari.server.utils.SecretReference;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -41,28 +47,24 @@ import org.apache.ambari.server.orm.dao.BlueprintDAO;
import org.apache.ambari.server.orm.entities.BlueprintConfigEntity;
import org.apache.ambari.server.orm.entities.BlueprintConfiguration;
import org.apache.ambari.server.orm.entities.BlueprintEntity;
+import org.apache.ambari.server.orm.entities.BlueprintSettingEntity;
import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
import org.apache.ambari.server.orm.entities.HostGroupEntity;
import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.stack.NoSuchStackException;
-import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.SecurityType;
+import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.topology.Blueprint;
import org.apache.ambari.server.topology.BlueprintFactory;
+import org.apache.ambari.server.topology.GPLLicenseNotAcceptedException;
import org.apache.ambari.server.topology.InvalidTopologyException;
import org.apache.ambari.server.topology.SecurityConfiguration;
import org.apache.ambari.server.topology.SecurityConfigurationFactory;
+import org.apache.ambari.server.utils.SecretReference;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
+import com.google.gson.Gson;
/**
@@ -514,7 +516,7 @@ public class BlueprintResourceProvider extends AbstractControllerResourceProvide
try {
blueprint.validateRequiredProperties();
- } catch (InvalidTopologyException e) {
+ } catch (InvalidTopologyException | GPLLicenseNotAcceptedException e) {
throw new IllegalArgumentException("Blueprint configuration validation failed: " + e.getMessage(), e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
index c9dc728..8cacd22 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
@@ -18,12 +18,12 @@
package org.apache.ambari.server.topology;
-import org.apache.ambari.server.controller.internal.Stack;
-import org.apache.ambari.server.orm.entities.BlueprintEntity;
-
import java.util.Collection;
import java.util.Map;
+import org.apache.ambari.server.controller.internal.Stack;
+import org.apache.ambari.server.orm.entities.BlueprintEntity;
+
/**
* Blueprint representation.
*/
@@ -34,13 +34,13 @@ public interface Blueprint {
*
* @return blueprint name
*/
- public String getName();
+ String getName();
/**
* Get the hot groups contained in the blueprint.
* @return map of host group name to host group
*/
- public Map<String, HostGroup> getHostGroups();
+ Map<String, HostGroup> getHostGroups();
/**
* Get a hostgroup specified by name.
@@ -49,7 +49,7 @@ public interface Blueprint {
*
* @return the host group with the given name or null
*/
- public HostGroup getHostGroup(String name);
+ HostGroup getHostGroup(String name);
/**
* Get the Blueprint cluster scoped configuration.
@@ -59,7 +59,7 @@ public interface Blueprint {
*
* @return blueprint cluster scoped configuration
*/
- public Configuration getConfiguration();
+ Configuration getConfiguration();
/**
* Get the Blueprint cluster scoped setting.
@@ -68,14 +68,14 @@ public interface Blueprint {
*
* @return blueprint cluster scoped setting
*/
- public Setting getSetting();
+ Setting getSetting();
/**
* Get all of the services represented in the blueprint.
*
* @return collection of all represented service names
*/
- public Collection<String> getServices();
+ Collection<String> getServices();
/**
* Get the components that are included in the blueprint for the specified service.
@@ -84,7 +84,7 @@ public interface Blueprint {
*
* @return collection of component names for the service. Will not return null.
*/
- public Collection<String> getComponents(String service);
+ Collection<String> getComponents(String service);
/**
* Get whether a component is enabled for auto start.
@@ -94,7 +94,7 @@ public interface Blueprint {
*
* @return null if value is not specified; true or false if specified.
*/
- public String getRecoveryEnabled(String serviceName, String componentName);
+ String getRecoveryEnabled(String serviceName, String componentName);
/**
* Get whether a service is enabled for credential store use.
@@ -103,20 +103,20 @@ public interface Blueprint {
*
* @return null if value is not specified; true or false if specified.
*/
- public String getCredentialStoreEnabled(String serviceName);
+ String getCredentialStoreEnabled(String serviceName);
/**
* Check if auto skip failure is enabled.
* @return true if enabled, otherwise false.
*/
- public boolean shouldSkipFailure();
+ boolean shouldSkipFailure();
/**
* Get the stack associated with the blueprint.
*
* @return associated stack
*/
- public Stack getStack();
+ Stack getStack();
/**
* Get the host groups which contain components for the specified service.
@@ -126,7 +126,7 @@ public interface Blueprint {
* @return collection of host groups containing components for the specified service;
* will not return null
*/
- public Collection<HostGroup> getHostGroupsForService(String service);
+ Collection<HostGroup> getHostGroupsForService(String service);
/**
* Get the host groups which contain the give component.
@@ -135,23 +135,23 @@ public interface Blueprint {
*
* @return collection of host groups containing the specified component; will not return null
*/
- public Collection<HostGroup> getHostGroupsForComponent(String component);
+ Collection<HostGroup> getHostGroupsForComponent(String component);
- public SecurityConfiguration getSecurity();
+ SecurityConfiguration getSecurity();
/**
* Validate the blueprint topology.
*
* @throws InvalidTopologyException if the topology is invalid
*/
- public void validateTopology() throws InvalidTopologyException;
+ void validateTopology() throws InvalidTopologyException;
/**
* Validate that the blueprint contains all of the required properties.
*
* @throws InvalidTopologyException if the blueprint doesn't contain all required properties
*/
- public void validateRequiredProperties() throws InvalidTopologyException;
+ void validateRequiredProperties() throws InvalidTopologyException, GPLLicenseNotAcceptedException;
/**
*
@@ -166,5 +166,5 @@ public interface Blueprint {
*
* @return entity representation of the blueprint
*/
- public BlueprintEntity toEntity();
+ BlueprintEntity toEntity();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
index 1d917e0..06fd9f2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
@@ -19,7 +19,13 @@
package org.apache.ambari.server.topology;
-import com.google.gson.Gson;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StackAccessException;
import org.apache.ambari.server.controller.AmbariServer;
@@ -36,12 +42,7 @@ import org.apache.ambari.server.stack.NoSuchStackException;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.commons.lang.StringUtils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+import com.google.gson.Gson;
/**
* Blueprint implementation.
@@ -351,7 +352,7 @@ public class BlueprintImpl implements Blueprint {
* @throws InvalidTopologyException if the blueprint configuration is invalid
*/
@Override
- public void validateRequiredProperties() throws InvalidTopologyException {
+ public void validateRequiredProperties() throws InvalidTopologyException, GPLLicenseNotAcceptedException {
validator.validateRequiredProperties();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java
index 206d161..c201a7f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java
@@ -29,7 +29,7 @@ public interface BlueprintValidator {
*
* @throws InvalidTopologyException if the topology is invalid
*/
- public void validateTopology() throws InvalidTopologyException;
+ void validateTopology() throws InvalidTopologyException;
/**
* Validate that required properties are provided.
@@ -37,5 +37,5 @@ public interface BlueprintValidator {
*
* @throws InvalidTopologyException if required properties are not set in blueprint
*/
- public void validateRequiredProperties() throws InvalidTopologyException;
+ void validateRequiredProperties() throws InvalidTopologyException, GPLLicenseNotAcceptedException;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/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 1aaa5ce..7b7f7d7 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
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import org.apache.ambari.server.StaticallyInject;
import org.apache.ambari.server.controller.internal.Stack;
import org.apache.ambari.server.state.AutoDeployInfo;
import org.apache.ambari.server.state.DependencyInfo;
@@ -31,15 +32,24 @@ import org.apache.ambari.server.utils.VersionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.inject.Inject;
+
/**
* Default blueprint validator.
*/
+@StaticallyInject
public class BlueprintValidatorImpl implements BlueprintValidator {
private static final Logger LOGGER = LoggerFactory.getLogger(BlueprintValidatorImpl.class);
private final Blueprint blueprint;
private final Stack stack;
+ public static final String LZO_CODEC_CLASS_PROPERTY_NAME = "io.compression.codec.lzo.class";
+ public static final String LZO_CODEC_CLASS = "com.hadoop.compression.lzo.LzoCodec";
+
+ @Inject
+ private static org.apache.ambari.server.configuration.Configuration configuration;
+
public BlueprintValidatorImpl(Blueprint blueprint) {
this.blueprint = blueprint;
this.stack = blueprint.getStack();
@@ -80,13 +90,17 @@ public class BlueprintValidatorImpl implements BlueprintValidator {
}
@Override
- public void validateRequiredProperties() throws InvalidTopologyException {
+ public void validateRequiredProperties() throws InvalidTopologyException, GPLLicenseNotAcceptedException {
// we don't want to include default stack properties so we can't just use hostGroup full properties
Map<String, Map<String, String>> clusterConfigurations = blueprint.getConfiguration().getProperties();
// we need to have real passwords, not references
if (clusterConfigurations != null) {
+
+ // need to reject blueprints that have LZO enabled if the Ambari Server hasn't been configured for it
+ boolean gplEnabled = configuration.getGplLicenseAccepted();
+
StringBuilder errorMessage = new StringBuilder();
boolean containsSecretReferences = false;
for (Map.Entry<String, Map<String, String>> configEntry : clusterConfigurations.entrySet()) {
@@ -96,6 +110,11 @@ public class BlueprintValidatorImpl implements BlueprintValidator {
String propertyName = propertyEntry.getKey();
String propertyValue = propertyEntry.getValue();
if (propertyValue != null) {
+ if (!gplEnabled && configType.equals("core-site") && propertyName.equals(LZO_CODEC_CLASS_PROPERTY_NAME)
+ && propertyValue.contains(LZO_CODEC_CLASS)) {
+ throw new GPLLicenseNotAcceptedException("Your Ambari server has not been configured to download LZO GPL software. " +
+ "Please refer to documentation to configure Ambari before proceeding.");
+ }
if (SecretReference.isSecret(propertyValue)) {
errorMessage.append(" Config:" + configType + " Property:" + propertyName + "\n");
containsSecretReferences = true;
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java
index fdbc080..1a9fd1f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java
@@ -21,11 +21,13 @@ package org.apache.ambari.server.topology;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -105,13 +107,14 @@ public class BlueprintImplTest {
@Test
public void testValidateConfigurations__basic_positive() throws Exception {
+ org.apache.ambari.server.configuration.Configuration serverConfig = setupConfigurationWithGPLLicense(true);
expect(group1.getCardinality()).andReturn("1").atLeastOnce();
expect(group1.getComponents()).andReturn(Arrays.asList(new Component("c1"), new Component("c2"))).atLeastOnce();
expect(group2.getCardinality()).andReturn("1").atLeastOnce();
expect(group2.getComponents()).andReturn(Arrays.asList(new Component("c1"), new Component("c3"))).atLeastOnce();
expect(group2.getConfiguration()).andReturn(EMPTY_CONFIGURATION).atLeastOnce();
- replay(stack, group1, group2);
+ replay(stack, group1, group2, serverConfig);
Map<String, String> category2Props = new HashMap<>();
properties.put("category2", category2Props);
@@ -122,7 +125,7 @@ public class BlueprintImplTest {
blueprint.validateRequiredProperties();
BlueprintEntity entity = blueprint.toEntity();
- verify(stack, group1, group2);
+ verify(stack, group1, group2, serverConfig);
assertTrue(entity.getSecurityType() == SecurityType.KERBEROS);
assertTrue(entity.getSecurityDescriptorReference().equals("testRef"));
}
@@ -133,6 +136,8 @@ public class BlueprintImplTest {
Map<String, String> group2Category2Props = new HashMap<>();
group2Props.put("category2", group2Category2Props);
group2Category2Props.put("prop2", "val");
+
+ org.apache.ambari.server.configuration.Configuration serverConfig = setupConfigurationWithGPLLicense(true);
// set config for group2 which contains a required property
Configuration group2Configuration = new Configuration(group2Props, EMPTY_ATTRIBUTES, configuration);
expect(group2.getConfiguration()).andReturn(group2Configuration).atLeastOnce();
@@ -142,29 +147,67 @@ public class BlueprintImplTest {
expect(group2.getCardinality()).andReturn("1").atLeastOnce();
expect(group2.getComponents()).andReturn(Arrays.asList(new Component("c1"), new Component("c3"))).atLeastOnce();
- replay(stack, group1, group2);
+ replay(stack, group1, group2, serverConfig);
Blueprint blueprint = new BlueprintImpl("test", hostGroups, stack, configuration, null);
blueprint.validateRequiredProperties();
BlueprintEntity entity = blueprint.toEntity();
- verify(stack, group1, group2);
+ verify(stack, group1, group2, serverConfig);
assertTrue(entity.getSecurityType() == SecurityType.NONE);
assertTrue(entity.getSecurityDescriptorReference() == null);
}
@Test(expected = InvalidTopologyException.class)
- public void testValidateConfigurations__secretReference() throws InvalidTopologyException {
+ public void testValidateConfigurations__secretReference() throws InvalidTopologyException,
+ GPLLicenseNotAcceptedException, NoSuchFieldException, IllegalAccessException {
Map<String, Map<String, String>> group2Props = new HashMap<>();
Map<String, String> group2Category2Props = new HashMap<>();
+
+ org.apache.ambari.server.configuration.Configuration serverConfig = setupConfigurationWithGPLLicense(true);
group2Props.put("category2", group2Category2Props);
group2Category2Props.put("prop2", "val");
hdfsProps.put("secret", "SECRET:hdfs-site:1:test");
- replay(stack, group1, group2);
+ replay(stack, group1, group2, serverConfig);
Blueprint blueprint = new BlueprintImpl("test", hostGroups, stack, configuration, null);
blueprint.validateRequiredProperties();
- verify(stack, group1, group2);
+ verify(stack, group1, group2, serverConfig);
+ }
+
+ @Test(expected = GPLLicenseNotAcceptedException.class)
+ public void testValidateConfigurations__gplIsNotAllowed() throws InvalidTopologyException,
+ GPLLicenseNotAcceptedException, NoSuchFieldException, IllegalAccessException {
+ Map<String, Map<String, String>> lzoProperties = new HashMap<>();
+ lzoProperties.put("core-site", new HashMap<String, String>(){{
+ put(BlueprintValidatorImpl.LZO_CODEC_CLASS_PROPERTY_NAME, BlueprintValidatorImpl.LZO_CODEC_CLASS);
+ }});
+ Configuration lzoUsageConfiguration = new Configuration(lzoProperties, EMPTY_ATTRIBUTES, EMPTY_CONFIGURATION);
+
+ org.apache.ambari.server.configuration.Configuration serverConfig = setupConfigurationWithGPLLicense(false);
+ replay(stack, group1, group2, serverConfig);
+
+ Blueprint blueprint = new BlueprintImpl("test", hostGroups, stack, lzoUsageConfiguration, null);
+ blueprint.validateRequiredProperties();
+ verify(stack, group1, group2, serverConfig);
+ }
+
+ @Test
+ public void testValidateConfigurations__gplISAllowed() throws InvalidTopologyException,
+ GPLLicenseNotAcceptedException, NoSuchFieldException, IllegalAccessException {
+ Map<String, Map<String, String>> lzoProperties = new HashMap<>();
+ lzoProperties.put("core-site", new HashMap<String, String>(){{
+ put(BlueprintValidatorImpl.LZO_CODEC_CLASS_PROPERTY_NAME, BlueprintValidatorImpl.LZO_CODEC_CLASS);
+ }});
+ Configuration lzoUsageConfiguration = new Configuration(lzoProperties, EMPTY_ATTRIBUTES, EMPTY_CONFIGURATION);
+
+ org.apache.ambari.server.configuration.Configuration serverConfig = setupConfigurationWithGPLLicense(true);
+ expect(group2.getConfiguration()).andReturn(EMPTY_CONFIGURATION).atLeastOnce();
+ replay(stack, group1, group2, serverConfig);
+
+ Blueprint blueprint = new BlueprintImpl("test", hostGroups, stack, lzoUsageConfiguration, null);
+ blueprint.validateRequiredProperties();
+ verify(stack, group1, group2, serverConfig);
}
@Test
@@ -191,6 +234,18 @@ public class BlueprintImplTest {
verify(stack, setting);
}
+ public static org.apache.ambari.server.configuration.Configuration setupConfigurationWithGPLLicense(boolean isGPLAllowed)
+ throws NoSuchFieldException, IllegalAccessException {
+ org.apache.ambari.server.configuration.Configuration serverConfig =
+ mock(org.apache.ambari.server.configuration.Configuration.class);
+ expect(serverConfig.getGplLicenseAccepted()).andReturn(isGPLAllowed).atLeastOnce();
+
+ Field field = BlueprintValidatorImpl.class.getDeclaredField("configuration");
+ field.setAccessible(true);
+ field.set(null, serverConfig);
+ return serverConfig;
+ }
+
//todo: ensure coverage for these existing tests
// private void validateEntity(BlueprintEntity entity, boolean containsConfig) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/1fce5650/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 ea6bee3..e7268e7 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
@@ -18,6 +18,11 @@
package org.apache.ambari.server.topology;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -38,11 +43,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reset;
-import static org.easymock.EasyMock.verify;
-
/**
* BlueprintValidatorImpl unit tests.
*/
@@ -216,6 +216,8 @@ public class BlueprintValidatorImplTest {
services.addAll(Arrays.asList("HIVE"));
+ org.apache.ambari.server.configuration.Configuration serverConfig =
+ BlueprintImplTest.setupConfigurationWithGPLLicense(true);
expect(group1.getConfiguration()).andReturn(new Configuration(new HashMap(), new HashMap())).anyTimes();
expect(stack.getComponents("HIVE")).andReturn(Collections.singleton("HIVE_METASTORE")).anyTimes();
@@ -224,7 +226,7 @@ public class BlueprintValidatorImplTest {
expect(blueprint.getHostGroupsForComponent("HIVE_METASTORE")).andReturn(Collections.singleton(group1)).anyTimes();
- replay(blueprint, stack, group1, group2, dependency1);
+ replay(blueprint, stack, group1, group2, dependency1, serverConfig);
BlueprintValidator validator = new BlueprintValidatorImpl(blueprint);
validator.validateRequiredProperties();
}
@@ -239,6 +241,8 @@ public class BlueprintValidatorImplTest {
services.addAll(Arrays.asList("OOZIE"));
+ org.apache.ambari.server.configuration.Configuration serverConfig =
+ BlueprintImplTest.setupConfigurationWithGPLLicense(true);
expect(group1.getConfiguration()).andReturn(new Configuration(new HashMap(), new HashMap())).anyTimes();
expect(stack.getComponents("OOZIE")).andReturn(Collections.singleton("OOZIE_SERVER")).anyTimes();
@@ -247,7 +251,7 @@ public class BlueprintValidatorImplTest {
expect(blueprint.getHostGroupsForComponent("OOZIE_SERVER")).andReturn(Collections.singleton(group1)).anyTimes();
- replay(blueprint, stack, group1, group2, dependency1);
+ replay(blueprint, stack, group1, group2, dependency1, serverConfig);
BlueprintValidator validator = new BlueprintValidatorImpl(blueprint);
validator.validateRequiredProperties();
}