)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"273b75946fa9336773a32974b56019e8bb87fab3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"27d47c6a_bb7d46a0","updated":"2026-05-05 11:41:08.000000000","message":"Please take a look into the review comment.","commit_id":"757fd0479be75bea57da4ba7275642647fa4cdb2"},{"author":{"_account_id":38479,"name":"Medha Choudhary","display_name":"Medha Choudhary","email":"medhaj06@gmail.com","username":"medhac1403","status":"NetApp"},"change_message_id":"e81c21cf3cbdaade3c89c561ac54c0b35c2a685d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"281ea077_86a7ca0a","updated":"2026-04-27 10:04:29.000000000","message":"run-NetApp CI","commit_id":"757fd0479be75bea57da4ba7275642647fa4cdb2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"862cd9a2bc661cd4af67539a7ca5e948abec9136","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"13d9cec5_22641af3","updated":"2026-07-08 13:06:42.000000000","message":"LGTM","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f27e6b070c11e26e6d9727d3282f4068fc2d674c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"64edae1f_6d03fa59","updated":"2026-07-10 05:32:51.000000000","message":"No","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9e12772cb34d060a17b022f38431dd8e01c065a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7f7c18a4_33f7aa87","updated":"2026-07-07 08:46:57.000000000","message":"Please look at the comment.","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bc9366e5f6a4d7b28170284c4d73e7e08409e36f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"63323e3f_a8e1e356","updated":"2026-07-10 19:54:46.000000000","message":"LGTM","commit_id":"228116b4957c566b77d8d97afb097f025e405ba3"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"0bed9326c061e5a9647ac0b718242dfd48a15d59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"69eb458b_4e726779","updated":"2026-07-14 14:05:50.000000000","message":"LGTM","commit_id":"228116b4957c566b77d8d97afb097f025e405ba3"}],"manila/network/neutron/api.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"273b75946fa9336773a32974b56019e8bb87fab3","unresolved":true,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e3a8fb7e_8d903e1e","line":276,"range":{"start_line":276,"start_character":57,"end_line":276,"end_character":66},"updated":"2026-05-05 11:41:08.000000000","message":"Quick question - Why 5 and not 3. What governs the retries here? Also, should this be a configurable value?","commit_id":"757fd0479be75bea57da4ba7275642647fa4cdb2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f27e6b070c11e26e6d9727d3282f4068fc2d674c","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"75b3d2ee_af8da4bf","line":276,"range":{"start_line":276,"start_character":57,"end_line":276,"end_character":66},"in_reply_to":"834ad1ff_d906c4cc","updated":"2026-07-10 05:32:51.000000000","message":"Yeah, just a historic/common pattern. The retry number is a factor of the RPC timeout (~60 seconds)","commit_id":"757fd0479be75bea57da4ba7275642647fa4cdb2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d768d28b3d28433d9a9ec2c117eb333c2203911b","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"834ad1ff_d906c4cc","line":276,"range":{"start_line":276,"start_character":57,"end_line":276,"end_character":66},"in_reply_to":"e3a8fb7e_8d903e1e","updated":"2026-05-05 13:24:46.000000000","message":"all existing functions within file use value 5. so kept same here. Also we dont need this configurable, this is enough window to claim error/exception in case retries exhaust.","commit_id":"757fd0479be75bea57da4ba7275642647fa4cdb2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f27e6b070c11e26e6d9727d3282f4068fc2d674c","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                                 security_group_ids\u003dsecurity_group_ids,"},{"line_number":149,"context_line":"                                 dhcp_opts\u003ddhcp_opts, **kwargs)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @utils.retry(retry_param\u003dks_exec.ConnectFailure, retries\u003d5)"},{"line_number":152,"context_line":"    def _create_port(self, tenant_id, network_id, host_id\u003dNone, subnet_id\u003dNone,"},{"line_number":153,"context_line":"                     fixed_ip\u003dNone, device_owner\u003dNone, device_id\u003dNone,"},{"line_number":154,"context_line":"                     mac_address\u003dNone, port_security_enabled\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b3182013_7db0a8e8","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":63},"updated":"2026-07-10 05:32:51.000000000","message":"see this retry","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7b295f8d0a772e8f1afcf795c84140014b15d48f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                 security_group_ids\u003dsecurity_group_ids,"},{"line_number":149,"context_line":"                                 dhcp_opts\u003ddhcp_opts, **kwargs)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @utils.retry(retry_param\u003dks_exec.ConnectFailure, retries\u003d5)"},{"line_number":152,"context_line":"    def _create_port(self, tenant_id, network_id, host_id\u003dNone, subnet_id\u003dNone,"},{"line_number":153,"context_line":"                     fixed_ip\u003dNone, device_owner\u003dNone, device_id\u003dNone,"},{"line_number":154,"context_line":"                     mac_address\u003dNone, port_security_enabled\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"464e942d_27445fd0","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":63},"in_reply_to":"b3182013_7db0a8e8","updated":"2026-07-10 15:17:21.000000000","message":"Acknowledged","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f27e6b070c11e26e6d9727d3282f4068fc2d674c","unresolved":true,"context_lines":[{"line_number":214,"context_line":"            except ks_exec.ConnectFailure as kse:"},{"line_number":215,"context_line":"                raise kse"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @utils.retry(retry_param\u003dks_exec.ConnectFailure, retries\u003d5)"},{"line_number":218,"context_line":"    def delete_port(self, port_id):"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            self.client.delete_port(port_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c561f929_5c5145b6","line":217,"range":{"start_line":217,"start_character":0,"end_line":217,"end_character":63},"updated":"2026-07-10 05:32:51.000000000","message":"or this one","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7b295f8d0a772e8f1afcf795c84140014b15d48f","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            except ks_exec.ConnectFailure as kse:"},{"line_number":215,"context_line":"                raise kse"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @utils.retry(retry_param\u003dks_exec.ConnectFailure, retries\u003d5)"},{"line_number":218,"context_line":"    def delete_port(self, port_id):"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            self.client.delete_port(port_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c3576d4_1157babb","line":217,"range":{"start_line":217,"start_character":0,"end_line":217,"end_character":63},"in_reply_to":"c561f929_5c5145b6","updated":"2026-07-10 15:17:21.000000000","message":"Acknowledged","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9e12772cb34d060a17b022f38431dd8e01c065a7","unresolved":true,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0c8228_54413fc3","line":276,"updated":"2026-07-07 08:46:57.000000000","message":"Any particular reason for choosing 5 as retries? General standard is 3 retries.","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"862cd9a2bc661cd4af67539a7ca5e948abec9136","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"315948f7_be66f929","line":276,"in_reply_to":"d8d12bcc_b0c55be4","updated":"2026-07-08 13:06:42.000000000","message":"Acknowledged","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b4b936221137ca6fdda01a62de95228cd4ef27b6","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":274,"context_line":"                                             message\u003de.message)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @utils.retry(retry_param\u003dexception.NetworkException, retries\u003d5)"},{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d8d12bcc_b0c55be4","line":276,"in_reply_to":"ff0c8228_54413fc3","updated":"2026-07-07 09:02:56.000000000","message":"all retry used in other functions in the same file have 5 as retries.","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f27e6b070c11e26e6d9727d3282f4068fc2d674c","unresolved":true,"context_lines":[{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"},{"line_number":280,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":281,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":282,"context_line":"                                             message\u003de.message)"},{"line_number":283,"context_line":"        return {ext[\u0027name\u0027]: ext for ext in extensions_list}"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def _has_port_binding_extension(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fe297bd_a2ab1d1d","line":282,"range":{"start_line":280,"start_character":8,"end_line":282,"end_character":63},"updated":"2026-07-10 05:32:51.000000000","message":"This retry seems strange to me; NeutronClientException is all any sort of errors from neutron - including things that aren\u0027t safe or useful to retry.. what specifically are you experiencing in your environment. See the other retries, wouldn\u0027t retrying on ConnectFailure be useful, because your commit message calls out only an issue with keystone.","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7b295f8d0a772e8f1afcf795c84140014b15d48f","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def list_extensions(self):"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            extensions_list \u003d self.client.list_extensions().get(\u0027extensions\u0027)"},{"line_number":280,"context_line":"        except neutron_client_exc.NeutronClientException as e:"},{"line_number":281,"context_line":"            raise exception.NetworkException(code\u003de.status_code,"},{"line_number":282,"context_line":"                                             message\u003de.message)"},{"line_number":283,"context_line":"        return {ext[\u0027name\u0027]: ext for ext in extensions_list}"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def _has_port_binding_extension(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"87e05495_c6bf6055","line":282,"range":{"start_line":280,"start_character":8,"end_line":282,"end_character":63},"in_reply_to":"3fe297bd_a2ab1d1d","updated":"2026-07-10 15:17:21.000000000","message":"ok connectfailure be useful. updated","commit_id":"8aa3ab203f4ad57ac90160ef3b91909d238b3a7c"}]}
