You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2015/10/16 23:53:48 UTC
ambari git commit: AMBARI-13457: RU API Enhancement: Add handsfree
execution mode (jluniya)
Repository: ambari
Updated Branches:
refs/heads/trunk d8d19268a -> f6ff71b8c
AMBARI-13457: RU API Enhancement: Add handsfree execution mode (jluniya)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f6ff71b8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f6ff71b8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f6ff71b8
Branch: refs/heads/trunk
Commit: f6ff71b8cb4d9d2b5dc0acd98eb8d27865302cc8
Parents: d8d1926
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Fri Oct 16 14:53:41 2015 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Fri Oct 16 14:53:41 2015 -0700
----------------------------------------------------------------------
.../internal/UpgradeResourceProvider.java | 30 +++--
.../ambari/server/state/UpgradeContext.java | 25 +++-
.../internal/UpgradeResourceProviderTest.java | 123 ++++++++++++++++++-
3 files changed, 165 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6ff71b8/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 109f29b..3a52025 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
@@ -139,6 +139,11 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
*/
protected static final String UPGRADE_SKIP_SC_FAILURES = "Upgrade/skip_service_check_failures";
+ /**
+ * Skip manual verification tasks for hands-free upgrade/downgrade experience.
+ */
+ protected static final String UPGRADE_SKIP_MANUAL_VERIFICATION = "Upgrade/skip_manual_verification";
+
/*
* Lifted from RequestResourceProvider
*/
@@ -235,6 +240,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
PROPERTY_IDS.add(UPGRADE_DIRECTION);
PROPERTY_IDS.add(UPGRADE_SKIP_FAILURES);
PROPERTY_IDS.add(UPGRADE_SKIP_SC_FAILURES);
+ PROPERTY_IDS.add(UPGRADE_SKIP_MANUAL_VERIFICATION);
PROPERTY_IDS.add(UPGRADE_SKIP_PREREQUISITE_CHECKS);
PROPERTY_IDS.add(UPGRADE_FAIL_ON_CHECK_WARNINGS);
@@ -473,8 +479,6 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
String clusterName = (String) requestMap.get(UPGRADE_CLUSTER_NAME);
String version = (String) requestMap.get(UPGRADE_VERSION);
String versionForUpgradePack = (String) requestMap.get(UPGRADE_FROM_VERSION);
- boolean skipPrereqChecks = Boolean.parseBoolean((String) requestMap.get(UPGRADE_SKIP_PREREQUISITE_CHECKS));
- boolean failOnCheckWarnings = Boolean.parseBoolean((String) requestMap.get(UPGRADE_FAIL_ON_CHECK_WARNINGS));
/**
* For the unit tests tests, there are multiple upgrade packs for the same type, so
@@ -683,8 +687,14 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
(String) requestMap.get(UPGRADE_SKIP_SC_FAILURES));
}
+ boolean skipManualVerification = false;
+ if(requestMap.containsKey(UPGRADE_SKIP_MANUAL_VERIFICATION)) {
+ skipManualVerification = Boolean.parseBoolean((String) requestMap.get(UPGRADE_SKIP_MANUAL_VERIFICATION));
+ }
+
ctx.setAutoSkipComponentFailures(skipComponentFailures);
ctx.setAutoSkipServiceCheckFailures(skipServiceCheckFailures);
+ ctx.setAutoSkipManualVerification(skipManualVerification);
List<UpgradeGroupHolder> groups = s_upgradeHelper.createSequence(pack, ctx);
@@ -730,14 +740,10 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
}
for (UpgradeGroupHolder group : groups) {
- UpgradeGroupEntity groupEntity = new UpgradeGroupEntity();
- groupEntity.setName(group.name);
- groupEntity.setTitle(group.title);
boolean skippable = group.skippable;
boolean allowRetry = group.allowRetry;
List<UpgradeItemEntity> itemEntities = new ArrayList<UpgradeItemEntity>();
-
for (StageWrapper wrapper : group.items) {
if (wrapper.getType() == StageWrapper.Type.SERVER_SIDE_ACTION) {
// !!! each stage is guaranteed to be of one type. but because there
@@ -745,6 +751,9 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
// the same host, break them out into individual stages.
for (TaskWrapper taskWrapper : wrapper.getTasks()) {
for (Task task : taskWrapper.getTasks()) {
+ if(ctx.isManualVerificationAutoSkipped() && task.getType() == Task.Type.MANUAL) {
+ continue;
+ }
UpgradeItemEntity itemEntity = new UpgradeItemEntity();
itemEntity.setText(wrapper.getText());
itemEntity.setTasks(wrapper.getTasksJson());
@@ -777,8 +786,13 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
}
}
- groupEntity.setItems(itemEntities);
- groupEntities.add(groupEntity);
+ if(!itemEntities.isEmpty()) {
+ UpgradeGroupEntity groupEntity = new UpgradeGroupEntity();
+ groupEntity.setName(group.name);
+ groupEntity.setTitle(group.title);
+ groupEntity.setItems(itemEntities);
+ groupEntities.add(groupEntity);
+ }
}
UpgradeEntity entity = new UpgradeEntity();
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6ff71b8/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
----------------------------------------------------------------------
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 7f307cf..a856ffc 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
@@ -80,6 +80,11 @@ public class UpgradeContext {
private boolean m_autoSkipServiceCheckFailures = false;
/**
+ * {@code true} if manual verification tasks should be automatically skipped.
+ */
+ private boolean m_autoSkipManualVerification = false;
+
+ /**
* Constructor.
*
* @param resolver
@@ -313,7 +318,7 @@ public class UpgradeContext {
/**
* Sets whether skippable components that failed are automatically skipped.
*
- * @param skipComponentFailures
+ * @param autoSkipComponentFailures
* {@code true} to automatically skip component failures which are
* marked as skippable.
*/
@@ -343,4 +348,22 @@ public class UpgradeContext {
m_autoSkipServiceCheckFailures = autoSkipServiceCheckFailures;
}
+ /**
+ * Gets whether manual verification tasks can be automatically skipped.
+ *
+ * @return the skipManualVerification
+ */
+ public boolean isManualVerificationAutoSkipped() {
+ return m_autoSkipManualVerification;
+ }
+
+ /**
+ * Sets whether manual verification checks are automatically skipped.
+ *
+ * @param autoSkipManualVerification
+ * {@code true} to automatically skip manual verification tasks.
+ */
+ public void setAutoSkipManualVerification(boolean autoSkipManualVerification) {
+ m_autoSkipManualVerification = autoSkipManualVerification;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6ff71b8/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 d6091a3..d79eab6 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
@@ -235,7 +235,6 @@ public class UpgradeResourceProviderTest {
}
@Test
- @Ignore
public void testCreateResourcesWithAutoSkipFailures() throws Exception {
Cluster cluster = clusters.getCluster("c1");
@@ -246,6 +245,7 @@ public class UpgradeResourceProviderTest {
requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES, Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES, Boolean.TRUE.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION, Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, Boolean.TRUE.toString());
ResourceProvider upgradeResourceProvider = createProvider(amc);
@@ -261,15 +261,130 @@ public class UpgradeResourceProviderTest {
List<UpgradeGroupEntity> upgradeGroups = entity.getUpgradeGroups();
assertEquals(3, upgradeGroups.size());
+ UpgradeGroupEntity preClusterGroup = upgradeGroups.get(0);
+ assertEquals("PRE_CLUSTER", preClusterGroup.getName());
+
+ List<UpgradeItemEntity> preClusterUpgradeItems = preClusterGroup.getItems();
+ assertEquals(2, preClusterUpgradeItems.size());
+ assertEquals("Foo", preClusterUpgradeItems.get(0).getText());
+ assertEquals("Foo", preClusterUpgradeItems.get(1).getText());
+
UpgradeGroupEntity zookeeperGroup = upgradeGroups.get(1);
assertEquals("ZOOKEEPER", zookeeperGroup.getName());
- List<UpgradeItemEntity> upgradeItems = zookeeperGroup.getItems();
- assertEquals(5, upgradeItems.size());
+ List<UpgradeItemEntity> zookeeperUpgradeItems = zookeeperGroup.getItems();
+ assertEquals(5, zookeeperUpgradeItems.size());
+
+ assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",
+ zookeeperUpgradeItems.get(0).getText());
+ assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(1).getText());
+ assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(2).getText());
+ assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(3).getText());
+ assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(4).getText());
+
+ // the last upgrade item is the skipped failure check
+ UpgradeItemEntity skippedFailureCheck = zookeeperUpgradeItems.get(zookeeperUpgradeItems.size() - 1);
+ skippedFailureCheck.getTasks().contains(AutoSkipFailedSummaryAction.class.getName());
+
+ UpgradeGroupEntity postClusterGroup = upgradeGroups.get(2);
+ assertEquals("POST_CLUSTER", postClusterGroup.getName());
+
+ List<UpgradeItemEntity> postClusterUpgradeItems = postClusterGroup.getItems();
+ assertEquals(2, postClusterUpgradeItems.size());
+ assertEquals("Please confirm you are ready to finalize", postClusterUpgradeItems.get(0).getText());
+ assertEquals("Save Cluster State", postClusterUpgradeItems.get(1).getText());
+ }
+
+ @Test
+ public void testCreateResourcesWithAutoSkipManualVerification() throws Exception {
+ Cluster cluster = clusters.getCluster("c1");
+
+ Map<String, Object> requestProps = new HashMap<String, Object>();
+ requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.2.0.0");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_test");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION, Boolean.TRUE.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, Boolean.TRUE.toString());
+
+ ResourceProvider upgradeResourceProvider = createProvider(amc);
+ Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
+ upgradeResourceProvider.createResources(request);
+
+ List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
+ assertEquals(1, upgrades.size());
+
+ UpgradeEntity entity = upgrades.get(0);
+ assertEquals(cluster.getClusterId(), entity.getClusterId().longValue());
+
+ List<UpgradeGroupEntity> upgradeGroups = entity.getUpgradeGroups();
+ assertEquals(2, upgradeGroups.size());
+
+ UpgradeGroupEntity zookeeperGroup = upgradeGroups.get(0);
+ assertEquals("ZOOKEEPER", zookeeperGroup.getName());
+
+ List<UpgradeItemEntity> zookeeperUpgradeItems = zookeeperGroup.getItems();
+ assertEquals(3, zookeeperUpgradeItems.size());
+ assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText());
+ assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(1).getText());
+ assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText());
+
+ UpgradeGroupEntity postClusterGroup = upgradeGroups.get(1);
+ assertEquals("POST_CLUSTER", postClusterGroup.getName());
+
+ List<UpgradeItemEntity> postClusterUpgradeItems = postClusterGroup.getItems();
+ assertEquals(1, postClusterUpgradeItems.size());
+ assertEquals("Save Cluster State", postClusterUpgradeItems.get(0).getText());
+ }
+
+ @Test
+ public void testCreateResourcesWithAutoSkipAll() throws Exception {
+ Cluster cluster = clusters.getCluster("c1");
+
+ Map<String, Object> requestProps = new HashMap<String, Object>();
+ requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.2.0.0");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_test");
+ requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES, Boolean.TRUE.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES, Boolean.TRUE.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION, Boolean.TRUE.toString());
+ requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, Boolean.TRUE.toString());
+
+ ResourceProvider upgradeResourceProvider = createProvider(amc);
+ Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
+ upgradeResourceProvider.createResources(request);
+
+ List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
+ assertEquals(1, upgrades.size());
+
+ UpgradeEntity entity = upgrades.get(0);
+ assertEquals(cluster.getClusterId(), entity.getClusterId().longValue());
+
+ List<UpgradeGroupEntity> upgradeGroups = entity.getUpgradeGroups();
+ assertEquals(2, upgradeGroups.size());
+
+ UpgradeGroupEntity zookeeperGroup = upgradeGroups.get(0);
+ assertEquals("ZOOKEEPER", zookeeperGroup.getName());
+
+ List<UpgradeItemEntity> zookeeperUpgradeItems = zookeeperGroup.getItems();
+ assertEquals(4, zookeeperUpgradeItems.size());
+
+ assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText());
+ assertEquals("Skipping Configuration Task", zookeeperUpgradeItems.get(1).getText());
+ assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText());
+ assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(3).getText());
// the last upgrade item is the skipped failure check
- UpgradeItemEntity skippedFailureCheck = upgradeItems.get(upgradeItems.size() - 1);
+ UpgradeItemEntity skippedFailureCheck = zookeeperUpgradeItems.get(zookeeperUpgradeItems.size() - 1);
skippedFailureCheck.getTasks().contains(AutoSkipFailedSummaryAction.class.getName());
+
+ UpgradeGroupEntity postClusterGroup = upgradeGroups.get(1);
+ assertEquals("POST_CLUSTER", postClusterGroup.getName());
+
+ List<UpgradeItemEntity> postClusterUpgradeItems = postClusterGroup.getItems();
+ assertEquals(1, postClusterUpgradeItems.size());
+ assertEquals("Save Cluster State", postClusterUpgradeItems.get(0).getText());
}
@Ignore