diff options
Diffstat (limited to 'buildbot_gentoo_ci/config/workers.py')
-rw-r--r-- | buildbot_gentoo_ci/config/workers.py | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/buildbot_gentoo_ci/config/workers.py b/buildbot_gentoo_ci/config/workers.py index ea05f89..3dcef1a 100644 --- a/buildbot_gentoo_ci/config/workers.py +++ b/buildbot_gentoo_ci/config/workers.py @@ -1,31 +1,9 @@ # Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -from buildbot.plugins import worker, util - -class gentoo_ci_workers(): - def __init__(self, worker_data, **kwargs): - self.worker_data = worker_data - - def getWorkersUuid(self, worker_type): - worker_list = [] - for worker in self.worker_data: - if worker['type'] == worker_type and worker['enable'] is True: - worker_list.append(worker['uuid']) - print(worker_list) - return worker_list +from twisted.internet import defer - def getWorkersAllData(self, worker_type): - worker_list = [] - for worker in self.worker_data: - if worker['type'] == worker_type and worker['enable'] is True: - worker_list.append(worker) - print(worker_list) - return worker_list - -@util.renderer -def build_docker_images(props): - return 'bb-worker-' + props.getProperty('project_uuid') + ':latest' +from buildbot.plugins import worker, util @util.renderer def log_docker_images(props): @@ -55,14 +33,32 @@ def docker_volumes_repositorys(props): volumes_list.append(':'.join([src_dir, dest_dir])) return volumes_list -def gentoo_workers(worker_data): - w = [] - g_ci_w = gentoo_ci_workers(worker_data) +@util.renderer +@defer.inlineCallbacks +def getDockerHost(props, docker_worker): + print(docker_worker) + gentooci = props.master.namedServices['services'].namedServices['gentooci'] + worker_data = yield gentooci.db.workers.getWorkerByUuid(docker_worker['uuid']) + node = yield gentooci.db.workers.getNodeByWorkerUuid(worker_data['uuid']) + node_data = yield gentooci.db.workers.getNodeByUuid(node['node_uuid']) + print(worker_data) + print(node_data) + return node_data['host_url'] + +@util.renderer +@defer.inlineCallbacks +def GetBuildDockerImage(props, docker_worker): + gentooci = props.master.namedServices['services'].namedServices['gentooci'] + worker_data = yield gentooci.db.workers.getWorkerByUuid(docker_worker['uuid']) + image_data = yield gentooci.db.workers.getImageById(worker_data['image_id']) + print(image_data) + return image_data['tag'] - for local_worker in g_ci_w.getWorkersUuid('local'): - w.append(worker.LocalWorker(local_worker)) - for node_worker in g_ci_w.getWorkersAllData('node'): - w.append(worker.Worker(node_worker['uuid'], node_worker['password'])) +def gentoo_workers(worker_data_local, worker_data_docker): + w = [] + for local_worker in worker_data_local: + if local_worker['enable']: + w.append(worker.LocalWorker(local_worker['name'])) # docker workers docker_hostconfig = {} # For use of sandbox stuff @@ -71,24 +67,23 @@ def gentoo_workers(worker_data): # libseccomp overhead # https://github.com/seccomp/libseccomp/issues/153 docker_hostconfig['security_opt'] = ['seccomp=unconfined'] - for build_worker in g_ci_w.getWorkersAllData('docker'): - #FIXME: set settings in master.cfg - if build_worker['type'] == 'docker': - w.append(worker.DockerLatentWorker(build_worker['uuid'], - build_worker['password'], - docker_host='tcp://192.168.1.12:2375', - image=build_docker_images, + print(worker_data_docker) + for docker_worker in worker_data_docker: + #FIXME: get settings from db + if docker_worker['type'] == 'build': + w.append(worker.DockerLatentWorker(docker_worker['uuid'], + None, + docker_host=getDockerHost.withArgs(docker_worker), + image=GetBuildDockerImage.withArgs(docker_worker), volumes=docker_volumes, hostconfig=docker_hostconfig, followStartupLogs=True, masterFQDN='192.168.1.5', build_wait_timeout=3600 )) - for log_worker in g_ci_w.getWorkersAllData('log'): - #FIXME: set settings in master.cfg - if log_worker['type'] == 'log': - w.append(worker.DockerLatentWorker(log_worker['uuid'], - log_worker['password'], + if docker_worker['type'] == 'log': + w.append(worker.DockerLatentWorker(docker_worker['uuid'], + None, docker_host='tcp://192.168.1.12:2375', image=log_docker_images, volumes=docker_volumes_repositorys, |