extras-buildsys/client client.py,1.11,1.12

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Tue Jul 19 02:29:50 UTC 2005


Author: dcbw

Update of /cvs/fedora/extras-buildsys/client
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25058/client

Modified Files:
	client.py 
Log Message:
2005-07-18  Dan Williams <dcbw at redhat.com>

    * server/UserInterface.py
      client/client.py
        - Rework argument handling and passing so that listing jobs
            is more flexible.  Can now list jobs by UID as well.




Index: client.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/client/client.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- client.py	10 Jul 2005 04:33:25 -0000	1.11
+++ client.py	19 Jul 2005 02:29:47 -0000	1.12
@@ -89,17 +89,42 @@
         print "Package %s enqueued." % package
 
 
-def list_jobs(server, email, status=None):
+def validate_arg(arg):
+    if arg == 'email' or arg == 'status' or arg == 'uid' or arg == 'uid_gt' or arg == 'uid_lt':
+        return True
+    return False
+
+def list_jobs(server, args):
     """
-    List jobs by email, status, or both.
+    List jobs by criteria
     """
 
-    args = {}
+    # Have to have an even number of options
+    if int(len(args) / 2.0) != (len(args) / 2.0):
+        print "Error: invalid options."
+        return
+
+    query_args = {}
+    cmd = ''
+    for arg in args:
+        if not len(cmd):
+            if validate_arg(arg):
+                cmd = arg
+            else:
+                print "Error: invalid option '%s'" % arg
+                return
+        else:
+            query_args[cmd] = arg
+            cmd = ''
+
+    if len(query_args) == 0:
+        # List all jobs
+        query_args['uid_gt'] = "0"
+
+    print query_args
+
     try:
-        args['email'] = email
-        if status:
-            args['status'] = status
-        (e, msg, jobs, archjobs) = server.list_jobs(args)
+        (e, msg, jobs, archjobs) = server.list_jobs(query_args)
     except socket.error, e:
         print "Error connecting to build server: '%s'" % e
         return
@@ -270,18 +295,7 @@
         except CommandException, e:
             print e.message
     elif cmd == 'list':
-        status = None
-        if len(sys.argv) == 2:
-            pass
-        elif len(sys.argv) == 3:
-            status = sys.argv[2]
-        elif len(sys.argv) == 4:
-            email_addr = sys.argv[2]
-            status = sys.argv[3]
-        else:
-            print "Error: invalid command format"
-            sys.exit(1)
-        list_jobs(server, email, status)
+        list_jobs(server, sys.argv[2:])
     elif cmd == 'kill':
         if len(sys.argv) < 3:
             print "Error: need a job UID to kill"




More information about the fedora-extras-commits mailing list