+ self.jobs = DatabaseConfig(self.db, "jobs")
+ self.distcc = DistccConfig(self.db, "distcc", self.hostname(), self.jobs())
+ self.cpu = DatabaseConfig(self.db, "cpu", base64=1)
+ self.machine = DatabaseConfig(self.db, "machine")
+ self.system = DatabaseConfig(self.db, "system", base64=1)
+
+ self.log = FileConfig(self.path, "log")
+
+ # If host was longer than 3 days in state compiling we set it as idle.
+ if self.state() == "compiling" and \
+ (time.time() - self.state.time()) > 3*24*60*60:
+ self.state.set("idle")
+
+ # If host is idle and distcc is not disabled we set it as distcc host.
+ if self.state() == "idle" and self.distcc() != "0":
+ self.state.set("distcc")
+
+ # If host is longer than 24h in error state we set it as distcc host.
+ if self.state() == "error" and \
+ (time.time() - self.state.time()) > 24*60*60:
+ self.state.set("distcc")
+
+ # If host was longer than two weeks in distcc state we set it as unknown.
+ if self.state() == "error" and \
+ (time.time() - self.state.time()) > 2*7*24*60*60:
+ self.state.set("unknown")
+
+ # If host was longer than four weels in distcc state we delete it.
+ if self.state() in ("distcc", "unknown",) and \
+ (time.time() - self.state.time()) > 4*7*24*60*60:
+ del self.db
+ shutil.rmtree(self.path)