You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2014/08/01 01:13:50 UTC
git commit: AMBARI-6695. Configs API + Blueprints: Handle deprecation
of global config_type (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/trunk fc724cb01 -> 896367f38
AMBARI-6695. Configs API + Blueprints: Handle deprecation of global config_type (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/896367f3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/896367f3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/896367f3
Branch: refs/heads/trunk
Commit: 896367f381909c42656ce1851f461d64faa8fe6a
Parents: fc724cb
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Fri Aug 1 02:13:41 2014 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Fri Aug 1 02:13:41 2014 +0300
----------------------------------------------------------------------
.../AmbariManagementControllerImpl.java | 51 +++-
.../ambari/server/controller/AmbariServer.java | 3 +-
.../internal/BaseBlueprintProcessor.java | 4 +
.../internal/ClusterResourceProvider.java | 42 +++-
.../ambari/server/state/ConfigHelper.java | 76 +++++-
.../server/upgrade/UpgradeCatalog170.java | 4 +-
.../internal/ClusterResourceProviderTest.java | 237 +++++++++++++++----
7 files changed, 348 insertions(+), 69 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 8a8b792..21a99c8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -629,20 +629,57 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
request.getVersionTag(),
request.getType()));
}
+
+ handleGlobalsBackwardsCompability(request, propertiesAttributes);
- Config config = configFactory.createNew (cluster, request.getType(),
- request.getProperties(), propertiesAttributes);
+ Config config = createConfig(cluster, request.getType(), request.getProperties(),
+ request.getVersionTag(), propertiesAttributes);
- if (!StringUtils.isEmpty(request.getVersionTag())) {
- config.setTag(request.getVersionTag());
+ return new ConfigurationResponse(cluster.getClusterName(), config.getType(), config.getTag(), config.getVersion(),
+ config.getProperties(), config.getPropertiesAttributes());
+ }
+
+ private void handleGlobalsBackwardsCompability(ConfigurationRequest request,
+ Map<String, Map<String, String>> propertiesAttributes) throws AmbariException {
+ Cluster cluster = clusters.getCluster(request.getClusterName());
+ if(request.getType().equals(Configuration.GLOBAL_CONFIG_TAG)) {
+ Map<String, Map<String, String>> configTypes = new HashMap<String, Map<String, String>>();
+ configTypes.put(Configuration.GLOBAL_CONFIG_TAG, request.getProperties());
+ configHelper.moveDeprecatedGlobals(cluster.getCurrentStackVersion(), configTypes);
+
+ for(Map.Entry<String, Map<String, String>> configType : configTypes.entrySet()) {
+ String configTypeName = configType.getKey();
+ Map<String, String> properties = configType.getValue();
+
+ if(configTypeName.equals(Configuration.GLOBAL_CONFIG_TAG))
+ continue;
+
+ String tag;
+ if(cluster.getConfigsByType(configTypeName) == null) {
+ tag = "version1";
+ } else {
+ tag = "version" + System.currentTimeMillis();
+ }
+
+ createConfig(cluster, configTypeName, properties, tag, propertiesAttributes);
+ }
+ }
+ }
+
+ private Config createConfig(Cluster cluster, String type, Map<String, String> properties,
+ String versionTag, Map<String, Map<String, String>> propertiesAttributes) {
+ Config config = configFactory.createNew (cluster, type,
+ properties, propertiesAttributes);
+
+ if (!StringUtils.isEmpty(versionTag)) {
+ config.setTag(versionTag);
}
config.persist();
cluster.addConfig(config);
-
- return new ConfigurationResponse(cluster.getClusterName(), config.getType(), config.getTag(), config.getVersion(),
- config.getProperties(), config.getPropertiesAttributes());
+
+ return config;
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index f071e64..83ab1fc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -87,6 +87,7 @@ import org.apache.ambari.server.security.authorization.internal.InternalTokenAut
import org.apache.ambari.server.security.unsecured.rest.CertificateDownload;
import org.apache.ambari.server.security.unsecured.rest.CertificateSign;
import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.utils.StageUtils;
import org.apache.ambari.server.utils.VersionUtils;
import org.apache.ambari.server.view.ViewRegistry;
@@ -542,7 +543,7 @@ public class AmbariServer {
BlueprintResourceProvider.init(injector.getInstance(BlueprintDAO.class),
injector.getInstance(Gson.class), ambariMetaInfo);
StackDependencyResourceProvider.init(ambariMetaInfo);
- ClusterResourceProvider.init(injector.getInstance(BlueprintDAO.class), ambariMetaInfo);
+ ClusterResourceProvider.init(injector.getInstance(BlueprintDAO.class), ambariMetaInfo, injector.getInstance(ConfigHelper.class));
AlertDefinitionResourceProvider.init(injector.getInstance(AlertDefinitionDAO.class));
PermissionResourceProvider.init(injector.getInstance(PermissionDAO.class));
ViewPermissionResourceProvider.init(injector.getInstance(PermissionDAO.class));
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
index b3a8019..d723512 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
@@ -19,6 +19,7 @@
package org.apache.ambari.server.controller.internal;
import com.google.gson.Gson;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StackAccessException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -38,6 +39,7 @@ import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
import org.apache.ambari.server.orm.entities.HostGroupConfigEntity;
import org.apache.ambari.server.orm.entities.HostGroupEntity;
import org.apache.ambari.server.state.AutoDeployInfo;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.DependencyInfo;
import java.util.Collection;
@@ -63,6 +65,8 @@ public abstract class BaseBlueprintProcessor extends AbstractControllerResourceP
* Stack related information.
*/
protected static AmbariMetaInfo stackInfo;
+
+ protected static ConfigHelper configHelper;
protected BaseBlueprintProcessor(Set<String> propertyIds,
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
index b72beb6..f99955b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
@@ -45,8 +45,11 @@ import org.apache.ambari.server.orm.dao.BlueprintDAO;
import org.apache.ambari.server.orm.entities.BlueprintEntity;
import org.apache.ambari.server.orm.entities.HostGroupEntity;
import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.ConfigImpl;
import org.apache.ambari.server.state.PropertyInfo;
+import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.configuration.Configuration;
/**
* Resource provider for cluster resources.
@@ -109,9 +112,10 @@ public class ClusterResourceProvider extends BaseBlueprintProcessor {
*
* @param dao blueprint data access object
*/
- public static void init(BlueprintDAO dao, AmbariMetaInfo metaInfo) {
+ public static void init(BlueprintDAO dao, AmbariMetaInfo metaInfo, ConfigHelper ch) {
blueprintDAO = dao;
stackInfo = metaInfo;
+ configHelper = ch;
}
@@ -825,6 +829,18 @@ public class ClusterResourceProvider extends BaseBlueprintProcessor {
}
setMissingConfigurations();
}
+
+ /**
+ * Since global configs are deprecated since 1.7.0, but still supported.
+ * We should automatically map any globals used, to *-env dictionaries.
+ *
+ * @param blueprintConfigurations map of blueprint configurations keyed by type
+ */
+ private void handleGlobalsBackwardsCompability(Stack stack,
+ Map<String, Map<String, String>> blueprintConfigurations) {
+ StackId stackId = new StackId(stack.getName(), stack.getVersion());
+ configHelper.moveDeprecatedGlobals(stackId, blueprintConfigurations);
+ }
/**
* Process cluster scoped configurations provided in blueprint.
@@ -876,19 +892,21 @@ public class ClusterResourceProvider extends BaseBlueprintProcessor {
* Explicitly set any properties that are required but not currently provided in the stack definition.
*/
private void setMissingConfigurations() {
- // AMBARI-4921
- ensureProperty("global", "user_group", "hadoop");
- ensureProperty("global", "nagios_contact", "default@REPLACEME.NOWHERE");
- ensureProperty("global", "smokeuser", "ambari-qa");
-
// AMBARI-5206
- Map<String, String> globalConfig = mapClusterConfigurations.get("global");
- String[] userProps = {"oozie_user", "hive_user", "hcat_user", "hbase_user", "falcon_user"};
+ final Map<String , String> userProps = new HashMap<String , String>();
+ userProps.put("oozie_user", "oozie-env");
+ userProps.put("hive_user", "hive-env");
+ userProps.put("hcat_user", "hive-env");
+ userProps.put("hbase_user", "hbase-env");
+ userProps.put("falcon_user", "falcon-env");
+
String proxyUserHosts = "hadoop.proxyuser.%s.hosts";
String proxyUserGroups = "hadoop.proxyuser.%s.groups";
- for (String userProp : userProps) {
- String user = globalConfig.get(userProp);
+ for (String property : userProps.keySet()) {
+ String configType = userProps.get(property);
+ Map<String, String> configs = mapClusterConfigurations.get(configType);
+ String user = configs.get(property);
if (user != null && !user.isEmpty()) {
ensureProperty("core-site", String.format(proxyUserHosts, user), "*");
ensureProperty("core-site", String.format(proxyUserGroups, user), "users");
@@ -1023,10 +1041,12 @@ public class ClusterResourceProvider extends BaseBlueprintProcessor {
private void registerConfigGroups(String clusterName, Map<String, HostGroup> hostGroups, Stack stack) throws
ResourceAlreadyExistsException, SystemException,
UnsupportedPropertyException, NoSuchParentResourceException {
-
+
for (HostGroup group : hostGroups.values()) {
HostGroupEntity entity = group.getEntity();
Map<String, Map<String, Config>> groupConfigs = new HashMap<String, Map<String, Config>>();
+
+ handleGlobalsBackwardsCompability(stack, group.getConfigurations());
for (Map.Entry<String, Map<String, String>> entry: group.getConfigurations().entrySet()) {
String type = entry.getKey();
String service = stack.getServiceForConfigType(type);
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
index 81c3c38..b8bf23b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
@@ -45,8 +45,10 @@ import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.ConfigurationRequest;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
+import org.apache.ambari.server.upgrade.UpgradeCatalog170;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* Helper class that works with config traversals.
*/
@@ -382,22 +384,16 @@ public class ConfigHelper {
/**
* Gets all the config dictionary where property with the given name is present in stack definitions
- * @param cluster
+ * @param stackId
* @param propertyName
*/
- public Set<String> findConfigTypesByPropertyName(Cluster cluster, String propertyName) throws AmbariException {
- StackId stackId = cluster.getCurrentStackVersion();
+ public Set<String> findConfigTypesByPropertyName(StackId stackId, String propertyName) throws AmbariException {
StackInfo stack = ambariMetaInfo.getStackInfo(stackId.getStackName(),
stackId.getStackVersion());
Set<String> result = new HashSet<String>();
for(ServiceInfo serviceInfo:stack.getServices()) {
- // skip not installed services
- if(!cluster.getServices().containsKey(serviceInfo.getName())) {
- continue;
- }
-
Set<PropertyInfo> stackProperties = ambariMetaInfo.getProperties(stack.getName(), stack.getVersion(), serviceInfo.getName());
for (PropertyInfo stackProperty : stackProperties) {
@@ -458,6 +454,70 @@ public class ConfigHelper {
cluster.addDesiredConfig(authName, baseConfig);
}
}
+
+ /**
+ * Since global configs are deprecated since 1.7.0, but still supported.
+ * We should automatically map any globals used, to *-env dictionaries.
+ *
+ * @param configurations map of configurations keyed by type
+ */
+ public void moveDeprecatedGlobals(StackId stackId, Map<String, Map<String, String>> configurations) {
+ Map<String, String> globalConfigurations = new HashMap<String, String>();
+
+ if(configurations.get(Configuration.GLOBAL_CONFIG_TAG) == null ||
+ configurations.get(Configuration.GLOBAL_CONFIG_TAG).size() == 0)
+ return;
+
+ globalConfigurations.putAll(configurations.get(Configuration.GLOBAL_CONFIG_TAG));
+
+ if(globalConfigurations!=null && globalConfigurations.size() != 0) {
+ LOG.warn("Global configurations are deprecated, "
+ + "please use *-env");
+ }
+
+ for(Map.Entry<String, String> property:globalConfigurations.entrySet()) {
+ String propertyName = property.getKey();
+ String propertyValue = property.getValue();
+
+ Set<String> newConfigTypes = null;
+ try{
+ newConfigTypes = this.findConfigTypesByPropertyName(stackId, propertyName);
+ } catch(AmbariException e) {
+ LOG.error("Exception while getting configurations from the stacks", e);
+ return;
+ }
+
+ newConfigTypes.remove(Configuration.GLOBAL_CONFIG_TAG);
+
+ String newConfigType = null;
+ if(newConfigTypes.size() > 0) {
+ newConfigType = newConfigTypes.iterator().next();
+ } else {
+ newConfigType = UpgradeCatalog170.getAdditionalMappingGlobalToEnv().get(propertyName);
+ }
+
+ if(newConfigType==null) {
+ LOG.warn("Cannot find where to map " + propertyName + " from " + Configuration.GLOBAL_CONFIG_TAG +
+ " (value="+propertyValue+")");
+ continue;
+ }
+
+ LOG.info("Mapping config " + propertyName + " from " + Configuration.GLOBAL_CONFIG_TAG +
+ " to " + newConfigType +
+ " (value="+propertyValue+")");
+
+ configurations.get(Configuration.GLOBAL_CONFIG_TAG).remove(propertyName);
+
+ if(!configurations.containsKey(newConfigType)) {
+ configurations.put(newConfigType, new HashMap<String, String>());
+ }
+ configurations.get(newConfigType).put(propertyName, propertyValue);
+ }
+
+ if(configurations.get(Configuration.GLOBAL_CONFIG_TAG).size() == 0) {
+ configurations.remove(Configuration.GLOBAL_CONFIG_TAG);
+ }
+ }
private boolean calculateIsStaleConfigs(ServiceComponentHost sch) throws AmbariException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
index 392c316..cc4e1be 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
@@ -243,7 +243,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
if (clusterMap != null && !clusterMap.isEmpty()) {
for (final Cluster cluster : clusterMap.values()) {
- Set<String> configTypes = configHelper.findConfigTypesByPropertyName(cluster, CONTENT_FIELD_NAME);
+ Set<String> configTypes = configHelper.findConfigTypesByPropertyName(cluster.getCurrentStackVersion(), CONTENT_FIELD_NAME);
for(String configType:configTypes) {
if(!configType.endsWith(ENV_CONFIGS_POSTFIX)) {
@@ -284,7 +284,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
String propertyName = property.getKey();
String propertyValue = property.getValue();
- Set<String> newConfigTypes = configHelper.findConfigTypesByPropertyName(cluster, propertyName);
+ Set<String> newConfigTypes = configHelper.findConfigTypesByPropertyName(cluster.getCurrentStackVersion(), propertyName);
// if it's custom user service global.xml can be still there.
newConfigTypes.remove(Configuration.GLOBAL_CONFIG_TAG);
http://git-wip-us.apache.org/repos/asf/ambari/blob/896367f3/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
index d8f7fbc..d1aa4d5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
@@ -76,6 +76,7 @@ import org.apache.ambari.server.orm.entities.BlueprintEntity;
import org.apache.ambari.server.orm.entities.HostGroupComponentEntity;
import org.apache.ambari.server.orm.entities.HostGroupConfigEntity;
import org.apache.ambari.server.orm.entities.HostGroupEntity;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.DependencyInfo;
import org.apache.ambari.server.state.PropertyInfo;
import org.apache.ambari.server.state.State;
@@ -164,6 +165,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -196,6 +198,9 @@ public class ClusterResourceProviderTest {
BlueprintConfigEntity blueprintConfig = createNiceMock(BlueprintConfigEntity.class);
BlueprintConfigEntity blueprintConfig2 = createNiceMock(BlueprintConfigEntity.class);
+ BlueprintConfigEntity blueprintConfig3 = createNiceMock(BlueprintConfigEntity.class);
+ BlueprintConfigEntity blueprintConfig4 = createNiceMock(BlueprintConfigEntity.class);
+ BlueprintConfigEntity blueprintConfig5 = createNiceMock(BlueprintConfigEntity.class);
HostGroupEntity hostGroup = createNiceMock(HostGroupEntity.class);
HostGroupComponentEntity hostGroupComponent1 = createNiceMock(HostGroupComponentEntity.class);
@@ -223,6 +228,10 @@ public class ClusterResourceProviderTest {
Capture<Map<String, String>> updateClusterPropertyMapCapture4 = new Capture<Map<String, String>>();
Capture<Set<ClusterRequest>> updateClusterRequestCapture5 = new Capture<Set<ClusterRequest>>();
Capture<Map<String, String>> updateClusterPropertyMapCapture5 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture6 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture6 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture7 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture7 = new Capture<Map<String, String>>();
Capture<Request> serviceRequestCapture = new Capture<Request>();
Capture<Request> componentRequestCapture = new Capture<Request>();
@@ -292,9 +301,19 @@ public class ClusterResourceProviderTest {
Map<String, String> blueprintGlobalConfigProperties = new HashMap<String, String>();
blueprintGlobalConfigProperties.put("hive_database", "New MySQL Database");
+ Map<String, String> oozieEnvConfigProperties = new HashMap<String, String>();
+ oozieEnvConfigProperties.put("property1","value2");
+ Map<String, String> hbaseEnvConfigProperties = new HashMap<String, String>();
+ hbaseEnvConfigProperties.put("property1","value2");
+ Map<String, String> falconEnvConfigProperties = new HashMap<String, String>();
+ falconEnvConfigProperties.put("property1","value2");
+
Collection<BlueprintConfigEntity> configurations = new HashSet<BlueprintConfigEntity>();
configurations.add(blueprintConfig);
configurations.add(blueprintConfig2);
+ configurations.add(blueprintConfig3);
+ configurations.add(blueprintConfig4);
+ configurations.add(blueprintConfig5);
// expectations
expect(request.getProperties()).andReturn(propertySet).anyTimes();
@@ -342,7 +361,7 @@ public class ClusterResourceProviderTest {
expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
expect(stackConfigurationResponse2.getPropertyAttributes()).andReturn(hdfsSiteAttributes);
- expect(stackConfigurationResponse3.getType()).andReturn("global.xml");
+ expect(stackConfigurationResponse3.getType()).andReturn("oozie-env.xml");
expect(stackConfigurationResponse3.getPropertyName()).andReturn("oozie_user");
expect(stackConfigurationResponse3.getPropertyValue()).andReturn("oozie");
@@ -360,7 +379,17 @@ public class ClusterResourceProviderTest {
expect(blueprintConfig2.getBlueprintName()).andReturn("test-blueprint").anyTimes();
expect(blueprintConfig2.getType()).andReturn("hive-env").anyTimes();
expect(blueprintConfig2.getConfigData()).andReturn(new Gson().toJson(blueprintGlobalConfigProperties)).anyTimes();
+ expect(blueprintConfig3.getBlueprintName()).andReturn("test-blueprint").anyTimes();
+ expect(blueprintConfig3.getType()).andReturn("oozie-env").anyTimes();
+ expect(blueprintConfig3.getConfigData()).andReturn(new Gson().toJson(oozieEnvConfigProperties)).anyTimes();
+ expect(blueprintConfig4.getBlueprintName()).andReturn("test-blueprint").anyTimes();
+ expect(blueprintConfig4.getType()).andReturn("falcon-env").anyTimes();
+ expect(blueprintConfig4.getConfigData()).andReturn(new Gson().toJson(falconEnvConfigProperties)).anyTimes();
+ expect(blueprintConfig5.getBlueprintName()).andReturn("test-blueprint").anyTimes();
+ expect(blueprintConfig5.getType()).andReturn("hbase-env").anyTimes();
+ expect(blueprintConfig5.getConfigData()).andReturn(new Gson().toJson(hbaseEnvConfigProperties)).anyTimes();
+
expect(blueprint.getHostGroups()).andReturn(Collections.singleton(hostGroup)).anyTimes();
expect(hostGroup.getName()).andReturn("group1").anyTimes();
expect(hostGroup.getComponents()).andReturn(hostGroupComponents).anyTimes();
@@ -385,6 +414,10 @@ public class ClusterResourceProviderTest {
capture(updateClusterPropertyMapCapture4))).andReturn(null);
expect(managementController.updateClusters(capture(updateClusterRequestCapture5),
capture(updateClusterPropertyMapCapture5))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture6),
+ capture(updateClusterPropertyMapCapture6))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture7),
+ capture(updateClusterPropertyMapCapture7))).andReturn(null);
expect(serviceResourceProvider.createResources(capture(serviceRequestCapture))).andReturn(null);
expect(componentResourceProvider.createResources(capture(componentRequestCapture))).andReturn(null);
@@ -403,12 +436,12 @@ public class ClusterResourceProviderTest {
stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
stackServiceComponentResponse4, stackConfigurationResponse1, stackConfigurationResponse2,
stackConfigurationResponse3, stackConfigurationResponse4, stackConfigurationResponse5, blueprintConfig,
- blueprintConfig2, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupComponent4,
+ blueprintConfig2, blueprintConfig3, blueprintConfig4, blueprintConfig5, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupComponent4,
hostGroupConfig, serviceResourceProvider, componentResourceProvider, hostResourceProvider,
hostComponentResourceProvider, configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
PersistKeyValueService.init(persistKeyValue);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
@@ -466,44 +499,52 @@ public class ClusterResourceProviderTest {
Set<ClusterRequest> updateClusterRequest3 = updateClusterRequestCapture3.getValue();
Set<ClusterRequest> updateClusterRequest4 = updateClusterRequestCapture4.getValue();
Set<ClusterRequest> updateClusterRequest5 = updateClusterRequestCapture5.getValue();
+ Set<ClusterRequest> updateClusterRequest6 = updateClusterRequestCapture6.getValue();
+ Set<ClusterRequest> updateClusterRequest7 = updateClusterRequestCapture7.getValue();
assertEquals(1, updateClusterRequest1.size());
assertEquals(1, updateClusterRequest2.size());
assertEquals(1, updateClusterRequest3.size());
assertEquals(1, updateClusterRequest4.size());
assertEquals(1, updateClusterRequest5.size());
+ assertEquals(1, updateClusterRequest6.size());
+ assertEquals(1, updateClusterRequest7.size());
ClusterRequest ucr1 = updateClusterRequest1.iterator().next();
ClusterRequest ucr2 = updateClusterRequest2.iterator().next();
ClusterRequest ucr3 = updateClusterRequest3.iterator().next();
ClusterRequest ucr4 = updateClusterRequest4.iterator().next();
ClusterRequest ucr5 = updateClusterRequest5.iterator().next();
+ ClusterRequest ucr6 = updateClusterRequest6.iterator().next();
+ ClusterRequest ucr7 = updateClusterRequest7.iterator().next();
assertEquals(clusterName, ucr1.getClusterName());
assertEquals(clusterName, ucr2.getClusterName());
assertEquals(clusterName, ucr3.getClusterName());
assertEquals(clusterName, ucr4.getClusterName());
assertEquals(clusterName, ucr5.getClusterName());
+ assertEquals(clusterName, ucr6.getClusterName());
+ assertEquals(clusterName, ucr7.getClusterName());
ConfigurationRequest cr1 = ucr1.getDesiredConfig();
ConfigurationRequest cr2 = ucr2.getDesiredConfig();
ConfigurationRequest cr3 = ucr3.getDesiredConfig();
ConfigurationRequest cr4 = ucr4.getDesiredConfig();
ConfigurationRequest cr5 = ucr5.getDesiredConfig();
+ ConfigurationRequest cr6 = ucr6.getDesiredConfig();
+ ConfigurationRequest cr7 = ucr7.getDesiredConfig();
assertEquals("1", cr1.getVersionTag());
assertEquals("1", cr2.getVersionTag());
assertEquals("1", cr3.getVersionTag());
assertEquals("1", cr4.getVersionTag());
assertEquals("1", cr5.getVersionTag());
+ assertEquals("1", cr6.getVersionTag());
+ assertEquals("1", cr7.getVersionTag());
Map<String, ConfigurationRequest> mapConfigRequests = new HashMap<String, ConfigurationRequest>();
mapConfigRequests.put(cr1.getType(), cr1);
mapConfigRequests.put(cr2.getType(), cr2);
mapConfigRequests.put(cr3.getType(), cr3);
mapConfigRequests.put(cr4.getType(), cr4);
mapConfigRequests.put(cr5.getType(), cr5);
- assertEquals(5, mapConfigRequests.size());
- ConfigurationRequest globalConfigRequest = mapConfigRequests.get("global");
- assertEquals(4, globalConfigRequest.getProperties().size());
- assertEquals("hadoop", globalConfigRequest.getProperties().get("user_group"));
- assertEquals("ambari-qa", globalConfigRequest.getProperties().get("smokeuser"));
- assertEquals("default@REPLACEME.NOWHERE", globalConfigRequest.getProperties().get("nagios_contact"));
- assertEquals("oozie", globalConfigRequest.getProperties().get("oozie_user"));
+ mapConfigRequests.put(cr6.getType(), cr6);
+ mapConfigRequests.put(cr7.getType(), cr7);
+ assertEquals(7, mapConfigRequests.size());
ConfigurationRequest hiveEnvConfigRequest = mapConfigRequests.get("hive-env");
assertEquals("New MySQL Database", hiveEnvConfigRequest.getProperties().get("hive_database"));
ConfigurationRequest hdfsConfigRequest = mapConfigRequests.get("hdfs-site");
@@ -600,6 +641,7 @@ public class ClusterResourceProviderTest {
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
Request request = createNiceMock(Request.class);
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
BlueprintEntity blueprint = createNiceMock(BlueprintEntity.class);
StackServiceResponse stackServiceResponse1 = createNiceMock(StackServiceResponse.class);
@@ -609,6 +651,7 @@ public class ClusterResourceProviderTest {
StackServiceComponentResponse stackServiceComponentResponse1 = createNiceMock(StackServiceComponentResponse.class);
StackServiceComponentResponse stackServiceComponentResponse2 = createNiceMock(StackServiceComponentResponse.class);
StackServiceComponentResponse stackServiceComponentResponse3 = createNiceMock(StackServiceComponentResponse.class);
+
Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture1 = new Capture<Set<StackServiceComponentRequest>>();
Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture2 = new Capture<Set<StackServiceComponentRequest>>();
@@ -616,6 +659,9 @@ public class ClusterResourceProviderTest {
StackConfigurationResponse stackConfigurationResponse2 = createNiceMock(StackConfigurationResponse.class);
StackConfigurationResponse stackConfigurationResponse3 = createNiceMock(StackConfigurationResponse.class);
StackConfigurationResponse stackConfigurationResponse4 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse5 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse6 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse7 = createNiceMock(StackConfigurationResponse.class);
Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture1 = new Capture<Set<StackConfigurationRequest>>();
Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture2 = new Capture<Set<StackConfigurationRequest>>();
@@ -648,6 +694,7 @@ public class ClusterResourceProviderTest {
Set<StackServiceComponentResponse> stackServiceComponentResponses2 = new LinkedHashSet<StackServiceComponentResponse>();
stackServiceComponentResponses2.add(stackServiceComponentResponse3);
+
// service1 has 1 config
Set<StackConfigurationResponse> stackConfigurationResponses1 = new LinkedHashSet<StackConfigurationResponse>();
stackConfigurationResponses1.add(stackConfigurationResponse1);
@@ -657,6 +704,9 @@ public class ClusterResourceProviderTest {
stackConfigurationResponses2.add(stackConfigurationResponse2);
stackConfigurationResponses2.add(stackConfigurationResponse3);
stackConfigurationResponses2.add(stackConfigurationResponse4);
+ stackConfigurationResponses2.add(stackConfigurationResponse5);
+ stackConfigurationResponses2.add(stackConfigurationResponse6);
+ stackConfigurationResponses2.add(stackConfigurationResponse7);
Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
hostGroupComponents.add(hostGroupComponent1);
@@ -737,13 +787,26 @@ public class ClusterResourceProviderTest {
expect(stackConfigurationResponse2.getPropertyName()).andReturn("property2");
expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
- expect(stackConfigurationResponse3.getType()).andReturn("global.xml");
+ expect(stackConfigurationResponse3.getType()).andReturn("oozie-env.xml");
expect(stackConfigurationResponse3.getPropertyName()).andReturn("oozie_user");
expect(stackConfigurationResponse3.getPropertyValue()).andReturn("oozie");
expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse5.getType()).andReturn("hive-env.xml");
+ expect(stackConfigurationResponse5.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse5.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse6.getType()).andReturn("hbase-env.xml");
+ expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse7.getType()).andReturn("falcon-env.xml");
+ expect(stackConfigurationResponse7.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse7.getPropertyValue()).andReturn("value3");
+
expect(blueprintConfig.getBlueprintName()).andReturn("test-blueprint").anyTimes();
expect(blueprintConfig.getType()).andReturn("core-site").anyTimes();
@@ -764,12 +827,13 @@ public class ClusterResourceProviderTest {
replay(blueprintDAO, managementController, request, response, blueprint, stackServiceResponse1, stackServiceResponse2,
stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
stackConfigurationResponse1, stackConfigurationResponse2, stackConfigurationResponse3, stackConfigurationResponse4,
+ stackConfigurationResponse5, stackConfigurationResponse6, stackConfigurationResponse7,
blueprintConfig, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupConfig,
serviceResourceProvider, componentResourceProvider, hostResourceProvider, hostComponentResourceProvider,
configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
hostResourceProvider, hostComponentResourceProvider, configGroupResourceProvider);
@@ -796,6 +860,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -948,7 +1013,7 @@ public class ClusterResourceProviderTest {
configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
hostResourceProvider, hostComponentResourceProvider, configGroupResourceProvider);
@@ -968,6 +1033,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -1130,7 +1196,7 @@ public class ClusterResourceProviderTest {
configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
hostResourceProvider, hostComponentResourceProvider, configGroupResourceProvider);
@@ -1150,6 +1216,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -1312,7 +1379,7 @@ public class ClusterResourceProviderTest {
configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
hostResourceProvider, hostComponentResourceProvider, configGroupResourceProvider);
@@ -1332,6 +1399,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -1345,6 +1413,9 @@ public class ClusterResourceProviderTest {
StackServiceComponentResponse stackServiceComponentResponse1 = createNiceMock(StackServiceComponentResponse.class);
StackServiceComponentResponse stackServiceComponentResponse2 = createNiceMock(StackServiceComponentResponse.class);
StackServiceComponentResponse stackServiceComponentResponse3 = createNiceMock(StackServiceComponentResponse.class);
+ StackConfigurationResponse stackConfigurationResponse5 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse6 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse7 = createNiceMock(StackConfigurationResponse.class);
Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture1 = new Capture<Set<StackServiceComponentRequest>>();
Capture<Set<StackServiceComponentRequest>> serviceComponentRequestCapture2 = new Capture<Set<StackServiceComponentRequest>>();
@@ -1380,6 +1451,11 @@ public class ClusterResourceProviderTest {
Capture<Map<String, String>> updateClusterPropertyMapCapture3 = new Capture<Map<String, String>>();
Capture<Set<ClusterRequest>> updateClusterRequestCapture4 = new Capture<Set<ClusterRequest>>();
Capture<Map<String, String>> updateClusterPropertyMapCapture4 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture5 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture5 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture6 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture6 = new Capture<Map<String, String>>();
+
Capture<Request> serviceRequestCapture = new Capture<Request>();
Capture<Request> componentRequestCapture = new Capture<Request>();
@@ -1410,6 +1486,10 @@ public class ClusterResourceProviderTest {
stackConfigurationResponses2.add(stackConfigurationResponse2);
stackConfigurationResponses2.add(stackConfigurationResponse3);
stackConfigurationResponses2.add(stackConfigurationResponse4);
+ stackConfigurationResponses2.add(stackConfigurationResponse5);
+ stackConfigurationResponses2.add(stackConfigurationResponse6);
+ stackConfigurationResponses2.add(stackConfigurationResponse7);
+
Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
hostGroupComponents.add(hostGroupComponent1);
@@ -1492,13 +1572,25 @@ public class ClusterResourceProviderTest {
expect(stackConfigurationResponse2.getPropertyName()).andReturn("property2");
expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
- expect(stackConfigurationResponse3.getType()).andReturn("global.xml");
- expect(stackConfigurationResponse3.getPropertyName()).andReturn("oozie_user");
- expect(stackConfigurationResponse3.getPropertyValue()).andReturn("oozie");
+ expect(stackConfigurationResponse3.getType()).andReturn("hive-env.xml");
+ expect(stackConfigurationResponse3.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse3.getPropertyValue()).andReturn("value3");
expect(stackConfigurationResponse4.getType()).andReturn("core-site.xml");
expect(stackConfigurationResponse4.getPropertyName()).andReturn("property3");
expect(stackConfigurationResponse4.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse5.getType()).andReturn("hbase-env.xml");
+ expect(stackConfigurationResponse5.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse5.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse6.getType()).andReturn("falcon-env.xml");
+ expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse7.getType()).andReturn("oozie-env.xml");
+ expect(stackConfigurationResponse7.getPropertyName()).andReturn("oozie_user");
+ expect(stackConfigurationResponse7.getPropertyValue()).andReturn("oozie");
expect(blueprintConfig.getBlueprintName()).andReturn("test-blueprint").anyTimes();
expect(blueprintConfig.getType()).andReturn("core-site").anyTimes();
@@ -1523,6 +1615,13 @@ public class ClusterResourceProviderTest {
capture(updateClusterPropertyMapCapture2))).andReturn(null);
expect(managementController.updateClusters(capture(updateClusterRequestCapture3),
capture(updateClusterPropertyMapCapture3))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture4),
+ capture(updateClusterPropertyMapCapture4))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture5),
+ capture(updateClusterPropertyMapCapture5))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture6),
+ capture(updateClusterPropertyMapCapture6))).andReturn(null);
+
expect(serviceResourceProvider.createResources(capture(serviceRequestCapture))).andReturn(null);
expect(componentResourceProvider.createResources(capture(componentRequestCapture))).andReturn(null);
@@ -1540,12 +1639,13 @@ public class ClusterResourceProviderTest {
replay(blueprintDAO, managementController, request, response, blueprint, stackServiceResponse1, stackServiceResponse2,
stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
stackConfigurationResponse1, stackConfigurationResponse2, stackConfigurationResponse3, stackConfigurationResponse4,
+ stackConfigurationResponse5, stackConfigurationResponse6, stackConfigurationResponse7,
blueprintConfig, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupConfig,
serviceResourceProvider, componentResourceProvider, hostResourceProvider, hostComponentResourceProvider,
configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
PersistKeyValueService.init(persistKeyValue);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
@@ -1601,32 +1701,50 @@ public class ClusterResourceProviderTest {
Set<ClusterRequest> updateClusterRequest1 = updateClusterRequestCapture.getValue();
Set<ClusterRequest> updateClusterRequest2 = updateClusterRequestCapture2.getValue();
Set<ClusterRequest> updateClusterRequest3 = updateClusterRequestCapture3.getValue();
+ Set<ClusterRequest> updateClusterRequest4 = updateClusterRequestCapture4.getValue();
+ Set<ClusterRequest> updateClusterRequest5 = updateClusterRequestCapture5.getValue();
+ Set<ClusterRequest> updateClusterRequest6 = updateClusterRequestCapture6.getValue();
+
assertEquals(1, updateClusterRequest1.size());
assertEquals(1, updateClusterRequest2.size());
assertEquals(1, updateClusterRequest3.size());
+ assertEquals(1, updateClusterRequest4.size());
+ assertEquals(1, updateClusterRequest5.size());
+ assertEquals(1, updateClusterRequest6.size());
ClusterRequest ucr1 = updateClusterRequest1.iterator().next();
ClusterRequest ucr2 = updateClusterRequest2.iterator().next();
ClusterRequest ucr3 = updateClusterRequest3.iterator().next();
+ ClusterRequest ucr4 = updateClusterRequest4.iterator().next();
+ ClusterRequest ucr5 = updateClusterRequest5.iterator().next();
+ ClusterRequest ucr6 = updateClusterRequest6.iterator().next();
assertEquals(clusterName, ucr1.getClusterName());
assertEquals(clusterName, ucr2.getClusterName());
assertEquals(clusterName, ucr3.getClusterName());
+ assertEquals(clusterName, ucr4.getClusterName());
+ assertEquals(clusterName, ucr5.getClusterName());
+ assertEquals(clusterName, ucr6.getClusterName());
ConfigurationRequest cr1 = ucr1.getDesiredConfig();
ConfigurationRequest cr2 = ucr2.getDesiredConfig();
ConfigurationRequest cr3 = ucr3.getDesiredConfig();
+ ConfigurationRequest cr4 = ucr4.getDesiredConfig();
+ ConfigurationRequest cr5 = ucr5.getDesiredConfig();
+ ConfigurationRequest cr6 = ucr6.getDesiredConfig();
+
assertEquals("1", cr1.getVersionTag());
assertEquals("1", cr2.getVersionTag());
assertEquals("1", cr3.getVersionTag());
+ assertEquals("1", cr4.getVersionTag());
+ assertEquals("1", cr5.getVersionTag());
+ assertEquals("1", cr6.getVersionTag());
+
Map<String, ConfigurationRequest> mapConfigRequests = new HashMap<String, ConfigurationRequest>();
mapConfigRequests.put(cr1.getType(), cr1);
mapConfigRequests.put(cr2.getType(), cr2);
mapConfigRequests.put(cr3.getType(), cr3);
- assertEquals(3, mapConfigRequests.size());
- ConfigurationRequest globalConfigRequest = mapConfigRequests.get("global");
- assertEquals(4, globalConfigRequest.getProperties().size());
- assertEquals("hadoop", globalConfigRequest.getProperties().get("user_group"));
- assertEquals("ambari-qa", globalConfigRequest.getProperties().get("smokeuser"));
- assertEquals("default@REPLACEME.NOWHERE", globalConfigRequest.getProperties().get("nagios_contact"));
- assertEquals("oozie", globalConfigRequest.getProperties().get("oozie_user"));
+ mapConfigRequests.put(cr4.getType(), cr4);
+ mapConfigRequests.put(cr5.getType(), cr5);
+ mapConfigRequests.put(cr6.getType(), cr6);
+ assertEquals(6, mapConfigRequests.size());
ConfigurationRequest hdfsConfigRequest = mapConfigRequests.get("hdfs-site");
assertEquals(1, hdfsConfigRequest.getProperties().size());
assertEquals("value2", hdfsConfigRequest.getProperties().get("property2"));
@@ -1692,6 +1810,7 @@ public class ClusterResourceProviderTest {
verify(blueprintDAO, managementController, request, response, blueprint, stackServiceResponse1, stackServiceResponse2,
stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
stackConfigurationResponse1, stackConfigurationResponse2, stackConfigurationResponse3, stackConfigurationResponse4,
+ stackConfigurationResponse5, stackConfigurationResponse6, stackConfigurationResponse7,
blueprintConfig, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupConfig,
serviceResourceProvider, componentResourceProvider, hostResourceProvider, hostComponentResourceProvider,
configGroupResourceProvider, persistKeyValue);
@@ -1704,6 +1823,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -1908,7 +2028,7 @@ public class ClusterResourceProviderTest {
configGroupResourceProvider, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
hostResourceProvider, hostComponentResourceProvider, configGroupResourceProvider);
@@ -1928,6 +2048,7 @@ public class ClusterResourceProviderTest {
String stackVersion = "1.23";
String clusterName = "c1";
+ ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
BlueprintDAO blueprintDAO = createStrictMock(BlueprintDAO.class);
AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
AmbariManagementController managementController = createStrictMock(AmbariManagementController.class);
@@ -1950,6 +2071,9 @@ public class ClusterResourceProviderTest {
StackConfigurationResponse stackConfigurationResponse3 = createNiceMock(StackConfigurationResponse.class);
StackConfigurationResponse stackConfigurationResponse4 = createNiceMock(StackConfigurationResponse.class);
StackConfigurationResponse stackConfigurationResponse5 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse6 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse7 = createNiceMock(StackConfigurationResponse.class);
+ StackConfigurationResponse stackConfigurationResponse8 = createNiceMock(StackConfigurationResponse.class);
Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture1 = new Capture<Set<StackConfigurationRequest>>();
Capture<Set<StackConfigurationRequest>> serviceConfigurationRequestCapture2 = new Capture<Set<StackConfigurationRequest>>();
@@ -1987,6 +2111,11 @@ public class ClusterResourceProviderTest {
Capture<Map<String, String>> updateClusterPropertyMapCapture4 = new Capture<Map<String, String>>();
Capture<Set<ClusterRequest>> updateClusterRequestCapture5 = new Capture<Set<ClusterRequest>>();
Capture<Map<String, String>> updateClusterPropertyMapCapture5 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture6 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture6 = new Capture<Map<String, String>>();
+ Capture<Set<ClusterRequest>> updateClusterRequestCapture7 = new Capture<Set<ClusterRequest>>();
+ Capture<Map<String, String>> updateClusterPropertyMapCapture7 = new Capture<Map<String, String>>();
+
Capture<Request> serviceRequestCapture = new Capture<Request>();
Capture<Request> componentRequestCapture = new Capture<Request>();
@@ -2019,6 +2148,9 @@ public class ClusterResourceProviderTest {
stackConfigurationResponses2.add(stackConfigurationResponse2);
stackConfigurationResponses2.add(stackConfigurationResponse3);
stackConfigurationResponses2.add(stackConfigurationResponse4);
+ stackConfigurationResponses2.add(stackConfigurationResponse6);
+ stackConfigurationResponses2.add(stackConfigurationResponse7);
+ stackConfigurationResponses2.add(stackConfigurationResponse8);
Collection<HostGroupComponentEntity> hostGroupComponents = new LinkedHashSet<HostGroupComponentEntity>();
hostGroupComponents.add(hostGroupComponent1);
@@ -2118,7 +2250,7 @@ public class ClusterResourceProviderTest {
expect(stackConfigurationResponse2.getPropertyValue()).andReturn("value2");
expect(stackConfigurationResponse2.getPropertyAttributes()).andReturn(hdfsSiteAttributes);
- expect(stackConfigurationResponse3.getType()).andReturn("global.xml");
+ expect(stackConfigurationResponse3.getType()).andReturn("oozie-env.xml");
expect(stackConfigurationResponse3.getPropertyName()).andReturn("oozie_user");
expect(stackConfigurationResponse3.getPropertyValue()).andReturn("oozie");
@@ -2130,6 +2262,20 @@ public class ClusterResourceProviderTest {
expect(stackConfigurationResponse5.getPropertyName()).andReturn("javax.jdo.option.ConnectionURL");
expect(stackConfigurationResponse5.getPropertyValue()).andReturn("localhost:12345");
+ expect(stackConfigurationResponse6.getType()).andReturn("hbase-env.xml");
+ expect(stackConfigurationResponse6.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse6.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse7.getType()).andReturn("falcon-env.xml");
+ expect(stackConfigurationResponse7.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse7.getPropertyValue()).andReturn("value3");
+
+ expect(stackConfigurationResponse8.getType()).andReturn("hive-env.xml");
+ expect(stackConfigurationResponse8.getPropertyName()).andReturn("property3");
+ expect(stackConfigurationResponse8.getPropertyValue()).andReturn("value3");
+
+
+
expect(blueprintConfig.getBlueprintName()).andReturn("test-blueprint").anyTimes();
expect(blueprintConfig.getType()).andReturn("core-site").anyTimes();
expect(blueprintConfig.getConfigData()).andReturn(new Gson().toJson(blueprintCoreConfigProperties)).anyTimes();
@@ -2163,6 +2309,11 @@ public class ClusterResourceProviderTest {
capture(updateClusterPropertyMapCapture4))).andReturn(null);
expect(managementController.updateClusters(capture(updateClusterRequestCapture5),
capture(updateClusterPropertyMapCapture5))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture6),
+ capture(updateClusterPropertyMapCapture6))).andReturn(null);
+ expect(managementController.updateClusters(capture(updateClusterRequestCapture7),
+ capture(updateClusterPropertyMapCapture7))).andReturn(null);
+
expect(serviceResourceProvider.createResources(capture(serviceRequestCapture))).andReturn(null);
expect(componentResourceProvider.createResources(capture(componentRequestCapture))).andReturn(null);
@@ -2180,13 +2331,13 @@ public class ClusterResourceProviderTest {
replay(blueprintDAO, managementController, request, response, blueprint, stackServiceResponse1, stackServiceResponse2,
stackServiceComponentResponse1, stackServiceComponentResponse2, stackServiceComponentResponse3,
stackServiceComponentResponse4, stackConfigurationResponse1, stackConfigurationResponse2,
- stackConfigurationResponse3, stackConfigurationResponse4, stackConfigurationResponse5, blueprintConfig,
+ stackConfigurationResponse3, stackConfigurationResponse4, stackConfigurationResponse5, stackConfigurationResponse6, stackConfigurationResponse7, stackConfigurationResponse8, blueprintConfig,
blueprintConfig2, hostGroup, hostGroupComponent1, hostGroupComponent2, hostGroupComponent3, hostGroupComponent4,
hostGroupConfig, serviceResourceProvider, componentResourceProvider, hostResourceProvider,
hostComponentResourceProvider, configGroupResourceProvider, persistKeyValue, metaInfo);
// test
- ClusterResourceProvider.init(blueprintDAO, metaInfo);
+ ClusterResourceProvider.init(blueprintDAO, metaInfo, configHelper);
PersistKeyValueService.init(persistKeyValue);
ResourceProvider provider = new TestClusterResourceProvider(
managementController, serviceResourceProvider, componentResourceProvider,
@@ -2244,46 +2395,52 @@ public class ClusterResourceProviderTest {
Set<ClusterRequest> updateClusterRequest3 = updateClusterRequestCapture3.getValue();
Set<ClusterRequest> updateClusterRequest4 = updateClusterRequestCapture4.getValue();
Set<ClusterRequest> updateClusterRequest5 = updateClusterRequestCapture5.getValue();
+ Set<ClusterRequest> updateClusterRequest6 = updateClusterRequestCapture6.getValue();
+ Set<ClusterRequest> updateClusterRequest7 = updateClusterRequestCapture7.getValue();
assertEquals(1, updateClusterRequest1.size());
assertEquals(1, updateClusterRequest2.size());
assertEquals(1, updateClusterRequest3.size());
assertEquals(1, updateClusterRequest4.size());
assertEquals(1, updateClusterRequest5.size());
+ assertEquals(1, updateClusterRequest6.size());
+ assertEquals(1, updateClusterRequest7.size());
ClusterRequest ucr1 = updateClusterRequest1.iterator().next();
ClusterRequest ucr2 = updateClusterRequest2.iterator().next();
ClusterRequest ucr3 = updateClusterRequest3.iterator().next();
ClusterRequest ucr4 = updateClusterRequest4.iterator().next();
ClusterRequest ucr5 = updateClusterRequest5.iterator().next();
+ ClusterRequest ucr6 = updateClusterRequest6.iterator().next();
+ ClusterRequest ucr7 = updateClusterRequest7.iterator().next();
assertEquals(clusterName, ucr1.getClusterName());
assertEquals(clusterName, ucr2.getClusterName());
assertEquals(clusterName, ucr3.getClusterName());
assertEquals(clusterName, ucr4.getClusterName());
assertEquals(clusterName, ucr5.getClusterName());
+ assertEquals(clusterName, ucr6.getClusterName());
+ assertEquals(clusterName, ucr7.getClusterName());
ConfigurationRequest cr1 = ucr1.getDesiredConfig();
ConfigurationRequest cr2 = ucr2.getDesiredConfig();
ConfigurationRequest cr3 = ucr3.getDesiredConfig();
ConfigurationRequest cr4 = ucr4.getDesiredConfig();
ConfigurationRequest cr5 = ucr5.getDesiredConfig();
+ ConfigurationRequest cr6 = ucr6.getDesiredConfig();
+ ConfigurationRequest cr7 = ucr7.getDesiredConfig();
assertEquals("1", cr1.getVersionTag());
assertEquals("1", cr2.getVersionTag());
assertEquals("1", cr3.getVersionTag());
assertEquals("1", cr4.getVersionTag());
assertEquals("1", cr5.getVersionTag());
+ assertEquals("1", cr6.getVersionTag());
+ assertEquals("1", cr7.getVersionTag());
Map<String, ConfigurationRequest> mapConfigRequests = new HashMap<String, ConfigurationRequest>();
mapConfigRequests.put(cr1.getType(), cr1);
mapConfigRequests.put(cr2.getType(), cr2);
mapConfigRequests.put(cr3.getType(), cr3);
mapConfigRequests.put(cr4.getType(), cr4);
mapConfigRequests.put(cr5.getType(), cr5);
- assertEquals(5, mapConfigRequests.size());
- ConfigurationRequest globalConfigRequest = mapConfigRequests.get("global");
- assertEquals(4, globalConfigRequest.getProperties().size());
- assertEquals("hadoop", globalConfigRequest.getProperties().get("user_group"));
- assertEquals("ambari-qa", globalConfigRequest.getProperties().get("smokeuser"));
- assertEquals("default@REPLACEME.NOWHERE", globalConfigRequest.getProperties().get("nagios_contact"));
- assertEquals("oozie", globalConfigRequest.getProperties().get("oozie_user"));
- assertNotNull(globalConfigRequest.getPropertiesAttributes());
- assertEquals(0, globalConfigRequest.getPropertiesAttributes().size());
+ mapConfigRequests.put(cr6.getType(), cr6);
+ mapConfigRequests.put(cr7.getType(), cr7);
+ assertEquals(7, mapConfigRequests.size());
ConfigurationRequest hiveEnvConfigRequest = mapConfigRequests.get("hive-env");
assertEquals("New MySQL Database", hiveEnvConfigRequest.getProperties().get("hive_database"));
assertNotNull(hiveEnvConfigRequest.getPropertiesAttributes());
@@ -2320,7 +2477,7 @@ public class ClusterResourceProviderTest {
assertNull(updateClusterPropertyMapCapture.getValue());
assertNull(updateClusterPropertyMapCapture2.getValue());
assertNull(updateClusterPropertyMapCapture3.getValue());
- assertNull(updateClusterPropertyMapCapture4.getValue());
+ assertNull(updateClusterPropertyMapCapture5.getValue());
Request serviceRequest = serviceRequestCapture.getValue();
assertEquals(2, serviceRequest.getProperties().size());