diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py index 7cffca0450..49d4b8ba6f 100644 --- a/tests/unit/test_scheduler.py +++ b/tests/unit/test_scheduler.py @@ -4099,8 +4099,9 @@ class TestScheduler(ZuulTestCase): self.worker.release('.*') self.waitUntilSettled() - def test_client_enqueue_change(self): - "Test that the RPC client can enqueue a change" + def test_client_enqueue_change_with_trigger(self): + """Test that the RPC client can enqueue a change with the deprecated + trigger argument""" A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A') A.addApproval('Code-Review', 2) A.addApproval('Approved', 1) @@ -4124,6 +4125,32 @@ class TestScheduler(ZuulTestCase): self.assertEqual(A.reported, 2) self.assertEqual(r, True) + def test_client_enqueue_change_no_trigger(self): + """Test that the RPC client can enqueue a change without an explicit + trigger""" + A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A') + A.addApproval('Code-Review', 2) + A.addApproval('Approved', 1) + + client = zuul.rpcclient.RPCClient('127.0.0.1', + self.gearman_server.port) + self.addCleanup(client.shutdown) + r = client.enqueue(tenant='tenant-one', + pipeline='gate', + project='org/project', + trigger=None, + change='1,1') + self.waitUntilSettled() + self.assertEqual(self.getJobFromHistory('project-merge').result, + 'SUCCESS') + self.assertEqual(self.getJobFromHistory('project-test1').result, + 'SUCCESS') + self.assertEqual(self.getJobFromHistory('project-test2').result, + 'SUCCESS') + self.assertEqual(A.data['status'], 'MERGED') + self.assertEqual(A.reported, 2) + self.assertEqual(r, True) + @simple_layout('layouts/three-projects.yaml') def test_client_enqueue_change_wrong_project(self): "Test that an enqueue fails if a change doesn't belong to the project" @@ -4144,7 +4171,7 @@ class TestScheduler(ZuulTestCase): r = client.enqueue(tenant='tenant-one', pipeline='gate', project='org/project1', - trigger='gerrit', + trigger=None, change='2,1') self.assertEqual(r, False) self.waitUntilSettled() @@ -4165,7 +4192,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='90f173846e3af9154517b88543ffbd1691f31366', newrev=A_commit) @@ -4195,7 +4222,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='90f173846e3af9154517b88543ffbd1691f31366', newrev=A_commit) @@ -4211,7 +4238,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project1', - trigger='gerrit', + trigger=None, ref='master', oldrev='90f173846e3af9154517b88543ffbd1691f31366', newrev=B_commit) @@ -4405,7 +4432,7 @@ class TestScheduler(ZuulTestCase): r = client.enqueue(tenant='tenant-foo', pipeline='gate', project='org/project', - trigger='gerrit', + trigger=None, change='1,1') self.assertEqual(r, False) @@ -4414,7 +4441,7 @@ class TestScheduler(ZuulTestCase): r = client.enqueue(tenant='tenant-one', pipeline='gate', project='project-does-not-exist', - trigger='gerrit', + trigger=None, change='1,1') self.assertEqual(r, False) @@ -4423,16 +4450,7 @@ class TestScheduler(ZuulTestCase): r = client.enqueue(tenant='tenant-one', pipeline='pipeline-does-not-exist', project='org/project', - trigger='gerrit', - change='1,1') - self.assertEqual(r, False) - - with testtools.ExpectedException(zuul.rpcclient.RPCFailure, - "Invalid trigger"): - r = client.enqueue(tenant='tenant-one', - pipeline='gate', - project='org/project', - trigger='trigger-does-not-exist', + trigger=None, change='1,1') self.assertEqual(r, False) @@ -4441,7 +4459,7 @@ class TestScheduler(ZuulTestCase): r = client.enqueue(tenant='tenant-one', pipeline='gate', project='org/project', - trigger='gerrit', + trigger=None, change='1,1') self.assertEqual(r, False) @@ -4460,7 +4478,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='90f173846e3af9154517b88543ffbd1691f31366', newrev='10054041') @@ -4471,7 +4489,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='10054041', newrev='90f173846e3af9154517b88543ffbd1691f31366') @@ -4482,7 +4500,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='90f173846e3af9154517b88543ffbd1691f31366', newrev='notbase16') @@ -4493,7 +4511,7 @@ class TestScheduler(ZuulTestCase): tenant='tenant-one', pipeline='post', project='org/project', - trigger='gerrit', + trigger=None, ref='master', oldrev='notbase16', newrev='90f173846e3af9154517b88543ffbd1691f31366') @@ -6204,7 +6222,7 @@ class TestAmbiguousProjectNames(ZuulTestCase): r = client.enqueue(tenant='tenant-one', pipeline='check', project='review.example.com/org/project', - trigger='gerrit', + trigger=None, change='1,1') self.waitUntilSettled() self.assertEqual(self.getJobFromHistory('project-merge').result, diff --git a/tools/zuul-changes.py b/tools/zuul-changes.py index cf9350d5f6..fe513c2857 100755 --- a/tools/zuul-changes.py +++ b/tools/zuul-changes.py @@ -67,7 +67,6 @@ for tenant in tenants: cid, cps = change['id'].split(',') print("zuul enqueue" " --tenant %s" - " --trigger gerrit" " --pipeline %s" " --project %s" " --change %s,%s" % (tenant, pipeline['name'], @@ -78,7 +77,6 @@ for tenant in tenants: cmd = 'zuul enqueue-ref' \ ' --tenant %s' \ ' --pipeline %s' \ - ' --trigger timer' \ ' --project %s' \ ' --ref %s' % (tenant, pipeline['name'], change['project_canonical'], diff --git a/zuul/cmd/client.py b/zuul/cmd/client.py index 9204a925c1..8e01f8084a 100755 --- a/zuul/cmd/client.py +++ b/zuul/cmd/client.py @@ -222,8 +222,10 @@ class Client(zuul.cmd.ZuulApp): cmd_enqueue = subparsers.add_parser('enqueue', help='enqueue a change') cmd_enqueue.add_argument('--tenant', help='tenant name', required=True) - cmd_enqueue.add_argument('--trigger', help='trigger name', - required=True) + cmd_enqueue.add_argument('--trigger', + help='trigger name (deprecated and ignored. ' + 'Kept only for backward compatibility)', + required=False, default=None) cmd_enqueue.add_argument('--pipeline', help='pipeline name', required=True) cmd_enqueue.add_argument('--project', help='project name', @@ -244,7 +246,7 @@ class Client(zuul.cmd.ZuulApp): cmd_enqueue.add_argument('--tenant', help='tenant name', required=True) cmd_enqueue.add_argument('--trigger', help='trigger name', - required=True) + required=False, default=None) cmd_enqueue.add_argument('--pipeline', help='pipeline name', required=True) cmd_enqueue.add_argument('--project', help='project name', diff --git a/zuul/rpcclient.py b/zuul/rpcclient.py index 0579dcc94e..ec1e4e3542 100644 --- a/zuul/rpcclient.py +++ b/zuul/rpcclient.py @@ -84,6 +84,8 @@ class RPCClient(object): return json.loads(job.data[0]) def enqueue(self, tenant, pipeline, project, trigger, change): + if trigger is not None: + self.log.info('enqueue: the "trigger" argument is deprecated') data = {'tenant': tenant, 'pipeline': pipeline, 'project': project, @@ -94,6 +96,8 @@ class RPCClient(object): def enqueue_ref( self, tenant, pipeline, project, trigger, ref, oldrev, newrev): + if trigger is not None: + self.log.info('enqueue_ref: the "trigger" argument is deprecated') data = {'tenant': tenant, 'pipeline': pipeline, 'project': project, diff --git a/zuul/rpclistener.py b/zuul/rpclistener.py index aad4fdbf2c..15dcd00baf 100644 --- a/zuul/rpclistener.py +++ b/zuul/rpclistener.py @@ -189,13 +189,6 @@ class RPCListener(object): pipeline = tenant.layout.pipelines.get(args['pipeline']) if pipeline: event.forced_pipeline = args['pipeline'] - - for trigger in pipeline.triggers: - if trigger.name == args['trigger']: - event.trigger_name = args['trigger'] - continue - if not event.trigger_name: - errors += 'Invalid trigger: %s\n' % (args['trigger'],) else: errors += 'Invalid pipeline: %s\n' % (args['pipeline'],) else: diff --git a/zuul/web/__init__.py b/zuul/web/__init__.py index 12433ca120..31b147d436 100755 --- a/zuul/web/__init__.py +++ b/zuul/web/__init__.py @@ -310,9 +310,9 @@ class ZuulWebAPI(object): tenant, project)) body = cherrypy.request.json - if all(p in body for p in ['trigger', 'change', 'pipeline']): + if all(p in body for p in ['change', 'pipeline']): return self._enqueue(tenant, project, **body) - elif all(p in body for p in ['trigger', 'ref', 'oldrev', + elif all(p in body for p in ['ref', 'oldrev', 'newrev', 'pipeline']): return self._enqueue_ref(tenant, project, **body) else: