class Updater(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.log = logging.getLogger(__name__) self.config = Config() self.database = Database(self.config) self.update_queue = Queue(1) def run(self): location = self.config.get("updater_dir", "updater") Worker(location, None, None).setup_meta() workers = [] # start all workers for i in range(0, self.config.get("updater_threads", 4)): worker = Worker(location, "update", self.update_queue) worker.start() workers.append(worker) while True: outdated_subtarget = self.database.get_subtarget_outdated() if outdated_subtarget: log.info("found outdated subtarget %s", outdated_subtarget) self.update_queue.put(outdated_subtarget) else: time.sleep(5)
class Updater(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.log = logging.getLogger(__name__) self.log.info("log initialized") self.config = Config() self.log.info("config initialized") self.db = Database(self.config) self.log.info("db initialized") def run(self): self.log.info("run updater") while True: outdated_subtarget = self.db.get_subtarget_outdated() if not outdated_subtarget: self.log.debug("updater sleeping") time.sleep(60) else: self.log.info("found outdated_subtarget %s", outdated_subtarget) distro, release, target, subtarget = outdated_subtarget imagebuilder = ImageBuilder(distro, str(release), target, subtarget) self.log.info("initializing imagebuilder") if not imagebuilder.created(): self.log.info("setup imagebuilder") imagebuilder.run() self.log.info("parse profiles/default packages") info = imagebuilder.parse_info() if info: self.db.insert_profiles(distro, release, target, subtarget, *info) else: logging.error("could not receive profiles of %s/%s", target, subtarget) self.db.subtarget_synced(distro, release, target, subtarget) continue #exit(1) self.log.info("parse packages") packages = imagebuilder.parse_packages() self.db.insert_packages_available(distro, release, target, subtarget, packages) self.db.subtarget_synced(distro, release, target, subtarget)