Add pipelines to data model.
This is a refactoring of the data model with the following goals:
* Call top-level queues pipelines -- because too many other things
are already called queues. Pipelines convey the idea that there
are a number of tasks to be performed (jobs), and that those
tasks can be applied to different changes in parallel.
* Eliminate references to queue_name from within a Change.
Instead, methods that need to understand the pipeline that were
accessed previously via the change are now located in the
Pipeline class, taking a change as an argument. Essentially,
many methods involving changes (and builds, jobs, etc) must now
be called in the context of a pipeline.
* Add a changeish object to encompass the things that change and
ref events have in common.
Change-Id: Iaf8ed0991f3c5b2bf7ded2c340a60725f7f98eaf
Reviewed-on: https://review.openstack.org/10757
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
diff --git a/tests/fixtures/layout.yaml b/tests/fixtures/layout.yaml
index 9f00375..5e2049b 100644
--- a/tests/fixtures/layout.yaml
+++ b/tests/fixtures/layout.yaml
@@ -1,6 +1,6 @@
-queues:
+pipelines:
- name: check
- manager: IndependentQueueManager
+ manager: IndependentPipelineManager
trigger:
- event: patchset-uploaded
success:
@@ -9,13 +9,13 @@
verified: -1
- name: post
- manager: IndependentQueueManager
+ manager: IndependentPipelineManager
trigger:
- event: ref-updated
ref: ^(?!refs/).*$
- name: gate
- manager: DependentQueueManager
+ manager: DependentPipelineManager
trigger:
- event: comment-added
approval:
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index a61e13c..fae05d0 100644
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -916,15 +916,16 @@
"Test that whether a change is ready to merge"
# TODO: move to test_gerrit (this is a unit test!)
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
- a = self.sched.trigger.getChange(1, 2, 'gate')
- assert not a.can_merge
+ a = self.sched.trigger.getChange(1, 2)
+ mgr = self.sched.pipelines['gate'].manager
+ assert not self.sched.trigger.canMerge(a, mgr.getSubmitAllowNeeds())
A.addApproval('CRVW', 2)
- a = self.sched.trigger.getChange(1, 2, 'gate')
- assert not a.can_merge
+ a = self.sched.trigger.getChange(1, 2)
+ assert not self.sched.trigger.canMerge(a, mgr.getSubmitAllowNeeds())
A.addApproval('APRV', 1)
- a = self.sched.trigger.getChange(1, 2, 'gate')
- assert a.can_merge
+ a = self.sched.trigger.getChange(1, 2)
+ assert self.sched.trigger.canMerge(a, mgr.getSubmitAllowNeeds())
return True