Merge "Remove Worker class"
This commit is contained in:
commit
643e6a2e77
|
@ -74,5 +74,4 @@ Other Global Objects
|
|||
.. autoclass:: zuul.model.Project
|
||||
.. autoclass:: zuul.model.Layout
|
||||
.. autoclass:: zuul.model.RepoFiles
|
||||
.. autoclass:: zuul.model.Worker
|
||||
.. autoclass:: zuul.model.TriggerEvent
|
||||
|
|
|
@ -2953,13 +2953,7 @@ class TestScheduler(ZuulTestCase):
|
|||
|
||||
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
|
||||
for _ in iterate_timeout(30, 'Wait for build to be in starting phase'):
|
||||
if not self.executor_server.job_workers:
|
||||
continue
|
||||
|
||||
# Wait until the BuildStartedEvent was processed by the scheduler
|
||||
# as we need the worker info in order to cancel a build.
|
||||
builds = self.getCurrentBuilds()
|
||||
if all(b.worker.name != "Unknown" for b in builds):
|
||||
if self.executor_server.job_workers:
|
||||
break
|
||||
|
||||
tevent = threading.Event()
|
||||
|
@ -5632,39 +5626,6 @@ class TestScheduler(ZuulTestCase):
|
|||
dict(name='job2', result='SUCCESS', changes='1,1 2,1'),
|
||||
], ordered=False)
|
||||
|
||||
def test_worker_update_metadata(self):
|
||||
"Test if a worker can send back metadata about itself"
|
||||
self.executor_server.hold_jobs_in_build = True
|
||||
|
||||
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
|
||||
A.addApproval('Code-Review', 2)
|
||||
self.fake_gerrit.addEvent(A.addApproval('Approved', 1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
current_builds = list(self.getCurrentBuilds())
|
||||
self.assertEqual(len(current_builds), 1)
|
||||
|
||||
self.log.debug('Current builds:')
|
||||
self.log.debug(current_builds)
|
||||
|
||||
start = time.time()
|
||||
while True:
|
||||
if time.time() - start > 10:
|
||||
raise Exception("Timeout waiting for gearman server to report "
|
||||
+ "back to the client")
|
||||
build = list(self.getCurrentBuilds())[0]
|
||||
if build.worker.name == self.executor_server.hostname:
|
||||
break
|
||||
else:
|
||||
time.sleep(0)
|
||||
|
||||
self.log.debug(build)
|
||||
self.assertEqual(self.executor_server.hostname, build.worker.name)
|
||||
|
||||
self.executor_server.hold_jobs_in_build = False
|
||||
self.executor_server.release()
|
||||
self.waitUntilSettled()
|
||||
|
||||
@simple_layout('layouts/footer-message.yaml')
|
||||
def test_footer_message(self):
|
||||
"Test a pipeline's footer message is correctly added to the report."
|
||||
|
@ -5843,7 +5804,7 @@ For CI problems and help debugging, contact ci@example.org"""
|
|||
# BuildStatus events (which set the worker info). However, this
|
||||
# solution might not be as straight forward and more error prone
|
||||
# due to the nature of watches.
|
||||
if build.worker.name == self.executor_server.hostname:
|
||||
if build.start_time:
|
||||
break
|
||||
else:
|
||||
time.sleep(0)
|
||||
|
@ -5875,7 +5836,6 @@ For CI problems and help debugging, contact ci@example.org"""
|
|||
hostname=self.executor_server.hostname,
|
||||
uuid=job['uuid']),
|
||||
job['finger_url'])
|
||||
self.assertEqual(2, len(job['worker']))
|
||||
self.assertEqual(False, job['canceled'])
|
||||
self.assertEqual(True, job['voting'])
|
||||
self.assertIsNone(job['result'])
|
||||
|
|
|
@ -2537,14 +2537,13 @@ class Build(object):
|
|||
self.retry = False
|
||||
self.held = False
|
||||
self.parameters = {}
|
||||
self.worker = Worker()
|
||||
self.zuul_event_id = zuul_event_id
|
||||
|
||||
self.build_request_ref = None
|
||||
|
||||
def __repr__(self):
|
||||
return ('<Build %s of %s voting:%s on %s>' %
|
||||
(self.uuid, self.job.name, self.job.voting, self.worker))
|
||||
return ('<Build %s of %s voting:%s>' %
|
||||
(self.uuid, self.job.name, self.job.voting))
|
||||
|
||||
@property
|
||||
def failed(self):
|
||||
|
@ -2570,25 +2569,6 @@ class Build(object):
|
|||
result_data=self.result_data)
|
||||
|
||||
|
||||
class Worker(object):
|
||||
"""Information about the specific worker executing a Build."""
|
||||
def __init__(self):
|
||||
self.name = "Unknown"
|
||||
self.hostname = None
|
||||
self.log_port = None
|
||||
self.zone = None
|
||||
|
||||
def updateFromData(self, data):
|
||||
"""Update worker information if contained in the WORK_DATA response."""
|
||||
self.name = data.get('worker_name', self.name)
|
||||
self.hostname = data.get('worker_hostname', self.hostname)
|
||||
self.log_port = data.get('worker_log_port', self.log_port)
|
||||
self.zone = data.get('worker_zone', self.zone)
|
||||
|
||||
def __repr__(self):
|
||||
return '<Worker %s>' % self.name
|
||||
|
||||
|
||||
class RepoFiles(zkobject.ShardedZKObject):
|
||||
"""RepoFiles holds config-file content for per-project job config.
|
||||
|
||||
|
@ -3937,7 +3917,6 @@ class QueueItem(zkobject.ZKObject):
|
|||
build_url = None
|
||||
finger_url = None
|
||||
report_url = None
|
||||
worker = None
|
||||
if build:
|
||||
result = build.result
|
||||
finger_url = build.url
|
||||
|
@ -3960,10 +3939,6 @@ class QueueItem(zkobject.ZKObject):
|
|||
remaining = max(
|
||||
int(build.estimated_time * 1000) - elapsed,
|
||||
0)
|
||||
worker = {
|
||||
'name': build.worker.name,
|
||||
'hostname': build.worker.hostname,
|
||||
}
|
||||
if remaining and remaining > max_remaining:
|
||||
max_remaining = remaining
|
||||
|
||||
|
@ -3992,7 +3967,6 @@ class QueueItem(zkobject.ZKObject):
|
|||
'retry': build.retry if build else None,
|
||||
'tries': self.current_build_set.getTries(job.name),
|
||||
'queued': job.queued,
|
||||
'worker': worker,
|
||||
'waiting_status': waiting_status,
|
||||
})
|
||||
|
||||
|
|
|
@ -1996,10 +1996,6 @@ class Scheduler(threading.Thread):
|
|||
return
|
||||
|
||||
build.start_time = event.data["start_time"]
|
||||
# Update information about worker
|
||||
if event.data:
|
||||
# Noop builds don't provide any event data
|
||||
build.worker.updateFromData(event.data)
|
||||
|
||||
log = get_annotated_logger(
|
||||
self.log, build.zuul_event_id, build=build.uuid)
|
||||
|
|
Loading…
Reference in New Issue