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 b1e9369 [AMBARI-24481] Orchestration: Remove singular upgrade pack
from UpgradeContext; resolve ServiceGroup names (#2081)
b1e9369 is described below
commit b1e93699e609e8cb52e1f9228fcefca6e6805196
Author: ncole <[email protected]>
AuthorDate: Wed Aug 15 15:37:06 2018 -0400
[AMBARI-24481] Orchestration: Remove singular upgrade pack from
UpgradeContext; resolve ServiceGroup names (#2081)
---
.../internal/UpgradeResourceProvider.java | 61 ++++++++++++----------
.../apache/ambari/server/state/UpgradeContext.java | 27 +++-------
.../apache/ambari/server/state/UpgradeHelper.java | 18 +++++--
3 files changed, 55 insertions(+), 51 deletions(-)
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 d5e740e..7bd3a91 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
@@ -86,6 +86,7 @@ import
org.apache.ambari.server.serveraction.kerberos.KerberosOperationException
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ConfigHelper;
+import org.apache.ambari.server.state.ServiceGroup;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeContext;
import org.apache.ambari.server.state.UpgradeContextFactory;
@@ -127,8 +128,6 @@ import com.google.inject.persist.Transactional;
@StaticallyInject
public class UpgradeResourceProvider extends
AbstractControllerResourceProvider {
- static final String DUMMY_SERVICE_GROUP = "CORE"; // FIXME need a service
group name, since null or "" is not allowed
-
public static final String UPGRADE_CLUSTER_NAME = "Upgrade/cluster_name";
public static final String UPGRADE_PLAN_ID = "Upgrade/upgrade_plan_id";
public static final String UPGRADE_TYPE = "Upgrade/upgrade_type";
@@ -727,10 +726,10 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
* @throws AmbariException
* @throws AuthorizationException
*/
- protected UpgradeEntity createUpgrade(UpgradeContext upgradeContext,
UpgradePlanEntity upgradePlan)
+ @Transactional(rollbackOn = {RuntimeException.class, AmbariException.class,
AuthorizationException.class})
+ UpgradeEntity createUpgrade(UpgradeContext upgradeContext, UpgradePlanEntity
upgradePlan)
throws AmbariException, AuthorizationException {
- UpgradePack pack = upgradeContext.getUpgradePack();
Cluster cluster = upgradeContext.getCluster();
Direction direction = upgradeContext.getDirection();
@@ -744,7 +743,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
// Non Rolling Upgrades require a group with name
"UPDATE_DESIRED_REPOSITORY_ID".
// This is needed as a marker to indicate which version to use when an
upgrade is paused.
- if (pack.getType() == UpgradeType.EXPRESS) {
+ if (upgradeContext.getType() == UpgradeType.EXPRESS) {
boolean foundUpdateDesiredRepositoryIdGrouping = false;
for (UpgradeGroupHolder group : groups) {
if (group.groupClass == UpdateStackGrouping.class) {
@@ -755,8 +754,8 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
if (!foundUpdateDesiredRepositoryIdGrouping) {
throw new AmbariException(String.format(
- "Express upgrade packs are required to have a group of type %s.
The upgrade pack %s is missing this grouping.",
- "update-stack", pack.getName()));
+ "Express upgrade packs are required to have a group of type %s.",
+ "update-stack"));
}
}
@@ -766,7 +765,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
UpgradeEntity upgrade = new UpgradeEntity();
upgrade.setClusterId(cluster.getClusterId());
upgrade.setDirection(direction);
- upgrade.setUpgradeType(pack.getType());
+ upgrade.setUpgradeType(upgradeContext.getType());
upgrade.setAutoSkipComponentFailures(upgradeContext.isComponentFailureAutoSkipped());
upgrade.setAutoSkipServiceCheckFailures(upgradeContext.isServiceCheckFailureAutoSkipped());
upgrade.setDowngradeAllowed(upgradeContext.isDowngradeAllowed());
@@ -776,7 +775,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
addComponentHistoryToUpgrade(cluster, upgrade, upgradeContext);
// update configs and move mpack versions for some upgrade types
- switch (pack.getType()) {
+ switch (upgradeContext.getType()) {
case ROLLING:
case HOST_ORDERED: {
s_upgradeHelper.updateDesiredMpacksAndConfigs(upgradeContext);
@@ -792,12 +791,15 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
//
// HDP 2.2 to 2.3 should start with the config-upgrade.xml from HDP 2.2
// HDP 2.2 to 2.4 should start with HDP 2.2 and merge in HDP 2.3's
config-upgrade.xml
- ConfigUpgradePack configUpgradePack =
ConfigurationPackBuilder.build(upgradeContext);
+
// create the upgrade and request
for (UpgradeGroupHolder group : groups) {
List<UpgradeItemEntity> itemEntities = new ArrayList<>();
+ @Experimental(feature=ExperimentalFeature.MPACK_UPGRADES, comment="to be
implemented")
+ ConfigUpgradePack configUpgradePack =
ConfigurationPackBuilder.build(upgradeContext);
+
for (StageWrapper wrapper : group.items) {
switch(wrapper.getType()) {
case SERVER_SIDE_ACTION:{
@@ -817,6 +819,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
itemEntity.setHosts(wrapper.getHostsJson());
injectVariables(configHelper, cluster, itemEntity);
+
if (makeServerSideStage(group, upgradeContext, null, req,
itemEntity, (ServerSideActionTask) task, configUpgradePack))
{
itemEntities.add(itemEntity);
@@ -968,21 +971,22 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
boolean skippable = group.skippable;
boolean supportsAutoSkipOnFailure = group.supportsAutoSkipOnFailure;
boolean allowRetry = group.allowRetry;
+ ServiceGroup serviceGroup = group.serviceGroup;
switch (wrapper.getType()) {
case CONFIGURE:
case START:
case STOP:
case RESTART:
- makeCommandStage(context, request, stackId, entity, wrapper, skippable,
+ makeCommandStage(context, request, stackId, entity, serviceGroup,
wrapper, skippable,
supportsAutoSkipOnFailure, allowRetry);
break;
case UPGRADE_TASKS:
- makeActionStage(context, request, stackId, entity, wrapper, skippable,
+ makeActionStage(context, request, stackId, entity, serviceGroup,
wrapper, skippable,
supportsAutoSkipOnFailure, allowRetry);
break;
case SERVICE_CHECK:
- makeServiceCheckStage(context, request, stackId, entity, wrapper,
+ makeServiceCheckStage(context, request, stackId, entity, serviceGroup,
wrapper,
skippable, supportsAutoSkipOnFailure, allowRetry);
break;
default:
@@ -1032,7 +1036,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
* @throws AmbariException
*/
private void makeActionStage(UpgradeContext context, RequestStageContainer
request,
- StackId stackId, UpgradeItemEntity entity,
+ StackId stackId, UpgradeItemEntity entity, ServiceGroup serviceGroup,
StageWrapper wrapper, boolean skippable, boolean
supportsAutoSkipOnFailure,
boolean allowRetry) throws AmbariException {
@@ -1063,9 +1067,8 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
applyAdditionalParameters(wrapper, params);
// add each host to this stage
- //TODO pass service group name once upgrade is fixed
- RequestResourceFilter filter = new
RequestResourceFilter(DUMMY_SERVICE_GROUP, serviceName, componentName,
- new ArrayList<>(wrapper.getHosts()));
+ RequestResourceFilter filter = new
RequestResourceFilter(serviceGroup.getServiceGroupName(),
+ serviceName, componentName, new ArrayList<>(wrapper.getHosts()));
ActionExecutionContext actionContext =
buildActionExecutionContext(cluster, context,
EXECUTE_TASK_ROLE, stackId, Collections.singletonList(filter), params,
@@ -1121,7 +1124,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
* @throws AmbariException
*/
private void makeCommandStage(UpgradeContext context, RequestStageContainer
request,
- StackId stackId, UpgradeItemEntity entity,
+ StackId stackId, UpgradeItemEntity entity, ServiceGroup serviceGroup,
StageWrapper wrapper, boolean skippable, boolean
supportsAutoSkipOnFailure,
boolean allowRetry) throws AmbariException {
@@ -1130,13 +1133,9 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
List<RequestResourceFilter> filters = new ArrayList<>();
for (TaskWrapper tw : wrapper.getTasks()) {
- String serviceName = tw.getService();
- String componentName = tw.getComponent();
-
// add each host to this stage
- //TODO pass service group name once upgrade is fixed
- filters.add(new RequestResourceFilter(DUMMY_SERVICE_GROUP,
tw.getService(), tw.getComponent(),
- new ArrayList<>(tw.getHosts())));
+ filters.add(new RequestResourceFilter(serviceGroup.getServiceGroupName(),
+ tw.getService(), tw.getComponent(), new ArrayList<>(tw.getHosts())));
}
String function = null;
@@ -1198,15 +1197,15 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
}
private void makeServiceCheckStage(UpgradeContext context,
RequestStageContainer request,
- StackId stackId, UpgradeItemEntity entity,
+ StackId stackId, UpgradeItemEntity entity, ServiceGroup serviceGroup,
StageWrapper wrapper, boolean skippable, boolean
supportsAutoSkipOnFailure,
boolean allowRetry) throws AmbariException {
List<RequestResourceFilter> filters = new ArrayList<>();
for (TaskWrapper tw : wrapper.getTasks()) {
- //TODO pass service group name once upgrade is fixed
- filters.add(new RequestResourceFilter(DUMMY_SERVICE_GROUP,
tw.getService(), "", Collections.emptyList()));
+ filters.add(new RequestResourceFilter(serviceGroup.getServiceGroupName(),
+ tw.getService(), "", Collections.emptyList()));
}
Cluster cluster = context.getCluster();
@@ -1261,7 +1260,7 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
ServerSideActionTask task, ConfigUpgradePack configUpgradePack) throws
AmbariException {
Cluster cluster = context.getCluster();
- UpgradePack upgradePack = context.getUpgradePack();
+ UpgradePack upgradePack = group.upgradePack;
Map<String, String> commandParams = getNewParameterMap(request, context);
commandParams.put(UpgradeContext.COMMAND_PARAM_UPGRADE_PACK,
upgradePack.getName());
@@ -1637,7 +1636,10 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
* @return the {@link ConfigUpgradePack} which contains all of the
necessary
* configuration definitions for the upgrade.
*/
+ @Experimental(feature=ExperimentalFeature.MPACK_UPGRADES,
+ comment="to be implemented when configs are worked out")
public static ConfigUpgradePack build(UpgradeContext cx) {
+ /*
final UpgradePack upgradePack = cx.getUpgradePack();
final StackId stackId = null;
@@ -1645,6 +1647,9 @@ public class UpgradeResourceProvider extends
AbstractControllerResourceProvider
stackId.getStackName(), stackId.getStackVersion());
return configUpgradePack;
+ */
+
+ return null;
}
}
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
index e704d91..513a727 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
@@ -433,25 +433,6 @@ public class UpgradeContext {
}
/**
- * Gets the upgrade pack for this upgrade.
- *
- * @return the upgrade pack
- */
- public UpgradePack getUpgradePack() {
- return m_upgradePack;
- }
-
- /**
- * Sets the upgrade pack for this upgrade
- *
- * @param upgradePack
- * the upgrade pack to set
- */
- public void setUpgradePack(UpgradePack upgradePack) {
- m_upgradePack = upgradePack;
- }
-
- /**
* Gets the cluster that the upgrade is for.
*
* @return the cluster (never {@code null}).
@@ -601,7 +582,13 @@ public class UpgradeContext {
return false;
}
- return m_upgradePack.isDowngradeAllowed();
+ for (MpackChangeSummary summary : m_serviceGroups.values()) {
+ if (!summary.getUpgradePack().isDowngradeAllowed()) {
+ return false;
+ }
+ }
+
+ return true;
}
/**
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 d2dedb5..edb3e63 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
@@ -251,7 +251,7 @@ public class UpgradeHelper {
for (LifecycleType lifecycle : LifecycleType.ordered()) {
- groupsInUpgrade.values().forEach(detail -> {
+ groupsInUpgrade.forEach((serviceGroup, detail) -> {
Mpack target = detail.getTarget();
UpgradePack upgradePack = detail.getUpgradePack();
@@ -262,7 +262,7 @@ public class UpgradeHelper {
}
try {
- groups.addAll(createSequence(context, upgradePack, target,
lifecycle));
+ groups.addAll(createSequence(context, upgradePack, target,
serviceGroup, lifecycle));
} catch (AmbariException e) {
throw new IllegalArgumentException(e);
}
@@ -286,7 +286,7 @@ public class UpgradeHelper {
* @return the list of holders
*/
private List<UpgradeGroupHolder> createSequence(UpgradeContext context,
UpgradePack upgradePack,
- Mpack mpack, LifecycleType lifecycleType) throws AmbariException {
+ Mpack mpack, ServiceGroup serviceGroup, LifecycleType lifecycleType)
throws AmbariException {
Cluster cluster = context.getCluster();
MasterHostResolver mhr = context.getResolver();
@@ -320,6 +320,8 @@ public class UpgradeHelper {
groupHolder.supportsAutoSkipOnFailure = group.supportsAutoSkipOnFailure;
groupHolder.allowRetry = group.allowRetry;
groupHolder.processingGroup = group.isProcessingGroup();
+ groupHolder.upgradePack = upgradePack;
+ groupHolder.serviceGroup = serviceGroup;
// !!! all downgrades are skippable
if (context.getDirection().isDowngrade()) {
@@ -787,6 +789,16 @@ public class UpgradeHelper {
public List<StageWrapper> items = new ArrayList<>();
/**
+ * Upgrade Pack backing this grouping
+ */
+ public UpgradePack upgradePack;
+
+ /**
+ * Service Group backing this grouping
+ */
+ public ServiceGroup serviceGroup;
+
+ /**
* {@inheritDoc}
*/
@Override