1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
4 if sys.version_info[0] == 2:
7 import configparser as ConfigParser
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
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 p.get(sec, o).strip()
48 elif p.has_option(builder, o):
49 return p.get(builder, o).strip()
50 elif p.has_option("all", o):
51 return p.get("all", o).strip()
55 log.panic("cannot find %s::%s" % (builder, o))
57 p.readfp(open(path.builder_conf))
59 self.admin_email = get("admin_email")
60 self.email = self.admin_email
62 if p.has_option("all", "syslog"):
63 f = p.get("all", "syslog")
65 if f in syslog_facilities:
66 log.open_syslog("builder", syslog_facilities[f])
68 log.panic("no such syslog facility: %s" % f)
71 builder = get("src_builder", builder)
72 self.builder = builder
74 self.binary_builders = get("binary_builders").split()
75 self.src_builder = get("src_builder", "").strip()
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
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"))
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")
117 f = get("syslog", "")
119 if f in syslog_facilities:
120 log.open_syslog(self.builder, syslog_facilities[f])
122 log.panic("no such syslog facility: %s" % f)
126 config = Builder_Conf()
128 def init_conf(builder=None):
130 _create_unverified_https_context = ssl._create_unverified_context
131 except AttributeError:
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
141 log.builder = config.builder