)]}'
{"tests/unit/test_scheduler.py":[{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"a8ad9a3ad67bd5fc150406bbe249c77c8332c502","unresolved":false,"context_lines":[{"line_number":3670,"context_line":"        self.assertIn(\u0027project-post\u0027, job_names)"},{"line_number":3671,"context_line":"        self.assertEqual(r, True)"},{"line_number":3672,"context_line":""},{"line_number":3673,"context_line":"    def test_client_dequeue_dependent_change(self):"},{"line_number":3674,"context_line":"        \"Test that the RPC client can dequeue a change\""},{"line_number":3675,"context_line":"        client \u003d zuul.rpcclient.RPCClient(\u0027127.0.0.1\u0027,"},{"line_number":3676,"context_line":"                                          self.gearman_server.port)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_0fedebb6","line":3673,"updated":"2018-07-19 17:10:39.000000000","message":"We don\u0027t appear to be testing --ref here, maybe we should also add one for coverage.","commit_id":"ae7eed398d062c469717452d1d5489a91c067e88"}],"zuul/cmd/client.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"980a6fc54f6986106c486644dcaac9aa0c5d6296","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                 required\u003dTrue)"},{"line_number":118,"context_line":"        cmd_dequeue.add_argument(\u0027--tenant\u0027, help\u003d\u0027tenant name\u0027,"},{"line_number":119,"context_line":"                                 required\u003dTrue)"},{"line_number":120,"context_line":"        cmd_dequeue.add_argument(\u0027--changes\u0027, help\u003d\u0027change ids\u0027,"},{"line_number":121,"context_line":"                                 required\u003dTrue, nargs\u003d\u0027+\u0027)"},{"line_number":122,"context_line":"        cmd_dequeue.set_defaults(func\u003dself.dequeue)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        cmd_promote \u003d subparsers.add_parser(\u0027promote\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_953180f0","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":58},"updated":"2018-07-15 16:33:47.000000000","message":"Change ids in github are not globally unique as well as there could be more than one gerrit connection with overlapping change ids. Instead we need to do it with project and change id like it was in PS10.","commit_id":"b30321a679e967487d1af02bd184afeb3a622fa8"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"be74c6a052446a54467567a5fd6cdb499640f648","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                 required\u003dTrue)"},{"line_number":118,"context_line":"        cmd_dequeue.add_argument(\u0027--tenant\u0027, help\u003d\u0027tenant name\u0027,"},{"line_number":119,"context_line":"                                 required\u003dTrue)"},{"line_number":120,"context_line":"        cmd_dequeue.add_argument(\u0027--changes\u0027, help\u003d\u0027change ids\u0027,"},{"line_number":121,"context_line":"                                 required\u003dTrue, nargs\u003d\u0027+\u0027)"},{"line_number":122,"context_line":"        cmd_dequeue.set_defaults(func\u003dself.dequeue)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        cmd_promote \u003d subparsers.add_parser(\u0027promote\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_3bcbbba4","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":58},"in_reply_to":"5f7c97a3_953180f0","updated":"2018-07-16 01:29:16.000000000","message":"I\u0027d like this to also support pipelines that don\u0027t use change ids (post, etc).","commit_id":"b30321a679e967487d1af02bd184afeb3a622fa8"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"a8ad9a3ad67bd5fc150406bbe249c77c8332c502","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                                                 \u0027change or ref\u0027)"},{"line_number":117,"context_line":"        cmd_dequeue.add_argument(\u0027--pipeline\u0027, help\u003d\u0027pipeline name\u0027,"},{"line_number":118,"context_line":"                                 required\u003dTrue)"},{"line_number":119,"context_line":"        cmd_dequeue.add_argument(\u0027--tenant\u0027, help\u003d\u0027tenant name\u0027,"},{"line_number":120,"context_line":"                                 required\u003dTrue)"},{"line_number":121,"context_line":"        cmd_dequeue.add_argument(\u0027--project\u0027, help\u003d\u0027project name\u0027,"},{"line_number":122,"context_line":"                                 required\u003dTrue)"},{"line_number":123,"context_line":"        cmd_dequeue.add_argument(\u0027--change\u0027, help\u003d\u0027change id\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_af95d732","line":120,"range":{"start_line":119,"start_character":0,"end_line":120,"end_character":47},"updated":"2018-07-19 17:10:39.000000000","message":"Should --tenant be first here?","commit_id":"ae7eed398d062c469717452d1d5489a91c067e88"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"a8ad9a3ad67bd5fc150406bbe249c77c8332c502","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                 required\u003dTrue)"},{"line_number":119,"context_line":"        cmd_dequeue.add_argument(\u0027--tenant\u0027, help\u003d\u0027tenant name\u0027,"},{"line_number":120,"context_line":"                                 required\u003dTrue)"},{"line_number":121,"context_line":"        cmd_dequeue.add_argument(\u0027--project\u0027, help\u003d\u0027project name\u0027,"},{"line_number":122,"context_line":"                                 required\u003dTrue)"},{"line_number":123,"context_line":"        cmd_dequeue.add_argument(\u0027--change\u0027, help\u003d\u0027change id\u0027,"},{"line_number":124,"context_line":"                                 default\u003dNone)"},{"line_number":125,"context_line":"        cmd_dequeue.add_argument(\u0027--ref\u0027, help\u003d\u0027ref name\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_cfda931b","line":122,"range":{"start_line":121,"start_character":0,"end_line":122,"end_character":47},"updated":"2018-07-19 17:10:39.000000000","message":"project seems duplicated if --change is used, possible to make this optional and only used with --ref?","commit_id":"ae7eed398d062c469717452d1d5489a91c067e88"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"659915d1673bea0cb20087abf6888aebaa5bcc41","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        cmd_dequeue.add_argument(\u0027--tenant\u0027, help\u003d\u0027tenant name\u0027,"},{"line_number":120,"context_line":"                                 required\u003dTrue)"},{"line_number":121,"context_line":"        cmd_dequeue.add_argument(\u0027--project\u0027, help\u003d\u0027project name\u0027,"},{"line_number":122,"context_line":"                                 required\u003dTrue)"},{"line_number":123,"context_line":"        cmd_dequeue.add_argument(\u0027--change\u0027, help\u003d\u0027change id\u0027,"},{"line_number":124,"context_line":"                                 default\u003dNone)"},{"line_number":125,"context_line":"        cmd_dequeue.add_argument(\u0027--ref\u0027, help\u003d\u0027ref name\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_9507ce70","line":122,"in_reply_to":"5f7c97a3_cfda931b","updated":"2018-07-19 18:32:26.000000000","message":"in github project is needed with change as pr numbers are per project there","commit_id":"ae7eed398d062c469717452d1d5489a91c067e88"}],"zuul/rpclistener.py":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"9a4992833b1345e2155efbae87a5695f4b8c32de","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        pipeline \u003d self.sched.layout.pipelines.get(args[\u0027pipeline\u0027])"},{"line_number":88,"context_line":"        change \u003d args[\u0027change\u0027]"},{"line_number":89,"context_line":"        item \u003d model.QueueItem(self, pipeline, change)"},{"line_number":90,"context_line":"        self.sched.dequeueItem(item)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def handle_enqueue(self, job):"},{"line_number":93,"context_line":"        args \u003d json.loads(job.arguments)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_739c545e","line":90,"updated":"2014-05-22 23:17:29.000000000","message":"I think a call to removeChange() would be better here (cancels the running Jenkins jobs as well).","commit_id":"e8420961e39244af2d9e6dc4558f9c64fbee6297"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"e734c40d0e4c4b41b44aee11bb5e9f155ba278a9","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        change \u003d args[\u0027change\u0027]"},{"line_number":131,"context_line":"        ref \u003d args[\u0027ref\u0027]"},{"line_number":132,"context_line":"        self.sched.dequeue("},{"line_number":133,"context_line":"            tenant_name, pipeline_name, project_name, change, ref)"},{"line_number":134,"context_line":"        job.sendWorkComplete()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def handle_autohold_list(self, job):"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f7c97a3_34f99b4e","line":133,"updated":"2018-07-25 18:57:27.000000000","message":"Should this be wrapped in a try/except? Looks like dequeue raises an Exception if the change cannot be found.\n\nThe enqueue functions seem to handle errors and report them back over gearman.","commit_id":"fa00ae9b3843044ef5cbc11d393a44691c3d2274"}],"zuul/scheduler.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"523ff6559b5394cbf4e9dd1da4a5bdb8a8553e1d","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        self.wake_event.set()"},{"line_number":607,"context_line":"        self.log.debug(\"Waiting for dequeue\")"},{"line_number":608,"context_line":"        event.wait()"},{"line_number":609,"context_line":"        self.log.debug(\"Dequeue complete\")"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def enqueue(self, trigger_event):"},{"line_number":612,"context_line":"        event \u003d EnqueueEvent(trigger_event)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_c7afdf7b","line":609,"updated":"2015-08-10 23:17:36.000000000","message":"I think we should model this on promote rather than enqueue.  Enqueue is more complicated because it needs to simulate a triggering event in order to know how to create the change.  At least for the moment -- that should be able to be simplified soon.  But for an item already in the queue, we should be able to avoid specfiying the trigger even now.  The promote event happens with only knowing the pipeline name and change id -- we should be able to identify a change to remove with only the same information.","commit_id":"bb3b483ade7b8cf33a81ff0a9b5b2537e3a6c494"},{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"091b4545aee34e0a8f9b356d0b1d808bb51259f7","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        self.log.debug(\"Waiting for dequeue\")"},{"line_number":608,"context_line":"        event.wait()"},{"line_number":609,"context_line":"        self.log.debug(\"Dequeue complete\")"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def enqueue(self, trigger_event):"},{"line_number":612,"context_line":"        event \u003d EnqueueEvent(trigger_event)"},{"line_number":613,"context_line":"        self.management_event_queue.put(event)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a2ca52d_32ea4bdc","line":610,"updated":"2015-10-16 01:38:45.000000000","message":"I\u0027ll take a look soon!","commit_id":"bb3b483ade7b8cf33a81ff0a9b5b2537e3a6c494"},{"author":{"_account_id":6039,"name":"Joni Harker","email":"code@gentlydownthe.net","username":"jesusaurus"},"change_message_id":"24a75ec01a1870e4dc45585f944ce6d4d3304bf0","unresolved":false,"context_lines":[{"line_number":805,"context_line":"                break"},{"line_number":806,"context_line":"            for item in shared_queue.queue:"},{"line_number":807,"context_line":"                if (item.change.number \u003d\u003d change_ids[0][0] and"},{"line_number":808,"context_line":"                        item.change.patchset \u003d\u003d change_ids[0][1]):"},{"line_number":809,"context_line":"                    change_queue \u003d shared_queue"},{"line_number":810,"context_line":"                    break"},{"line_number":811,"context_line":"        if not change_queue:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f287b81_1db55cee","line":808,"updated":"2017-08-29 21:31:28.000000000","message":"Why are we only looking at change_ids[0]? If two change_ids are given and are in different pipeline queues, will change_ids[1] ever be removed from its pipeline queue? It looks to me like change_queue would only ever be the queue for change_ids[0] and the items for change_ids[1] would never be found in the next loop.","commit_id":"00da71ba2c5e6320de365fadfc0739340e4c19ef"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"c25bda1d650e003117048b6e3c24d40752782cf4","unresolved":false,"context_lines":[{"line_number":859,"context_line":"            if change_queue:"},{"line_number":860,"context_line":"                break"},{"line_number":861,"context_line":"            for item in shared_queue.queue:"},{"line_number":862,"context_line":"                if (item.change.number \u003d\u003d change_ids[0][0] and"},{"line_number":863,"context_line":"                        item.change.patchset \u003d\u003d change_ids[0][1]):"},{"line_number":864,"context_line":"                    change_queue \u003d shared_queue"},{"line_number":865,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_bd2455b3","line":862,"updated":"2018-07-18 14:07:35.000000000","message":"PS11, Jonathan Harker left a comment about this code path, we\u0027ll want to address that too.","commit_id":"b30321a679e967487d1af02bd184afeb3a622fa8"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"2a810ea29f8ff5327be4e3df54c1cdb163b50c27","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            self.change_number, self.patch_number \u003d (None, None)"},{"line_number":140,"context_line":"        self.ref \u003d ref"},{"line_number":141,"context_line":"        # set to mock values"},{"line_number":142,"context_line":"        self.oldrev \u003d \u00270000000000000000000000000000000000000123\u0027"},{"line_number":143,"context_line":"        self.newrev \u003d \u00270000000000000000000000000000000000000456\u0027"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class EnqueueEvent(ManagementEvent):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_5c709109","line":143,"range":{"start_line":141,"start_character":0,"end_line":143,"end_character":64},"updated":"2018-07-19 06:21:32.000000000","message":"What\u0027s this needed for?","commit_id":"71bae18163e268744acdafbcc5fd4f9c8fb497ba"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"b74622d4988b8a92b045b700d6e8facac50a1656","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            self.change_number, self.patch_number \u003d (None, None)"},{"line_number":140,"context_line":"        self.ref \u003d ref"},{"line_number":141,"context_line":"        # set to mock values"},{"line_number":142,"context_line":"        self.oldrev \u003d \u00270000000000000000000000000000000000000123\u0027"},{"line_number":143,"context_line":"        self.newrev \u003d \u00270000000000000000000000000000000000000456\u0027"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class EnqueueEvent(ManagementEvent):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_3b49112e","line":143,"range":{"start_line":141,"start_character":0,"end_line":143,"end_character":64},"in_reply_to":"5f7c97a3_5c709109","updated":"2018-07-19 14:36:17.000000000","message":"the project.source.getChange call that occurs later on requires this object to have oldrev and newrev properties. They can be set to all 0s, I used these values during my manual testing (dequeueing a buildset triggered by the CLI with enqueue-ref and a ref).","commit_id":"71bae18163e268744acdafbcc5fd4f9c8fb497ba"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"2a810ea29f8ff5327be4e3df54c1cdb163b50c27","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                   (item.change.ref \u003d\u003d change.ref):"},{"line_number":878,"context_line":"                    change_queue \u003d shared_queue"},{"line_number":879,"context_line":"                    pipeline.manager.removeItem(item)"},{"line_number":880,"context_line":"                    break"},{"line_number":881,"context_line":"        if not change_queue:"},{"line_number":882,"context_line":"            raise Exception(\"Unable to find shared change queue for %s\" %"},{"line_number":883,"context_line":"                            event.change_ids[0])"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_1c77790a","line":880,"range":{"start_line":880,"start_character":20,"end_line":880,"end_character":25},"updated":"2018-07-19 06:21:32.000000000","message":"Instead of the double break we just could return here. That also would eliminate the need for the change_queue variable.","commit_id":"71bae18163e268744acdafbcc5fd4f9c8fb497ba"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"b74622d4988b8a92b045b700d6e8facac50a1656","unresolved":false,"context_lines":[{"line_number":877,"context_line":"                   (item.change.ref \u003d\u003d change.ref):"},{"line_number":878,"context_line":"                    change_queue \u003d shared_queue"},{"line_number":879,"context_line":"                    pipeline.manager.removeItem(item)"},{"line_number":880,"context_line":"                    break"},{"line_number":881,"context_line":"        if not change_queue:"},{"line_number":882,"context_line":"            raise Exception(\"Unable to find shared change queue for %s\" %"},{"line_number":883,"context_line":"                            event.change_ids[0])"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_5b716d76","line":880,"range":{"start_line":880,"start_character":20,"end_line":880,"end_character":25},"in_reply_to":"5f7c97a3_1c77790a","updated":"2018-07-19 14:36:17.000000000","message":"Done","commit_id":"71bae18163e268744acdafbcc5fd4f9c8fb497ba"}]}
