2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
5 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
7 from common import checkdir
9 from mailer import Message
10 from config import value as config
13 if len(sys.argv) > 4 and sys.argv[1] == '-nb':
15 sys.argv = sys.argv[1:]
18 print >>sys.stderr, "ERR: not enough parameters given"
19 print >>sys.stderr, "move.py [options] src-tree dst-tree package [package2 package3 ...]"
20 print >>sys.stderr, "\nOptions:"
21 print >>sys.stderr, " -nb Do not check if builds are finished.\n"
29 if not ftpio.lock(sys.argv[1], True):
30 print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[1]
33 if not ftpio.lock(sys.argv[2], True):
34 ftpio.unlock(sys.argv[1])
35 print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[2]
39 srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
40 dsttree = ftptree.FtpTree(sys.argv[2])
42 srctree.do_checkbuild = False
43 srctree.mark4moving(sys.argv[3:])
45 srctree.movepkgs(dsttree)
46 except ftptree.SomeError:
47 # In case of problems we need to unlock the trees before exiting
48 ftpio.unlock(sys.argv[1])
49 ftpio.unlock(sys.argv[2])
52 ftpio.unlock(sys.argv[1])
53 ftpio.unlock(sys.argv[2])
55 if 'logs_list' not in config:
58 print 'Sending mail notification...',
62 for pkg in srctree.marked4moving:
64 for bid in pkg.build.keys():
65 if pkg.build[bid].requester not in requesters:
66 requesters.append(pkg.build[bid].requester)
67 pkgs[pkg.nvr] = requesters
71 to = config['logs_list'],
72 subject = 'MOVED: %s => %s... %d packages' % (sys.argv[1], sys.argv[2], len(pkgs))
76 'SrcTree: %s DstTree: %s\n' +
77 'Amount: %d\n\n---- Moved:\n\n'
78 ) % (sys.argv[1], sys.argv[2], len(pkgs))
81 for nvr in sorted(pkgs.keys()):
82 m.write_line('%s ---- %s' % (nvr, ', '.join(pkgs[nvr])))