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