]> TLD Linux GIT Repositories - TLD.git/blob - pld-builder.new/PLD_Builder/config.py
2e78cd870c556829eac05e463d282a3d16d45e3c
[TLD.git] / pld-builder.new / PLD_Builder / config.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import ConfigParser
4 import string
5 import os
6 import syslog
7
8 import path
9 import log
10 import status
11
12
13 syslog_facilities = {
14     'kern': syslog.LOG_KERN,
15     'user': syslog.LOG_USER,
16     'mail': syslog.LOG_MAIL,
17     'daemon': syslog.LOG_DAEMON,
18     'auth': syslog.LOG_AUTH,
19     'lpr': syslog.LOG_LPR,
20     'news': syslog.LOG_NEWS,
21     'uucp': syslog.LOG_UUCP,
22     'cron': syslog.LOG_CRON,
23     'local0': syslog.LOG_LOCAL0,
24     'local1': syslog.LOG_LOCAL1,
25     'local2': syslog.LOG_LOCAL2,
26     'local3': syslog.LOG_LOCAL3,
27     'local4': syslog.LOG_LOCAL4,
28     'local5': syslog.LOG_LOCAL5,
29     'local6': syslog.LOG_LOCAL6,
30     'local7': syslog.LOG_LOCAL7
31 }
32
33 class Builder_Conf:
34     def __init__(self):
35         self.done = 0
36         pass
37
38     def read(self, builder):
39         p = ConfigParser.ConfigParser()
40         def get(o, d = None):
41             if p.has_option(builder, o):
42                 return string.strip(p.get(builder, o))
43             elif p.has_option("all", o):
44                 return string.strip(p.get("all", o))
45             elif d != None:
46                 return d
47             else:
48                 log.panic("cannot find %s::%s" % (builder, o))
49
50         p.readfp(open(path.builder_conf))
51
52         self.admin_email = get("admin_email")
53         self.email = self.admin_email
54
55         if p.has_option("all", "syslog"):
56             f = p.get("all", "syslog")
57             if f != "":
58                 if syslog_facilities.has_key(f):
59                     log.open_syslog("builder", syslog_facilities[f])
60                 else:
61                     log.panic("no such syslog facility: %s" % f)
62
63         if builder == "src":
64             builder = get("src_builder", builder)
65         self.builder = builder
66
67         self.binary_builders = string.split(get("binary_builders"))
68         self.src_builder = string.strip(get("src_builder", ""))
69         self.tag_prefixes = string.split(get("tag_prefixes", ""))
70         self.max_keep_time = int(get("max_keep_time", 168))*60*60
71         self.bot_email = get("bot_email", "")
72         self.control_url = get("control_url")
73         self.request_handler_server_port = int(get("request_handler_server_port", 1234))
74         self.builder_list = get("builder_list", "")
75         self.gen_upinfo = get("gen_upinfo", "yes")
76         if self.gen_upinfo == 'no':
77             self.gen_upinfo = False
78         else:
79             self.gen_upinfo = True
80         status.admin = self.admin_email
81         status.builder_list = self.builder_list
82         self.max_jobs = int(get("max_jobs"))
83
84         if builder == "all":
85             return
86
87         self.email = get("email")
88         if builder not in p.sections():
89             log.panic("builder %s not in config file" % builder)
90         self.arch = get("arch")
91         self.chroot = get("chroot")
92         self.buildlogs_url = get("buildlogs_url", "/dev/null")
93         self.ftp_url = get("ftp_url")
94         self.notify_url = get("notify_url")
95         self.test_ftp_url = get("test_ftp_url", "/dev/null")
96         self.rpmqa_url = get("rpmqa_url", "/dev/null")
97         self.rpmqa_filename = get("rpmqa_filename")
98         self.job_slots = int(get("job_slots"))
99         self.max_load = float(get("max_load"))
100         self.rpm_cache_dir = get("rpm_cache_dir", "/spools/ready")
101         self.builder_user = get("builder_user", "builder")
102         self.sudo_chroot_wrapper = get("sudo_chroot_wrapper", "")
103         self.nice = get("nice", "0")
104
105         f = get("syslog", "")
106         if f != "":
107             if syslog_facilities.has_key(f):
108                 log.open_syslog(self.builder, syslog_facilities[f])
109             else:
110                 log.panic("no such syslog facility: %s" % f)
111
112         self.done = 1
113
114 config = Builder_Conf()
115
116 def init_conf(builder=None):
117     os.environ['LC_ALL'] = "C"
118     status.push("reading builder config")
119     log.builder = builder
120     if not builder:
121         builder = "all"
122     config.read(builder)
123     log.builder = config.builder
124     status.pop()