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