)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c234c2f5f9eae705d95ce0cd246235b47eadcf6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9ae9ac18_308770f2","updated":"2021-12-15 20:27:47.000000000","message":"recheck\n\n\nBeen a while","commit_id":"3fdafea423c3a2d5384f058cf1af92ffb210f7f0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"08bbad9e7b903944f9a131ebe3002e21ea13411f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ceff63aa_a0fb0732","updated":"2022-03-23 02:52:42.000000000","message":"thanks, Kiran.\nLGTM. please see comment inline, ","commit_id":"5eeadae5da24f7bbe74e3df66b47c6de2fa1b812"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"5847c6eb4a26b912d32060b8d95582508c20858d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"29c00855_7b933f95","updated":"2022-03-25 01:43:16.000000000","message":"LGTM.","commit_id":"782a94ca515d12c08cf58b0ccaeee44b495949dc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"1c0cb99ddbf22abce0110216f568c08c5e6c4de3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"3135174d_76ad9867","updated":"2022-04-12 17:47:01.000000000","message":"recheck","commit_id":"2dedc6dd61d3bc7236709b8285a6758880492689"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"69e74c310e5dfb530e8ce9a1a6b6a58100a911f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d8c764a0_c0cf5a6c","updated":"2022-05-07 10:50:25.000000000","message":"This PR has rebased multiple times. Goutham/Carlos, Can you please approve it ?","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b7ef6b7db85e092b6b0982cdf84fe1f9f323ef02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7dd1be39_eccbe740","updated":"2022-05-06 07:33:34.000000000","message":"almost good, just some micversion need to be update.\nthanks.","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8cdccbc7f1f9de44d3e91fd4def4de719b38b44e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"dcbc0624_cd08aabf","updated":"2022-06-15 13:00:05.000000000","message":"Thanks for this patch, a couple of questions inline, thanks!","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"6677cb93de21a5248b3fe714fbe33ff1e8b39bcb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e3ecfa44_fb9e09a1","updated":"2022-08-03 00:31:49.000000000","message":"ops, my vote","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"c73a91015e8dc0b63db53f62e379f15d0ffcf5f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"780b095d_b53faeba","updated":"2022-08-03 00:31:41.000000000","message":"thanks kiran, please, check my comments.","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fa9ea03803dd43cfae1ef5f4a7c897f469943403","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"1df81dac_1e00c0a7","updated":"2022-08-15 03:03:47.000000000","message":"almost looks good. need one more unit test.","commit_id":"57ca5e68b511e234976b2b4ad85a6894136eb2af"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"3c8fa03a_d81ab020","updated":"2022-08-30 08:13:44.000000000","message":"Goautham,\nI have fixed all suggestions here https://review.opendev.org/c/openstack/manila/+/855123\n\nplease review and merge it.","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0785e7996a2926b8306b2e5f843cb51b182a1500","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"97abd9e7_351520df","updated":"2022-08-29 10:41:36.000000000","message":"LGTM","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"5bc605ce2aa744ee49214c4b560ca39aafd8ae68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"128a0870_b78ff65c","updated":"2022-08-24 08:14:34.000000000","message":"LGTM, thanks for your change.","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e33e59446d97e1440e8ead6230b194b6996d8a93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"dc058bed_56e17238","updated":"2022-08-24 08:13:40.000000000","message":"LGTM, thanks for your change.","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"0d28c05d_6225a4a7","updated":"2022-08-30 00:23:45.000000000","message":"Thanks for proposing this; I\u0027m merging this in the interest of time to cause a merge conflict and resolve the race to reserve the API microversion; but please address the concerns expressed in a different follow up change.","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fc8f8d2db472faab51abc485fd216d1a4a9c5372","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"8d689735_f1dffb79","updated":"2022-08-17 09:08:25.000000000","message":"recheck","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"}],"api-ref/source/share-replicas.inc":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b7ef6b7db85e092b6b0982cdf84fe1f9f323ef02","unresolved":true,"context_lines":[{"line_number":93,"context_line":"   :language: javascript"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":".. note::"},{"line_number":96,"context_line":"   Since API version 2.71, the parameter ``share_network_id`` is added which"},{"line_number":97,"context_line":"   was earlier supported but later deprecated from version 2.51. In case, the"},{"line_number":98,"context_line":"   parameter is not specified, it will be inherited from its parent share,"},{"line_number":99,"context_line":"   and the Shared File Systems service will automatically choose which share"}],"source_content_type":"text/x-c++src","patch_set":18,"id":"595a1f31_a380ddde","line":96,"range":{"start_line":96,"start_character":21,"end_line":96,"end_character":25},"updated":"2022-05-06 07:33:34.000000000","message":"2.72","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"69e74c310e5dfb530e8ce9a1a6b6a58100a911f2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"   :language: javascript"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":".. note::"},{"line_number":96,"context_line":"   Since API version 2.71, the parameter ``share_network_id`` is added which"},{"line_number":97,"context_line":"   was earlier supported but later deprecated from version 2.51. In case, the"},{"line_number":98,"context_line":"   parameter is not specified, it will be inherited from its parent share,"},{"line_number":99,"context_line":"   and the Shared File Systems service will automatically choose which share"}],"source_content_type":"text/x-c++src","patch_set":18,"id":"fe6da021_3347e36c","line":96,"range":{"start_line":96,"start_character":21,"end_line":96,"end_character":25},"in_reply_to":"595a1f31_a380ddde","updated":"2022-05-07 10:50:25.000000000","message":"Done","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"}],"manila/api/v2/share_replicas.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6a7bfabdce2af4135454b53b2c16f4d26a071f9a","unresolved":true,"context_lines":[{"line_number":133,"context_line":"    def create(self, req, body):"},{"line_number":134,"context_line":"        return self._create(req, body)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @wsgi.Controller.api_version(GRADUATION_VERSION)  # noqa"},{"line_number":137,"context_line":"    @wsgi.response(202)"},{"line_number":138,"context_line":"    def create(self, req, body):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":139,"context_line":"        return self._create(req, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"981b9a9c_ba1422f6","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":60},"updated":"2021-08-25 07:13:57.000000000","message":"@wsgi.Controller.api_version(GRADUATION_VERSION, \"2.63\")  # noqa","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ff9d8e27aea4787c1dcfa1e58b5961d99a0c7f95","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    def create(self, req, body):"},{"line_number":134,"context_line":"        return self._create(req, body)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @wsgi.Controller.api_version(GRADUATION_VERSION)  # noqa"},{"line_number":137,"context_line":"    @wsgi.response(202)"},{"line_number":138,"context_line":"    def create(self, req, body):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":139,"context_line":"        return self._create(req, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"66ecfd93_d6abd026","line":136,"range":{"start_line":136,"start_character":4,"end_line":136,"end_character":60},"in_reply_to":"981b9a9c_ba1422f6","updated":"2021-08-25 12:07:16.000000000","message":"Done","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6a7bfabdce2af4135454b53b2c16f4d26a071f9a","unresolved":true,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        share_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        availability_zone \u003d body.get(\u0027share_replica\u0027).get(\u0027availability_zone\u0027)"},{"line_number":157,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if not share_id:"},{"line_number":160,"context_line":"            msg \u003d _(\"Must provide Share ID to add replica.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"c43561c9_082f00d8","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":76},"updated":"2021-08-25 07:13:57.000000000","message":"if share_network_id:\n    if req.api_version_request \u003c api_version.APIVersionRequest(\"2.64\"):\n        rasie webob.exc.HTTPBadRequest(explanation\u003d\"some reason\")","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ff9d8e27aea4787c1dcfa1e58b5961d99a0c7f95","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        share_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        availability_zone \u003d body.get(\u0027share_replica\u0027).get(\u0027availability_zone\u0027)"},{"line_number":157,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if not share_id:"},{"line_number":160,"context_line":"            msg \u003d _(\"Must provide Share ID to add replica.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"46899b47_71c81d70","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":76},"in_reply_to":"c43561c9_082f00d8","updated":"2021-08-25 12:07:16.000000000","message":"Done","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc63c007dd638eda541435f3be932aa5558f7b69","unresolved":true,"context_lines":[{"line_number":174,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":175,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        if not share_network_id:"},{"line_number":178,"context_line":"            share_network_id \u003d share_ref.get(\u0027share_network_id\u0027, None)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"d35d01bb_42e8e326","line":177,"range":{"start_line":177,"start_character":0,"end_line":177,"end_character":32},"updated":"2021-09-01 23:20:06.000000000","message":"you could move the check on line 160 down here..","commit_id":"fe087c079a8aac2e0945eff868a097e70011e359"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ec9938a25db004690e7af6952bd051ce8349b534","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":175,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        if not share_network_id:"},{"line_number":178,"context_line":"            share_network_id \u003d share_ref.get(\u0027share_network_id\u0027, None)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"0b68eb4a_896c2eaf","line":177,"range":{"start_line":177,"start_character":0,"end_line":177,"end_character":32},"in_reply_to":"d35d01bb_42e8e326","updated":"2021-09-21 10:28:01.000000000","message":"Done","commit_id":"fe087c079a8aac2e0945eff868a097e70011e359"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc63c007dd638eda541435f3be932aa5558f7b69","unresolved":true,"context_lines":[{"line_number":184,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":185,"context_line":"            msg \u003d _(\"No share network exists with ID %s.\")"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_network_id)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            new_replica \u003d self.share_api.create_share_replica("},{"line_number":190,"context_line":"                context, share_ref, availability_zone\u003davailability_zone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"c4244388_bb9fba05","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":0},"updated":"2021-09-01 23:20:06.000000000","message":"As carlos said, if a replica is requested on a different share network than the share, we should check that the security services associated with the two networks match, else we should raise an error since the share and its replica can\u0027t be in different authentication domains.\n\nYou could perform this check in the \"create_share_replica\" method inside share/api.py and raise an InvalidInput exception.","commit_id":"fe087c079a8aac2e0945eff868a097e70011e359"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ec9938a25db004690e7af6952bd051ce8349b534","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":185,"context_line":"            msg \u003d _(\"No share network exists with ID %s.\")"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_network_id)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            new_replica \u003d self.share_api.create_share_replica("},{"line_number":190,"context_line":"                context, share_ref, availability_zone\u003davailability_zone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"695a01c8_50a4ecb3","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":0},"in_reply_to":"c4244388_bb9fba05","updated":"2021-09-21 10:28:01.000000000","message":"Done","commit_id":"fe087c079a8aac2e0945eff868a097e70011e359"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b7ef6b7db85e092b6b0982cdf84fe1f9f323ef02","unresolved":true,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.71\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.71 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"e0ca18c1_9b1cc194","line":180,"range":{"start_line":180,"start_character":72,"end_line":180,"end_character":76},"updated":"2022-05-06 07:33:34.000000000","message":"2.72, and other places.","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"69e74c310e5dfb530e8ce9a1a6b6a58100a911f2","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.71\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.71 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"16d80363_cb914ffc","line":180,"range":{"start_line":180,"start_character":72,"end_line":180,"end_character":76},"in_reply_to":"e0ca18c1_9b1cc194","updated":"2022-05-07 10:50:25.000000000","message":"Done","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b7ef6b7db85e092b6b0982cdf84fe1f9f323ef02","unresolved":true,"context_lines":[{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.71\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.71 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"},{"line_number":184,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":185,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"c0a6772c_21439345","line":182,"range":{"start_line":182,"start_character":43,"end_line":182,"end_character":47},"updated":"2022-05-06 07:33:34.000000000","message":"same","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"69e74c310e5dfb530e8ce9a1a6b6a58100a911f2","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.71\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.71 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"},{"line_number":184,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":185,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"df52e303_db0b1913","line":182,"range":{"start_line":182,"start_character":43,"end_line":182,"end_character":47},"in_reply_to":"c0a6772c_21439345","updated":"2022-05-07 10:50:25.000000000","message":"Done","commit_id":"4abede73a30f541516d17aa8c60aaad569572865"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8cdccbc7f1f9de44d3e91fd4def4de719b38b44e","unresolved":true,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.72\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.72 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"4db0b685_96ad7900","line":180,"range":{"start_line":180,"start_character":15,"end_line":180,"end_character":79},"updated":"2022-06-15 13:00:05.000000000","message":"What should we do about \u003c 2.51; not sure if share-network-id parameter works properly with \u003c 2.51, but this will change the original behavior.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6575fdb7301ef2339f9d9f12f1e1cc553e9af980","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        share_network_id \u003d body.get(\u0027share_replica\u0027).get(\u0027share_network_id\u0027)"},{"line_number":179,"context_line":"        if share_network_id:"},{"line_number":180,"context_line":"            if req.api_version_request \u003c api_version.APIVersionRequest(\"2.72\"):"},{"line_number":181,"context_line":"                msg \u003d _(\"\u0027share_network_id\u0027 option is not supported by this \""},{"line_number":182,"context_line":"                        \"microversion. Use 2.72 or greater microversion to \""},{"line_number":183,"context_line":"                        \"be able to use \u0027share_network_id\u0027.\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"967982ed_391b2f91","line":180,"range":{"start_line":180,"start_character":15,"end_line":180,"end_character":79},"in_reply_to":"4db0b685_96ad7900","updated":"2022-07-19 08:31:00.000000000","message":"I am not sure about original behaviour, but the reintroduction has explained its use case in bug.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":191,"context_line":"                common.check_share_network_is_active(share_network)"},{"line_number":192,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":193,"context_line":"            msg \u003d _(\"No share network exists with ID %s.\")"},{"line_number":194,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_network_id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        try:"},{"line_number":197,"context_line":"            new_replica \u003d self.share_api.create_share_replica("}],"source_content_type":"text/x-python","patch_set":23,"id":"3a1919dd_fcd39746","line":194,"range":{"start_line":194,"start_character":22,"end_line":194,"end_character":34},"updated":"2022-08-30 00:23:45.000000000","message":"BadReqest; unless the identifier is in the URL, NotFound is inappropriate: https://www.ietf.org/rfc/rfc2616.txt","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                common.check_share_network_is_active(share_network)"},{"line_number":192,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":193,"context_line":"            msg \u003d _(\"No share network exists with ID %s.\")"},{"line_number":194,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_network_id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        try:"},{"line_number":197,"context_line":"            new_replica \u003d self.share_api.create_share_replica("}],"source_content_type":"text/x-python","patch_set":23,"id":"a78aebed_d29608e9","line":194,"range":{"start_line":194,"start_character":22,"end_line":194,"end_character":34},"in_reply_to":"3a1919dd_fcd39746","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fa9ea03803dd43cfae1ef5f4a7c897f469943403","unresolved":true,"context_lines":[{"line_number":3978,"context_line":""},{"line_number":3979,"context_line":""},{"line_number":3980,"context_line":"@require_context"},{"line_number":3981,"context_line":"def security_service_get_all_by_share_network(context, share_network_id):"},{"line_number":3982,"context_line":"    session \u003d get_session()"},{"line_number":3983,"context_line":"    return (model_query(context, models.SecurityService, session\u003dsession)."},{"line_number":3984,"context_line":"            join(models.ShareNetworkSecurityServiceAssociation,"}],"source_content_type":"text/x-python","patch_set":22,"id":"d4611a2b_4ef83d12","line":3981,"range":{"start_line":3981,"start_character":0,"end_line":3981,"end_character":45},"updated":"2022-08-15 03:03:47.000000000","message":"we need one more unit test in manila/tests/db/sqalchemy/test_api.py\nto test this method.","commit_id":"57ca5e68b511e234976b2b4ad85a6894136eb2af"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"5f45a61525a01d2df01839b49eae972250eebee4","unresolved":false,"context_lines":[{"line_number":3978,"context_line":""},{"line_number":3979,"context_line":""},{"line_number":3980,"context_line":"@require_context"},{"line_number":3981,"context_line":"def security_service_get_all_by_share_network(context, share_network_id):"},{"line_number":3982,"context_line":"    session \u003d get_session()"},{"line_number":3983,"context_line":"    return (model_query(context, models.SecurityService, session\u003dsession)."},{"line_number":3984,"context_line":"            join(models.ShareNetworkSecurityServiceAssociation,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ee15e222_adf59794","line":3981,"range":{"start_line":3981,"start_character":0,"end_line":3981,"end_character":45},"in_reply_to":"d4611a2b_4ef83d12","updated":"2022-08-15 11:01:25.000000000","message":"Done","commit_id":"57ca5e68b511e234976b2b4ad85a6894136eb2af"}],"manila/share/api.py":[{"author":{"_account_id":33038,"name":"Chuan Miao","email":"chuan137@gmail.com","username":"chuan137"},"change_message_id":"8fe48fd1eb0f065d5b688059320b001c5b2da2a6","unresolved":true,"context_lines":[{"line_number":615,"context_line":"                        ) % share_network_id"},{"line_number":616,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":617,"context_line":"            parent_share_services \u003d parent_share_network[\u0027security_services\u0027]"},{"line_number":618,"context_line":"            share_services \u003d share_network[\u0027security_services\u0027]"},{"line_number":619,"context_line":"            for service in parent_share_services:"},{"line_number":620,"context_line":"                if service not in share_services:"},{"line_number":621,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""}],"source_content_type":"text/x-python","patch_set":10,"id":"52b6a47a_6fa2d8eb","line":618,"updated":"2021-09-21 15:46:19.000000000","message":"Hi, is the attribute \u0027securtiy_services\u0027 of share networks guaranteed to be exist? If not, exceptions could be thrown here.","commit_id":"3f1372f4ba5451e94a0abd9b68415d06abaeb5a2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ef576aeaebb760c2874b4679cbf3f45f71c598bb","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                        ) % share_network_id"},{"line_number":616,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":617,"context_line":"            parent_share_services \u003d parent_share_network[\u0027security_services\u0027]"},{"line_number":618,"context_line":"            share_services \u003d share_network[\u0027security_services\u0027]"},{"line_number":619,"context_line":"            for service in parent_share_services:"},{"line_number":620,"context_line":"                if service not in share_services:"},{"line_number":621,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a125c00_31d880ff","line":618,"in_reply_to":"52b6a47a_6fa2d8eb","updated":"2021-09-25 10:00:54.000000000","message":"Done","commit_id":"3f1372f4ba5451e94a0abd9b68415d06abaeb5a2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"08bbad9e7b903944f9a131ebe3002e21ea13411f","unresolved":true,"context_lines":[{"line_number":647,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":648,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":649,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":650,"context_line":"            try:"},{"line_number":651,"context_line":"                parent_share_network \u003d self.db.share_network_get("},{"line_number":652,"context_line":"                    context, parent_share_network_id)"},{"line_number":653,"context_line":"                parent_share_services \u003d parent_share_network.get("},{"line_number":654,"context_line":"                    \u0027security_services\u0027, None)"},{"line_number":655,"context_line":"                if parent_share_services is None:"},{"line_number":656,"context_line":"                    msg \u003d _(\"Security services are missing in share\""},{"line_number":657,"context_line":"                            \"network id %s\") % parent_share_network_id"},{"line_number":658,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":659,"context_line":"            except exception.ShareNetworkNotFound:"},{"line_number":660,"context_line":"                msg \u003d _(\"Share network %s was not found.\""},{"line_number":661,"context_line":"                        ) % parent_share_network_id"},{"line_number":662,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":663,"context_line":"            try:"},{"line_number":664,"context_line":"                share_network \u003d self.db.share_network_get("},{"line_number":665,"context_line":"                    context, share_network_id)"},{"line_number":666,"context_line":"                share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":667,"context_line":"                if share_services is None:"},{"line_number":668,"context_line":"                    msg \u003d _(\"Security services are missing in share\""},{"line_number":669,"context_line":"                            \"network id %s\") % share_network_id"},{"line_number":670,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":671,"context_line":"            except exception.ShareNetworkNotFound:"},{"line_number":672,"context_line":"                msg \u003d _(\"Share network %s was not found.\""},{"line_number":673,"context_line":"                        ) % share_network_id"},{"line_number":674,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":675,"context_line":"            for service in parent_share_services:"},{"line_number":676,"context_line":"                if service not in share_services:"},{"line_number":677,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""}],"source_content_type":"text/x-python","patch_set":13,"id":"9b0c8ec6_aaf4c117","line":674,"range":{"start_line":650,"start_character":12,"end_line":674,"end_character":56},"updated":"2022-03-23 02:52:42.000000000","message":"Wd can write a function to reduce code repetition.\ndef _get_security_services_by_share_network(self, context, share_network_id):\n    try:\n        share_network \u003d self.db.share_network_get(\n            context, share_network_id)\n        share_services \u003d share_network.get(\u0027security_services\u0027, None)\n        if share_services is None:\n            msg \u003d _(\"Security services are missing in share\"\n                    \"network id %s\") % parent_share_network_id\n            raise exception.InvalidInput(reason\u003dmsg)\n    except exception.ShareNetworkNotFound:\n         msg \u003d _(\"Share network %s was not found.\") % parent_share_network_id\n         raise exception.InvalidInput(reason\u003dmsg)\n\ndef create_share_replica():\n    ...\n    parent_share_services \u003d self._get_security_services_by_share_network(\n        context, parent_share_network_id)\n    share_services \u003d self._get_security_services_by_share_network(\n        context, share_network_id)\n    ...","commit_id":"5eeadae5da24f7bbe74e3df66b47c6de2fa1b812"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"295c874ec0795ca5998e3332eb6a3be6e096c31b","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":648,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":649,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":650,"context_line":"            try:"},{"line_number":651,"context_line":"                parent_share_network \u003d self.db.share_network_get("},{"line_number":652,"context_line":"                    context, parent_share_network_id)"},{"line_number":653,"context_line":"                parent_share_services \u003d parent_share_network.get("},{"line_number":654,"context_line":"                    \u0027security_services\u0027, None)"},{"line_number":655,"context_line":"                if parent_share_services is None:"},{"line_number":656,"context_line":"                    msg \u003d _(\"Security services are missing in share\""},{"line_number":657,"context_line":"                            \"network id %s\") % parent_share_network_id"},{"line_number":658,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":659,"context_line":"            except exception.ShareNetworkNotFound:"},{"line_number":660,"context_line":"                msg \u003d _(\"Share network %s was not found.\""},{"line_number":661,"context_line":"                        ) % parent_share_network_id"},{"line_number":662,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":663,"context_line":"            try:"},{"line_number":664,"context_line":"                share_network \u003d self.db.share_network_get("},{"line_number":665,"context_line":"                    context, share_network_id)"},{"line_number":666,"context_line":"                share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":667,"context_line":"                if share_services is None:"},{"line_number":668,"context_line":"                    msg \u003d _(\"Security services are missing in share\""},{"line_number":669,"context_line":"                            \"network id %s\") % share_network_id"},{"line_number":670,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":671,"context_line":"            except exception.ShareNetworkNotFound:"},{"line_number":672,"context_line":"                msg \u003d _(\"Share network %s was not found.\""},{"line_number":673,"context_line":"                        ) % share_network_id"},{"line_number":674,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":675,"context_line":"            for service in parent_share_services:"},{"line_number":676,"context_line":"                if service not in share_services:"},{"line_number":677,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""}],"source_content_type":"text/x-python","patch_set":13,"id":"f9a0d791_73e0964e","line":674,"range":{"start_line":650,"start_character":12,"end_line":674,"end_character":56},"in_reply_to":"9b0c8ec6_aaf4c117","updated":"2022-03-24 20:21:44.000000000","message":"Done","commit_id":"5eeadae5da24f7bbe74e3df66b47c6de2fa1b812"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8cdccbc7f1f9de44d3e91fd4def4de719b38b44e","unresolved":true,"context_lines":[{"line_number":644,"context_line":"            share_network \u003d self.db.share_network_get(context,"},{"line_number":645,"context_line":"                                                      share_network_id)"},{"line_number":646,"context_line":"            share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":647,"context_line":"            if share_services is None:"},{"line_number":648,"context_line":"                msg \u003d _(\"Security services are missing in share\""},{"line_number":649,"context_line":"                        \"network id %s\") % share_network_id"},{"line_number":650,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":651,"context_line":"            return share_services"},{"line_number":652,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":653,"context_line":"            msg \u003d _(\"Share network %s was not found.\") % share_network_id"}],"source_content_type":"text/x-python","patch_set":20,"id":"665bbd8a_fb80c635","line":650,"range":{"start_line":647,"start_character":0,"end_line":650,"end_character":56},"updated":"2022-06-15 13:00:05.000000000","message":"not sure if you should raise exception here, why not just return None and let the caller treat the results.\nRaise exception for ShareNetworkNotFound looks correct.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6575fdb7301ef2339f9d9f12f1e1cc553e9af980","unresolved":false,"context_lines":[{"line_number":644,"context_line":"            share_network \u003d self.db.share_network_get(context,"},{"line_number":645,"context_line":"                                                      share_network_id)"},{"line_number":646,"context_line":"            share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":647,"context_line":"            if share_services is None:"},{"line_number":648,"context_line":"                msg \u003d _(\"Security services are missing in share\""},{"line_number":649,"context_line":"                        \"network id %s\") % share_network_id"},{"line_number":650,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":651,"context_line":"            return share_services"},{"line_number":652,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":653,"context_line":"            msg \u003d _(\"Share network %s was not found.\") % share_network_id"}],"source_content_type":"text/x-python","patch_set":20,"id":"66a45be0_957b1a7f","line":650,"range":{"start_line":647,"start_character":0,"end_line":650,"end_character":56},"in_reply_to":"665bbd8a_fb80c635","updated":"2022-07-19 08:31:00.000000000","message":"raising exception at the place gives clear idea of what is missing share services e.g. user specified network or share parent network.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"4d87f568c764edfabb381c94ecca421cdae09890","unresolved":false,"context_lines":[{"line_number":644,"context_line":"            share_network \u003d self.db.share_network_get(context,"},{"line_number":645,"context_line":"                                                      share_network_id)"},{"line_number":646,"context_line":"            share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":647,"context_line":"            if share_services is None:"},{"line_number":648,"context_line":"                msg \u003d _(\"Security services are missing in share\""},{"line_number":649,"context_line":"                        \"network id %s\") % share_network_id"},{"line_number":650,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":651,"context_line":"            return share_services"},{"line_number":652,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":653,"context_line":"            msg \u003d _(\"Share network %s was not found.\") % share_network_id"}],"source_content_type":"text/x-python","patch_set":20,"id":"c7e18141_1941d63b","line":650,"range":{"start_line":647,"start_character":0,"end_line":650,"end_character":56},"in_reply_to":"66a45be0_957b1a7f","updated":"2022-08-04 18:18:57.000000000","message":"I would do in a different way since it is not mandatory for all share networks to have a security services.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8cdccbc7f1f9de44d3e91fd4def4de719b38b44e","unresolved":true,"context_lines":[{"line_number":659,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("}],"source_content_type":"text/x-python","patch_set":20,"id":"cefd45b9_500f5af7","line":662,"range":{"start_line":662,"start_character":36,"end_line":662,"end_character":37},"updated":"2022-06-15 13:00:05.000000000","message":"can you replace by parentheses here?","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6575fdb7301ef2339f9d9f12f1e1cc553e9af980","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("}],"source_content_type":"text/x-python","patch_set":20,"id":"0312a441_c1a75911","line":662,"range":{"start_line":662,"start_character":36,"end_line":662,"end_character":37},"in_reply_to":"cefd45b9_500f5af7","updated":"2022-07-19 08:31:00.000000000","message":"Done","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8cdccbc7f1f9de44d3e91fd4def4de719b38b44e","unresolved":true,"context_lines":[{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("},{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"}],"source_content_type":"text/x-python","patch_set":20,"id":"911ce9fa_5cc239b2","line":664,"range":{"start_line":663,"start_character":16,"end_line":664,"end_character":53},"updated":"2022-06-15 13:00:05.000000000","message":"this is raising an exception when share_network has no sec services. How will that work when share networks don\u0027t have any sec service?","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"4d87f568c764edfabb381c94ecca421cdae09890","unresolved":true,"context_lines":[{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("},{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"}],"source_content_type":"text/x-python","patch_set":20,"id":"cb59e0fb_4fc550e9","line":664,"range":{"start_line":663,"start_character":16,"end_line":664,"end_character":53},"in_reply_to":"0d7235c3_33dadc64","updated":"2022-08-04 18:18:57.000000000","message":"I don´t think you got my question. \nSince it is possible to have share-networks without security services, if the user provide a new share network id (different from parent one) and both have no sec. security services, this is raise an exception and fail, which is not correct, right?\nIt will raise an exception since um implemented \"_get_security_services_by_share_network\" to raise an exception when there is no sec services.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6575fdb7301ef2339f9d9f12f1e1cc553e9af980","unresolved":false,"context_lines":[{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("},{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"}],"source_content_type":"text/x-python","patch_set":20,"id":"0d7235c3_33dadc64","line":664,"range":{"start_line":663,"start_character":16,"end_line":664,"end_character":53},"in_reply_to":"911ce9fa_5cc239b2","updated":"2022-07-19 08:31:00.000000000","message":"it is being communicated in earlier comments that if and only if user provide share network id (since its optional parameter), and its not same as parent share network id, we must make sure both are using same security services. \nThus actual error message - share and its replica cant be in diff auth domains.","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"943443b8f3d141839683f46b0306e4462cf59415","unresolved":false,"context_lines":[{"line_number":660,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":661,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":662,"context_line":"            parent_share_services \u003d \\"},{"line_number":663,"context_line":"                self._get_security_services_by_share_network("},{"line_number":664,"context_line":"                    context, parent_share_network_id)"},{"line_number":665,"context_line":"            share_services \u003d self._get_security_services_by_share_network("},{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"}],"source_content_type":"text/x-python","patch_set":20,"id":"111320d2_aff330c4","line":664,"range":{"start_line":663,"start_character":16,"end_line":664,"end_character":53},"in_reply_to":"cb59e0fb_4fc550e9","updated":"2022-08-08 20:32:42.000000000","message":"Done","commit_id":"886e07cd755a162214d46be571ddd6a16eaa4dde"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"c73a91015e8dc0b63db53f62e379f15d0ffcf5f9","unresolved":true,"context_lines":[{"line_number":638,"context_line":"        }"},{"line_number":639,"context_line":"        return request_spec, share_instance"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _get_security_services_by_share_network(self, context,"},{"line_number":642,"context_line":"                                                share_network_id):"},{"line_number":643,"context_line":"        try:"},{"line_number":644,"context_line":"            share_network \u003d self.db.share_network_get(context,"},{"line_number":645,"context_line":"                                                      share_network_id)"},{"line_number":646,"context_line":"            share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":647,"context_line":"            if share_services is None:"},{"line_number":648,"context_line":"                msg \u003d _(\"Security services are missing in share\""},{"line_number":649,"context_line":"                        \"network id %s\") % share_network_id"},{"line_number":650,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":651,"context_line":"            return share_services"},{"line_number":652,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":653,"context_line":"            msg \u003d _(\"Share network %s was not found.\") % share_network_id"},{"line_number":654,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def create_share_replica(self, context, share, availability_zone\u003dNone,"},{"line_number":657,"context_line":"                             share_network_id\u003dNone, scheduler_hints\u003dNone):"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"7b35db57_37a56f59","line":655,"range":{"start_line":641,"start_character":4,"end_line":655,"end_character":0},"updated":"2022-08-03 00:31:41.000000000","message":"Why is this query not added directly to the db layer ? The SQL can easily retrieve this information on the `ShareNetworkSecurityServiceAssociation`. You are not interested in the share network itself, so you should get the services only from the DB.\n\nyou should create a call like on db/sqlachemy/api.py:\n\ndef security_services_get_all_by_share_network_id(self, share_network_id):","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"943443b8f3d141839683f46b0306e4462cf59415","unresolved":false,"context_lines":[{"line_number":638,"context_line":"        }"},{"line_number":639,"context_line":"        return request_spec, share_instance"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def _get_security_services_by_share_network(self, context,"},{"line_number":642,"context_line":"                                                share_network_id):"},{"line_number":643,"context_line":"        try:"},{"line_number":644,"context_line":"            share_network \u003d self.db.share_network_get(context,"},{"line_number":645,"context_line":"                                                      share_network_id)"},{"line_number":646,"context_line":"            share_services \u003d share_network.get(\u0027security_services\u0027, None)"},{"line_number":647,"context_line":"            if share_services is None:"},{"line_number":648,"context_line":"                msg \u003d _(\"Security services are missing in share\""},{"line_number":649,"context_line":"                        \"network id %s\") % share_network_id"},{"line_number":650,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":651,"context_line":"            return share_services"},{"line_number":652,"context_line":"        except exception.ShareNetworkNotFound:"},{"line_number":653,"context_line":"            msg \u003d _(\"Share network %s was not found.\") % share_network_id"},{"line_number":654,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    def create_share_replica(self, context, share, availability_zone\u003dNone,"},{"line_number":657,"context_line":"                             share_network_id\u003dNone, scheduler_hints\u003dNone):"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"4b6bbcb0_491c3c0e","line":655,"range":{"start_line":641,"start_character":4,"end_line":655,"end_character":0},"in_reply_to":"7b35db57_37a56f59","updated":"2022-08-08 20:32:42.000000000","message":"Done","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"c73a91015e8dc0b63db53f62e379f15d0ffcf5f9","unresolved":true,"context_lines":[{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"},{"line_number":668,"context_line":"                if service not in share_services:"},{"line_number":669,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""},{"line_number":670,"context_line":"                            \"different authentication domains.\")"},{"line_number":671,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if not share.get(\u0027replication_type\u0027):"}],"source_content_type":"text/x-python","patch_set":21,"id":"03d8d5cd_75672b83","line":670,"range":{"start_line":669,"start_character":20,"end_line":670,"end_character":64},"updated":"2022-08-03 00:31:41.000000000","message":"it\u0027s just checking if the share network replica has all parent authentication domains, not if they are different. For example, if the `share_services` contains a service that is not present on the parent (they are different here), it will accept. Is this the expected behavior ?","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"943443b8f3d141839683f46b0306e4462cf59415","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                context, share_network_id)"},{"line_number":667,"context_line":"            for service in parent_share_services:"},{"line_number":668,"context_line":"                if service not in share_services:"},{"line_number":669,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""},{"line_number":670,"context_line":"                            \"different authentication domains.\")"},{"line_number":671,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if not share.get(\u0027replication_type\u0027):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9e50eb2e_1a315eba","line":670,"range":{"start_line":669,"start_character":20,"end_line":670,"end_character":64},"in_reply_to":"03d8d5cd_75672b83","updated":"2022-08-08 20:32:42.000000000","message":"Since user specified services are superset of parent share services, its acceptable.","commit_id":"d229d47cec78d85bbfd3a2d05ca8949fecbd03e5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":644,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":645,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":646,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":647,"context_line":"            parent_share_services \u003d ("},{"line_number":648,"context_line":"                self.db.security_service_get_all_by_share_network("},{"line_number":649,"context_line":"                    context, parent_share_network_id))"},{"line_number":650,"context_line":"            share_services \u003d ("}],"source_content_type":"text/x-python","patch_set":23,"id":"c9b8373b_ae59ccf4","line":647,"range":{"start_line":647,"start_character":12,"end_line":647,"end_character":33},"updated":"2022-08-30 00:23:45.000000000","message":"parent_security_services","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        parent_share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":645,"context_line":"        if (parent_share_network_id and share_network_id and"},{"line_number":646,"context_line":"                parent_share_network_id !\u003d share_network_id):"},{"line_number":647,"context_line":"            parent_share_services \u003d ("},{"line_number":648,"context_line":"                self.db.security_service_get_all_by_share_network("},{"line_number":649,"context_line":"                    context, parent_share_network_id))"},{"line_number":650,"context_line":"            share_services \u003d ("}],"source_content_type":"text/x-python","patch_set":23,"id":"f5bb7224_a28ef34b","line":647,"range":{"start_line":647,"start_character":12,"end_line":647,"end_character":33},"in_reply_to":"c9b8373b_ae59ccf4","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":652,"context_line":"                    context, share_network_id))"},{"line_number":653,"context_line":"            for service in parent_share_services:"},{"line_number":654,"context_line":"                if service not in share_services:"},{"line_number":655,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""},{"line_number":656,"context_line":"                            \"different authentication domains.\")"},{"line_number":657,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"844df965_a24ea562","line":655,"range":{"start_line":655,"start_character":62,"end_line":655,"end_character":63},"updated":"2022-08-30 00:23:45.000000000","message":"missing trailing whitespace before end quotes","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                    context, share_network_id))"},{"line_number":653,"context_line":"            for service in parent_share_services:"},{"line_number":654,"context_line":"                if service not in share_services:"},{"line_number":655,"context_line":"                    msg \u003d _(\"Share and its replica can\u0027t be in\""},{"line_number":656,"context_line":"                            \"different authentication domains.\")"},{"line_number":657,"context_line":"                    raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"e62ee3eb_ea0e2b01","line":655,"range":{"start_line":655,"start_character":62,"end_line":655,"end_character":63},"in_reply_to":"844df965_a24ea562","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"}],"manila/tests/api/v2/test_share_replicas.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6a7bfabdce2af4135454b53b2c16f4d26a071f9a","unresolved":true,"context_lines":[{"line_number":440,"context_line":"        common.check_share_network_is_active.assert_called_once_with("},{"line_number":441,"context_line":"            share_network)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    @ddt.data((True, PRE_GRADUATION_VERSION), (False, GRADUATION_VERSION))"},{"line_number":444,"context_line":"    @ddt.unpack"},{"line_number":445,"context_line":"    def test_create(self, is_admin, microversion):"},{"line_number":446,"context_line":"        fake_replica, expected_replica \u003d self._get_fake_replica("}],"source_content_type":"text/x-python","patch_set":6,"id":"79e08d86_83aff904","line":443,"range":{"start_line":443,"start_character":4,"end_line":443,"end_character":74},"updated":"2021-08-25 07:13:57.000000000","message":"shoud add another case to check api 2.64 version.","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ff9d8e27aea4787c1dcfa1e58b5961d99a0c7f95","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        common.check_share_network_is_active.assert_called_once_with("},{"line_number":441,"context_line":"            share_network)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    @ddt.data((True, PRE_GRADUATION_VERSION), (False, GRADUATION_VERSION))"},{"line_number":444,"context_line":"    @ddt.unpack"},{"line_number":445,"context_line":"    def test_create(self, is_admin, microversion):"},{"line_number":446,"context_line":"        fake_replica, expected_replica \u003d self._get_fake_replica("}],"source_content_type":"text/x-python","patch_set":6,"id":"5e1c4b89_37c6499d","line":443,"range":{"start_line":443,"start_character":4,"end_line":443,"end_character":74},"in_reply_to":"79e08d86_83aff904","updated":"2021-08-25 12:07:16.000000000","message":"Done","commit_id":"fcea7e2017fe4ce04cae7d1b91d5cec73e1e76c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":396,"context_line":"        self.mock_policy_check.assert_called_once_with("},{"line_number":397,"context_line":"            self.member_context, self.resource_name, \u0027create\u0027)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    @ddt.data(\u00272.72\u0027)"},{"line_number":400,"context_line":"    def test_create_invalid_network_id(self, microversion):"},{"line_number":401,"context_line":"        fake_replica, _ \u003d self._get_fake_replica("},{"line_number":402,"context_line":"            replication_type\u003d\u0027writable\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"12abbdfa_dcb1cacc","line":399,"range":{"start_line":399,"start_character":3,"end_line":399,"end_character":21},"updated":"2022-08-30 00:23:45.000000000","message":"When there\u0027s only one input, ddt isn\u0027t necessary","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        self.mock_policy_check.assert_called_once_with("},{"line_number":397,"context_line":"            self.member_context, self.resource_name, \u0027create\u0027)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    @ddt.data(\u00272.72\u0027)"},{"line_number":400,"context_line":"    def test_create_invalid_network_id(self, microversion):"},{"line_number":401,"context_line":"        fake_replica, _ \u003d self._get_fake_replica("},{"line_number":402,"context_line":"            replication_type\u003d\u0027writable\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"57f4e6f2_b3139df8","line":399,"range":{"start_line":399,"start_character":3,"end_line":399,"end_character":21},"in_reply_to":"12abbdfa_dcb1cacc","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"}],"manila/tests/db/sqlalchemy/test_api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":3122,"context_line":"                          \u0027wrong id\u0027)"},{"line_number":3123,"context_line":""},{"line_number":3124,"context_line":"    def test_get_all_by_share_network(self):"},{"line_number":3125,"context_line":"        db_api.security_service_create(self.fake_context,"},{"line_number":3126,"context_line":"                                       security_service_dict)"},{"line_number":3127,"context_line":"        share_nw_dict \u003d {\u0027id\u0027: \u0027fake network id\u0027,"},{"line_number":3128,"context_line":"                         \u0027project_id\u0027: \u0027fake project\u0027,"},{"line_number":3129,"context_line":"                         \u0027user_id\u0027: \u0027fake_user_id\u0027}"}],"source_content_type":"text/x-python","patch_set":23,"id":"493ac76a_6d340255","line":3126,"range":{"start_line":3125,"start_character":0,"end_line":3126,"end_character":61},"updated":"2022-08-30 00:23:45.000000000","message":"Create another security service and don\u0027t associate it to the network;","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":3122,"context_line":"                          \u0027wrong id\u0027)"},{"line_number":3123,"context_line":""},{"line_number":3124,"context_line":"    def test_get_all_by_share_network(self):"},{"line_number":3125,"context_line":"        db_api.security_service_create(self.fake_context,"},{"line_number":3126,"context_line":"                                       security_service_dict)"},{"line_number":3127,"context_line":"        share_nw_dict \u003d {\u0027id\u0027: \u0027fake network id\u0027,"},{"line_number":3128,"context_line":"                         \u0027project_id\u0027: \u0027fake project\u0027,"},{"line_number":3129,"context_line":"                         \u0027user_id\u0027: \u0027fake_user_id\u0027}"}],"source_content_type":"text/x-python","patch_set":23,"id":"7558fe78_16415377","line":3126,"range":{"start_line":3125,"start_character":0,"end_line":3126,"end_character":61},"in_reply_to":"493ac76a_6d340255","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"318fad4bf7fef2eee5dc9c4be1cc96323e572335","unresolved":true,"context_lines":[{"line_number":3132,"context_line":"            self.fake_context,"},{"line_number":3133,"context_line":"            share_nw_dict[\u0027id\u0027], security_service_dict[\u0027id\u0027])"},{"line_number":3134,"context_line":""},{"line_number":3135,"context_line":"        result \u003d db_api.security_service_get_all_by_share_network("},{"line_number":3136,"context_line":"            self.fake_context, share_nw_dict[\u0027id\u0027])"},{"line_number":3137,"context_line":"        self._check_expected_fields(result[0], security_service_dict)"},{"line_number":3138,"context_line":""},{"line_number":3139,"context_line":"    def test_delete(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"b0ea24c4_b50aa894","line":3136,"range":{"start_line":3135,"start_character":0,"end_line":3136,"end_character":51},"updated":"2022-08-30 00:23:45.000000000","message":"ensure result only has one row...","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d1e5f66034a710872856f9faaaf29e45b1ba96c2","unresolved":false,"context_lines":[{"line_number":3132,"context_line":"            self.fake_context,"},{"line_number":3133,"context_line":"            share_nw_dict[\u0027id\u0027], security_service_dict[\u0027id\u0027])"},{"line_number":3134,"context_line":""},{"line_number":3135,"context_line":"        result \u003d db_api.security_service_get_all_by_share_network("},{"line_number":3136,"context_line":"            self.fake_context, share_nw_dict[\u0027id\u0027])"},{"line_number":3137,"context_line":"        self._check_expected_fields(result[0], security_service_dict)"},{"line_number":3138,"context_line":""},{"line_number":3139,"context_line":"    def test_delete(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"b40e5060_d944c4c5","line":3136,"range":{"start_line":3135,"start_character":0,"end_line":3136,"end_character":51},"in_reply_to":"b0ea24c4_b50aa894","updated":"2022-08-30 08:13:44.000000000","message":"Done","commit_id":"b49605945a8e58ea33abfd559d9b87a6507519ab"}]}
