You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/02/11 20:11:06 UTC
ambari git commit: AMBARI-9405. RU YARN related pre-upgrade check UI
shows unclear message (yshylov via dlysnichenko)
Repository: ambari
Updated Branches:
refs/heads/trunk fad54e324 -> d248fd7c1
AMBARI-9405. RU YARN related pre-upgrade check UI shows unclear message (yshylov via dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d248fd7c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d248fd7c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d248fd7c
Branch: refs/heads/trunk
Commit: d248fd7c150db9e827fe5f1b837c43d89e6fef08
Parents: fad54e3
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Wed Feb 11 21:10:22 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Wed Feb 11 21:10:22 2015 +0200
----------------------------------------------------------------------
.../server/checks/AbstractCheckDescriptor.java | 39 ++++++++--
.../server/checks/HostsHeartbeatCheck.java | 2 +-
.../checks/HostsMasterMaintenanceCheck.java | 2 +-
.../checks/HostsRepositoryVersionCheck.java | 3 +-
.../checks/ServicesDecommissionCheck.java | 2 +-
.../checks/ServicesMaintenanceModeCheck.java | 2 +-
.../ServicesNamenodeHighAvailabilityCheck.java | 2 +-
.../ambari/server/checks/ServicesUpCheck.java | 2 +-
.../checks/ServicesYarnWorkPreservingCheck.java | 3 +-
.../server/api/services/GroupServiceTest.java | 1 +
.../checks/AbstractCheckDescriptorTest.java | 76 ++++++++++++++++++++
11 files changed, 121 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
index 4e2e2ab..c43d843 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
@@ -17,8 +17,7 @@
*/
package org.apache.ambari.server.checks;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
+import java.util.List;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -26,9 +25,13 @@ import org.apache.ambari.server.controller.PrereqCheckRequest;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.stack.PrerequisiteCheck;
import org.apache.ambari.server.state.stack.PrereqCheckType;
+import org.apache.ambari.server.state.stack.PrerequisiteCheck;
import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
+import org.apache.commons.lang.StringUtils;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
/**
* Describes prerequisite check.
@@ -88,4 +91,32 @@ public abstract class AbstractCheckDescriptor {
* @throws AmbariException if server error happens
*/
public abstract void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) throws AmbariException;
-}
\ No newline at end of file
+
+ /**
+ * Formats lists of given entities to human readable form:
+ * [entity1] -> {entity1} {noun}
+ * [entity1, entity2] -> {entity1} and {entity2} {noun}s
+ * [entity1, entity2, entity3] -> {entity1}, {entity2} and {entity3} {noun}s
+ * The noun for the entities is taken from check type, it may be cluster, service or host.
+ *
+ * @param entities list of entities to format
+ * @return formatted entity list
+ */
+ protected String formatEntityList(List<String> entities) {
+ if (entities == null || entities.isEmpty()) {
+ return "";
+ }
+ final StringBuilder formatted = new StringBuilder(StringUtils.join(entities, ", "));
+ if (entities.size() > 1) {
+ formatted.replace(formatted.lastIndexOf(","), formatted.lastIndexOf(",") + 1, " and");
+ }
+ if (type != null) {
+ formatted.append(" ").append(type.name().toLowerCase());
+ if (entities.size() > 1) {
+ formatted.append("s");
+ }
+ }
+ return formatted.toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsHeartbeatCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsHeartbeatCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsHeartbeatCheck.java
index 917cbac..9e76928 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsHeartbeatCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsHeartbeatCheck.java
@@ -54,7 +54,7 @@ public class HostsHeartbeatCheck extends AbstractCheckDescriptor {
}
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Some hosts are not heartbeating with the server");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must be heartbeating with the server");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java
index f12b473..7bdce47 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java
@@ -85,7 +85,7 @@ public class HostsMasterMaintenanceCheck extends AbstractCheckDescriptor {
}
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Some hosts with master components are in Maintenance Mode");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must not be in in Maintenance Mode as they have master components installed");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
index 53e628c..f9bcdd9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java
@@ -73,8 +73,7 @@ public class HostsRepositoryVersionCheck extends AbstractCheckDescriptor {
}
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Some hosts do not have repository version " + request.getRepositoryVersion() + " installed");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must have repository version " + request.getRepositoryVersion() + " installed");
}
-
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesDecommissionCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesDecommissionCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesDecommissionCheck.java
index 1bea93c..6ac0326 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesDecommissionCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesDecommissionCheck.java
@@ -56,7 +56,7 @@ public class ServicesDecommissionCheck extends AbstractCheckDescriptor {
}
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("There are services in decommission or decommissioning state");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must not be in decommissioned or decommissioning state");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheck.java
index 332b58a..5043d31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheck.java
@@ -53,7 +53,7 @@ public class ServicesMaintenanceModeCheck extends AbstractCheckDescriptor {
}
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Some services are in Maintenance Mode");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must not be in Maintenance Mode");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheck.java
index ceb61ad..8ab503c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheck.java
@@ -57,7 +57,7 @@ public class ServicesNamenodeHighAvailabilityCheck extends AbstractCheckDescript
if (!config.getProperties().containsKey("dfs.nameservices")) {
prerequisiteCheck.getFailedOn().add("HDFS");
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Namenode high availability is disabled");
+ prerequisiteCheck.setFailReason("Namenode high availability is disabled. Verify that dfs.nameservices property is present in hdfs-site.xml");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesUpCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesUpCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesUpCheck.java
index a4a18e6..e2b7657 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesUpCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesUpCheck.java
@@ -56,7 +56,7 @@ public class ServicesUpCheck extends AbstractCheckDescriptor {
if (!prerequisiteCheck.getFailedOn().isEmpty()) {
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("Some services are down");
+ prerequisiteCheck.setFailReason(formatEntityList(prerequisiteCheck.getFailedOn()) + " must be STARTED");
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheck.java
index f9249b2..3b06076 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheck.java
@@ -65,7 +65,8 @@ public class ServicesYarnWorkPreservingCheck extends AbstractCheckDescriptor {
!BooleanUtils.toBoolean(config.getProperties().get("yarn.resourcemanager.work-preserving-recovery.enabled"))) {
prerequisiteCheck.getFailedOn().add("YARN");
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
- prerequisiteCheck.setFailReason("YARN doesn't have work preserving restart, yarn.resourcemanager.work-preserving-recovery.enabled property is missing");
+ prerequisiteCheck.setFailReason("YARN doesn't have work preserving restart. Verify that yarn.resourcemanager.work-preserving-recovery.enabled property"
+ + " is present in yarn-site.xml and is set to true");
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
index 68ee4a5..fdf740e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/GroupServiceTest.java
@@ -36,6 +36,7 @@ import java.util.Map;
*/
public class GroupServiceTest extends BaseServiceTest {
+ @Override
public List<ServiceTestInvocation> getTestInvocations() throws Exception {
List<ServiceTestInvocation> listInvocations = new ArrayList<ServiceTestInvocation>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/d248fd7c/ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java
new file mode 100644
index 0000000..716d033
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.checks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.controller.PrereqCheckRequest;
+import org.apache.ambari.server.state.stack.PrereqCheckType;
+import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.junit.Test;
+
+/**
+ * Unit tests for AbstractCheckDescriptor
+ */
+public class AbstractCheckDescriptorTest {
+
+ private class TestCheckImpl extends AbstractCheckDescriptor {
+
+ public TestCheckImpl(String id, PrereqCheckType type, String description) {
+ super(id, type, description);
+ }
+
+ @Override
+ public void perform(PrerequisiteCheck prerequisiteCheck,
+ PrereqCheckRequest request) throws AmbariException {
+ }
+ }
+
+ @Test
+ public void testFormatEntityList() {
+ AbstractCheckDescriptor check = new TestCheckImpl(null, PrereqCheckType.HOST, null);
+
+ Assert.assertEquals("", check.formatEntityList(null));
+
+ final List<String> failedOn = new ArrayList<String>();
+ Assert.assertEquals("", check.formatEntityList(failedOn));
+
+ failedOn.add("host1");
+ Assert.assertEquals("host1 host", check.formatEntityList(failedOn));
+
+ failedOn.add("host2");
+ Assert.assertEquals("host1 and host2 hosts", check.formatEntityList(failedOn));
+
+ failedOn.add("host3");
+ Assert.assertEquals("host1, host2 and host3 hosts", check.formatEntityList(failedOn));
+
+ check = new TestCheckImpl(null, PrereqCheckType.CLUSTER, null);
+ Assert.assertEquals("host1, host2 and host3 clusters", check.formatEntityList(failedOn));
+
+ check = new TestCheckImpl(null, PrereqCheckType.SERVICE, null);
+ Assert.assertEquals("host1, host2 and host3 services", check.formatEntityList(failedOn));
+
+ check = new TestCheckImpl(null, null, null);
+ Assert.assertEquals("host1, host2 and host3", check.formatEntityList(failedOn));
+ }
+
+}