You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2017/05/24 02:40:03 UTC
[46/50] [abbrv] ambari git commit: AMBARI-20984 Be able to include
stack repos in blueprint (dili)
AMBARI-20984 Be able to include stack repos in blueprint (dili)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/cd769e2e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/cd769e2e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/cd769e2e
Branch: refs/heads/branch-feature-AMBARI-12556
Commit: cd769e2e79de11519b333aa86c4c54e68be40996
Parents: 4fcdaae
Author: Di Li <di...@apache.org>
Authored: Tue May 23 12:03:53 2017 -0400
Committer: Di Li <di...@apache.org>
Committed: Tue May 23 12:03:53 2017 -0400
----------------------------------------------------------------------
.../server/api/services/AmbariMetaInfo.java | 21 ++++
.../ambari/server/topology/Blueprint.java | 3 +
.../ambari/server/topology/BlueprintImpl.java | 33 +++++-
.../server/topology/RepositorySetting.java | 116 +++++++++++++++++++
.../apache/ambari/server/topology/Setting.java | 2 +
.../ambari/server/topology/TopologyManager.java | 49 +++++++-
.../ClusterDeployWithStartOnlyTest.java | 5 +-
...InstallWithoutStartOnComponentLevelTest.java | 5 +-
.../ClusterInstallWithoutStartTest.java | 7 +-
.../ambari/server/topology/SettingTest.java | 18 +++
.../server/topology/TopologyManagerTest.java | 5 +-
11 files changed, 250 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index c655c62..b509e97 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@ -934,6 +934,27 @@ public class AmbariMetaInfo {
}
}
+ public void createRepo(String stackName, String stackVersion, String osType, String repoId, String baseUrl, String mirrorsList) throws AmbariException {
+ if (!stackRoot.exists()) {
+ throw new StackAccessException("Create repo - Stack root does not exist.");
+ }
+
+ if (null != baseUrl) {
+ createRepoInMetaInfo(stackName, stackVersion, osType, repoId, baseUrl, REPOSITORY_XML_PROPERTY_BASEURL);
+ } else if (null != mirrorsList) {
+ createRepoInMetaInfo(stackName, stackVersion, osType, repoId, mirrorsList, REPOSITORY_XML_PROPERTY_MIRRORSLIST);
+ }
+ }
+
+ private void createRepoInMetaInfo(String stackName, String stackVersion, String osType, String repoId, String value, String repositoryXmlProperty) {
+ String metaKey = generateRepoMetaKey(stackName, stackVersion, osType,
+ repoId, repositoryXmlProperty);
+ MetainfoEntity entity = new MetainfoEntity();
+ entity.setMetainfoName(metaKey);
+ entity.setMetainfoValue(value);
+ metaInfoDAO.create(entity);
+ }
+
public File getStackRoot() {
return stackRoot;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/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 139a1ee..99e1c75 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
@@ -19,6 +19,7 @@
package org.apache.ambari.server.topology;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import org.apache.ambari.server.controller.internal.Stack;
@@ -167,4 +168,6 @@ public interface Blueprint {
* @return entity representation of the blueprint
*/
BlueprintEntity toEntity();
+
+ List<RepositorySetting> getRepositorySettings();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/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 826e4e5..415efd8 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
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -56,6 +57,7 @@ public class BlueprintImpl implements Blueprint {
private BlueprintValidator validator;
private SecurityConfiguration security;
private Setting setting;
+ private List<RepositorySetting> repoSettings;
public BlueprintImpl(BlueprintEntity entity) throws NoSuchStackException {
this.name = entity.getBlueprintName();
@@ -72,6 +74,7 @@ public class BlueprintImpl implements Blueprint {
configuration.setParentConfiguration(stack.getConfiguration(getServices()));
validator = new BlueprintValidatorImpl(this);
processSetting(entity.getSettings());
+ processRepoSettings();
}
public BlueprintImpl(String name, Collection<HostGroup> groups, Stack stack, Configuration configuration,
@@ -363,7 +366,7 @@ public class BlueprintImpl implements Blueprint {
} catch (StackAccessException e) {
throw new NoSuchStackException(stackEntity.getStackName(), stackEntity.getStackVersion());
} catch (AmbariException e) {
- //todo:
+ //todo:
throw new RuntimeException("An error occurred parsing the stack information.", e);
}
}
@@ -615,4 +618,32 @@ public class BlueprintImpl implements Blueprint {
}
return false;
}
+
+ /**
+ * Parse stack repo info stored in the blueprint_settings table
+ * @return set of repositories
+ * */
+ private void processRepoSettings(){
+ repoSettings = new ArrayList<RepositorySetting>();
+ if (setting != null){
+ Set<HashMap<String, String>> settingValue = setting.getSettingValue(Setting.SETTING_NAME_REPOSITORY_SETTINGS);
+ for (Map<String, String> setting : settingValue) {
+ RepositorySetting rs = parseRepositorySetting(setting);
+ repoSettings.add(rs);
+ }
+ }
+ }
+
+ private RepositorySetting parseRepositorySetting(Map<String, String> setting){
+ RepositorySetting result = new RepositorySetting();
+ result.setOperatingSystem(setting.get(RepositorySetting.OPERATING_SYSTEM));
+ result.setOverrideStrategy(setting.get(RepositorySetting.OVERRIDE_STRATEGY));
+ result.setRepoId(setting.get(RepositorySetting.REPO_ID));
+ result.setBaseUrl(setting.get(RepositorySetting.BASE_URL));
+ return result;
+ }
+
+ public List<RepositorySetting> getRepositorySettings(){
+ return repoSettings;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositorySetting.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositorySetting.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositorySetting.java
new file mode 100644
index 0000000..35e370e
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositorySetting.java
@@ -0,0 +1,116 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.topology;
+
+public class RepositorySetting {
+ /**
+ * Settings for each repo setting sections
+ */
+ public static final String OVERRIDE_STRATEGY = "override_strategy";
+ public static final String OVERRIDE_STRATEGY_ALWAYS_APPLY = "ALWAYS_APPLY";
+ public static final String OVERRIDE_STRATEGY_APPLY_WHEN_MISSING = "APPLY_WHEN_MISSING";
+ public static final String OPERATING_SYSTEM = "operating_system";
+ public static final String REPO_ID = "repo_id";
+ public static final String BASE_URL = "base_url";
+
+ private String overrideStrategy;
+ private String operatingSystem;
+ private String repoId;
+ private String baseUrl;
+
+ /**
+ * When specified under the "settings" section, it allows Ambari to overwrite existing repos stored
+ * in the metainfo table in the Ambari server database.
+ * Two override strategies
+ * ALWAYS_APPLY will override the existing repo. If repo does not exists, add it.
+ * APPLY_WHEN_MISSING will only add the repo info to the table if there is no such entries yet.
+ *
+ * <pre>
+ * {@code
+ * "settings" : [
+ * {
+ * "repository_settings" : [
+ * {
+ * "override_strategy":"ALWAYS_APPLY",
+ * "operating_system":"redhat7",
+ * "repo_id":"HDP-2.6",
+ * "base_url":"http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos7/2.x/BUILDS/2.6.0.3-8"
+ * },
+ * {
+ * "override_strategy":"APPLY_WHEN_MISSING",
+ * "operating_system":"redhat7",
+ * "repo_id": "HDP-UTILS-1.1.0.21",
+ * "repo_name": "HDP-UTILS",
+ * "base_url": "http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7"
+ * }
+ * ]
+ * }]
+ * }
+ * </pre>
+ */
+ public String getOverrideStrategy() {
+ return overrideStrategy;
+ }
+
+ public void setOverrideStrategy(String overrideStrategy) {
+ this.overrideStrategy = overrideStrategy;
+ }
+
+ /**
+ * Get repository id
+ * */
+ public String getOperatingSystem() {
+ return operatingSystem;
+ }
+
+ public void setOperatingSystem(String operatingSystem) {
+ this.operatingSystem = operatingSystem;
+ }
+
+ /**
+ * Get repository id
+ * */
+ public String getRepoId() {
+ return repoId;
+ }
+
+ public void setRepoId(String repoId) {
+ this.repoId = repoId;
+ }
+
+ /**
+ * Get repository url
+ * */
+ public String getBaseUrl() {
+ return baseUrl;
+ }
+
+ public void setBaseUrl(String baseUrl) {
+ this.baseUrl = baseUrl;
+ }
+
+ public String toString(){
+ StringBuilder strBldr = new StringBuilder();
+ strBldr.append(OVERRIDE_STRATEGY);strBldr.append(": ");strBldr.append(overrideStrategy);
+ strBldr.append(OPERATING_SYSTEM);strBldr.append(": ");strBldr.append(operatingSystem);
+ strBldr.append(REPO_ID);strBldr.append(": ");strBldr.append(repoId);
+ strBldr.append(BASE_URL);strBldr.append(": ");strBldr.append(baseUrl);
+ return strBldr.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
index 555192c..df31e4b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Setting.java
@@ -43,6 +43,8 @@ public class Setting {
public static final String SETTING_NAME_NAME = "name";
+ public static final String SETTING_NAME_REPOSITORY_SETTINGS = "repository_settings";
+
/**
* When specified under the "service_settings" section, it indicates whether credential store
* use is enabled for that service. Value is "true" or "false". Specify a value of "true"
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
index f5cf498..14bc446 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
@@ -33,11 +33,10 @@ import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import javax.inject.Inject;
-
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorBlueprintProcessor;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariServer;
@@ -80,6 +79,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.eventbus.Subscribe;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
@@ -116,6 +117,9 @@ public class TopologyManager {
private Map<Long, ClusterTopology> clusterTopologyMap = new HashMap<>();
@Inject
+ private Injector injector;
+
+ @Inject
private StackAdvisorBlueprintProcessor stackAdvisorBlueprintProcessor;
@Inject
@@ -290,6 +294,11 @@ public class TopologyManager {
topologyValidatorService.validateTopologyConfiguration(topology);
+ if (repoVersion == null){
+ //Override repos stored in the metainfo table with ones included in the blueprint
+ updateRepos(topology.getBlueprint().getRepositorySettings(), stack);
+ }
+
// create resources
ambariContext.createAmbariResources(topology, clusterName, securityType, repoVersion);
@@ -324,7 +333,6 @@ public class TopologyManager {
addClusterConfigRequest(topology, new ClusterConfigurationRequest(ambariContext, topology, true,
stackAdvisorBlueprintProcessor, securityType == SecurityType.KERBEROS));
-
// Notify listeners that cluster configuration finished
executor.submit(new Callable<Boolean>() {
@Override
@@ -345,6 +353,41 @@ public class TopologyManager {
return getRequestStatus(logicalRequest.getRequestId());
}
+ void updateRepos(List<RepositorySetting> repoSettings, Stack stack) {
+ AmbariMetaInfo ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
+ boolean repoExists = false;
+ String stackName = stack.getName();
+ String stackVersion = stack.getVersion();
+ for (RepositorySetting repoSetting: repoSettings){
+ String repoSettingDetails = repoSetting.toString();
+ LOG.info(String.format("New repository setting: %s ", repoSettingDetails));
+ String operatingSystem = repoSetting.getOperatingSystem();
+ String repoId = repoSetting.getRepoId();
+ try {
+ ambariMetaInfo.getRepository(stackName, stackVersion, operatingSystem, repoId);
+ repoExists = true;
+ } catch (AmbariException e){
+ repoExists = false;
+ }
+ LOG.info(String.format("Repo exists: %s ", repoExists));
+ String overrideStrategy = repoSetting.getOverrideStrategy();
+ if (repoExists){
+ if (RepositorySetting.OVERRIDE_STRATEGY_ALWAYS_APPLY.equals(overrideStrategy)){
+ try {
+ ambariMetaInfo.updateRepo(stackName, stackVersion, operatingSystem, repoId, repoSetting.getBaseUrl(), null);
+ } catch (AmbariException e) {
+ LOG.error(String.format("Failed to update repo with information %s", repoSettingDetails), e);
+ }
+ }
+ } else {
+ try {
+ ambariMetaInfo.createRepo(stackName, stackVersion, operatingSystem, repoId, repoSetting.getBaseUrl(), null);
+ } catch (AmbariException e) {
+ LOG.error(String.format("Failed to insert repo with information %s", repoSettingDetails), e);
+ }
+ }
+ }
+ }
/**
* Saves the quick links profile to the DB as an Ambari setting. Creates a new setting entity or updates the existing
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
index c8d4d55..26ba56d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
@@ -252,6 +252,7 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
expect(blueprint.getServices()).andReturn(Arrays.asList("service1", "service2")).anyTimes();
expect(blueprint.getStack()).andReturn(stack).anyTimes();
expect(blueprint.isValidConfigType(anyString())).andReturn(true).anyTimes();
+ expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<RepositorySetting>()).anyTimes();
// don't expect toEntity()
expect(stack.getAllConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes();
@@ -293,7 +294,7 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
expect(request.getProvisionAction()).andReturn(ProvisionAction.START_ONLY).anyTimes();
expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
-
+ expect(request.getRepositoryVersion()).andReturn("1").anyTimes();
expect(group1.getBlueprintName()).andReturn(BLUEPRINT_NAME).anyTimes();
expect(group1.getCardinality()).andReturn("test cardinality").anyTimes();
@@ -337,7 +338,7 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
expect(ambariContext.getPersistedTopologyState()).andReturn(persistedState).anyTimes();
//todo: don't ignore param
- ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), (String) isNull());
+ ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), eq("1"));
expectLastCall().once();
expect(ambariContext.getNextRequestId()).andReturn(1L).once();
expect(ambariContext.isClusterKerberosEnabled(CLUSTER_ID)).andReturn(false).anyTimes();
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
index 4c9815c..f01cbfe 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
@@ -248,6 +248,7 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
expect(blueprint.getServices()).andReturn(Arrays.asList("service1", "service2")).anyTimes();
expect(blueprint.getStack()).andReturn(stack).anyTimes();
expect(blueprint.isValidConfigType(anyString())).andReturn(true).anyTimes();
+ expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<RepositorySetting>()).anyTimes();
// don't expect toEntity()
expect(stack.getAllConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes();
@@ -289,7 +290,7 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
expect(request.getProvisionAction()).andReturn(INSTALL_AND_START).anyTimes();
expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
-
+ expect(request.getRepositoryVersion()).andReturn("1").anyTimes();
expect(group1.getBlueprintName()).andReturn(BLUEPRINT_NAME).anyTimes();
expect(group1.getCardinality()).andReturn("test cardinality").anyTimes();
@@ -339,7 +340,7 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
expect(ambariContext.getPersistedTopologyState()).andReturn(persistedState).anyTimes();
//todo: don't ignore param
- ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), (String) isNull());
+ ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), (String) eq("1"));
expectLastCall().once();
expect(ambariContext.getNextRequestId()).andReturn(1L).once();
expect(ambariContext.isClusterKerberosEnabled(CLUSTER_ID)).andReturn(false).anyTimes();
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
index 1bdeb1b..b2284a8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
@@ -82,6 +82,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(AmbariServer.class)
public class ClusterInstallWithoutStartTest extends EasyMockSupport {
+
private static final String CLUSTER_NAME = "test-cluster";
private static final long CLUSTER_ID = 1;
private static final String BLUEPRINT_NAME = "test-bp";
@@ -249,6 +250,7 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
expect(blueprint.getServices()).andReturn(Arrays.asList("service1", "service2")).anyTimes();
expect(blueprint.getStack()).andReturn(stack).anyTimes();
expect(blueprint.isValidConfigType(anyString())).andReturn(true).anyTimes();
+ expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<RepositorySetting>()).anyTimes();
// don't expect toEntity()
expect(stack.getAllConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes();
@@ -287,11 +289,10 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes();
expect(request.getConfiguration()).andReturn(topoConfiguration).anyTimes();
expect(request.getHostGroupInfo()).andReturn(groupInfoMap).anyTimes();
-
expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY);
expect(request.getProvisionAction()).andReturn(INSTALL_ONLY).anyTimes();
expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();
-
+ expect(request.getRepositoryVersion()).andReturn("1").anyTimes();
expect(group1.getBlueprintName()).andReturn(BLUEPRINT_NAME).anyTimes();
expect(group1.getCardinality()).andReturn("test cardinality").anyTimes();
@@ -336,7 +337,7 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
expect(ambariContext.getPersistedTopologyState()).andReturn(persistedState).anyTimes();
//todo: don't ignore param
- ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), (String) isNull());
+ ambariContext.createAmbariResources(isA(ClusterTopology.class), eq(CLUSTER_NAME), (SecurityType) isNull(), eq("1"));
expectLastCall().once();
expect(ambariContext.getNextRequestId()).andReturn(1L).once();
expect(ambariContext.isClusterKerberosEnabled(CLUSTER_ID)).andReturn(false).anyTimes();
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/test/java/org/apache/ambari/server/topology/SettingTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/SettingTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/SettingTest.java
index 0007acf..ccd3b0c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/SettingTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/SettingTest.java
@@ -40,6 +40,7 @@ public class SettingTest {
Set<HashMap<String, String>> setting1 = new HashSet<>();
Set<HashMap<String, String>> setting2 = new HashSet<>();
Set<HashMap<String, String>> setting3 = new HashSet<>();
+ Set<HashMap<String, String>> setting4 = new HashSet<>();
// Setting 1: Property1
HashMap<String, String> setting1Properties1 = new HashMap<>();
@@ -58,13 +59,30 @@ public class SettingTest {
setting2.add(setting2Properties1);
setting2.add(setting2Properties2);
+ //Setting 3: Property 1
HashMap<String, String> setting3Properties1 = new HashMap<>();
setting1Properties1.put(Setting.SETTING_NAME_SKIP_FAILURE, "true");
setting1.add(setting3Properties1);
+ //Setting 4: Property 1 and 2
+ HashMap<String, String> setting4Properties1 = new HashMap<>();
+ setting4Properties1.put(RepositorySetting.OVERRIDE_STRATEGY, RepositorySetting.OVERRIDE_STRATEGY_ALWAYS_APPLY);
+ setting4Properties1.put(RepositorySetting.OPERATING_SYSTEM, "redhat7");
+ setting4Properties1.put(RepositorySetting.REPO_ID, "HDP");
+ setting4Properties1.put(RepositorySetting.BASE_URL, "http://localhost/repo");
+ setting4.add(setting4Properties1);
+
+ HashMap<String, String> setting4Properties2 = new HashMap<>();
+ setting4Properties2.put(RepositorySetting.OVERRIDE_STRATEGY, RepositorySetting.OVERRIDE_STRATEGY_ALWAYS_APPLY);
+ setting4Properties2.put(RepositorySetting.OPERATING_SYSTEM, "redhat7");
+ setting4Properties2.put(RepositorySetting.REPO_ID, "HDP-UTIL");
+ setting4Properties2.put(RepositorySetting.BASE_URL, "http://localhost/repo");
+ setting4.add(setting4Properties2);
+
properties.put(Setting.SETTING_NAME_RECOVERY_SETTINGS, setting1);
properties.put(Setting.SETTING_NAME_SERVICE_SETTINGS, setting2);
properties.put(Setting.SETTING_NAME_DEPLOYMENT_SETTINGS, setting3);
+ properties.put(Setting.SETTING_NAME_REPOSITORY_SETTINGS, setting4);
Setting setting = new Setting(properties);
assertEquals(properties, setting.getProperties());
http://git-wip-us.apache.org/repos/asf/ambari/blob/cd769e2e/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
index 02cc64f..06efb9e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java
@@ -100,7 +100,6 @@ public class TopologyManagerTest {
private static final String SAMPLE_QUICKLINKS_PROFILE_2 =
"{\"filters\":[],\"services\":[{\"name\":\"HDFS\",\"components\":[],\"filters\":[{\"visible\":true}]}]}";
-
@Rule
public EasyMockRule mocks = new EasyMockRule(this);
@@ -254,6 +253,7 @@ public class TopologyManagerTest {
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).anyTimes();
expect(blueprint.getServices()).andReturn(Arrays.asList("service1", "service2")).anyTimes();
expect(blueprint.getStack()).andReturn(stack).anyTimes();
+ expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<RepositorySetting>()).anyTimes();
// don't expect toEntity()
expect(stack.getAllConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes();
@@ -283,9 +283,8 @@ public class TopologyManagerTest {
expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes();
expect(request.getConfiguration()).andReturn(topoConfiguration).anyTimes();
expect(request.getHostGroupInfo()).andReturn(groupInfoMap).anyTimes();
-
+ expect(request.getRepositoryVersion()).andReturn("1").anyTimes();
expect(request.getConfigRecommendationStrategy()).andReturn(ConfigRecommendationStrategy.NEVER_APPLY).anyTimes();
-
expect(request.getSecurityConfiguration()).andReturn(null).anyTimes();