1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/usr/bin/python
# Copyright 2004 Canonical Ltd, all rights reserved (for now?).
# Author: Rob Weir <rob.weir@canonical.com>
# David Allouche <david@allouche.net>
import os
import sys
import pickle
import logging
import Job
from canonical.database.sqlbase import quote
from canonical.database.sqlbase import SQLBase
from canonical.launchpad.database import Product
from importd.Job import Job
import canonical
import pybaz
import pybaz.backends.forkexec
pybaz.backend.spawning_strategy = pybaz.backends.forkexec.PyArchSpawningStrategy
import gnarly.process
import gnarly.process.unix_process
gnarly.process.Popen = gnarly.process.unix_process.Popen
class Doer(object):
def __init__(self, log_level=2):
#how portable is this conversion?
self.logger=logging.Logger("importd", 50 - log_level*10)
handler=logging.StreamHandler()
handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
self.logger.addHandler(handler)
def makeJob(self, productName, seriesName):
"""Create the Job object from the source source name (packagename)."""
product = Product.byName(productName)
series = product.getSeries(seriesName)
self._job = Job()
self._job.from_series(series)
self._job.slave_home = os.environ['IMPORTD_SLAVE_HOME']
self._job.archive_mirror_dir = os.environ['IMPORTD_MIRRORS']
print "Job = %s" % self._job
def importPackage(self):
"""start a synchronous import"""
self._job.TYPE = 'import'
self._job.nukeTargets(logger=self.logger)
self._job.runJob(logger=self.logger, dir='.')
def syncPackage(self):
"""start a synchronous sync"""
self._job.TYPE = 'sync'
self._job.runJob(logger=self.logger, dir='.')
self._job.mirrorTarget(logger=self.logger, dir='.')
def loadJob(self, jobfile_name):
"""Load the Job object from a pickle file."""
jobfile = open(jobfile_name, 'r')
self._job = pickle.load(jobfile)
jobfile.close()
def runMethod(self, method, dirname):
getattr(self._job, method)(logger=self.logger, dir=dirname)
def main():
jobfile_name, method, dirname = sys.argv[1:]
doer = Doer()
doer.loadJob(jobfile_name)
doer.runMethod(method, dirname)
if __name__ == '__main__':
main()
|