You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by ve...@apache.org on 2013/11/13 02:07:24 UTC

git commit: FALCON-171 Provide status in /api/entities/list. Contributed by Haohui Mai

Updated Branches:
  refs/heads/master 17f901a66 -> cd78c3aa5


FALCON-171 Provide status in /api/entities/list. Contributed by Haohui Mai


Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/cd78c3aa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/cd78c3aa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/cd78c3aa

Branch: refs/heads/master
Commit: cd78c3aa5f60afcaad7eddd0bf5f2279ed53e35d
Parents: 17f901a
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Tue Nov 12 17:07:03 2013 -0800
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Tue Nov 12 17:07:03 2013 -0800

----------------------------------------------------------------------
 CHANGES.txt                                     |  3 +
 .../org/apache/falcon/resource/EntityList.java  | 33 ++++++-----
 .../falcon/resource/AbstractEntityManager.java  | 61 +++++++++++++-------
 3 files changed, 62 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/cd78c3aa/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 8d69374..d86b98a 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -78,6 +78,9 @@ Trunk (Unreleased)
 
   IMPROVEMENTS
 
+    FALCON-171 Provide status in /api/entities/list.
+    (Haohui Mai via Venkatesh Seetharam)
+
     FALCON-187 Update Falcon start script to also redirect
     stdout to the log file. (Arpit Gupta via Venkatesh Seetharam)
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/cd78c3aa/client/src/main/java/org/apache/falcon/resource/EntityList.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/resource/EntityList.java b/client/src/main/java/org/apache/falcon/resource/EntityList.java
index 64dbae0..91ac00b 100644
--- a/client/src/main/java/org/apache/falcon/resource/EntityList.java
+++ b/client/src/main/java/org/apache/falcon/resource/EntityList.java
@@ -34,7 +34,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 public class EntityList {
 
     @XmlElement(name = "entity")
-    private EntityElement[] elements;
+    private final EntityElement[] elements;
 
     /**
      * Element within an entity.
@@ -45,32 +45,35 @@ public class EntityList {
         public String type;
         @XmlElement
         public String name;
+        @XmlElement
+        public String status;
         //RESUME CHECKSTYLE CHECK VisibilityModifierCheck
 
-        public EntityElement() {
-
-        }
-
-        public EntityElement(String type, String name) {
-            this.type = type;
-            this.name = name;
-        }
-
         @Override
         public String toString() {
-            return "(" + type + ") " + name + "\n";
+            return "(" + type + ") " + name + "(" + status + ")\n";
         }
     }
 
     //For JAXB
     public EntityList() {
+        this.elements = null;
+    }
+
+    public EntityList(EntityElement[] elements) {
+        this.elements = elements;
     }
 
     public EntityList(Entity[] elements) {
-        EntityElement[] items = new EntityElement[elements.length];
-        for (int index = 0; index < elements.length; index++) {
-            items[index] = new EntityElement(elements[index].
-                    getEntityType().name().toLowerCase(), elements[index].getName());
+        int len = elements.length;
+        EntityElement[] items = new EntityElement[len];
+        for (int i = 0; i < len; i++) {
+            Entity e = elements[i];
+            EntityElement o = new EntityElement();
+            o.type = e.getEntityType().name().toLowerCase();
+            o.name = e.getName();
+            o.status = "";
+            items[i] = o;
         }
         this.elements = items;
     }

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/cd78c3aa/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
index d5605df..c899407 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
@@ -382,22 +382,8 @@ public abstract class AbstractEntityManager {
         try {
             entityObj = EntityUtil.getEntity(type, entity);
             EntityType entityType = EntityType.valueOf(type.toUpperCase());
-            String status;
-
-            if (entityType.isSchedulable()) {
-                if (workflowEngine.isActive(entityObj)) {
-                    if (workflowEngine.isSuspended(entityObj)) {
-                        status = EntityStatus.SUSPENDED.name();
-                    } else {
-                        status = EntityStatus.RUNNING.name();
-                    }
-                } else {
-                    status = EntityStatus.SUBMITTED.name();
-                }
-            } else {
-                status = EntityStatus.SUBMITTED.name();
-            }
-            return new APIResult(Status.SUCCEEDED, status);
+            EntityStatus status = getStatus(entityObj, entityType);
+            return new APIResult(Status.SUCCEEDED, status.name());
         } catch (FalconWebException e) {
             throw e;
         } catch (Exception e) {
@@ -407,6 +393,25 @@ public abstract class AbstractEntityManager {
         }
     }
 
+    protected EntityStatus getStatus(Entity entity, EntityType type) throws FalconException {
+        EntityStatus status;
+
+        if (type.isSchedulable()) {
+            if (workflowEngine.isActive(entity)) {
+                if (workflowEngine.isSuspended(entity)) {
+                    status = EntityStatus.SUSPENDED;
+                } else {
+                    status = EntityStatus.RUNNING;
+                }
+            } else {
+                status = EntityStatus.SUBMITTED;
+            }
+        } else {
+            status = EntityStatus.SUBMITTED;
+        }
+        return status;
+    }
+
     /**
      * Returns dependencies.
      *
@@ -436,16 +441,32 @@ public abstract class AbstractEntityManager {
     public EntityList getDependencies(String type) {
         try {
             EntityType entityType = EntityType.valueOf(type.toUpperCase());
+            final String entityTypeString = type.toLowerCase();
             Collection<String> entityNames = configStore.getEntities(entityType);
             if (entityNames == null || entityNames.isEmpty()) {
                 return new EntityList(new Entity[]{});
             }
-            Entity[] entities = new Entity[entityNames.size()];
-            int index = 0;
+
+            int len = entityNames.size();
+            EntityList.EntityElement[] elements = new EntityList.EntityElement[len];
+
+            int i = 0;
             for (String entityName : entityNames) {
-                entities[index++] = configStore.get(entityType, entityName);
+                Entity e = configStore.get(entityType, entityName);
+                EntityList.EntityElement elem = new EntityList.EntityElement();
+                elem.name = e.getName();
+                elem.type = entityTypeString;
+                String statusString;
+                try {
+                    EntityStatus status = getStatus(e, entityType);
+                    statusString = status.name();
+                } catch (FalconException e1) {
+                    statusString = "UNKNOWN";
+                }
+                elem.status = statusString;
+                elements[i++] = elem;
             }
-            return new EntityList(entities);
+            return new EntityList(elements);
         } catch (Exception e) {
             LOG.error("Unable to get list for entities for (" + type + ")", e);
             throw FalconWebException.newException(e, Response.Status.BAD_REQUEST);