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