Repository: ambari Updated Branches: refs/heads/branch-dev-patch-upgrade c8edd3c8a -> c0cee00e3
AMBARI-18432. Re-enable orchestration to use VDF (ncole) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c0cee00e Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c0cee00e Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c0cee00e Branch: refs/heads/branch-dev-patch-upgrade Commit: c0cee00e32a5c05431b5ba072859a540ef42dcc4 Parents: c8edd3c Author: Nate Cole <nc...@hortonworks.com> Authored: Wed Sep 21 11:51:02 2016 -0400 Committer: Nate Cole <nc...@hortonworks.com> Committed: Wed Sep 21 11:51:02 2016 -0400 ---------------------------------------------------------------------- .../ClusterStackVersionResourceProvider.java | 9 +++++++-- .../internal/UpgradeResourceProvider.java | 16 +++++++++++++--- .../ClusterStackVersionResourceProviderTest.java | 2 -- .../ambari/server/state/UpgradeHelperTest.java | 3 +++ 4 files changed, 23 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/c0cee00e/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java index 4e9fd6b..20d3609 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java @@ -77,6 +77,7 @@ import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.ComponentInfo; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.MaintenanceState; +import org.apache.ambari.server.state.RepositoryType; import org.apache.ambari.server.state.RepositoryVersionState; import org.apache.ambari.server.state.ServiceComponentHost; import org.apache.ambari.server.state.ServiceInfo; @@ -498,8 +499,11 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou // determine services for the repo Set<String> serviceNames = new HashSet<>(); - // !!! TODO for patch upgrades, we need to limit the serviceNames to those - // that are detailed for the repository + // !!! limit the serviceNames to those that are detailed for the repository. + // TODO packages don't have component granularity + if (RepositoryType.STANDARD != repoVersionEnt.getType()) { + serviceNames.addAll(desiredVersionDefinition.getAvailableServiceNames()); + } // Populate with commands for host for (int i = 0; i < maxTasks && hostIterator.hasNext(); i++) { @@ -597,6 +601,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou if (servicesOnHost.isEmpty()) { return null; } + List<String> blacklistedPackagePrefixes = configuration.getRollingUpgradeSkipPackagesPrefixes(); for (String serviceName : servicesOnHost) { ServiceInfo info; http://git-wip-us.apache.org/repos/asf/ambari/blob/c0cee00e/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java index d37e32b..15caa69 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java @@ -89,6 +89,7 @@ import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.ConfigHelper; import org.apache.ambari.server.state.DesiredConfig; +import org.apache.ambari.server.state.RepositoryType; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceInfo; @@ -97,6 +98,7 @@ import org.apache.ambari.server.state.StackInfo; import org.apache.ambari.server.state.UpgradeContext; import org.apache.ambari.server.state.UpgradeHelper; import org.apache.ambari.server.state.UpgradeHelper.UpgradeGroupHolder; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.ConfigUpgradePack; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.UpgradePack; @@ -806,9 +808,17 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider RepositoryVersionEntity targetRepositoryVersion = s_repoVersionDAO.findByStackNameAndVersion( sourceStackId.getStackName(), version); - // !!! TODO check the repo_version for patch-ness and restrict the context - // to those services that require it. Consult the version definition and add the - // service names to supportedServices + // !!! Consult the version definition and add the service names to supportedServices + if (targetRepositoryVersion.getType() != RepositoryType.STANDARD) { + try { + VersionDefinitionXml vdf = targetRepositoryVersion.getRepositoryXml(); + supportedServices.addAll(vdf.getAvailableServiceNames()); + } catch (Exception e) { + String msg = String.format("Could not parse version definition for %s. Upgrade will not proceed.", version); + LOG.error(msg, e); + throw new AmbariException(msg); + } + } targetStackId = targetRepositoryVersion.getStackId(); break; http://git-wip-us.apache.org/repos/asf/ambari/blob/c0cee00e/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java index 9837b0f..d71f516 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java @@ -109,7 +109,6 @@ import org.easymock.IAnswer; import org.junit.After; import org.junit.Assert; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -390,7 +389,6 @@ public class ClusterStackVersionResourceProviderTest { } @Experimental(feature=ExperimentalFeature.PATCH_UPGRADES) - @Ignore public void testCreateResourcesForPatch() throws Exception { Resource.Type type = Resource.Type.ClusterStackVersion; http://git-wip-us.apache.org/repos/asf/ambari/blob/c0cee00e/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java index c2e1f75..9e1562d 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java @@ -36,6 +36,8 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.ambari.annotations.Experimental; +import org.apache.ambari.annotations.ExperimentalFeature; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.controller.AmbariManagementController; @@ -251,6 +253,7 @@ public class UpgradeHelperTest { ambariMetaInfo.init(); } + @Experimental(feature=ExperimentalFeature.PATCH_UPGRADES) @Test public void testPartialUpgradeOrchestration() throws Exception { Map<String, UpgradePack> upgrades = ambariMetaInfo.getUpgradePacks("foo", "bar");