from common import checkdir
import ftpio
from mailer import Message
-from config import value as config
+from config import archived_trees, logs_list
+
+os.umask(022)
nocheckbuild = False
if len(sys.argv) > 4 and sys.argv[1] == '-nb':
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):
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:])
+ pkgs = list(set(sys.argv[3:]))
+ srctree.mark4moving(pkgs)
- 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...',
+print 'Sending mail notification to %s...' % logs_list
pkgs = {}
requesters.append(pkg.build[bid].requester)
pkgs[pkg.nvr] = requesters
+ftpadmin = "(unknown)"
+try:
+ ftpadmin = os.environ['FTPADM']
+except KeyError, e:
+ pass
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(
(
- 'SrcTree: %s DstTree: %s\n' +
- 'Amount: %d\n\n---- Moved:\n\n'
- ) % (sys.argv[1], sys.argv[2], len(pkgs))
+ 'FTP admin %(ftpadmin)s moved from *%(srctree)s* to *%(dsttree)s* %(count)d packages\n\n' +
+ '---- Package name ---- Package built by:\n\n'
+ ) % {
+ 'ftpadmin' : ftpadmin,
+ 'srctree' : sys.argv[1],
+ 'dsttree' : sys.argv[2],
+ 'count' : len(pkgs),
+ }
)
for nvr in sorted(pkgs.keys()):