)]}'
{"neutron/services/portforwarding/pf_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"35a9b90edb1114499c5274aefc7b52a45fcf0a0c","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _check_port_forwarding_update(self, context, pf_obj):"},{"line_number":471,"context_line":"        def _check_port_forwarding_update_failed(conflict):"},{"line_number":472,"context_line":"            message \u003d _(\"Another port forwarding entry with same \""},{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"},{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_482a767e","line":472,"range":{"start_line":472,"start_character":60,"end_line":472,"end_character":64},"updated":"2020-06-29 14:10:01.000000000","message":"s/the same","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"d2d1f8011d288d5055eda9df1583b6c59630caf6","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _check_port_forwarding_update(self, context, pf_obj):"},{"line_number":471,"context_line":"        def _check_port_forwarding_update_failed(conflict):"},{"line_number":472,"context_line":"            message \u003d _(\"Another port forwarding entry with same \""},{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"},{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_1ba606c2","line":472,"range":{"start_line":472,"start_character":60,"end_line":472,"end_character":64},"in_reply_to":"bf51134e_482a767e","updated":"2020-06-29 16:37:54.000000000","message":"Done","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"35a9b90edb1114499c5274aefc7b52a45fcf0a0c","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal ip address is not valid, as \""},{"line_number":485,"context_line":"                        \"its fixed_ips are %s\") % internal_port[\u0027fixed_ips\u0027]"},{"line_number":486,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":487,"context_line":"                                     msg\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_88200e9d","line":484,"range":{"start_line":484,"start_character":38,"end_line":484,"end_character":40},"updated":"2020-06-29 14:10:01.000000000","message":"s/IP","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"d2d1f8011d288d5055eda9df1583b6c59630caf6","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal ip address is not valid, as \""},{"line_number":485,"context_line":"                        \"its fixed_ips are %s\") % internal_port[\u0027fixed_ips\u0027]"},{"line_number":486,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":487,"context_line":"                                     msg\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_db976e44","line":484,"range":{"start_line":484,"start_character":38,"end_line":484,"end_character":40},"in_reply_to":"bf51134e_88200e9d","updated":"2020-06-29 16:37:54.000000000","message":"Done","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"35a9b90edb1114499c5274aefc7b52a45fcf0a0c","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal ip address is not valid, as \""},{"line_number":485,"context_line":"                        \"its fixed_ips are %s\") % internal_port[\u0027fixed_ips\u0027]"},{"line_number":486,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":487,"context_line":"                                     msg\u003dmessage)"},{"line_number":488,"context_line":"        objs \u003d pf.PortForwarding.get_objects("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_c842063e","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":45},"updated":"2020-06-29 14:10:01.000000000","message":"maybe this last part should be \"it does not correspond to an IP address on the internal port\" ?","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"d2d1f8011d288d5055eda9df1583b6c59630caf6","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal ip address is not valid, as \""},{"line_number":485,"context_line":"                        \"its fixed_ips are %s\") % internal_port[\u0027fixed_ips\u0027]"},{"line_number":486,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":487,"context_line":"                                     msg\u003dmessage)"},{"line_number":488,"context_line":"        objs \u003d pf.PortForwarding.get_objects("}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_5b36be52","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":45},"in_reply_to":"bf51134e_c842063e","updated":"2020-06-29 16:37:54.000000000","message":"Good point. How about:\n```\nThe internal IP does not correspond to an\naddress on the internal port, which has\nfixed_ips %s\n```","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc9593b1eeadeca5e9c35e41df5fd05fa0247ff0","unresolved":false,"context_lines":[{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        v4_addresses \u003d ["},{"line_number":480,"context_line":"            fixed_ip[\u0027ip_address\u0027] for fixed_ip in internal_port[\u0027fixed_ips\u0027]"},{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_65be5f00","line":481,"range":{"start_line":481,"start_character":24,"end_line":481,"end_character":33},"updated":"2020-07-01 13:51:35.000000000","message":"nit: I don\u0027t think it matters, but since the ip_address is something like \u002710.0.0.1\u0027 this could be IPAddress","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"57cfee2c18f281ea2fa034facbdbc497fc7544c8","unresolved":false,"context_lines":[{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        v4_addresses \u003d ["},{"line_number":480,"context_line":"            fixed_ip[\u0027ip_address\u0027] for fixed_ip in internal_port[\u0027fixed_ips\u0027]"},{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_f93adeca","line":481,"range":{"start_line":481,"start_character":24,"end_line":481,"end_character":33},"in_reply_to":"bf51134e_65be5f00","updated":"2020-07-06 20:44:26.000000000","message":"ack. this is pretty much copy and paste from similar code in this files.","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc9593b1eeadeca5e9c35e41df5fd05fa0247ff0","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            fixed_ip[\u0027ip_address\u0027] for fixed_ip in internal_port[\u0027fixed_ips\u0027]"},{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""},{"line_number":485,"context_line":"                        \"address on the internal port, which has \""},{"line_number":486,"context_line":"                        \"fixed_ips %s\") % internal_port[\u0027fixed_ips\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_45699b89","line":483,"updated":"2020-07-01 13:51:35.000000000","message":"Hmm, would it be better to just look for this single address in the port?  i.e. instead of using netaddr above just check for equality?  Since we don\u0027t use v4_addresses after this.","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"57cfee2c18f281ea2fa034facbdbc497fc7544c8","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            fixed_ip[\u0027ip_address\u0027] for fixed_ip in internal_port[\u0027fixed_ips\u0027]"},{"line_number":481,"context_line":"            if (netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027]).version \u003d\u003d"},{"line_number":482,"context_line":"                lib_consts.IP_VERSION_4)]"},{"line_number":483,"context_line":"        if str(pf_obj.internal_ip_address) not in v4_addresses:"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""},{"line_number":485,"context_line":"                        \"address on the internal port, which has \""},{"line_number":486,"context_line":"                        \"fixed_ips %s\") % internal_port[\u0027fixed_ips\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_aff2d804","line":483,"in_reply_to":"bf51134e_45699b89","updated":"2020-07-06 20:44:26.000000000","message":"Done","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc9593b1eeadeca5e9c35e41df5fd05fa0247ff0","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                     \u0027external_port\u0027: obj.external_port})"},{"line_number":501,"context_line":"        # Ensure there are no conflicts in the inside"},{"line_number":502,"context_line":"        # socket: internal_ip_address + internal_port"},{"line_number":503,"context_line":"        for obj in objs:"},{"line_number":504,"context_line":"            if all([obj.id !\u003d pf_obj.id,"},{"line_number":505,"context_line":"                    obj.internal_port_id \u003d\u003d pf_obj.internal_port_id,"},{"line_number":506,"context_line":"                    obj.internal_ip_address \u003d\u003d pf_obj.internal_ip_address,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_651adf17","line":503,"updated":"2020-07-01 13:51:35.000000000","message":"Can just remove this and have both checks under the same loop.","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"57cfee2c18f281ea2fa034facbdbc497fc7544c8","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                     \u0027external_port\u0027: obj.external_port})"},{"line_number":501,"context_line":"        # Ensure there are no conflicts in the inside"},{"line_number":502,"context_line":"        # socket: internal_ip_address + internal_port"},{"line_number":503,"context_line":"        for obj in objs:"},{"line_number":504,"context_line":"            if all([obj.id !\u003d pf_obj.id,"},{"line_number":505,"context_line":"                    obj.internal_port_id \u003d\u003d pf_obj.internal_port_id,"},{"line_number":506,"context_line":"                    obj.internal_ip_address \u003d\u003d pf_obj.internal_ip_address,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_8ff554f0","line":503,"in_reply_to":"bf51134e_651adf17","updated":"2020-07-06 20:44:26.000000000","message":"Done","commit_id":"33e019ab03c2edb859b29e3bf7144bfcca49a630"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1806ca35403c6340ec1de740d8294b104fac6715","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"},{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":476,"context_line":"                                     msg\u003dmessage)"},{"line_number":477,"context_line":"        internal_port \u003d self.core_plugin.get_port(context,"},{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        for fixed_ip in internal_port[\u0027fixed_ips\u0027]:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_fcef411a","line":476,"updated":"2020-07-08 19:30:34.000000000","message":"nit: maybe leave a blank line here to designate the end of the method?  I almost didn\u0027t notice it the first time I looked.","commit_id":"f649a9673d665d35e17a2f78dcacea90a9896890"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8c30842493bf4287fe29fc44343257b4f0a17d40","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"},{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":476,"context_line":"                                     msg\u003dmessage)"},{"line_number":477,"context_line":"        internal_port \u003d self.core_plugin.get_port(context,"},{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        for fixed_ip in internal_port[\u0027fixed_ips\u0027]:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_230cf1ea","line":476,"in_reply_to":"bf51134e_fcef411a","updated":"2020-07-09 08:46:31.000000000","message":"will do.","commit_id":"f649a9673d665d35e17a2f78dcacea90a9896890"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1806ca35403c6340ec1de740d8294b104fac6715","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":476,"context_line":"                                     msg\u003dmessage)"},{"line_number":477,"context_line":"        internal_port \u003d self.core_plugin.get_port(context,"},{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        for fixed_ip in internal_port[\u0027fixed_ips\u0027]:"},{"line_number":480,"context_line":"            if str(pf_obj.internal_ip_address) \u003d\u003d fixed_ip[\u0027ip_address\u0027]:"},{"line_number":481,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_9c6565b8","line":478,"updated":"2020-07-08 19:30:34.000000000","message":"Just wondering using pb_obj.internal_port is sufficient here?  Based on L425 above and L510 below.  Would save a get_port() call. Unless this needs to be a new lookup to detect the conflict?","commit_id":"f649a9673d665d35e17a2f78dcacea90a9896890"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"0bf189538173f2990f6fd5a6c22eb866b952ac96","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":476,"context_line":"                                     msg\u003dmessage)"},{"line_number":477,"context_line":"        internal_port \u003d self.core_plugin.get_port(context,"},{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        for fixed_ip in internal_port[\u0027fixed_ips\u0027]:"},{"line_number":480,"context_line":"            if str(pf_obj.internal_ip_address) \u003d\u003d fixed_ip[\u0027ip_address\u0027]:"},{"line_number":481,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_99f0cc93","line":478,"in_reply_to":"bf51134e_9c6565b8","updated":"2020-07-09 10:11:57.000000000","message":"The word \u0027internal_port\u0027 is kinda abused in port forwarding.\n\nThe internal port in line 425 is actually a number used to indicate the protocol port number to be forwarded. So yes, we do need to perform that lookup in order to verify that the address provided is part of the neutron ports\u0027s fixed address.\n\nI renamed the variable to db_port on latest changeset. Hope that makes it less confusing. I originally \u0027copied and pasted\u0027 that from logic in line 271.","commit_id":"f649a9673d665d35e17a2f78dcacea90a9896890"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"8c30842493bf4287fe29fc44343257b4f0a17d40","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":476,"context_line":"                                     msg\u003dmessage)"},{"line_number":477,"context_line":"        internal_port \u003d self.core_plugin.get_port(context,"},{"line_number":478,"context_line":"                                                  pf_obj.internal_port_id)"},{"line_number":479,"context_line":"        for fixed_ip in internal_port[\u0027fixed_ips\u0027]:"},{"line_number":480,"context_line":"            if str(pf_obj.internal_ip_address) \u003d\u003d fixed_ip[\u0027ip_address\u0027]:"},{"line_number":481,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_43f645d9","line":478,"in_reply_to":"bf51134e_9c6565b8","updated":"2020-07-09 08:46:31.000000000","message":"Will check. thanks.","commit_id":"f649a9673d665d35e17a2f78dcacea90a9896890"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e8a6b33f87fd3f1747e404594d96b2c167798df","unresolved":false,"context_lines":[{"line_number":495,"context_line":"                continue"},{"line_number":496,"context_line":"            # Ensure there are no conflicts on the outside"},{"line_number":497,"context_line":"            if all([obj.floating_ip_address \u003d\u003d pf_obj.floating_ip_address,"},{"line_number":498,"context_line":"                    obj.external_port \u003d\u003d pf_obj.external_port]):"},{"line_number":499,"context_line":"                _check_port_forwarding_update_failed("},{"line_number":500,"context_line":"                    {\u0027floating_ip_address\u0027: str(obj.floating_ip_address),"},{"line_number":501,"context_line":"                     \u0027external_port\u0027: obj.external_port})"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf51134e_57a8b18a","line":498,"updated":"2020-07-09 21:31:42.000000000","message":"Sorry for the nit on this, but I was trying to find another occurrence where we did all() on a list and couldn\u0027t.  Maybe it\u0027s better to just use \u0027and\u0027 here and below? You can tell I\u0027m not a native Pythoner :)","commit_id":"8c867da72816aea853805194e70f4ebd23a46955"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"80dc9bb182f83d46b3d637548b3c1bcea355aa80","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                    obj.external_port \u003d\u003d pf_obj.external_port]):"},{"line_number":499,"context_line":"                _check_port_forwarding_update_failed("},{"line_number":500,"context_line":"                    {\u0027floating_ip_address\u0027: str(obj.floating_ip_address),"},{"line_number":501,"context_line":"                     \u0027external_port\u0027: obj.external_port})"},{"line_number":502,"context_line":"            # Ensure there are no conflicts in the inside"},{"line_number":503,"context_line":"            # socket: internal_ip_address + internal_port"},{"line_number":504,"context_line":"            if all([obj.internal_port_id \u003d\u003d pf_obj.internal_port_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_889c8e0e","line":501,"updated":"2020-07-16 15:17:58.000000000","message":"I did have one nit from PS12.\n\nSorry for the nit on this, but I was trying to find another occurrence where we did all() on a list and couldn\u0027t.  Maybe it\u0027s better to just use \u0027and\u0027 here and below? You can tell I\u0027m not a native Pythoner :)","commit_id":"76c25df66582607408d67393869ecbc3ede97966"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"5ead5e1d5384256613d2cfae7981f881057f8923","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                    obj.external_port \u003d\u003d pf_obj.external_port]):"},{"line_number":499,"context_line":"                _check_port_forwarding_update_failed("},{"line_number":500,"context_line":"                    {\u0027floating_ip_address\u0027: str(obj.floating_ip_address),"},{"line_number":501,"context_line":"                     \u0027external_port\u0027: obj.external_port})"},{"line_number":502,"context_line":"            # Ensure there are no conflicts in the inside"},{"line_number":503,"context_line":"            # socket: internal_ip_address + internal_port"},{"line_number":504,"context_line":"            if all([obj.internal_port_id \u003d\u003d pf_obj.internal_port_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_67fb0747","line":501,"in_reply_to":"bf51134e_889c8e0e","updated":"2020-07-19 13:33:12.000000000","message":"Ah. Not a problem!\nDone.","commit_id":"76c25df66582607408d67393869ecbc3ede97966"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"70a5374066e71e2c6f3d79162a5f783ef1841f39","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     msg\u003dmessage)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _check_port_forwarding_update(self, context, pf_obj):"},{"line_number":471,"context_line":"        def _check_port_forwarding_update_failed(conflict):"},{"line_number":472,"context_line":"            message \u003d _(\"Another port forwarding entry with the same \""},{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_d5eefd86","line":471,"range":{"start_line":471,"start_character":13,"end_line":471,"end_character":18},"updated":"2020-07-27 15:04:33.000000000","message":"nit: should be raise","commit_id":"f3797403486ba43100ff9ec8917d38c8723e12b2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"6eab11e0db0eec71bec5c51c944976bec529d979","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     msg\u003dmessage)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _check_port_forwarding_update(self, context, pf_obj):"},{"line_number":471,"context_line":"        def _check_port_forwarding_update_failed(conflict):"},{"line_number":472,"context_line":"            message \u003d _(\"Another port forwarding entry with the same \""},{"line_number":473,"context_line":"                        \"attributes already exists, conflicting \""},{"line_number":474,"context_line":"                        \"values are %s\") % conflict"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_17c4595e","line":471,"range":{"start_line":471,"start_character":13,"end_line":471,"end_character":18},"in_reply_to":"9f560f44_d5eefd86","updated":"2020-08-05 21:26:09.000000000","message":"yes! will rename it.","commit_id":"f3797403486ba43100ff9ec8917d38c8723e12b2"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"70a5374066e71e2c6f3d79162a5f783ef1841f39","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            if str(pf_obj.internal_ip_address) \u003d\u003d fixed_ip[\u0027ip_address\u0027]:"},{"line_number":481,"context_line":"                break"},{"line_number":482,"context_line":"        else:"},{"line_number":483,"context_line":"            # Reached end of internal_port iteration w/out finding fixed_ip"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""},{"line_number":485,"context_line":"                        \"address on the internal port, which has \""},{"line_number":486,"context_line":"                        \"fixed_ips %s\") % db_port[\u0027fixed_ips\u0027]"},{"line_number":487,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":488,"context_line":"                                     msg\u003dmessage)"},{"line_number":489,"context_line":"        objs \u003d pf.PortForwarding.get_objects("},{"line_number":490,"context_line":"            context,"},{"line_number":491,"context_line":"            floatingip_id\u003dpf_obj.floatingip_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_f59ea105","line":488,"range":{"start_line":483,"start_character":12,"end_line":488,"end_character":49},"updated":"2020-07-27 15:04:33.000000000","message":"These line can be merged to line 471?","commit_id":"f3797403486ba43100ff9ec8917d38c8723e12b2"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"6eab11e0db0eec71bec5c51c944976bec529d979","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            if str(pf_obj.internal_ip_address) \u003d\u003d fixed_ip[\u0027ip_address\u0027]:"},{"line_number":481,"context_line":"                break"},{"line_number":482,"context_line":"        else:"},{"line_number":483,"context_line":"            # Reached end of internal_port iteration w/out finding fixed_ip"},{"line_number":484,"context_line":"            message \u003d _(\"The internal IP does not correspond to an \""},{"line_number":485,"context_line":"                        \"address on the internal port, which has \""},{"line_number":486,"context_line":"                        \"fixed_ips %s\") % db_port[\u0027fixed_ips\u0027]"},{"line_number":487,"context_line":"            raise lib_exc.BadRequest(resource\u003dapidef.RESOURCE_NAME,"},{"line_number":488,"context_line":"                                     msg\u003dmessage)"},{"line_number":489,"context_line":"        objs \u003d pf.PortForwarding.get_objects("},{"line_number":490,"context_line":"            context,"},{"line_number":491,"context_line":"            floatingip_id\u003dpf_obj.floatingip_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_57a7f1bd","line":488,"range":{"start_line":483,"start_character":12,"end_line":488,"end_character":49},"in_reply_to":"9f560f44_f59ea105","updated":"2020-08-05 21:26:09.000000000","message":"There is nothing really to merge. It is basically a different message and the raise invocation. The message takes all the lines. :^)","commit_id":"f3797403486ba43100ff9ec8917d38c8723e12b2"}],"neutron/tests/unit/services/portforwarding/test_pf_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"35a9b90edb1114499c5274aefc7b52a45fcf0a0c","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        pf_obj \u003d mock.Mock(id\u003d\u0027pf_obj_id\u0027, internal_port_id\u003d\u0027int_port_id\u0027,"},{"line_number":225,"context_line":"                           internal_ip_address\u003d\"99.99.99.99\")"},{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            self.pf_plugin._check_port_forwarding_update(self.ctxt, pf_obj)"},{"line_number":228,"context_line":"            self.assertFalse(True, \u0027Should have failed: internal_addr\u0027)"},{"line_number":229,"context_line":"        except lib_exc.BadRequest as e:"},{"line_number":230,"context_line":"            self.assertIn(\u0027internal ip address is not valid\u0027, e.msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_4878b68e","line":227,"updated":"2020-06-29 14:10:01.000000000","message":"Can you wrap this in a self.assertRaises() like L166 ?  Same below","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"d2d1f8011d288d5055eda9df1583b6c59630caf6","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        pf_obj \u003d mock.Mock(id\u003d\u0027pf_obj_id\u0027, internal_port_id\u003d\u0027int_port_id\u0027,"},{"line_number":225,"context_line":"                           internal_ip_address\u003d\"99.99.99.99\")"},{"line_number":226,"context_line":"        try:"},{"line_number":227,"context_line":"            self.pf_plugin._check_port_forwarding_update(self.ctxt, pf_obj)"},{"line_number":228,"context_line":"            self.assertFalse(True, \u0027Should have failed: internal_addr\u0027)"},{"line_number":229,"context_line":"        except lib_exc.BadRequest as e:"},{"line_number":230,"context_line":"            self.assertIn(\u0027internal ip address is not valid\u0027, e.msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_7b3902f0","line":227,"in_reply_to":"bf51134e_4878b68e","updated":"2020-06-29 16:37:54.000000000","message":"Done.\nI need to check the message in the exception to make\nsure this is the expected test case, so I\u0027m not sure\nit is a lot better. Lmk what you think.","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"35a9b90edb1114499c5274aefc7b52a45fcf0a0c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        mock_get_port.return_value \u003d port_dict"},{"line_number":240,"context_line":"        pf_obj_dict \u003d {\u0027id\u0027: \u0027pf_obj_one\u0027,"},{"line_number":241,"context_line":"                       \u0027floating_ip_address\u0027: \u0027same_fip_addr\u0027,"},{"line_number":242,"context_line":"                       \u0027external_port\u0027: \u0027same_ext_prt\u0027}"},{"line_number":243,"context_line":"        other_pf_obj \u003d mock.Mock(**pf_obj_dict)"},{"line_number":244,"context_line":"        pf_obj_dict.update(id\u003d\u0027pf_obj_two\u0027, internal_ip_address\u003d\u002710.0.0.1\u0027)"},{"line_number":245,"context_line":"        pf_obj \u003d mock.Mock(**pf_obj_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_28a0e2f3","line":242,"range":{"start_line":242,"start_character":50,"end_line":242,"end_character":53},"updated":"2020-06-29 14:10:01.000000000","message":"nit: s/port - i\u0027m guessing there was a line length issue that had you shorten it by one char?","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"d2d1f8011d288d5055eda9df1583b6c59630caf6","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        mock_get_port.return_value \u003d port_dict"},{"line_number":240,"context_line":"        pf_obj_dict \u003d {\u0027id\u0027: \u0027pf_obj_one\u0027,"},{"line_number":241,"context_line":"                       \u0027floating_ip_address\u0027: \u0027same_fip_addr\u0027,"},{"line_number":242,"context_line":"                       \u0027external_port\u0027: \u0027same_ext_prt\u0027}"},{"line_number":243,"context_line":"        other_pf_obj \u003d mock.Mock(**pf_obj_dict)"},{"line_number":244,"context_line":"        pf_obj_dict.update(id\u003d\u0027pf_obj_two\u0027, internal_ip_address\u003d\u002710.0.0.1\u0027)"},{"line_number":245,"context_line":"        pf_obj \u003d mock.Mock(**pf_obj_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_3b7b0af5","line":242,"range":{"start_line":242,"start_character":50,"end_line":242,"end_character":53},"in_reply_to":"bf51134e_28a0e2f3","updated":"2020-06-29 16:37:54.000000000","message":"heh, I think I had a copy and paste situation here. ;) Let me put that \u0027o\u0027 back. ;)","commit_id":"07a9cfff83d7bea93df67faadbc74c3d8fd0b657"}]}
