#!/usr/bin/env python3 import threading import Scheduler import ThreadPool from PackageBuilder import PackageBuilder class WorkerThread(threading.Thread): def __init__(self, event, name, mapPackageToCycle, logger, pkgBuildType): threading.Thread.__init__(self) self.statusEvent = event self.name = name self.mapPackageToCycle = mapPackageToCycle self.logger = logger self.pkgBuildType = pkgBuildType def run(self): ThreadPool.ThreadPool.makeWorkerThreadActive(self.name) self.logger.debug(f"Thread {self.name} is starting now") while True: pkg = Scheduler.Scheduler.getNextPackageToBuild() if pkg is None: break doneList = Scheduler.Scheduler.getDoneList() pkgBuilder = PackageBuilder( self.mapPackageToCycle, self.pkgBuildType ) try: pkgBuilder.build(pkg, doneList) except Exception as e: self.logger.exception(e) Scheduler.Scheduler.notifyPackageBuildFailed(pkg) self.logger.debug( f"Thread {self.name} stopped building package: {pkg}" ) self.statusEvent.set() break Scheduler.Scheduler.notifyPackageBuildCompleted(pkg) ThreadPool.ThreadPool.makeWorkerThreadInActive(self.name) self.logger.debug(f"Thread {self.name} is going to rest")