X-Git-Url: https://git.tld-linux.org/?p=TLD.git;a=blobdiff_plain;f=pld-builder.new%2FPLD_Builder%2Fconfig.py;fp=pld-builder.new%2FPLD_Builder%2Fconfig.py;h=2e78cd870c556829eac05e463d282a3d16d45e3c;hp=0000000000000000000000000000000000000000;hb=90809c8fec988489786ce00247d9a4150070748b;hpb=ab3934fab858112cd552359b18cb980ea07c310b diff --git a/pld-builder.new/PLD_Builder/config.py b/pld-builder.new/PLD_Builder/config.py new file mode 100644 index 0000000..2e78cd8 --- /dev/null +++ b/pld-builder.new/PLD_Builder/config.py @@ -0,0 +1,124 @@ +# vi: encoding=utf-8 ts=8 sts=4 sw=4 et + +import ConfigParser +import string +import os +import syslog + +import path +import log +import status + + +syslog_facilities = { + 'kern': syslog.LOG_KERN, + 'user': syslog.LOG_USER, + 'mail': syslog.LOG_MAIL, + 'daemon': syslog.LOG_DAEMON, + 'auth': syslog.LOG_AUTH, + 'lpr': syslog.LOG_LPR, + 'news': syslog.LOG_NEWS, + 'uucp': syslog.LOG_UUCP, + 'cron': syslog.LOG_CRON, + 'local0': syslog.LOG_LOCAL0, + 'local1': syslog.LOG_LOCAL1, + 'local2': syslog.LOG_LOCAL2, + 'local3': syslog.LOG_LOCAL3, + 'local4': syslog.LOG_LOCAL4, + 'local5': syslog.LOG_LOCAL5, + 'local6': syslog.LOG_LOCAL6, + 'local7': syslog.LOG_LOCAL7 +} + +class Builder_Conf: + def __init__(self): + self.done = 0 + pass + + def read(self, builder): + p = ConfigParser.ConfigParser() + def get(o, d = None): + if p.has_option(builder, o): + return string.strip(p.get(builder, o)) + elif p.has_option("all", o): + return string.strip(p.get("all", o)) + elif d != None: + return d + else: + log.panic("cannot find %s::%s" % (builder, o)) + + p.readfp(open(path.builder_conf)) + + self.admin_email = get("admin_email") + self.email = self.admin_email + + if p.has_option("all", "syslog"): + f = p.get("all", "syslog") + if f != "": + if syslog_facilities.has_key(f): + log.open_syslog("builder", syslog_facilities[f]) + else: + log.panic("no such syslog facility: %s" % f) + + if builder == "src": + builder = get("src_builder", builder) + self.builder = builder + + self.binary_builders = string.split(get("binary_builders")) + self.src_builder = string.strip(get("src_builder", "")) + self.tag_prefixes = string.split(get("tag_prefixes", "")) + self.max_keep_time = int(get("max_keep_time", 168))*60*60 + self.bot_email = get("bot_email", "") + self.control_url = get("control_url") + self.request_handler_server_port = int(get("request_handler_server_port", 1234)) + self.builder_list = get("builder_list", "") + self.gen_upinfo = get("gen_upinfo", "yes") + if self.gen_upinfo == 'no': + self.gen_upinfo = False + else: + self.gen_upinfo = True + status.admin = self.admin_email + status.builder_list = self.builder_list + self.max_jobs = int(get("max_jobs")) + + if builder == "all": + return + + self.email = get("email") + if builder not in p.sections(): + log.panic("builder %s not in config file" % builder) + self.arch = get("arch") + self.chroot = get("chroot") + self.buildlogs_url = get("buildlogs_url", "/dev/null") + self.ftp_url = get("ftp_url") + self.notify_url = get("notify_url") + self.test_ftp_url = get("test_ftp_url", "/dev/null") + self.rpmqa_url = get("rpmqa_url", "/dev/null") + self.rpmqa_filename = get("rpmqa_filename") + self.job_slots = int(get("job_slots")) + self.max_load = float(get("max_load")) + self.rpm_cache_dir = get("rpm_cache_dir", "/spools/ready") + self.builder_user = get("builder_user", "builder") + self.sudo_chroot_wrapper = get("sudo_chroot_wrapper", "") + self.nice = get("nice", "0") + + f = get("syslog", "") + if f != "": + if syslog_facilities.has_key(f): + log.open_syslog(self.builder, syslog_facilities[f]) + else: + log.panic("no such syslog facility: %s" % f) + + self.done = 1 + +config = Builder_Conf() + +def init_conf(builder=None): + os.environ['LC_ALL'] = "C" + status.push("reading builder config") + log.builder = builder + if not builder: + builder = "all" + config.read(builder) + log.builder = config.builder + status.pop()