)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c88b31d99af2c816a0bc3289c91d851b36604c82","unresolved":true,"context_lines":[{"line_number":15,"context_line":"Closes-Bug: #1975603"},{"line_number":16,"context_line":"Related-Bug: #1757482"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"NOTE(amorin): this is a WIP and must be discussed because it may"},{"line_number":19,"context_line":"reintroduce the bug notified in:"},{"line_number":20,"context_line":"https://bugs.launchpad.net/neutron/+bug/1757482"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Signed-off-by: Arnaud Morin \u003carnaud.morin@ovhcloud.com\u003e"},{"line_number":23,"context_line":"Change-Id: I50f07d41428e57e6bed9be16980a6c605b7d130e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9cc03d31_c9861600","line":20,"range":{"start_line":18,"start_character":0,"end_line":20,"end_character":47},"updated":"2022-08-18 11:25:34.000000000","message":"I think you can delete this now.","commit_id":"ddcf30399762e4d6ee459e60eb45832110767db1"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"32a5974d98d879dabc33c8036db363d173eaeb8e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Closes-Bug: #1975603"},{"line_number":16,"context_line":"Related-Bug: #1757482"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"NOTE(amorin): this is a WIP and must be discussed because it may"},{"line_number":19,"context_line":"reintroduce the bug notified in:"},{"line_number":20,"context_line":"https://bugs.launchpad.net/neutron/+bug/1757482"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Signed-off-by: Arnaud Morin \u003carnaud.morin@ovhcloud.com\u003e"},{"line_number":23,"context_line":"Change-Id: I50f07d41428e57e6bed9be16980a6c605b7d130e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"11a3f7a8_59234dad","line":20,"range":{"start_line":18,"start_character":0,"end_line":20,"end_character":47},"in_reply_to":"9cc03d31_c9861600","updated":"2022-08-24 14:37:39.000000000","message":"Done","commit_id":"ddcf30399762e4d6ee459e60eb45832110767db1"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cea0d479edb982c7ea350fc22850c72f8e295fb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"89f38400_28dd9e8c","updated":"2022-05-31 14:18:16.000000000","message":"NOTE for reviewers: check https://review.opendev.org/c/openstack/neutron/+/575444 first","commit_id":"43bdffe0ba3a1b72ff7024e7a22cdb0e1ad420b1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"dcc93aa6570948201d4f5aedc8afb338f30ec21c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6c1c0117_de966c44","updated":"2022-06-13 09:43:43.000000000","message":"The unit tests which are failing testing the case which the related bug is describing:\nhttps://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_95a/843871/1/check/openstack-tox-py39/95a0953/testr_results.html\n\nperhaps we can discuss it during the drivers meeting","commit_id":"43bdffe0ba3a1b72ff7024e7a22cdb0e1ad420b1"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"70dfcdbc97716074e61a6186b9f5e61e01dc3f08","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"222d7772_7b393a18","in_reply_to":"6c1c0117_de966c44","updated":"2022-06-13 18:32:32.000000000","message":"sounds good plan to me!\nthanks for the review","commit_id":"43bdffe0ba3a1b72ff7024e7a22cdb0e1ad420b1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad73cd37142cdf3667c04d5930f8fe02ebb5c48a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8b5fe084_65db7fc0","updated":"2022-07-19 11:22:22.000000000","message":"Ah, some UT could be great!","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"85a004dbc06f27399fef0882001064087e5cc1e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"081b3a64_7b80f26c","updated":"2022-07-19 11:22:06.000000000","message":"Just a comment and some minor pep8 errors. But this is how it should be implemented.","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"c994224fa5b49369c6ed12ffa8145d91b9e021f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4d583824_dee02d4b","in_reply_to":"1d7aa316_c2b4adf6","updated":"2022-08-01 14:16:09.000000000","message":"Done","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"e3d672b73ba22da1bfd074286bdff49e0f224860","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1d7aa316_c2b4adf6","in_reply_to":"8b5fe084_65db7fc0","updated":"2022-07-19 14:06:57.000000000","message":"yes, I have a patch ongoing for this but was not able to finish it before my summer week.\nshould be back on August to finish this.\nthanks for your review anyway!","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"32a5974d98d879dabc33c8036db363d173eaeb8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ae393c5c_908e6d9d","updated":"2022-08-24 14:37:39.000000000","message":"Thanks to your comment, I changed a little bit the code to use get_projects from NetworkRBAC instead of get_objects.\nget_projects fit very nicely with what I wanted to achieve.\n\nI also adapted the test with this change.\n\n","commit_id":"3bb0e8a33c725a8c90d36192848b8762223b7a9f"}],"neutron/db/l3_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d9893b6cf19467fce1edc95bca239bca45361613","unresolved":true,"context_lines":[{"line_number":858,"context_line":"        if not subnet[\u0027gateway_ip\u0027]:"},{"line_number":859,"context_line":"            msg \u003d _(\u0027Subnet for router interface must have a gateway IP\u0027)"},{"line_number":860,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":861,"context_line":"        if subnet[\u0027project_id\u0027] !\u003d context.project_id and not context.is_admin:"},{"line_number":862,"context_line":"            msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":863,"context_line":"                     \u0027owned by project making the request\u0027) % subnet_id)"},{"line_number":864,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"28f246dd_97017934","side":"PARENT","line":861,"updated":"2022-06-24 14:39:33.000000000","message":"I think that instead of removing that check completly we should improve it and make it aware of the networks shared through RBAC mechanism.","commit_id":"9d5673cb250f6a9e949239a4e31f5c6e16632310"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cf19835cd741ab49f03ebb97923d46e017d1268a","unresolved":true,"context_lines":[{"line_number":858,"context_line":"        if not subnet[\u0027gateway_ip\u0027]:"},{"line_number":859,"context_line":"            msg \u003d _(\u0027Subnet for router interface must have a gateway IP\u0027)"},{"line_number":860,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":861,"context_line":"        if subnet[\u0027project_id\u0027] !\u003d context.project_id and not context.is_admin:"},{"line_number":862,"context_line":"            msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":863,"context_line":"                     \u0027owned by project making the request\u0027) % subnet_id)"},{"line_number":864,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c954808e_0f041a2a","side":"PARENT","line":861,"in_reply_to":"28f246dd_97017934","updated":"2022-06-24 19:52:45.000000000","message":"+1, as we discussed on the Drivers meeting:\nhttps://meetings.opendev.org/meetings/neutron_drivers/2022/neutron_drivers.2022-06-24-14.00.log.html#l-90","commit_id":"9d5673cb250f6a9e949239a4e31f5c6e16632310"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"4da0f5822d9882feaf024965be22624ce52c09ba","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        if not subnet[\u0027gateway_ip\u0027]:"},{"line_number":859,"context_line":"            msg \u003d _(\u0027Subnet for router interface must have a gateway IP\u0027)"},{"line_number":860,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":861,"context_line":"        if subnet[\u0027project_id\u0027] !\u003d context.project_id and not context.is_admin:"},{"line_number":862,"context_line":"            msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":863,"context_line":"                     \u0027owned by project making the request\u0027) % subnet_id)"},{"line_number":864,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a43def8_4009d2fe","side":"PARENT","line":861,"in_reply_to":"42e12c36_2cf4bd4f","updated":"2022-08-01 14:16:21.000000000","message":"Done","commit_id":"9d5673cb250f6a9e949239a4e31f5c6e16632310"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"8f2c66aabc001a7dea8e4b84001801fc1e97db12","unresolved":true,"context_lines":[{"line_number":858,"context_line":"        if not subnet[\u0027gateway_ip\u0027]:"},{"line_number":859,"context_line":"            msg \u003d _(\u0027Subnet for router interface must have a gateway IP\u0027)"},{"line_number":860,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":861,"context_line":"        if subnet[\u0027project_id\u0027] !\u003d context.project_id and not context.is_admin:"},{"line_number":862,"context_line":"            msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":863,"context_line":"                     \u0027owned by project making the request\u0027) % subnet_id)"},{"line_number":864,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e22879ca_b428fea8","side":"PARENT","line":861,"in_reply_to":"c954808e_0f041a2a","updated":"2022-06-27 18:05:21.000000000","message":"totally agree!\ndo you have any hint on where I can find some example of code that check if something is shared using rbac mechanism?","commit_id":"9d5673cb250f6a9e949239a4e31f5c6e16632310"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0a07d2c638ca3401d1af5abdd59803f2386de5dd","unresolved":true,"context_lines":[{"line_number":858,"context_line":"        if not subnet[\u0027gateway_ip\u0027]:"},{"line_number":859,"context_line":"            msg \u003d _(\u0027Subnet for router interface must have a gateway IP\u0027)"},{"line_number":860,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":861,"context_line":"        if subnet[\u0027project_id\u0027] !\u003d context.project_id and not context.is_admin:"},{"line_number":862,"context_line":"            msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":863,"context_line":"                     \u0027owned by project making the request\u0027) % subnet_id)"},{"line_number":864,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"42e12c36_2cf4bd4f","side":"PARENT","line":861,"in_reply_to":"e22879ca_b428fea8","updated":"2022-07-11 07:09:18.000000000","message":"Hi, sorry for late answer. I am not RBAC expert, but perhaps in db_base_plugin_v2 there are some code for checking if port can be added removed to/from network:\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/db/db_base_plugin_v2.py#L236","commit_id":"9d5673cb250f6a9e949239a4e31f5c6e16632310"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"85a004dbc06f27399fef0882001064087e5cc1e0","unresolved":true,"context_lines":[{"line_number":870,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":871,"context_line":"                allowed_tenants \u003d [rbac[\u0027target_project\u0027] for rbac"},{"line_number":872,"context_line":"                                   in other_rbac_objs"},{"line_number":873,"context_line":"                                   if rbac.target_project !\u003d context.project_id]"},{"line_number":874,"context_line":"                if subnet[\u0027project_id\u0027] not in allowed_tenants:"},{"line_number":875,"context_line":"                    msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":876,"context_line":"                             \u0027owned by project making the request\u0027) % subnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"43b83f52_33f8501b","line":873,"range":{"start_line":873,"start_character":35,"end_line":873,"end_character":79},"updated":"2022-07-19 11:22:06.000000000","message":"Is this filter needed? From L862 we know this is true so I don\u0027t think we need to filter out those project IDs.","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"e3d672b73ba22da1bfd074286bdff49e0f224860","unresolved":true,"context_lines":[{"line_number":870,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":871,"context_line":"                allowed_tenants \u003d [rbac[\u0027target_project\u0027] for rbac"},{"line_number":872,"context_line":"                                   in other_rbac_objs"},{"line_number":873,"context_line":"                                   if rbac.target_project !\u003d context.project_id]"},{"line_number":874,"context_line":"                if subnet[\u0027project_id\u0027] not in allowed_tenants:"},{"line_number":875,"context_line":"                    msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":876,"context_line":"                             \u0027owned by project making the request\u0027) % subnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fd179f80_35777fcd","line":873,"range":{"start_line":873,"start_character":35,"end_line":873,"end_character":79},"in_reply_to":"43b83f52_33f8501b","updated":"2022-07-19 14:06:57.000000000","message":"Ack","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"c994224fa5b49369c6ed12ffa8145d91b9e021f1","unresolved":false,"context_lines":[{"line_number":870,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":871,"context_line":"                allowed_tenants \u003d [rbac[\u0027target_project\u0027] for rbac"},{"line_number":872,"context_line":"                                   in other_rbac_objs"},{"line_number":873,"context_line":"                                   if rbac.target_project !\u003d context.project_id]"},{"line_number":874,"context_line":"                if subnet[\u0027project_id\u0027] not in allowed_tenants:"},{"line_number":875,"context_line":"                    msg \u003d (_(\u0027Cannot add interface to router because subnet %s is not \u0027"},{"line_number":876,"context_line":"                             \u0027owned by project making the request\u0027) % subnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"24cd593e_06076318","line":873,"range":{"start_line":873,"start_character":35,"end_line":873,"end_character":79},"in_reply_to":"fd179f80_35777fcd","updated":"2022-08-01 14:16:09.000000000","message":"Done","commit_id":"a9acf5eb00669bc7a6e61d0d7b4ff44358761f6a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c88b31d99af2c816a0bc3289c91d851b36604c82","unresolved":true,"context_lines":[{"line_number":868,"context_line":"                other_rbac_objs \u003d network_obj.NetworkRBAC.get_objects("},{"line_number":869,"context_line":"                    elevated, object_id\u003dsubnet[\u0027network_id\u0027],"},{"line_number":870,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":871,"context_line":"                allowed_tenants \u003d [rbac[\u0027target_project\u0027] for rbac"},{"line_number":872,"context_line":"                                   in other_rbac_objs]"},{"line_number":873,"context_line":"                if subnet[\u0027project_id\u0027] not in allowed_tenants:"},{"line_number":874,"context_line":"                    msg \u003d (_(\u0027Cannot add interface to router because subnet \u0027"},{"line_number":875,"context_line":"                             \u0027%s is not owned by project making the request\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bb40ecd8_5943c4ca","line":872,"range":{"start_line":871,"start_character":16,"end_line":872,"end_character":54},"updated":"2022-08-18 11:25:34.000000000","message":"Why don\u0027t you call \"get_objects\" using targer_project?\n\n                other_rbac_objs \u003d network_obj.NetworkRBAC.get_objects(\n                    elevated, object_id\u003dsubnet[\u0027network_id\u0027],\n                    action\u003d\u0027access_as_shared\u0027,\n                    tarjet_project\u003drbac[\u0027target_project\u0027])","commit_id":"ddcf30399762e4d6ee459e60eb45832110767db1"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"32a5974d98d879dabc33c8036db363d173eaeb8e","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                other_rbac_objs \u003d network_obj.NetworkRBAC.get_objects("},{"line_number":869,"context_line":"                    elevated, object_id\u003dsubnet[\u0027network_id\u0027],"},{"line_number":870,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":871,"context_line":"                allowed_tenants \u003d [rbac[\u0027target_project\u0027] for rbac"},{"line_number":872,"context_line":"                                   in other_rbac_objs]"},{"line_number":873,"context_line":"                if subnet[\u0027project_id\u0027] not in allowed_tenants:"},{"line_number":874,"context_line":"                    msg \u003d (_(\u0027Cannot add interface to router because subnet \u0027"},{"line_number":875,"context_line":"                             \u0027%s is not owned by project making the request\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff09eef_8c520802","line":872,"range":{"start_line":871,"start_character":16,"end_line":872,"end_character":54},"in_reply_to":"bb40ecd8_5943c4ca","updated":"2022-08-24 14:37:39.000000000","message":"Done","commit_id":"ddcf30399762e4d6ee459e60eb45832110767db1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"30e0feee4d3837d98a6e086ad69a07f18e3c63ee","unresolved":true,"context_lines":[{"line_number":868,"context_line":"            with db_api.CONTEXT_READER.using(elevated):"},{"line_number":869,"context_line":"                rbac_allowed_projects \u003d network_obj.NetworkRBAC.get_projects("},{"line_number":870,"context_line":"                    elevated, object_id\u003dsubnet[\u0027network_id\u0027],"},{"line_number":871,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"                # Fail if the current project_id is NOT in the allowed"},{"line_number":874,"context_line":"                # projects"}],"source_content_type":"text/x-python","patch_set":6,"id":"c1589ccc_f664c763","line":871,"updated":"2022-08-24 14:47:17.000000000","message":"You are not filtering by \"tarjet_project\u003drbac[\u0027target_project\u0027]\". That should reduce the SQL returned info. We should try to filter in the DB engine, not in the code.","commit_id":"3bb0e8a33c725a8c90d36192848b8762223b7a9f"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"e9e4a4b3dee61788b96eb78f73aca403706666ec","unresolved":false,"context_lines":[{"line_number":868,"context_line":"            with db_api.CONTEXT_READER.using(elevated):"},{"line_number":869,"context_line":"                rbac_allowed_projects \u003d network_obj.NetworkRBAC.get_projects("},{"line_number":870,"context_line":"                    elevated, object_id\u003dsubnet[\u0027network_id\u0027],"},{"line_number":871,"context_line":"                    action\u003d\u0027access_as_shared\u0027)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"                # Fail if the current project_id is NOT in the allowed"},{"line_number":874,"context_line":"                # projects"}],"source_content_type":"text/x-python","patch_set":6,"id":"73c730a7_0b7c49e8","line":871,"in_reply_to":"c1589ccc_f664c763","updated":"2022-08-24 15:24:07.000000000","message":"Done","commit_id":"3bb0e8a33c725a8c90d36192848b8762223b7a9f"}]}
