]> TLD Linux GIT Repositories - TLD.git/blobdiff - pld-builder.new/PLD_Builder/config.py
- from https://github.com/pld-linux/pld-builder.new
[TLD.git] / pld-builder.new / PLD_Builder / config.py
diff --git a/pld-builder.new/PLD_Builder/config.py b/pld-builder.new/PLD_Builder/config.py
new file mode 100644 (file)
index 0000000..2e78cd8
--- /dev/null
@@ -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()