You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2018/07/06 17:57:06 UTC

[ambari] branch branch-feature-AMBARI-14714 updated: [AMBARI-22994] Completely Remove Upgrade Pack Target Information (#1698)

This is an automated email from the ASF dual-hosted git repository.

ncole pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by this push:
     new 9630684  [AMBARI-22994] Completely Remove Upgrade Pack Target Information (#1698)
9630684 is described below

commit 96306845470b47c6cb1818577a8a1f536848dc78
Author: ncole <nc...@hortonworks.com>
AuthorDate: Fri Jul 6 13:57:02 2018 -0400

    [AMBARI-22994] Completely Remove Upgrade Pack Target Information (#1698)
---
 .../apache/ambari/server/state/UpgradeHelper.java  | 78 +---------------------
 .../ambari/server/state/stack/UpgradePack.java     | 29 --------
 .../stack/upgrade/RepositoryVersionHelper.java     | 42 ------------
 ambari-server/src/main/resources/upgrade-pack.xsd  |  2 -
 .../checks/HostsMasterMaintenanceCheckTest.java    |  3 -
 .../PreUpgradeCheckResourceProviderTest.java       |  4 --
 .../mpacks-v2/upgrade-packs/upgrade-basic.xml      |  2 -
 7 files changed, 1 insertion(+), 159 deletions(-)

diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index ea559bc..1367e3f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -200,9 +200,6 @@ public class UpgradeHelper {
   @Inject
   private Provider<AmbariMetaInfo> m_ambariMetaInfoProvider;
 
-  @Inject
-  private Provider<Clusters> m_clusters;
-
   /**
    * Used to update the configuration properties.
    */
@@ -234,80 +231,6 @@ public class UpgradeHelper {
   private StackDAO m_stackDAO;
 
   /**
-   * Get right Upgrade Pack, depends on stack, direction and upgrade type
-   * information
-   *
-   * @param clusterName
-   *          The name of the cluster
-   * @param sourceStackId
-   *          the "from" stack for this upgrade/downgrade
-   * @param targetStackId
-   *          the "to" stack for this upgrade/downgrade
-   * @param direction
-   *          {@code Direction} of the upgrade
-   * @param upgradeType
-   *          The {@code UpgradeType}
-   * @param preferredUpgradePackName
-   *          For unit test, need to prefer an upgrade pack since multiple
-   *          matches can be found.
-   * @return {@code UpgradeType} object
-   * @throws AmbariException
-   */
-  public UpgradePack suggestUpgradePack(String clusterName,
-      StackId sourceStackId, StackId targetStackId, Direction direction, UpgradeType upgradeType,
-      String preferredUpgradePackName) throws AmbariException {
-
-    // Find upgrade packs based on current stack. This is where to upgrade from
-    Cluster cluster = m_clusters.get().getCluster(clusterName);
-    StackId currentStack = cluster.getCurrentStackVersion();
-
-    StackId stackForUpgradePack = targetStackId;
-
-    if (direction.isDowngrade()) {
-      stackForUpgradePack = sourceStackId;
-    }
-
-    Map<String, UpgradePack> packs = m_ambariMetaInfoProvider.get().getUpgradePacks(
-        currentStack.getStackName(), currentStack.getStackVersion());
-
-    UpgradePack pack = null;
-
-    if (StringUtils.isNotEmpty(preferredUpgradePackName) && packs.containsKey(preferredUpgradePackName)) {
-      pack = packs.get(preferredUpgradePackName);
-
-      LOG.warn("Upgrade pack '{}' not found for stack {}", preferredUpgradePackName, currentStack);
-    }
-
-    // Best-attempt at picking an upgrade pack assuming within the same stack whose target stack version matches.
-    // If multiple candidates are found, raise an exception.
-    if (null == pack) {
-      for (UpgradePack upgradePack : packs.values()) {
-        if (null != upgradePack.getTargetStack()
-            && StringUtils.equals(upgradePack.getTargetStack(), stackForUpgradePack.getStackId())
-            && upgradeType == upgradePack.getType()) {
-          if (null == pack) {
-            // Pick the pack.
-            pack = upgradePack;
-          } else {
-            throw new AmbariException(
-                String.format(
-                    "Unable to perform %s. Found multiple upgrade packs for type %s and stack %s",
-                    direction.getText(false), upgradeType.toString(), stackForUpgradePack));
-          }
-        }
-      }
-    }
-
-    if (null == pack) {
-      throw new AmbariException(
-          String.format("Unable to perform %s. Could not locate %s upgrade pack for stack %s",
-              direction.getText(false), upgradeType.toString(), stackForUpgradePack));
-    }
-
-   return pack;
-  }
-
-  /**
    * Generates a list of UpgradeGroupHolder items that are used to execute either
    * an upgrade or a downgrade.  Each lifecycle is processed one-by-one from the upgrade packs
    *
@@ -349,6 +272,7 @@ public class UpgradeHelper {
           throw new IllegalArgumentException(e);
         }
       });
+
     }
 
     return groups;
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 8286c70..62759f5 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
@@ -24,7 +24,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import javax.xml.bind.Unmarshaller;
@@ -67,12 +66,6 @@ public class UpgradePack {
    */
   private String name;
 
-  @XmlElement(name="target")
-  private String target;
-
-  @XmlElement(name="target-stack")
-  private String targetStack;
-
   @XmlElement(name="lifecycle")
   public List<Lifecycle> lifecycles;
 
@@ -126,12 +119,6 @@ public class UpgradePack {
   public void setName(String name) {
     this.name = name;
   }
-  /**
-   * @return the target version for the upgrade pack
-   */
-  public String getTarget() {
-    return target;
-  }
 
   /**
    * @return the type of upgrade, e.g., "ROLLING" or "NON_ROLLING"
@@ -175,13 +162,6 @@ public class UpgradePack {
   }
 
   /**
-   * @return the target stack, or {@code null} if the upgrade is within the same stack
-   */
-  public String getTargetStack() {
-    return targetStack;
-  }
-
-  /**
    * Used to get all groups defined for an upgrade.  This method is deprecated as orchestration
    * will change to per-lifecycle.  At the time of writing, keep this for compilation purposes.
    * @return
@@ -245,15 +225,6 @@ public class UpgradePack {
     return downgradeAllowed;
   }
 
-  public boolean canBeApplied(String targetVersion){
-    // check that upgrade pack can be applied to selected stack
-    // converting 2.2.*.* -> 2\.2(\.\d+)?(\.\d+)?(-\d+)?
-    String regexPattern = getTarget().replaceAll("\\.", "\\\\."); // . -> \.
-    regexPattern = regexPattern.replaceAll("\\\\\\.\\*", "(\\\\\\.\\\\d+)?"); // \.* -> (\.\d+)?
-    regexPattern = regexPattern.concat("(-\\d+)?");
-    return Pattern.matches(regexPattern, targetVersion);
-  }
-
   /**
    * Calculates the group orders when performing a rolling downgrade
    * <ul>
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
index d451b4c..0fab3c5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
@@ -20,7 +20,6 @@ package org.apache.ambari.server.state.stack.upgrade;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 import java.util.Map.Entry;
 
 import org.apache.ambari.annotations.Experimental;
@@ -42,9 +41,6 @@ import org.apache.ambari.server.state.Mpack;
 import org.apache.ambari.server.state.RepositoryInfo;
 import org.apache.ambari.server.state.ServiceComponent;
 import org.apache.ambari.server.state.ServiceGroup;
-import org.apache.ambari.server.state.stack.OsFamily;
-import org.apache.ambari.server.state.stack.UpgradePack;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,14 +64,8 @@ public class RepositoryVersionHelper {
   private Gson gson;
 
   @Inject
-  private Provider<AmbariMetaInfo> ami;
-
-  @Inject
   private Provider<Configuration> configuration;
 
-  @Inject
-  private Provider<OsFamily> os_family;
-
   @Inject Provider<Clusters> clusters;
 
   /**
@@ -113,38 +103,6 @@ public class RepositoryVersionHelper {
   }
 
   /**
-   * Scans the given stack for upgrade packages which can be applied to update the cluster to given repository version.
-   *
-   * @param stackName stack name
-   * @param stackVersion stack version
-   * @param repositoryVersion target repository version
-   * @param upgradeType if not {@code null} null, will only return upgrade packs whose type matches.
-   * @return upgrade pack name
-   * @throws AmbariException if no upgrade packs suit the requirements
-   */
-  public String getUpgradePackageName(String stackName, String stackVersion, String repositoryVersion, UpgradeType upgradeType) throws AmbariException {
-    final Map<String, UpgradePack> upgradePacks = ami.get().getUpgradePacks(stackName, stackVersion);
-    for (UpgradePack upgradePack : upgradePacks.values()) {
-      final String upgradePackName = upgradePack.getName();
-
-      if (null != upgradeType && upgradePack.getType() != upgradeType) {
-        continue;
-      }
-
-      // check that upgrade pack has <target> node
-      if (StringUtils.isBlank(upgradePack.getTarget())) {
-        LOG.error("Upgrade pack " + upgradePackName + " is corrupted, it should contain <target> node");
-        continue;
-      }
-      if (upgradePack.canBeApplied(repositoryVersion)) {
-        return upgradePackName;
-      }
-    }
-    throw new AmbariException("There were no suitable upgrade packs for stack " + stackName + " " + stackVersion +
-        ((null != upgradeType) ? " and upgrade type " + upgradeType : ""));
-  }
-
-  /**
    * Return repositories available for target os version on host based on the
    * mpack and host family.
    *
diff --git a/ambari-server/src/main/resources/upgrade-pack.xsd b/ambari-server/src/main/resources/upgrade-pack.xsd
index 27baeaf..007d0f8 100644
--- a/ambari-server/src/main/resources/upgrade-pack.xsd
+++ b/ambari-server/src/main/resources/upgrade-pack.xsd
@@ -404,8 +404,6 @@
     
     <xs:complexType>
       <xs:sequence>
-        <xs:element name="target" type="xs:string" />
-        <xs:element name="target-stack" type="xs:string" />
         <xs:element name="downgrade-allowed" minOccurs="0" type="xs:boolean" />
         <xs:element name="type" type="upgrade-kind-type" />
         <xs:element name="prerequisite-checks" type="prerequisite-check-type" minOccurs="0" />
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheckTest.java
index 16b09b2..cbaefac 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheckTest.java
@@ -35,7 +35,6 @@ import org.apache.ambari.server.state.stack.PrereqCheckStatus;
 import org.apache.ambari.server.state.stack.UpgradeCheckResult;
 import org.apache.ambari.server.state.stack.UpgradePack;
 import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
-import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -114,7 +113,6 @@ public class HostsMasterMaintenanceCheckTest {
     Mockito.when(cluster.getClusterId()).thenReturn(1L);
     Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
     Mockito.when(cluster.getDesiredStackVersion()).thenReturn(new StackId("HDP", "1.0"));
-    Mockito.when(repositoryVersionHelper.getUpgradePackageName(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), (UpgradeType) Mockito.anyObject())).thenReturn(null);
 
     UpgradePlanEntity upgradePlan = Mockito.mock(UpgradePlanEntity.class);
     PrereqCheckRequest checkRequest = new PrereqCheckRequest(upgradePlan);
@@ -122,7 +120,6 @@ public class HostsMasterMaintenanceCheckTest {
     UpgradeCheckResult result = hostsMasterMaintenanceCheck.perform(checkRequest);
     Assert.assertEquals(PrereqCheckStatus.FAIL, result.getStatus());
 
-    Mockito.when(repositoryVersionHelper.getUpgradePackageName(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), (UpgradeType) Mockito.anyObject())).thenReturn(upgradePackName);
     Mockito.when(ambariMetaInfo.getUpgradePacks(Mockito.anyString(), Mockito.anyString())).thenReturn(new HashMap<>());
 
     checkRequest = new PrereqCheckRequest(upgradePlan);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
index e054947..d0116ad 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
@@ -63,7 +63,6 @@ import org.apache.ambari.server.state.stack.PrereqCheckStatus;
 import org.apache.ambari.server.state.stack.PrereqCheckType;
 import org.apache.ambari.server.state.stack.UpgradePack;
 import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
-import org.apache.ambari.server.state.stack.upgrade.Direction;
 import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -122,14 +121,11 @@ public class PreUpgradeCheckResourceProviderTest {
     expect(targetStackId.getStackName()).andReturn("Stack100").anyTimes();
     expect(targetStackId.getStackVersion()).andReturn("1.1").anyTimes();
 
-    expect(upgradeHelper.suggestUpgradePack("Cluster100", currentStackId, targetStackId, Direction.UPGRADE, UpgradeType.EXPRESS, "upgrade_pack11")).andReturn(upgradePack);
-
     List<ClusterCheck> upgradeChecksToRun = new LinkedList<>();
     List<String> prerequisiteChecks = new LinkedList<>();
     prerequisiteChecks.add("org.apache.ambari.server.sample.checks.SampleServiceCheck");
     expect(upgradePack.getPrerequisiteCheckConfig()).andReturn(config);
     expect(upgradePack.getPrerequisiteChecks()).andReturn(prerequisiteChecks).anyTimes();
-    expect(upgradePack.getTarget()).andReturn("1.1.*.*").anyTimes();
 
     expect(ambariMetaInfo.getServices("Stack100", "1.0")).andReturn(allServiceInfoMap).anyTimes();
     String checks = ClassLoader.getSystemClassLoader().getResource("checks").getPath();
diff --git a/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml b/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
index c1ee1dd..9147df2 100644
--- a/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
+++ b/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
@@ -17,8 +17,6 @@
 -->
 
 <upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="upgrade-pack.xsd">
-  <target>2.6.*.*</target>
-  <target-stack>HDP-2.6</target-stack>
   <type>rolling</type>
   
   <prerequisite-checks>