Skip to content

Commit f59f25d

Browse files
MagicRBMic92
authored andcommitted
Split up scheduling functions
Signed-off-by: magic_rb <[email protected]>
1 parent 5f966f1 commit f59f25d

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

buildbot_nix/__init__.py

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -170,71 +170,62 @@ def getSchedulerByName(self, name: str) -> BaseScheduler:
170170
# todo: check ITriggerableScheduler
171171
return sch
172172

173-
def schedule_eval_failure(self, build_props: Properties, job: NixEvalJobError) -> Tuple[BaseScheduler, Properties]:
174-
source = f"nix-eval-nix"
175-
176-
props = Properties()
173+
@staticmethod
174+
def set_common_properties(props: Properties, source: str, job: NixEvalJob) -> Properties:
177175
props.setProperty("virtual_builder_name", f".#checks.{job.attr}", source)
178176
props.setProperty("status_name", f"nix-build .#checks.{job.attr}", source)
179177
props.setProperty("virtual_builder_tags", "", source)
180-
props.setProperty("error", job.error, source)
181178
props.setProperty("attr", job.attr, source)
182179

180+
return props
181+
182+
def schedule_eval_failure(self, job: NixEvalJobError) -> Tuple[str, Properties]:
183+
source = f"nix-eval-nix"
184+
185+
props = BuildTrigger.set_common_properties(Properties(), source, job)
186+
props.setProperty("error", job.error, source)
187+
183188
return (self.failed_eval_scheduler, props)
184189

185190
def schedule_cached_failure(
186191
self,
187-
build_props: Properties,
188192
job: NixEvalJobSuccess
189-
) -> Tuple[BaseScheduler, Properties]:
193+
) -> Tuple[str, Properties]:
190194
source = f"nix-eval-nix"
191195

192-
props = Properties()
193-
props.setProperty("virtual_builder_name", f".#checks.{job.attr}", source)
194-
props.setProperty("status_name", f"nix-build .#checks.{job.attr}", source)
195-
props.setProperty("virtual_builder_tags", "", source)
196-
props.setProperty("attr", job.attr, source)
196+
props = BuildTrigger.set_common_properties(Properties(), source, job)
197197

198198
return (self.cached_failure_scheduler, props)
199199

200200
def schedule_dependency_failed(
201201
self,
202-
build_props: Properties,
203202
job: NixEvalJobSuccess,
204203
dependency: NixEvalJobSuccess
205-
) -> Tuple[BaseScheduler, Properties]:
204+
) -> Tuple[str, Properties]:
206205
source = f"nix-eval-nix"
207206

208-
props = Properties()
209-
props.setProperty("virtual_builder_name", f".#checks.{job.attr}", source)
210-
props.setProperty("status_name", f"nix-build .#checks.{job.attr}", source)
211-
props.setProperty("virtual_builder_tags", "", source)
207+
props = BuildTrigger.set_common_properties(Properties(), source, job)
212208
props.setProperty("dependency.attr", dependency.attr, source)
213-
props.setProperty("attr", job.attr, source)
214209

215210
return (self.dependency_failed_scheduler, props)
216211

217-
def schedule_success(self, build_props: Properties, job: NixEvalJobSuccess) -> Tuple[BaseScheduler, Properties]:
212+
def schedule_success(self, build_props: Properties, job: NixEvalJobSuccess) -> Tuple[str, Properties]:
218213
source = f"nix-eval-nix"
219214

220-
props = Properties()
221-
props.setProperty("virtual_builder_name", f".#checks.{job.attr}", source)
222-
props.setProperty("status_name", f"nix-build .#checks.{job.attr}", source)
223-
props.setProperty("virtual_builder_tags", "", source)
224-
225215
drv_path = job.drvPath
226216
system = job.system
227217
out_path = job.outputs["out"] or None
228218

229-
build_props.setProperty(f"{job.attr}-out_path", out_path, source)
230-
build_props.setProperty(f"{job.attr}-drv_path", drv_path, source)
231-
232-
props.setProperty("attr", job.attr, source)
219+
props = BuildTrigger.set_common_properties(Properties(), source, job)
233220
props.setProperty("system", system, source)
234221
props.setProperty("drv_path", drv_path, source)
235222
props.setProperty("out_path", out_path, source)
236223
props.setProperty("cacheStatus", job.cacheStatus, source)
237224

225+
build_props.setProperty(f"{job.attr}-out_path", out_path, source)
226+
build_props.setProperty(f"{job.attr}-drv_path", drv_path, source)
227+
228+
238229
# TODO: allow to skip if the build is cached?
239230
if job.cacheStatus == CacheStatus.notBuilt or job.cacheStatus == CacheStatus.cached:
240231
return (self.builds_scheduler, props)
@@ -245,10 +236,10 @@ def schedule_success(self, build_props: Properties, job: NixEvalJobSuccess) -> T
245236
def schedule(
246237
self,
247238
ss_for_trigger: list[dict[str, Any]],
248-
scheduler: BaseScheduler,
239+
scheduler_name: str,
249240
props: Properties
250241
) -> Generator[Any, Any, Tuple[dict[int, int], defer.Deferred[list[int]]]]:
251-
scheduler = self.getSchedulerByName(scheduler)
242+
scheduler: BaseScheduler = self.getSchedulerByName(scheduler_name)
252243

253244
idsDeferred, resultsDeferred = scheduler.trigger(
254245
waited_for = True,
@@ -358,7 +349,7 @@ def run(self) -> Generator[Any, Any, None]:
358349
scheduler_log.addStdout(f'The following jobs failed to evaluate:\n');
359350
for failed_job in self.failed_jobs:
360351
scheduler_log.addStdout(f'\t- {failed_job.attr} failed eval\n');
361-
yield self.schedule(ss_for_trigger, *self.schedule_eval_failure(build_props, failed_job))
352+
yield self.schedule(ss_for_trigger, *self.schedule_eval_failure(failed_job))
362353

363354
source = f"nix-eval-{self.project.project_id}"
364355

@@ -395,7 +386,7 @@ def run(self) -> Generator[Any, Any, None]:
395386

396387
brids, resultsDeferred = yield self.schedule(
397388
ss_for_trigger,
398-
*self.schedule_cached_failure(build_props, build)
389+
*self.schedule_cached_failure(build)
399390
)
400391
scheduled.append(BuildTrigger.ScheduledJob(build, brids, resultsDeferred))
401392
elif failed_builds.check_build(build.drvPath) and self.build.reason == "rebuild":
@@ -442,7 +433,7 @@ def run(self) -> Generator[Any, Any, None]:
442433

443434
removed = self.getFailedDependents(job, build_schedule_order, job_closures)
444435
for removed_job in removed:
445-
scheduler, props = self.schedule_dependency_failed(build_props, removed_job, job)
436+
scheduler, props = self.schedule_dependency_failed(removed_job, job)
446437
brids, resultsDeferred = yield self.schedule(ss_for_trigger, scheduler, props)
447438
build_schedule_order.remove(removed_job)
448439
scheduled.append(BuildTrigger.ScheduledJob(removed_job, brids, resultsDeferred))
@@ -1462,7 +1453,6 @@ def configure(self, config: dict[str, Any]) -> None:
14621453

14631454
for backend in backends.values():
14641455
avatar_method = backend.create_avatar_method()
1465-
print(avatar_method)
14661456
if avatar_method is not None:
14671457
config["www"]["avatar_methods"].append(avatar_method)
14681458

0 commit comments

Comments
 (0)