You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2017/10/18 14:18:23 UTC
[09/13] ambari git commit: AMBARI-22254. RU: RU failed on 'Updating
configuration sqoop-atlas-application.properties' (ncole)
AMBARI-22254. RU: RU failed on 'Updating configuration sqoop-atlas-application.properties' (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c924ebdb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c924ebdb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c924ebdb
Branch: refs/heads/branch-feature-AMBARI-20859
Commit: c924ebdb6da802ab70f95c6f974087645a600b78
Parents: 53f028e
Author: Nate Cole <nc...@hortonworks.com>
Authored: Tue Oct 17 13:38:10 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Tue Oct 17 14:18:24 2017 -0400
----------------------------------------------------------------------
.../serveraction/upgrades/ConfigureAction.java | 5 ++++
.../ambari/server/state/stack/UpgradePack.java | 30 +++++++++++++++++++-
.../state/stack/upgrade/ClusterGrouping.java | 13 +++++++++
.../state/stack/upgrade/ConfigureTask.java | 16 +++++++++++
.../internal/UpgradeResourceProviderTest.java | 13 +++++++++
.../state/stack/ConfigUpgradeValidityTest.java | 10 +++++++
6 files changed, 86 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
index a7f910f..f15a507 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/ConfigureAction.java
@@ -183,6 +183,11 @@ public class ConfigureAction extends AbstractUpgradeServerAction {
String configType = commandParameters.get(ConfigureTask.PARAMETER_CONFIG_TYPE);
String serviceName = cluster.getServiceByConfigType(configType);
+ // !!! we couldn't get the service based on its config type, so try the associated
+ if (StringUtils.isBlank(serviceName)) {
+ serviceName = commandParameters.get(ConfigureTask.PARAMETER_ASSOCIATED_SERVICE);
+ }
+
RepositoryVersionEntity sourceRepoVersion = upgradeContext.getSourceRepositoryVersion(serviceName);
RepositoryVersionEntity targetRepoVersion = upgradeContext.getTargetRepositoryVersion(serviceName);
StackId sourceStackId = sourceRepoVersion.getStackId();
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
index 256b71d..7c32f37 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
@@ -37,11 +37,13 @@ import javax.xml.bind.annotation.XmlValue;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping;
+import org.apache.ambari.server.state.stack.upgrade.ConfigureTask;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.Grouping;
import org.apache.ambari.server.state.stack.upgrade.ServiceCheckGrouping;
import org.apache.ambari.server.state.stack.upgrade.Task;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
+import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -446,7 +448,7 @@ public class UpgradePack {
private void initializeProcessingComponentMappings() {
m_process = new LinkedHashMap<>();
- if (null == processing || processing.isEmpty()) {
+ if (CollectionUtils.isEmpty(processing)) {
return;
}
@@ -574,6 +576,32 @@ public class UpgradePack {
throw new RuntimeException(error);
}
+
+ // !!! check for config tasks and mark the associated service
+ initializeTasks(service.name, preTasks);
+ initializeTasks(service.name, postTasks);
+ initializeTasks(service.name, tasks);
+ initializeTasks(service.name, preDowngradeTasks);
+ initializeTasks(service.name, postDowngradeTasks);
+ }
+
+ /**
+ * Checks for config tasks and marks the associated service.
+ * @param service
+ * the service name
+ * @param tasks
+ * the list of tasks to check
+ */
+ private void initializeTasks(String service, List<Task> tasks) {
+ if (CollectionUtils.isEmpty(tasks)) {
+ return;
+ }
+
+ for (Task task : tasks) {
+ if (Task.Type.CONFIGURE == task.getType()) {
+ ((ConfigureTask) task).associatedService = service;
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
index 65038e2..5bc3d8f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -126,6 +127,18 @@ public class ClusterGrouping extends Grouping {
return Objects.toStringHelper(this).add("id", id).add("title",
title).omitNullValues().toString();
}
+
+ /**
+ * If a task is found that is configure, set its associated service. This is used
+ * if the configuration type cannot be isolated by service.
+ */
+ void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {
+ if (task.getType().equals(Task.Type.CONFIGURE) && StringUtils.isNotEmpty(service)) {
+ ((ConfigureTask) task).associatedService = service;
+ }
+ }
+
+
}
public class ClusterBuilder extends StageWrapperBuilder {
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java
index f88691d..75b5f59 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ConfigureTask.java
@@ -26,6 +26,7 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import org.apache.ambari.server.serveraction.upgrades.ConfigureAction;
@@ -91,6 +92,11 @@ public class ConfigureTask extends ServerSideActionTask {
*/
public static final String PARAMETER_INSERTIONS = "configure-task-insertions";
+ /**
+ * The associated service for the config task
+ */
+ public static final String PARAMETER_ASSOCIATED_SERVICE = "configure-task-associated-service";
+
public static final String actionVerb = "Configuring";
/**
@@ -114,6 +120,12 @@ public class ConfigureTask extends ServerSideActionTask {
public boolean supportsPatch = false;
/**
+ * The associated service is the service where this config task is specified
+ */
+ @XmlTransient
+ public String associatedService;
+
+ /**
* {@inheritDoc}
*/
@Override
@@ -236,6 +248,10 @@ public class ConfigureTask extends ServerSideActionTask {
configParameters.put(ConfigureTask.PARAMETER_INSERTIONS, m_gson.toJson(insertions));
}
+ if (StringUtils.isNotEmpty(associatedService)) {
+ configParameters.put(ConfigureTask.PARAMETER_ASSOCIATED_SERVICE, associatedService);
+ }
+
return configParameters;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 20adac2..d6b1ab3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -45,6 +45,7 @@ import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper;
+import org.apache.ambari.server.actionmanager.ExecutionCommandWrapperFactory;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.actionmanager.Stage;
@@ -67,12 +68,14 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.dao.ExecutionCommandDAO;
import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.RequestDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.dao.StageDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
+import org.apache.ambari.server.orm.entities.ExecutionCommandEntity;
import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.RequestEntity;
@@ -100,6 +103,7 @@ import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeContext;
import org.apache.ambari.server.state.UpgradeHelper;
import org.apache.ambari.server.state.UpgradeState;
+import org.apache.ambari.server.state.stack.upgrade.ConfigureTask;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
import org.apache.ambari.server.topology.TopologyManager;
@@ -1832,6 +1836,15 @@ public class UpgradeResourceProviderTest extends EasyMockSupport {
if (StringUtils.isNotBlank(command.getCustomCommandName()) &&
command.getCustomCommandName().equals(ConfigureAction.class.getName())) {
foundConfigTask = true;
+
+ ExecutionCommandDAO dao = injector.getInstance(ExecutionCommandDAO.class);
+ ExecutionCommandEntity entity = dao.findByPK(command.getTaskId());
+ ExecutionCommandWrapperFactory factory = injector.getInstance(ExecutionCommandWrapperFactory.class);
+ ExecutionCommandWrapper wrapper = factory.createFromJson(new String(entity.getCommand()));
+ Map<String, String> params = wrapper.getExecutionCommand().getCommandParams();
+ assertTrue(params.containsKey(ConfigureTask.PARAMETER_ASSOCIATED_SERVICE));
+ assertEquals("ZOOKEEPER", params.get(ConfigureTask.PARAMETER_ASSOCIATED_SERVICE));
+
break;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c924ebdb/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
index 2259e30..2930590 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
@@ -45,6 +45,7 @@ import org.apache.ambari.server.state.stack.upgrade.Task.Type;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
+import org.apache.commons.lang.StringUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -128,6 +129,12 @@ public class ConfigUpgradeValidityTest {
ConfigureTask configureTask = (ConfigureTask) executionStage.task;
assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
sourceStack);
+
+ if (StringUtils.isNotBlank(executionStage.service)) {
+ Assert.assertEquals(executionStage.service, configureTask.associatedService);
+ } else {
+ Assert.assertTrue(null == configureTask.associatedService);
+ }
}
}
}
@@ -144,6 +151,7 @@ public class ConfigUpgradeValidityTest {
ConfigureTask configureTask = (ConfigureTask) preTask;
assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
sourceStack);
+ Assert.assertTrue(StringUtils.isNotBlank(configureTask.associatedService));
}
}
@@ -153,6 +161,7 @@ public class ConfigUpgradeValidityTest {
ConfigureTask configureTask = (ConfigureTask) task;
assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
sourceStack);
+ Assert.assertTrue(StringUtils.isNotBlank(configureTask.associatedService));
}
}
}
@@ -163,6 +172,7 @@ public class ConfigUpgradeValidityTest {
ConfigureTask configureTask = (ConfigureTask) postTask;
assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
sourceStack);
+ Assert.assertTrue(StringUtils.isNotBlank(configureTask.associatedService));
}
}
}