You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2015/04/16 19:59:36 UTC

svn commit: r1674121 - in /uima/sandbox/uima-ducc/trunk: src/main/admin/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/ uima-ducc-rm/src/main/java/org/apache/uima...

Author: challngr
Date: Thu Apr 16 17:59:35 2015
New Revision: 1674121

URL: http://svn.apache.org/r1674121
Log:
UIMA-3824 Update qoccupancy to use same type of return as qload.  Eliminate --console vs --compact.  Insure
          RM is initialized before forming a reply.

Modified:
    uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qload
    uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qoccupancy
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qload
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qload?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qload (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qload Thu Apr 16 17:59:35 2015
@@ -21,48 +21,110 @@
 
 import os
 import sys
-import getopt
+import subprocess
 
 from ducc_util  import DuccUtil
 
 class DuccRmQLoad(DuccUtil):
 
-    def usage(self, msg):
-        if ( msg != None ):
-            print msg
+    def format_array(self, ar):
+        fmt = ''
+        for i in range(0, len(ar)):
+            fmt = fmt + '%4d '
 
-        print 'rm_qload'
-        print '    This returns statistics indicative of the load and scheduling capacity of the system'
+        return (fmt % tuple(ar))
+
+    def format_classes(self, cls):
+    
+        # print the list of classes; each class is a dictionary
+        for cl in cls:
+            print 'Class', cl['name'], 'policy', cl['policy']
+            print '   requested', self.format_array(cl['requested'])
+            print '   awarded  ', self.format_array(cl['awarded'])
+            print ''
+    
+    def format_nodepools(self, nps):
+    
+        # print the list of nodepools; each nodepool is a dictionary
+        for np in nps:
+            print 'Nodepool', np['name']
+            print '   online', np['online'], 'dead', np['dead'], 'offline', np['offline'], 'total-shares', np['total-shares'], 'free-shares', np['free-shares']
+            print '   all     machines:', self.format_array(np['all-machines'])
+            print '   online  machines:', self.format_array(np['online-machines'])
+            print '   free    machines:', self.format_array(np['free-machines'])
+            print '   virtual machines:', self.format_array(np['virtual-machines'])
+            print ''
+    
+    #
+    # The input is structured like this:
+    # A dictionary with these keys:
+    #     quantum
+    #        value is a single integer
+    #     classes
+    #        value is a list of dictionaries describing demand
+    #                with these keys
+    #                    name
+    #                       value is string, the name of the class
+    #                    policy
+    #                       value is the scheduling policy
+    #                    requested
+    #                       value is a list of integers
+    #                    awarded
+    #                       value is a list of integers
+    #     nodepools
+    #        value is a list of dictionaries describing a node pool
+    #                 with these keys
+    #                    name
+    #                       value is the namne of the nodepool
+    #                    online
+    #                       value is an integer
+    #                    dead
+    #                       value is an integer
+    #                    offline
+    #                       value is an integer
+    #                    total-shares
+    #                       value is an integer
+    #                    free-shares
+    #                       value is an integer
+    #                    all-machines
+    #                       value is a list of integers
+    #                    online-machines
+    #                       value is a list of integers
+    #                    free-machines
+    #                       value is a list of integers
+    #                    virtual-machines
+    #                       value is a list of integers
+    # 
+    def format(self, lines):
+        qload = eval(lines)
+    
+        print 'Quantum:', qload['quantum']
         print ''
-        print 'Example:'
-        print '   rm_qload'
-        sys.exit(1)
+        self.format_classes(qload['classes'])
+        self.format_nodepools(qload['nodepools'])
     
     def main(self, argv):
+    
+        if ( argv == '-h' or argv == '-?' or argv == '--help' ):
+            print 'rm_qload queries and formats the current state of the RM scheduling tables. It takes no parameters.'
+            sys.exit(1);
 
-        format = None
-
-        try:
-            opts, args = getopt.getopt(argv, 'h?', ['console', 'compact'])
-        except:
-            self.usage("Invalid arguments " + ' '.join(argv))
-            
-        for ( o, a ) in opts:
-            if o in ('--console'):
-                format = o
-            if o in ('--compact'):
-                format = o
-            elif o in ('-h', '?'):
-                self.usage(None)
-
-        if ( format == None ):
-            self.usage("Must specify --console or --compact")
-       
         DUCC_JVM_OPTS = ' -Dducc.deploy.configuration=' + self.DUCC_HOME + "/resources/ducc.properties "
         DUCC_JVM_OPTS = DUCC_JVM_OPTS + ' -DDUCC_HOME=' + self.DUCC_HOME
         DUCC_JVM_OPTS = DUCC_JVM_OPTS + ' -Dducc.head=' + self.ducc_properties.get('ducc.head')
 
-        self.spawn(self.java(), DUCC_JVM_OPTS, 'org.apache.uima.ducc.common.main.DuccRmAdmin', '--qload', format) 
+        CMD = [self.java(), DUCC_JVM_OPTS, 'org.apache.uima.ducc.common.main.DuccRmAdmin', '--qload', '--compact']
+        CMD = ' '.join(CMD)
+        lines = ''
+        proc = subprocess.Popen(CMD, bufsize=0, stdout=subprocess.PIPE, shell=True)
+        for line in proc.stdout:
+            lines = lines + line
+
+        if 'not yet initialized' in lines:
+            print lines
+            return
+
+        self.format(lines)
         
         return
 

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qoccupancy
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qoccupancy?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qoccupancy (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/rm_qoccupancy Thu Apr 16 17:59:35 2015
@@ -21,52 +21,59 @@
 
 import os
 import sys
-import getopt
+import subprocess
 
 from ducc_util  import DuccUtil
 
 class DuccRmQOccupancy(DuccUtil):
 
-    def usage(self, msg):
-        if ( msg != None ):
-            print msg
-
-        print 'rm_qoccupancy --console | --compact'
-        print '    This returns details of each DUCC node.'
-        print '    --console formats the output in human-readable form'
-        print '    --compact formats the output for scripting'
-        print ''
-        print 'Example:'
-        print '   rm_qoccupancy --console'
-        print ''
-        print '   rm_qoccupancy --compact'
-        sys.exit(1)
+    def format_shares(self, sh):
+        for s in sh:
+            if ( s['blacklisted'] ):
+                pass
+            else:
+                print '%19s J[%8d] S[%8d] O[%d] II[%8d] IR[%8d] E[%5s] P[%5s] F[%5s] I[%5s]' %  ('', s['jobid'], s['shareid'], s['order'], s['investment-init'], s['investment-run'], 
+                 s['evicted'], s['purged'], s['fixed'], s['initialized'])
+                
+
+    def format_machines(self, lines):
+
+        print("%20s %11s %6s %6s %15s %10s %5s %6s" %  ("Node", "Blacklisted", "Online", "Status", "Nodepool", "Memory", "Order", "Free"))
+
+        for m in lines:
+            print "%20s %11s %6s %6s %15s %10s %5s %6s" %  (m['name'], m['blacklisted'], m['online'], m['status'], m['nodepool'], m['memory'], m['order'], m['shares-free'])
+            if ( len(m['shares']) != 0 ) :
+                self.format_shares(m['shares'])
+                print ''
+
+
+    def format(self, lines):
+        qoccupancy = eval(lines)
+        self.format_machines(qoccupancy)
+
     
     def main(self, argv):
 
-        format = None
-
-        try:
-            opts, args = getopt.getopt(argv, 'h?', ['console', 'compact'])
-        except:
-            self.usage("Invalid arguments " + ' '.join(argv))
-            
-        for ( o, a ) in opts:
-            if o in ('--console'):
-                format = o
-            if o in ('--compact'):
-                format = o
-            elif o in ('-h', '?'):
-                self.usage(None)
-
-        if ( format == None ):
-            self.usage("Must specify --console or --compact")
+        if ( argv == '-h' or argv == '-?' or argv == '--help' ):
+            print 'rm_qload queries and formats the current state of the RM scheduling tables. It takes no parameters.'
+            sys.exit(1);
 
         DUCC_JVM_OPTS = ' -Dducc.deploy.configuration=' + self.DUCC_HOME + "/resources/ducc.properties "
         DUCC_JVM_OPTS = DUCC_JVM_OPTS + ' -DDUCC_HOME=' + self.DUCC_HOME
         DUCC_JVM_OPTS = DUCC_JVM_OPTS + ' -Dducc.head=' + self.ducc_properties.get('ducc.head')
 
-        self.spawn(self.java(), DUCC_JVM_OPTS, 'org.apache.uima.ducc.common.main.DuccRmAdmin', '--qoccupancy', format) 
+        CMD = [self.java(), DUCC_JVM_OPTS, 'org.apache.uima.ducc.common.main.DuccRmAdmin', '--qoccupancy', '--compact']
+        CMD = ' '.join(CMD)
+        lines = ''
+        proc = subprocess.Popen(CMD, bufsize=0, stdout=subprocess.PIPE, shell=True)
+        for line in proc.stdout:
+            lines = lines + line
+
+        if 'not yet initialized' in lines:
+            print lines
+            return
+            
+        self.format(lines)
         
         return
 

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java Thu Apr 16 17:59:35 2015
@@ -26,6 +26,7 @@ public class RmAdminQLoadReply
 {
 	private static final long serialVersionUID = -8101741014979144426L;
 
+    private boolean ready = true;     // if false, RM is not initialized
     private long shareQuantum;
     private List<RmQueriedNodepool> nodepools = new ArrayList<RmQueriedNodepool>();
     private List<RmQueriedClass>    classes   = new ArrayList<RmQueriedClass>();
@@ -44,6 +45,9 @@ public class RmAdminQLoadReply
     public List<RmQueriedNodepool> getNodepools() { return nodepools; }
     public List<RmQueriedClass>    getClasses()   { return classes; }
 
+    public void    notReady()                     { this.ready = false; }
+    public boolean isReady()                      { return ready; }
+
     public static String fmtArray(int[] array)
     {
         Object[] vals = new Object[array.length];
@@ -96,20 +100,25 @@ public class RmAdminQLoadReply
                            virtual-machines
                               value is a list of integers
     */
-    public String toCompact()
+    public String toString()
     {
+
+        if ( !ready ) {
+            return "RM is not yet initialized.";
+        }
+
         StringBuffer sb = new StringBuffer();
         sb.append("{\n'quantum':");
         sb.append(Long.toString(shareQuantum));
         sb.append(",\n'classes': [\n");
         for ( RmQueriedClass cl : classes ) {
-            sb.append(cl.toCompact());
+            sb.append(cl.toString());
             sb.append("\n,");
         }
 
         sb.append("],\n'nodepools': [\n");
         for ( RmQueriedNodepool np : nodepools ) {
-            sb.append(np.toCompact());
+            sb.append(np.toString());
             sb.append("\n,");
         }
 
@@ -117,26 +126,4 @@ public class RmAdminQLoadReply
 
         return sb.toString();
     }
-
-    public String toConsole()
-    {
-        StringBuffer sb = new StringBuffer();
-
-        sb.append("Query Load - scheduling quantum ");
-        sb.append(Long.toString(shareQuantum));
-        sb.append(":\n");
-
-        for ( RmQueriedClass cl : classes ) {
-            sb.append(cl.toConsole());
-            sb.append("\n");
-        }
-
-        for ( RmQueriedNodepool np : nodepools ) {
-            sb.append(np.toConsole());
-            sb.append("\n");
-        }
-
-        return sb.toString();
-    }
-
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java Thu Apr 16 17:59:35 2015
@@ -28,7 +28,7 @@ public class RmAdminQOccupancyReply
 {
 	private static final long serialVersionUID = -8101741014979144426L;
 
-
+    boolean ready = true;         // If not ready, RM is not initialized
     List<RmQueriedMachine> machines = new ArrayList<RmQueriedMachine>();
 
     public RmAdminQOccupancyReply()
@@ -41,49 +41,44 @@ public class RmAdminQOccupancyReply
         machines.add(m);
     }
 
+    public void    notReady()   { this.ready = false; }
+    public boolean isReady()    { return ready; }
+
     public List<RmQueriedMachine> getMachines()
     {
         return machines;
     }
 
-
-    public String toConsole()
+    public String toString()
     {
-        Collections.sort(machines, new MachineByOrderSorter());
-        StringBuffer sb = new StringBuffer();
-        sb.append(RmQueriedMachine.header());
-        sb.append("\n");
-        sb.append(RmQueriedMachine.separator());
-        sb.append("\n");
-        for ( RmQueriedMachine m : machines ) {
-            sb.append(m.toConsole());
-            sb.append("\n");
+
+        if ( !ready ) {
+            return "RM is not yet initialized.";
         }
-        return sb.toString();
-    }
 
-    public String toCompact()
-    {
-        // ( no need to sort, this is intended for script scraping so we let the script order things as it wants )
+        Collections.sort(machines, new MachineByMemorySorter());
         StringBuffer sb = new StringBuffer();
+
+        sb.append("[\n");
         for ( RmQueriedMachine m : machines ) {
-            sb.append(m.toCompact());
-            sb.append("\n");
+            sb.append(m.toString());
+            sb.append(",\n");
         }
+        sb.append("]");
         return sb.toString();
     }
 
-    class MachineByOrderSorter
+    class MachineByMemorySorter
     	implements Comparator<RmQueriedMachine>
     {	
     	public int compare(RmQueriedMachine m1, RmQueriedMachine m2)
         {
-            int o1 = m1.getShareOrder();
-            int o2 = m2.getShareOrder();
-            if ( o1 == o2 ) {
+            long mm1 = m1.getMemory();
+            long mm2 = m2.getMemory();
+            if ( mm1 == mm2 ) {
                 return m1.getId().compareTo(m2.getId());
             }
-            return o2 - o1;
+            return (int) (mm2 - mm1);
         }
     }
 

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java Thu Apr 16 17:59:35 2015
@@ -71,7 +71,7 @@ public class RmQueriedClass
 		this.awarded = awarded;
 	}
 
-    public String toCompact()
+    public String toString()
     {
         StringBuffer sb = new StringBuffer();
 
@@ -87,21 +87,5 @@ public class RmQueriedClass
 
         return sb.toString();
     }
-
-    public String toConsole()
-    {
-        StringBuffer sb = new StringBuffer();
-        sb.append("Class ");
-        sb.append(name);
-        sb.append(" ");
-        sb.append(policy);
-        sb.append("\n");
-        sb.append("   Requested: ");
-        sb.append(RmAdminQLoadReply.fmtArray(demanded));
-        sb.append("\n   Awarded  : ");
-        sb.append(RmAdminQLoadReply.fmtArray(awarded));
-        sb.append("\n");
-        return sb.toString();
-    }
     
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java Thu Apr 16 17:59:35 2015
@@ -65,83 +65,49 @@ public class RmQueriedMachine
     public boolean isOnline()       { return online; }             // UIMA-4142
     public boolean isResponsive()   { return responsive; }         // UIMA-4142
     
-    static String fmt_s = "%20s %11s %6s %6s %15s %10s %5s %4s %s";
-    String        fmt_d = "%20s %11s %6s %6s %15s %10d %5d %4d" ;
-
-    public static String header()
-    {
-        return String.format(fmt_s, "Node", "Blacklisted", "Online", "Status", "Nodepool", "Memory", "Order", "Free", "Shares");
-    }
-
-    public static String separator()
-    {
-        return String.format(fmt_s, "--------------------", "-----------", "------", "------", "---------------", "----------", "-----", "----", "----------");
-    }
-
-    public String toConsole() 
-    {
-        StringBuffer sb = new StringBuffer();
-
-        if ( shares == null ) {
-            sb.append(String.format(fmt_d, name, blacklisted, online, (responsive ? "up" : "down"), nodepoolId, memory, order, 0));
-            sb.append(" [none]");
-        } else {
-            int used = 0;
-            for ( RmQueriedShare s : shares ) {                
-                used += s.getShareOrder();
-            }
-            sb.append(String.format(fmt_d, name, blacklisted, online, (responsive ? "up" : "down"), nodepoolId, memory, order, order - used));
-
-            String spacer = " ";
-            String altSpacer = "\n" + String.format(fmt_s, "", "", "", "", "", "", "", "", ""); // yes, blank, of exactly the right size
-            for ( RmQueriedShare s : shares ) {                
-                sb.append(spacer);
-                sb.append(s.toConsole());
-                spacer = altSpacer;
-            }
-        }
-        return sb.toString();
-
-    }
-
-    public String toCompact() 
+    public String toString() 
     {
         // name memory order(nqshares) unused-shares share-details...
         StringBuffer sb = new StringBuffer();
+        sb.append("{'name':'");
         sb.append(name);
-        sb.append(" ");
+        sb.append("','nodepool':'");
         sb.append(nodepoolId);
-        sb.append(" ");
-        sb.append(Boolean.toString(blacklisted));
-        sb.append(" ");
-        sb.append(Boolean.toString(online));
-        sb.append(" ");
-        sb.append(responsive ? "up" : "down");
-        sb.append(" ");
+        sb.append("','blacklisted':");
+        sb.append(blacklisted ? "True" : "False");
+        sb.append(",'online':");
+        sb.append(online ? "True" : "False");
+        sb.append(",'status': ");
+        sb.append(responsive ? "'up'" : "'down'");
+        sb.append(",'nodepool': '");
+        sb.append(nodepoolId);
+        sb.append("','memory':");
         sb.append(Long.toString(memory));
-        sb.append(" ");
+        sb.append(",'order':");
         sb.append(Integer.toString(order));
         
         if ( shares == null ) {
-            sb.append(" 0, None");
+            sb.append(",'shares-free':'");
+            sb.append(Integer.toString(order));
+            sb.append("'");
+            sb.append(",'shares':[],\n");
         } else {
             int used = 0;
             for ( RmQueriedShare s : shares ) {                
                 used += s.getShareOrder();
             }
 
-            sb.append(" ");
+            sb.append(",'shares-free':");
             sb.append(Integer.toString(order - used));
+            sb.append(",'shares':[");
             for ( RmQueriedShare s : shares ) {
+                sb.append(s.toString());
                 sb.append(",");
-                sb.append(s.toCompact());
             }
+            sb.append("],\n");
         }
+        sb.append("}\n");
         return sb.toString();
     }
 
-    public String toString()
-    {
-        return String.format("%14s %5s %12d %3d %3d", name, blacklisted, memory, order, shares == null ? 0 : shares.size());
-    }
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java Thu Apr 16 17:59:35 2015
@@ -122,7 +122,7 @@ public class RmQueriedNodepool
 		this.virtualMachines = virtualMachines;
 	}
 
-    public String toCompact()
+    public String toString()
     {
         StringBuffer sb = new StringBuffer();
         
@@ -151,32 +151,4 @@ public class RmQueriedNodepool
         return sb.toString();
     }
 
-    public String toConsole()
-    {
-        StringBuffer sb = new StringBuffer();
-        sb.append("Nodepool ");
-        sb.append(name);
-        sb.append("\n   ");
-        sb.append("Nodes online: ");
-        sb.append(Integer.toString(online));
-        sb.append(" Nodes dead: ");
-        sb.append(Integer.toString(dead));
-        sb.append(" Nodes offline: ");
-        sb.append(Integer.toString(offline));
-        sb.append(" Total Shares: ");
-        sb.append(Integer.toString(sharesAvailable));
-        sb.append(" Shares Free: ");
-        sb.append(Integer.toString(sharesFree));
-        sb.append("\n");
-        sb.append("   All     Machines: ");
-        sb.append(RmAdminQLoadReply.fmtArray(allMachines));
-        sb.append("\n   Online  Machines: ");
-        sb.append(RmAdminQLoadReply.fmtArray(onlineMachines));
-        sb.append("\n   Free    Machines: ");
-        sb.append(RmAdminQLoadReply.fmtArray(freeMachines));
-        sb.append("\n   Virtual Machines: ");
-        sb.append(RmAdminQLoadReply.fmtArray(virtualMachines));
-        
-        return sb.toString();
-    }
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java Thu Apr 16 17:59:35 2015
@@ -65,21 +65,37 @@ public class RmQueriedShare
     public boolean isInitialized()  { return initialized; }
 
 
-    public String toCompact()
+    public String toString()
     {
-        if ( blacklisted ) {
-            return String.format("BLACKLISTED %8d %8d %d", jobId, shareId, order);
-        } else {
-            return String.format("%d %d %d %d %d %s %s %s %s", jobId, shareId, order, investmentInit, investmentRt, evicted, purged, fixed, initialized);
-        }
-    }
+        StringBuffer sb = new StringBuffer();
 
-    public String toConsole()
-    {
-        if ( blacklisted ) {
-            return String.format("J[%8d] S[%8d] O[%d] BLACKLISTED", jobId, shareId, order);
-        } else {
-            return String.format("J[%8d] S[%8d] O[%d] II[%8d] IR[%8d] E[%5s] P[%5s] F[%5s] I[%5s]", jobId, shareId, order, investmentInit, investmentRt, evicted, purged, fixed, initialized);
+        sb.append("{");
+
+        sb.append("'blacklisted':");
+        sb.append(blacklisted ? "True" : "False");
+        sb.append(", 'jobid':");
+        sb.append(Long.toString(jobId));
+        sb.append(",'shareid':");
+        sb.append(Long.toString(shareId));
+        sb.append(",'order':");
+        sb.append(Integer.toString(order));
+
+        if ( !blacklisted ) {
+            sb.append(",'investment-init':");
+            sb.append(Long.toString(investmentInit));
+            sb.append(",'investment-run':");
+            sb.append(Long.toString(investmentRt));
+            sb.append(",'evicted':");
+            sb.append(evicted ? "True" : "False");
+            sb.append(",'purged':");
+            sb.append(purged ? "True" : "False");
+            sb.append(",'fixed':");
+            sb.append(fixed ? "True" : "False");
+            sb.append(",'initialized':");
+            sb.append(initialized ? "True" : "False");
         }
+        sb.append("}");
+
+        return sb.toString();
     }
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java Thu Apr 16 17:59:35 2015
@@ -279,32 +279,15 @@ public class DuccRmAdmin
         }
 
         if ( args[0].equals("--qload")) { 
-            if ( args.length != 2 ) usage("Query load: specify --console or --compact");
-            if ( !args[1].equals("--console") && !args[1].equals("--compact") ) {
-                usage("Invalid argument: " + args[1] + " - specify --console or --compact");
-            }
 
             RmAdminQLoadReply ret = qload();
-            if ( args[1].equals("--console") ) {
-                System.out.println(ret.toConsole());
-            } else {
-                System.out.println(ret.toCompact());
-            }
+            System.out.println(ret.toString());
             return;
         }
 
         if ( args[0].equals("--qoccupancy")) {
-            if ( args.length != 2 ) usage("Query occupancy: specify --console or --compact");
-            if ( !args[1].equals("--console") && !args[1].equals("--compact") ) {
-                usage("Invalid argument: " + args[1] + " - specify --console or --compact");
-            }
             RmAdminQOccupancyReply ret = qoccupancy();
-            if ( args[1].equals("--console") ) {
-                System.out.println(ret.toConsole());
-            } else {
-                System.out.println(ret.toCompact());
-            }
-
+            System.out.println(ret.toString());
             return;
         }
 
@@ -326,8 +309,8 @@ public class DuccRmAdmin
         System.out.println("Where verbs are:");
         System.out.println("   --varyoff string-delimeted-nodes");
         System.out.println("   --varyon  string-delimeted-nodes");
-        System.out.println("   --qload --console|--compact");
-        System.out.println("   --qoccupancy --console|--compact");
+        System.out.println("   --qload");
+        System.out.println("   --qoccupancy");
         System.out.println("   --reconfigure");         // dynamic reconfig UIMA-4142
 
         System.exit(1);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java?rev=1674121&r1=1674120&r2=1674121&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java Thu Apr 16 17:59:35 2015
@@ -1269,11 +1269,14 @@ public class Scheduler
     }
 
     public synchronized RmAdminQLoadReply queryLoad()
-    {
-        
-        while ( !ready() ) {}
+    {        
 
         RmAdminQLoadReply ret = new RmAdminQLoadReply();
+        if ( ! ready() ) {
+            ret.notReady();
+            return ret;
+        }
+
         ret.setShareQuantum(share_quantum);
 
         calculateLoad(ret);
@@ -1294,6 +1297,10 @@ public class Scheduler
     public synchronized RmAdminQOccupancyReply queryOccupancy()
     {
         RmAdminQOccupancyReply ret = new RmAdminQOccupancyReply();
+        if ( ! ready() ) {
+            ret.notReady();
+            return ret;
+        }
 
         //
         // iterate top-level nodepools to get all their subpools