pld-ftp-admin: modules/ftptree.py, scripts/move.py, scripts/test-move.py - ...

glen glen at pld-linux.org
Tue Jun 30 06:22:40 CEST 2009


Author: glen                         Date: Tue Jun 30 04:22:40 2009 GMT
Module: pld-ftp-admin                 Tag: HEAD
---- Log message:
- add archive tree support

---- Files affected:
pld-ftp-admin/modules:
   ftptree.py (1.40 -> 1.41) 
pld-ftp-admin/scripts:
   move.py (1.16 -> 1.17) , test-move.py (1.7 -> 1.8) 

---- Diffs:

================================================================
Index: pld-ftp-admin/modules/ftptree.py
diff -u pld-ftp-admin/modules/ftptree.py:1.40 pld-ftp-admin/modules/ftptree.py:1.41
--- pld-ftp-admin/modules/ftptree.py:1.40	Sat Jun 27 21:54:05 2009
+++ pld-ftp-admin/modules/ftptree.py	Tue Jun 30 06:22:35 2009
@@ -25,13 +25,13 @@
 
 def perror(msg):
     global errnum
-    errnum=errnum+1
+    errnum = errnum + 1
     print 'ERR: ' + msg
 
 def pwarning(msg):
     print 'WARN: ' + msg
 
-def rm(file, test=False):
+def rm(file, test = False):
     if test:
         if not os.path.exists(file):
             pinfo("TEST os.remove(%s): file doesn't exists" % file)
@@ -42,9 +42,9 @@
             pinfo("os.remove(%s): %s" % (file, e))
             #raise
 
-def mv(src, dst, test=False):
+def mv(src, dst, test = False):
     fsrc = src
-    fdst = dst+'/'+src.split('/')[-1]
+    fdst = dst + '/' + src.split('/')[-1]
     if test:
         if not os.path.exists(src):
             pinfo("TEST os.rename(%s, %s): source doesn't exists" % (fsrc, fdst))
@@ -163,7 +163,7 @@
                     files.append(self.tree.basedir + '/' + arch + '/RPMS/' + nvr)
         return files
 
-    def move(self, dsttree, test=False):
+    def move(self, dsttree, test = False):
         if dsttree.has_key(self.nvr):
             movedany = False
             for arch in self.files.keys():
@@ -185,7 +185,7 @@
                             mv(self.tree.basedir + '/' + arch + '/debuginfo/' + rpm, dsttree.basedir + '/' + arch + '/debuginfo/', test)
                         else:
                             mv(self.tree.basedir + '/' + arch + '/RPMS/' + rpm, dsttree.basedir + '/' + arch + '/RPMS/', test)
-            if not test and  movedany:
+            if not test and movedany:
                 for bid in self.build.keys():
                     dsttree[self.nvr].build[bid] = self.build[bid]
                 dsttree[self.nvr].writeinfo()
@@ -242,19 +242,19 @@
         self.__checkbuild(self.loadedpkgs.values())
         self.__checkarchs(dsttree, self.loadedpkgs.values())
 
-    def testmove(self, dsttree):
+    def testmove(self, dsttree, archivetree = None):
         self.__checkbuild(self.marked4moving)
         self.__checkarchs(dsttree, self.marked4moving)
 
         self.__checksigns(dsttree, self.marked4moving, test = True)
         
         self.__rmolderfromsrc(test = True)
-        self.__rmotherfromdst(dsttree, test = True)
+        self.__rmotherfromdst(dsttree, test = True, archivetree = archivetree)
 
         for pkg in self.marked4moving:
             pkg.move(dsttree, test = True)
 
-    def movepkgs(self, dsttree):
+    def movepkgs(self, dsttree, archivetree = None):
         if self.do_checkbuild:
             self.__checkbuild(self.marked4moving)
         bailoutonerror()
@@ -266,7 +266,7 @@
         bailoutonerror()
 
         self.__rmolderfromsrc()
-        self.__rmotherfromdst(dsttree)
+        self.__rmotherfromdst(dsttree, archivetree = archivetree)
 
         for pkg in self.marked4moving:
             pkg.move(dsttree)
@@ -377,17 +377,20 @@
                             missingarchs.append(arch)
                     pkg.warning('not built for archs: %s' % missingarchs)
 
-    def __rmolderfromsrc(self, test=False):
+    def __rmolderfromsrc(self, test = False):
         for pkg in self.marked4moving:
             olderpkgnames = self.__find_older_pkgs(pkg)
             for i in olderpkgnames:
                 Pkg(i, self).remove(test)
 
-    def __rmotherfromdst(self, dsttree, test = False):
+    def __rmotherfromdst(self, dsttree, test = False, archivetree = None):
         for pkg in self.marked4moving:
             pkgnames = self.__find_other_pkgs(pkg, dsttree)
             for i in pkgnames:
-                Pkg(i, dsttree).remove(test)
+                if archivetree == None:
+                    Pkg(i, dsttree).remove(test)
+                else:
+                    Pkg(i, dsttree).move(archivetree, test = test)
 
     # Used more than once filter functions
     def __find_other_pkgs(self, pkg, tree):

================================================================
Index: pld-ftp-admin/scripts/move.py
diff -u pld-ftp-admin/scripts/move.py:1.16 pld-ftp-admin/scripts/move.py:1.17
--- pld-ftp-admin/scripts/move.py:1.16	Tue Jun 30 05:14:56 2009
+++ pld-ftp-admin/scripts/move.py	Tue Jun 30 06:22:35 2009
@@ -7,7 +7,7 @@
 from common import checkdir
 import ftpio
 from mailer import Message
-from config import value as config
+from config import archived_trees, logs_list
 
 nocheckbuild = False
 if len(sys.argv) > 4 and sys.argv[1] == '-nb':
@@ -24,6 +24,12 @@
 checkdir(sys.argv[1])
 checkdir(sys.argv[2])
 
+if sys.argv[2] in archived_trees:
+    archivetreename = ".archive/" + sys.argv[2]
+    checkdir(archivetreename)
+else:
+    archivetreename = None
+
 ftpio.connect('move')
 
 if not ftpio.lock(sys.argv[1], True):
@@ -35,24 +41,38 @@
     print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[2]
     sys.exit(1)
 
+if archivetreename != None and archivetreename != sys.argv[1] and not ftpio.lock(archivetreename, True):
+    ftpio.unlock(sys.argv[2])
+    ftpio.unlock(sys.argv[1])
+    print "ERR: %s tree already locked" % archivetreename
+    sys.exit(1)
+
 try:
     srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
     dsttree = ftptree.FtpTree(sys.argv[2])
+    if archivetreename != None:
+        archivetree = ftptree.FtpTree(archivetreename)
+    else:
+        archivetree = None
     if nocheckbuild:
         srctree.do_checkbuild = False
     srctree.mark4moving(sys.argv[3:])
 
-    srctree.movepkgs(dsttree)
+    srctree.movepkgs(dsttree, archivetree = archivetree)
 except ftptree.SomeError:
     # In case of problems we need to unlock the trees before exiting
     ftpio.unlock(sys.argv[1])
     ftpio.unlock(sys.argv[2])
+    if archivetreename != None:
+        ftpio.unlock(archivetreename)
     sys.exit(1)
 
 ftpio.unlock(sys.argv[1])
 ftpio.unlock(sys.argv[2])
+if archivetreename != None and archivetreename != sys.argv[1]:
+    ftpio.unlock(archivetreename)
 
-if 'logs_list' not in config:
+if logs_list == None:
     sys.exit(0)
 
 print 'Sending mail notification...',
@@ -68,7 +88,7 @@
 
 m = Message()
 m.set_headers(
-        to = config['logs_list'],
+        to = logs_list,
         subject = 'MOVED: %s => %s... %d packages' % (sys.argv[1], sys.argv[2], len(pkgs))
 )
 m.write(

================================================================
Index: pld-ftp-admin/scripts/test-move.py
diff -u pld-ftp-admin/scripts/test-move.py:1.7 pld-ftp-admin/scripts/test-move.py:1.8
--- pld-ftp-admin/scripts/test-move.py:1.7	Wed May 27 00:45:32 2009
+++ pld-ftp-admin/scripts/test-move.py	Tue Jun 30 06:22:35 2009
@@ -6,6 +6,7 @@
 import ftptree
 from common import checkdir
 import ftpio
+from config import archived_trees, logs_list
 
 if len(sys.argv) < 4:
     print "ERR: not enough parameters given"
@@ -15,6 +16,12 @@
 checkdir(sys.argv[1])
 checkdir(sys.argv[2])
 
+if sys.argv[2] in archived_trees:
+    archivetreename = ".archive/" + sys.argv[2]
+    checkdir(archivetreename)
+else:
+    archivetreename = None
+
 ftpio.connect('test-move')
 
 if not ftpio.lock(sys.argv[1], True):
@@ -26,18 +33,32 @@
     print "ERR: %s tree already locked" % sys.argv[2]
     sys.exit(1)
 
+if archivetreename != None and archivetreename != sys.argv[1] and not ftpio.lock(archivetreename, True):
+    ftpio.unlock(sys.argv[2])
+    ftpio.unlock(sys.argv[1])
+    print "ERR: %s tree already locked" % archivetreename
+    sys.exit(1)
+
 try:
     srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
     dsttree = ftptree.FtpTree(sys.argv[2])
+    if archivetreename != None:
+        archivetree = ftptree.FtpTree(archivetreename)
+    else:
+        archivetree = None
     srctree.mark4moving(sys.argv[3:])
 except ftptree.SomeError:
     # In case of problems we need to unlock the trees before exiting
     ftpio.unlock(sys.argv[1])
     ftpio.unlock(sys.argv[2])
+    if archivetreename != None:
+        ftpio.unlock(archivetreename)
     sys.exit(1)
 
 # We don't 'try' as in move.py cause this function doesn't force exit
-srctree.testmove(dsttree)
+srctree.testmove(dsttree, archivetree = archivetree)
 
 ftpio.unlock(sys.argv[1])
 ftpio.unlock(sys.argv[2])
+if archivetreename != None and archivetreename != sys.argv[1]:
+    ftpio.unlock(archivetreename)
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-ftp-admin/modules/ftptree.py?r1=1.40&r2=1.41&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-ftp-admin/scripts/move.py?r1=1.16&r2=1.17&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-ftp-admin/scripts/test-move.py?r1=1.7&r2=1.8&f=u



More information about the pld-cvs-commit mailing list