87815216 |
import threading |
56c77555 |
from PackageBuilder import PackageBuilderChroot
from PackageBuilder import PackageBuilderContainer |
b37b4c63 |
import Scheduler
import ThreadPool |
7418d2bf |
|
d024e640 |
class WorkerThread(threading.Thread): |
7418d2bf |
|
326d5ca8 |
def __init__(self, event, name, mapPackageToCycle, logger, |
085306ae |
pkgBuildType): |
d024e640 |
threading.Thread.__init__(self) |
87815216 |
self.statusEvent = event
self.name = name
self.mapPackageToCycle = mapPackageToCycle
self.logger = logger
self.pkgBuildType = pkgBuildType |
7418d2bf |
|
d024e640 |
def run(self): |
87815216 |
buildThreadFailed = False |
b37b4c63 |
ThreadPool.ThreadPool.makeWorkerThreadActive(self.name) |
87815216 |
self.logger.info("Thread " + self.name + " is starting now") |
d024e640 |
while True: |
b37b4c63 |
pkg = Scheduler.Scheduler.getNextPackageToBuild() |
d024e640 |
if pkg is None:
break |
87815216 |
self.logger.info("Thread " + self.name + " is building package:" + pkg) |
7418d2bf |
if self.pkgBuildType == "chroot": |
56c77555 |
pkgBuilder = PackageBuilderChroot(self.mapPackageToCycle,
self.pkgBuildType) |
7418d2bf |
elif self.pkgBuildType == "container": |
56c77555 |
pkgBuilder = PackageBuilderContainer(self.mapPackageToCycle,
self.pkgBuildType) |
326d5ca8 |
try:
pkgBuilder.buildPackageFunction(pkg)
except Exception as e:
self.logger.exception(e) |
d024e640 |
buildThreadFailed = True |
b37b4c63 |
Scheduler.Scheduler.notifyPackageBuildFailed(pkg) |
326d5ca8 |
self.logger.info("Thread " + self.name + " stopped building package:" + pkg)
self.statusEvent.set() |
d024e640 |
break |
326d5ca8 |
self.logger.info("Thread " + self.name + " finished building package:" + pkg) |
b37b4c63 |
Scheduler.Scheduler.notifyPackageBuildCompleted(pkg) |
7418d2bf |
|
b37b4c63 |
ThreadPool.ThreadPool.makeWorkerThreadInActive(self.name) |
326d5ca8 |
self.logger.info("Thread " + self.name + " is going to rest") |