You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/03/22 21:34:57 UTC

svn commit: r1459973 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ ambari-server/src/main/java/org/apache/ambari/server/controller/ ambari-server/src/main/java/org/apache/ambari/server/controller/i...

Author: swagle
Date: Fri Mar 22 20:34:57 2013
New Revision: 1459973

URL: http://svn.apache.org/r1459973
Log:
AMBARI-1688. API support to return 10 most recent requests. (swagle)

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Fri Mar 22 20:34:57 2013
@@ -509,6 +509,8 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1688. API support to return 10 most recent requests. (swagle)
+
  AMBARI-1439. rrd file location should be read from global config. 
  New patch for reopened bug. (swagle)
 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java Fri Mar 22 20:34:57 2013
@@ -323,21 +323,22 @@ public class ActionDBAccessorImpl implem
   @Override
   public List<Long> getRequestsByStatus(RequestStatus status) {
     boolean match = true;
+    boolean checkAllTasks = false;
     Set<HostRoleStatus> statuses = new HashSet<HostRoleStatus>();
     if (status == RequestStatus.IN_PROGRESS) {
       statuses.addAll( Arrays.asList(HostRoleStatus.PENDING,
           HostRoleStatus.IN_PROGRESS, HostRoleStatus.QUEUED));
     } else if (status == RequestStatus.COMPLETED) {
       match = false;
+      checkAllTasks = true;
       statuses.addAll( Arrays.asList(HostRoleStatus.PENDING,
           HostRoleStatus.IN_PROGRESS, HostRoleStatus.QUEUED,
           HostRoleStatus.ABORTED, HostRoleStatus.FAILED,
-          HostRoleStatus.FAILED, HostRoleStatus.TIMEDOUT));
+          HostRoleStatus.TIMEDOUT));
     } else if (status == RequestStatus.FAILED) {
       statuses.addAll( Arrays.asList(HostRoleStatus.ABORTED,
-          HostRoleStatus.FAILED, HostRoleStatus.FAILED,
-          HostRoleStatus.TIMEDOUT));
+          HostRoleStatus.FAILED, HostRoleStatus.TIMEDOUT));
     }
-    return hostRoleCommandDAO.getRequestsByTaskStatus(statuses, match);
+    return hostRoleCommandDAO.getRequestsByTaskStatus(statuses, match, checkAllTasks);
   }
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java Fri Mar 22 20:34:57 2013
@@ -3497,7 +3497,7 @@ public class AmbariManagementControllerI
       RequestStatusRequest request) throws AmbariException{
     Set<RequestStatusResponse> response = new HashSet<RequestStatusResponse>();
     if (request.getRequestId() == null) {
-      RequestStatus requestStatus = RequestStatus.IN_PROGRESS;
+      RequestStatus requestStatus = null;
       if (request.getRequestStatus() != null) {
         requestStatus = RequestStatus.valueOf(request.getRequestStatus());
       }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java Fri Mar 22 20:34:57 2013
@@ -100,6 +100,9 @@ class RequestResourceProvider extends Ab
       setResourceProperty(resource, REQUEST_CLUSTER_NAME_PROPERTY_ID, clusterName, requestedIds);
       setResourceProperty(resource, REQUEST_ID_PROPERTY_ID, response.getRequestId(), requestedIds);
       setResourceProperty(resource, REQUEST_CONTEXT_ID, response.getRequestContext(), requestedIds);
+      if (requestStatusRequest.getRequestStatus() != null) {
+        setResourceProperty(resource, REQUEST_STATUS_PROPERTY_ID, requestStatusRequest.getRequestStatus(), requestedIds);
+      }
       resources.add(resource);
     }
     return resources;

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java Fri Mar 22 20:34:57 2013
@@ -148,18 +148,45 @@ public class HostRoleCommandDAO {
 
   @Transactional
   public List<Long> getRequestsByTaskStatus(
-      Collection<HostRoleStatus> statuses, boolean match) {
-    String queryStr = "SELECT DISTINCT command.requestId "
-        + " FROM HostRoleCommandEntity command WHERE "
-        + " command.status";
-    if (!match) {
-      queryStr += " NOT";
+      Collection<HostRoleStatus> statuses, boolean match, boolean checkAllTasks) {
+    List<Long> results = null;
+    StringBuilder queryStr = new StringBuilder();
+    Integer resultsLimit = null;
+    queryStr.append("SELECT DISTINCT command.requestId ").append(
+        "FROM HostRoleCommandEntity command ");
+    if (statuses != null && !statuses.isEmpty()) {
+      queryStr.append("WHERE ");
+
+      if (checkAllTasks) {
+        queryStr.append("command.requestId ");
+        if (!match) {
+          queryStr.append("NOT ");
+        }
+        queryStr.append("IN (").append("SELECT c.requestId ")
+            .append("FROM HostRoleCommandEntity c ")
+            .append("WHERE c.requestId = command.requestId ")
+            .append("AND c.status IN ?1) ");
+      } else {
+        queryStr.append("command.status ");
+        if (!match) {
+          queryStr.append("NOT ");
+        }
+        queryStr.append("IN ?1 ");
+      }
+      resultsLimit = 20;
     }
-    queryStr += " IN ?1"
-        + " ORDER BY command.requestId DESC";
-    TypedQuery<Long> query = entityManagerProvider.get().createQuery(queryStr,
+    queryStr.append("ORDER BY command.requestId DESC");
+    TypedQuery<Long> query = entityManagerProvider.get().createQuery(queryStr.toString(),
         Long.class);
-    return daoUtils.selectList(query, statuses);
+    if (resultsLimit != null) {
+      query.setMaxResults(resultsLimit);
+    }
+    if (statuses != null && !statuses.isEmpty()) {
+      results = daoUtils.selectList(query, statuses);
+    } else {
+      results = daoUtils.selectList(query);
+    }
+    return results;
   }
 
 }

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java?rev=1459973&r1=1459972&r2=1459973&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java Fri Mar 22 20:34:57 2013
@@ -209,6 +209,21 @@ public class TestActionDBAccessorImpl {
 
   }
 
+  @Test
+  public void testGetRequestsByStatus() throws AmbariException {
+    List<Long> requestIds = new ArrayList<Long>();
+    requestIds.add(requestId + 1);
+    requestIds.add(requestId);
+    populateActionDB(db, hostName, requestId, stageId);
+    clusters.addHost("host2");
+    clusters.getHost("host2").persist();
+    populateActionDB(db, hostName, requestId + 1, stageId);
+    List<Long> requestIdsResult = db.getRequestsByStatus(null);
+    
+    assertNotNull("List of request IDs is null", requestIdsResult);
+    assertEquals("Request IDs not matches", requestIds, requestIdsResult);
+  }
+
   private void populateActionDB(ActionDBAccessor db, String hostname,
       long requestId, long stageId) {
     Stage s = new Stage(requestId, "/a/b", "cluster1", "action db accessor test");