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