)]}'
{"tests/unit/test_web.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"37173b92d591112ec4a71d6f83c89b4ed48b46dc","unresolved":false,"context_lines":[{"line_number":928,"context_line":"            \u0027@master#127\u003e\u0027,"},{"line_number":929,"context_line":"            \u0027\u003cJob project-test1 branches: None source: common-config/zuul.yaml\u0027"},{"line_number":930,"context_line":"            \u0027@master#44\u003e\u0027"},{"line_number":931,"context_line":"        ]"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        job_params \u003d {"},{"line_number":934,"context_line":"            \u0027job\u0027: \u0027project-test1\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_8a4b3f85","line":931,"updated":"2019-02-26 17:25:03.000000000","message":"This is really just debugging information, it\u0027s not a documented or supported API at this point.  I guess it\u0027s okay to leave it in the test, though I\u0027d prefer we drop it.","commit_id":"e212c92d4cf11e07f991ce91c0302aa11df07b37"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"4fcd3e252136da1ac4deeadefbaacb3e5ee2d6f1","unresolved":false,"context_lines":[{"line_number":928,"context_line":"            \u0027@master#127\u003e\u0027,"},{"line_number":929,"context_line":"            \u0027\u003cJob project-test1 branches: None source: common-config/zuul.yaml\u0027"},{"line_number":930,"context_line":"            \u0027@master#44\u003e\u0027"},{"line_number":931,"context_line":"        ]"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        job_params \u003d {"},{"line_number":934,"context_line":"            \u0027job\u0027: \u0027project-test1\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_89d6e44e","line":931,"in_reply_to":"9fdfeff1_8a4b3f85","updated":"2019-02-27 02:54:09.000000000","message":"Done","commit_id":"e212c92d4cf11e07f991ce91c0302aa11df07b37"}],"zuul/executor/client.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"61ea4b095d2ff78f46835762d7503114961f236f","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            uuid, self.sched, nodeset,"},{"line_number":150,"context_line":"            job, item, pipeline, dependent_changes, merger_items,"},{"line_number":151,"context_line":"            redact_secrets_and_keys\u003dFalse)"},{"line_number":152,"context_line":"        # TODO: deprecate and remove this variable?"},{"line_number":153,"context_line":"        params[\"zuul\"][\"_inheritance_path\"] \u003d list(job.inheritance_path)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        build \u003d Build(job, uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"5fc1f717_aa1f1f6a","line":152,"updated":"2019-03-25 19:01:02.000000000","message":"The earlier patchset had a test which asserted that this variable and all its contents were in the resulting frozen dictionary.  Mostly I wanted to avoid any suggestion that we will continue to include this.  The long term plan is to replace this with an actual data structure.  It\u0027s just that no one has gotten around to it yet.\n\nI\u0027m okay with either putting it back, or going ahead and replacing it with a real data structure.  We can do either of those now or later.  But I think Tristan has hit on the best compromise here -- keep it in the inventory but don\u0027t put it in the API (so people don\u0027t write apps which depend on it).  Then we\u0027ll just make the new data structure and add it to both.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"a0ae0c56fa263ab0a6094d566c6bb5213a67adf8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            uuid, self.sched, nodeset,"},{"line_number":150,"context_line":"            job, item, pipeline, dependent_changes, merger_items,"},{"line_number":151,"context_line":"            redact_secrets_and_keys\u003dFalse)"},{"line_number":152,"context_line":"        # TODO: deprecate and remove this variable?"},{"line_number":153,"context_line":"        params[\"zuul\"][\"_inheritance_path\"] \u003d list(job.inheritance_path)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        build \u003d Build(job, uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_e01d2b0f","line":152,"range":{"start_line":152,"start_character":7,"end_line":152,"end_character":51},"updated":"2019-02-27 21:32:06.000000000","message":"What\u0027s the reasoning for removing this variable? It\u0027s useful debugging information.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"8f81d79c416675ddbb2d92caf4231b1f1b531f9a","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            uuid, self.sched, nodeset,"},{"line_number":150,"context_line":"            job, item, pipeline, dependent_changes, merger_items,"},{"line_number":151,"context_line":"            redact_secrets_and_keys\u003dFalse)"},{"line_number":152,"context_line":"        # TODO: deprecate and remove this variable?"},{"line_number":153,"context_line":"        params[\"zuul\"][\"_inheritance_path\"] \u003d list(job.inheritance_path)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        build \u003d Build(job, uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_8fed68f1","line":152,"range":{"start_line":152,"start_character":7,"end_line":152,"end_character":51},"in_reply_to":"9fdfeff1_e01d2b0f","updated":"2019-02-28 01:59:36.000000000","message":"James said he would prefer we drop it. For backward compatibility I kept it for the executors vars, but not for the freeze-job vars.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"}],"zuul/executor/common.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"684f22bae16c5484ca0e4f239b4a0680e4a99d3b","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Alternatively they contain enough information to load into another build"},{"line_number":27,"context_line":"    environment - for example, a local runner."},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    tenant \u003d pipeline.tenant"},{"line_number":30,"context_line":"    project \u003d dict("},{"line_number":31,"context_line":"        name\u003ditem.change.project.name,"}],"source_content_type":"text/x-python","patch_set":28,"id":"5fc1f717_92ce8359","line":28,"updated":"2019-04-02 20:24:59.000000000","message":"This docstring was added in either PS27 or 28.","commit_id":"c2a6cc1b06408b4ec7eda8c2a5a6fb5b5858ab9c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"2e16349f1a95c637aa29253e47f87384a2b7a3a6","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        zuul_params[\u0027newrev\u0027] \u003d item.change.newrev"},{"line_number":74,"context_line":"    zuul_params[\u0027projects\u0027] \u003d {}  # Set below"},{"line_number":75,"context_line":"    zuul_params[\u0027items\u0027] \u003d dependent_changes"},{"line_number":76,"context_line":"    zuul_params[\u0027child_jobs\u0027] \u003d list(item.job_graph.getDirectDependentJobs("},{"line_number":77,"context_line":"        job.name))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    params \u003d dict()"}],"source_content_type":"text/x-python","patch_set":35,"id":"3c81029a_d02a73c2","line":76,"updated":"2021-03-18 19:46:11.000000000","message":"Non-frozen job graph will throw an exception here because item.job_graph is None in this case.","commit_id":"7d424ee4773c411b38fd72530a8d2cc09ce66533"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"d4cb4317b87cc8d898e9d1f295f2c3a30cdf4071","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        zuul_params[\u0027newrev\u0027] \u003d item.change.newrev"},{"line_number":74,"context_line":"    zuul_params[\u0027projects\u0027] \u003d {}  # Set below"},{"line_number":75,"context_line":"    zuul_params[\u0027items\u0027] \u003d dependent_changes"},{"line_number":76,"context_line":"    zuul_params[\u0027child_jobs\u0027] \u003d list(item.job_graph.getDirectDependentJobs("},{"line_number":77,"context_line":"        job.name))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    params \u003d dict()"}],"source_content_type":"text/x-python","patch_set":35,"id":"c73d33b6_93368113","line":76,"in_reply_to":"3c81029a_d02a73c2","updated":"2021-03-18 22:32:34.000000000","message":"It seems like an issue with the original code (it\u0027s copied from https://review.opendev.org/c/zuul/zuul/+/607078/35/zuul/executor/client.py#b337 ).","commit_id":"7d424ee4773c411b38fd72530a8d2cc09ce66533"}],"zuul/model.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"37173b92d591112ec4a71d6f83c89b4ed48b46dc","unresolved":false,"context_lines":[{"line_number":978,"context_line":"        secrets \u003d {}"},{"line_number":979,"context_line":"        for secret in self.decrypted_secrets:"},{"line_number":980,"context_line":"            if redact_secrets:"},{"line_number":981,"context_line":"                secrets[secret.name] \u003d \u0027REDACTED\u0027"},{"line_number":982,"context_line":"            else:"},{"line_number":983,"context_line":"                secrets[secret.name] \u003d secret.secret_data"},{"line_number":984,"context_line":"        return dict("}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_ea78cbc1","line":981,"updated":"2019-02-26 17:25:03.000000000","message":"This scares the bejesus out of me.","commit_id":"e212c92d4cf11e07f991ce91c0302aa11df07b37"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"810b230d734f7f3fd4ba6e1a93c78dbc8d9f5cb7","unresolved":false,"context_lines":[{"line_number":978,"context_line":"        secrets \u003d {}"},{"line_number":979,"context_line":"        for secret in self.decrypted_secrets:"},{"line_number":980,"context_line":"            if redact_secrets:"},{"line_number":981,"context_line":"                secrets[secret.name] \u003d \u0027REDACTED\u0027"},{"line_number":982,"context_line":"            else:"},{"line_number":983,"context_line":"                secrets[secret.name] \u003d secret.secret_data"},{"line_number":984,"context_line":"        return dict("}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_25b6ddfa","line":981,"in_reply_to":"9fdfeff1_ea78cbc1","updated":"2019-02-28 04:16:50.000000000","message":"Me too if I\u0027m being honest. The followup for making redacted the default might be a good idea. Thoughts?","commit_id":"e212c92d4cf11e07f991ce91c0302aa11df07b37"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"a0ae0c56fa263ab0a6094d566c6bb5213a67adf8","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                       if s.name not in current_names]"},{"line_number":974,"context_line":"        self.decrypted_secrets \u003d self.decrypted_secrets + tuple(new_secrets)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def toDict(self, redact_secrets\u003dFalse):"},{"line_number":977,"context_line":"        # Render to a dict to use in passing json to the executor"},{"line_number":978,"context_line":"        secrets \u003d {}"},{"line_number":979,"context_line":"        for secret in self.decrypted_secrets:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_60c05b51","line":976,"range":{"start_line":976,"start_character":21,"end_line":976,"end_character":41},"updated":"2019-02-27 21:32:06.000000000","message":"Maybe that\u0027s paranoid, but what do you think about changing the default here to True so we redact by default and only don\u0027t redact when sending this to the executor?","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"8f81d79c416675ddbb2d92caf4231b1f1b531f9a","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                       if s.name not in current_names]"},{"line_number":974,"context_line":"        self.decrypted_secrets \u003d self.decrypted_secrets + tuple(new_secrets)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def toDict(self, redact_secrets\u003dFalse):"},{"line_number":977,"context_line":"        # Render to a dict to use in passing json to the executor"},{"line_number":978,"context_line":"        secrets \u003d {}"},{"line_number":979,"context_line":"        for secret in self.decrypted_secrets:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_afa4eca3","line":976,"range":{"start_line":976,"start_character":21,"end_line":976,"end_character":41},"in_reply_to":"9fdfeff1_60c05b51","updated":"2019-02-28 01:59:36.000000000","message":"It shouldn\u0027t be an issue, the main construct_gearman_param already default to True. Let see if any test failed with a new default.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"810b230d734f7f3fd4ba6e1a93c78dbc8d9f5cb7","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                       if s.name not in current_names]"},{"line_number":974,"context_line":"        self.decrypted_secrets \u003d self.decrypted_secrets + tuple(new_secrets)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def toDict(self, redact_secrets\u003dFalse):"},{"line_number":977,"context_line":"        # Render to a dict to use in passing json to the executor"},{"line_number":978,"context_line":"        secrets \u003d {}"},{"line_number":979,"context_line":"        for secret in self.decrypted_secrets:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_45bd21d6","line":976,"range":{"start_line":976,"start_character":21,"end_line":976,"end_character":41},"in_reply_to":"9fdfeff1_afa4eca3","updated":"2019-02-28 04:16:50.000000000","message":"I\u0027m not opposed to setting it to True, and in general think it\u0027s an improvement. However, this is consistent with the previous state, so it can be done as a followup.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"}],"zuul/rpclistener.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"a0ae0c56fa263ab0a6094d566c6bb5213a67adf8","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        nodeset \u003d job.nodeset"},{"line_number":484,"context_line":"        job.setBase(tenant.layout)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        uuid \u003d \u00270\u0027 * 32"},{"line_number":487,"context_line":"        params \u003d zuul.executor.common.construct_gearman_params("},{"line_number":488,"context_line":"            uuid, self.sched, nodeset,"},{"line_number":489,"context_line":"            job, item, pipeline)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_c07ee717","line":486,"range":{"start_line":486,"start_character":8,"end_line":486,"end_character":23},"updated":"2019-02-27 21:32:06.000000000","message":"Is it on purpose that you fake an uuid instead of just generating one?","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"8f81d79c416675ddbb2d92caf4231b1f1b531f9a","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        nodeset \u003d job.nodeset"},{"line_number":484,"context_line":"        job.setBase(tenant.layout)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        uuid \u003d \u00270\u0027 * 32"},{"line_number":487,"context_line":"        params \u003d zuul.executor.common.construct_gearman_params("},{"line_number":488,"context_line":"            uuid, self.sched, nodeset,"},{"line_number":489,"context_line":"            job, item, pipeline)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_4fdea011","line":486,"range":{"start_line":486,"start_character":8,"end_line":486,"end_character":23},"in_reply_to":"9fdfeff1_c07ee717","updated":"2019-02-28 01:59:36.000000000","message":"The runner cli should be in charge of picking an uuid.","commit_id":"3ea0d5b808c07c1d64efd5b183d3a49f4afb851f"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"2e16349f1a95c637aa29253e47f87384a2b7a3a6","unresolved":true,"context_lines":[{"line_number":542,"context_line":"        if not job:"},{"line_number":543,"context_line":"            gear_job.sendWorkComplete(json.dumps(None))"},{"line_number":544,"context_line":"            return"},{"line_number":545,"context_line":"        # TODO: check if this is frozen?"},{"line_number":546,"context_line":"        nodeset \u003d job.nodeset"},{"line_number":547,"context_line":"        job.setBase(tenant.layout)"},{"line_number":548,"context_line":"        uuid \u003d \u00270\u0027 * 32"}],"source_content_type":"text/x-python","patch_set":35,"id":"71150a5a_dad5f757","line":545,"updated":"2021-03-18 19:46:11.000000000","message":"If it\u0027s not frozen construct_gearman_params will fail with an exception (see comment in this method) so I guess it would make sense to check.","commit_id":"7d424ee4773c411b38fd72530a8d2cc09ce66533"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"d4cb4317b87cc8d898e9d1f295f2c3a30cdf4071","unresolved":true,"context_lines":[{"line_number":542,"context_line":"        if not job:"},{"line_number":543,"context_line":"            gear_job.sendWorkComplete(json.dumps(None))"},{"line_number":544,"context_line":"            return"},{"line_number":545,"context_line":"        # TODO: check if this is frozen?"},{"line_number":546,"context_line":"        nodeset \u003d job.nodeset"},{"line_number":547,"context_line":"        job.setBase(tenant.layout)"},{"line_number":548,"context_line":"        uuid \u003d \u00270\u0027 * 32"}],"source_content_type":"text/x-python","patch_set":35,"id":"c6b363d8_7f1f5808","line":545,"in_reply_to":"71150a5a_dad5f757","updated":"2021-03-18 22:32:34.000000000","message":"Isn\u0027t it frozen by the above L539?","commit_id":"7d424ee4773c411b38fd72530a8d2cc09ce66533"}]}
