[Uludag-commits] r15080 - in trunk/staj-projeleri/buildfarm: . helpers

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
22 Ağu 2007 Çar 14:46:19 EEST


Author: ozan.caglayan
Date: Wed Aug 22 14:46:19 2007
New Revision: 15080

Modified:
   trunk/staj-projeleri/buildfarm/client.py
   trunk/staj-projeleri/buildfarm/helpers/qmanager.py
   trunk/staj-projeleri/buildfarm/server.py
Log:
cli argument parsing, fixed an internal bug

Modified: trunk/staj-projeleri/buildfarm/client.py
=================================================================
--- trunk/staj-projeleri/buildfarm/client.py	(original)
+++ trunk/staj-projeleri/buildfarm/client.py	Wed Aug 22 14:46:19 2007
@@ -23,7 +23,8 @@
 REMOTE_PORT = 443
 
 def usage():
-    print _("""Usage: buildfarm <command> [<param> ...]
+    subst = {'program':sys.argv[0]}
+    print _("""Usage: %(program)s <command> [<param> ...]
     
   where command is:
 
@@ -32,15 +33,29 @@
   sync           Synchronizes the binary repositories
   update         Updates the repository
   list
-    work         Dumps the work queue
     wait         Dumps the wait queue
+    work         Dumps the work queue
   build
     index        Builds PiSi index for the repository
     packages     Builds and installs all packages of the work queue
-    
- """)
+  transfer
+    wait p       Transfers the package 'p' from the work queue to the wait queue
+    work p       Transfers the package 'p' from the wait queue to the work queue
+  append
+    wait p       Appends the package 'p' to the wait queue
+    work p       Appends the package 'p' to the work queue
+  remove
+    wait p       Removes the package 'p' from the wait queue
+    work p       Removes the package 'p' from the work queue
+    
+  Examples:
+    $ %(program)s list wait
+    $ %(program)s build packages
+    $ %(program)s append work xmoto/pspec.xml
+    $ %(program)s remove work xmoto/pspec.xml
+ """ % subst)
 
-def client(op, cmd=None):
+def client(op, cmd=None, pspec=None):
     
     funcString = None
     
@@ -48,21 +63,25 @@
     remoteURI = "https://" + REMOTE_HOST + ":" + str(REMOTE_PORT)
     server = xmlrpclib.ServerProxy(remoteURI)
     
+    #print "\n".join(server.system.listMethods())
+    
+    # 1 Parameter : op
     if op == "update":
         print op
     elif op == "sync":
         print op
     elif op == "status":
         print op
-        
+    
+    # 2 Parameters : op,cmd
     elif op == "list":
         funcString = "get" + cmd.capitalize() + "Queue"
         print _("Current %s queue" % cmd)
-        print "-" * 20
+        print "-" * 19
         print "\n".join(server.__getattr__(funcString)())
         
     elif op == "build":
-        funcString = op + cmd.capitalize()
+        funcString = "build" + cmd.capitalize()
         print _("Calling %s()..." % funcString)
         retval = server.__getattr__(funcString)()
         if retval:
@@ -70,9 +89,33 @@
         else:
             print _("Errors during %s." % funcString)
     
-    # Call the appropriate method
+    # 3 Parameters : op,cmd,pspec
+    elif op == "remove":
+        funcString = "removeFrom" + cmd.capitalize() + "Queue"
+        print _("Removing '%s' from %s queue.." % (pspec, cmd))
+        retval = server.__getattr__(funcString)(pspec)
+        if retval:
+            print _("Removed!")
+        else:
+            print _("Make sure that '%s' is in the %s queue!" % (pspec, cmd))
+            
+    elif op == "append":
+        funcString = "appendTo" + cmd.capitalize() + "Queue"
+        retval = server.__getattr__(funcString)(pspec)
+        
+        if retval:
+            print _("%s successfully appended to the %s queue!" % (pspec, cmd))
+        else:
+            print _("Can not append %s to the %s queue!" % (pspec, cmd))
+            
+    elif op == "transfer":
+        funcString = "transferTo" + cmd.capitalize() + "Queue"
+        retval = server.__getattr__(funcString)(pspec)
+        if retval:
+            print _("%s transferred to %s queue!" % (pspec, cmd))
+        else:
+            print _("Can not transfer %s to %s queue!" % (pspec, cmd))
     
-
 if __name__ == "__main__":
 
     args = sys.argv[1:]
@@ -95,6 +138,12 @@
             client(args[0],args[1])
         else:
             usage()
+            
+    elif len(args) == 3:
+        if args[0] in ("append","remove","transfer") and args[1] in ("work","wait"):
+            client(args[0],args[1],args[2])
+        else:
+            usage()
         
     else:
         usage()

Modified: trunk/staj-projeleri/buildfarm/helpers/qmanager.py
=================================================================
--- trunk/staj-projeleri/buildfarm/helpers/qmanager.py	(original)
+++ trunk/staj-projeleri/buildfarm/helpers/qmanager.py	Wed Aug 22 14:46:19 2007
@@ -32,7 +32,9 @@
             self.waitQueue = dependency.DependencyResolver(self.waitQueue).resolvDependencies()
 
         self.workQueue = dependency.DependencyResolver(self.workQueue).resolvDependencies()
-
+        self.__serialize__(self.waitQueue, "waitQueue")
+        self.__serialize__(self.workQueue, "workQueue")
+        
     def __del__(self):
         self.__serialize__(self.waitQueue, "waitQueue")
         self.__serialize__(self.workQueue, "workQueue")
@@ -57,14 +59,25 @@
             if not line.startswith("#"):
                 queueName.append(line.strip("\n"))
         queue.close()
+    
+    def __initWorkQueueFromFile__(self):
+        self.workQueue = []
+        self.__deserialize__(self.workQueue, "workQueue")
+        
+    def __initWaitQueueFromFile__(self):
+        self.waitQueue = []
+        self.__deserialize__(self.waitQueue, "waitQueue")
 
     def getWorkQueue(self):
+        self.__initWorkQueueFromFile__()
         return self.workQueue
 
     def getWaitQueue(self):
+        self.__initWaitQueueFromFile__()
         return self.waitQueue
 
     def removeFromWaitQueue(self, pspec):
+        self.__initWaitQueueFromFile__()
         if self.waitQueue.__contains__(pspec):
             self.waitQueue.remove(pspec)
             self.__serialize__(self.waitQueue, "waitQueue")
@@ -72,6 +85,7 @@
         return False
 
     def removeFromWorkQueue(self, pspec):
+        self.__initWorkQueueFromFile__()
         if self.workQueue.__contains__(pspec):
             self.workQueue.remove(pspec)
             self.__serialize__(self.workQueue, "workQueue")
@@ -79,18 +93,20 @@
         return False
 
     def appendToWorkQueue(self, pspec):
-         if not self.workQueue.__contains__(pspec):
+        self.__initWorkQueueFromFile__()
+        if not self.workQueue.__contains__(pspec):
             self.workQueue.append(pspec)
             self.__serialize__(self.workQueue, "workQueue")
             return True
-         return False
+        return False
 
     def appendToWaitQueue(self, pspec):
-         if not self.waitQueue.__contains__(pspec):
+        self.__initWaitQueueFromFile__()
+        if not self.waitQueue.__contains__(pspec):
             self.waitQueue.append(pspec)
             self.__serialize__(self.waitQueue, "waitQueue")
             return True
-         return False
+        return False
 
     def transferToWorkQueue(self, pspec):
         if self.appendToWorkQueue(pspec):

Modified: trunk/staj-projeleri/buildfarm/server.py
=================================================================
--- trunk/staj-projeleri/buildfarm/server.py	(original)
+++ trunk/staj-projeleri/buildfarm/server.py	Wed Aug 22 14:46:19 2007
@@ -67,8 +67,8 @@
         self.server_bind()
         self.server_activate()
         
-    def __getattr__(self,x):
-        return getattr(self,x)
+    def __getattr__(self,obj):
+        return getattr(self,obj)
 
 class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
     def setup(self):


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi