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