aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'buildbot_gentoo_ci/config/workers.py')
-rw-r--r--buildbot_gentoo_ci/config/workers.py81
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,