)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"289006bb8bf0d9be7bd871c06cf3bc821bf80f84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c3876ef4_196cf529","updated":"2023-06-13 19:14:38.000000000","message":"I guess the other option is to disassociate the floating IP from the old fixed IP? The API doesn\u0027t actually define what happens in this case, so I\u0027m not sure generating an error is correct as it changes the API behavior.","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cdc223c115d4c246a3ce3aac699bde94f1e641cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"99be3493_9f71ab6f","updated":"2023-06-16 07:21:53.000000000","message":"thanks for working on this, please consider Brian\u0027s comments and fix the pep8 issues.","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":36083,"name":"Nikita Kushnarenko","display_name":"Nikita Kushnarenko","email":"NKushnarenko@itkey.com","username":"NickKush"},"change_message_id":"b38a7c94473919bd1ef078fce005d1a8d8968bb5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"019f79f6_00131d6b","in_reply_to":"c3876ef4_196cf529","updated":"2023-06-23 18:29:56.000000000","message":"I wasn\u0027t sure what behavior would be better in that case. \nThe problem is that this behavior remain silent, maybe we should remove fixed-ip from FIP straightaway...","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"f7d6d7c4a2b11743812be841cb3f3dca0588409e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4e56a0b8_a712e5f8","updated":"2023-06-27 03:00:39.000000000","message":"It loos good!\nI have one comment: maybe we could raise an error when deleting/changing the fixed IP which linked to a FIP in ml2/plugin.","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4982f0eca2bc372e7c3435ba384d7a4a04ba48cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f57f3255_fae6e73c","updated":"2023-06-27 09:13:04.000000000","message":"please fix the static code check errors (pep8 job, you can run it locally also with tox -epep8)","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"289006bb8bf0d9be7bd871c06cf3bc821bf80f84","unresolved":true,"context_lines":[{"line_number":1559,"context_line":""},{"line_number":1560,"context_line":"            if fip_exists:"},{"line_number":1561,"context_line":"                err_msg \u003d _(\"Unable to complete operation on port. \""},{"line_number":1562,"context_line":"                \"Port has fixed ip that attached to floating ip\")"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"                raise exc.BadRequest("},{"line_number":1565,"context_line":"                    resource\u003dport_def.RESOURCE_NAME,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6b903a13_8afd036e","line":1562,"updated":"2023-06-13 19:14:38.000000000","message":"I think a shorter message works better, something like\n\n\"Port has floating IP associated\"","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":36083,"name":"Nikita Kushnarenko","display_name":"Nikita Kushnarenko","email":"NKushnarenko@itkey.com","username":"NickKush"},"change_message_id":"b38a7c94473919bd1ef078fce005d1a8d8968bb5","unresolved":false,"context_lines":[{"line_number":1559,"context_line":""},{"line_number":1560,"context_line":"            if fip_exists:"},{"line_number":1561,"context_line":"                err_msg \u003d _(\"Unable to complete operation on port. \""},{"line_number":1562,"context_line":"                \"Port has fixed ip that attached to floating ip\")"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"                raise exc.BadRequest("},{"line_number":1565,"context_line":"                    resource\u003dport_def.RESOURCE_NAME,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4f00ca9c_7f6e1e4a","line":1562,"in_reply_to":"6b903a13_8afd036e","updated":"2023-06-23 18:29:56.000000000","message":"Changed message a little","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"289006bb8bf0d9be7bd871c06cf3bc821bf80f84","unresolved":true,"context_lines":[{"line_number":1562,"context_line":"                \"Port has fixed ip that attached to floating ip\")"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"                raise exc.BadRequest("},{"line_number":1565,"context_line":"                    resource\u003dport_def.RESOURCE_NAME,"},{"line_number":1566,"context_line":"                    msg\u003derr_msg"},{"line_number":1567,"context_line":"                )"},{"line_number":1568,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ae943f4a_0a07eac4","line":1565,"range":{"start_line":1565,"start_character":20,"end_line":1565,"end_character":51},"updated":"2023-06-13 19:14:38.000000000","message":"To be consistent with the other use in this file below, should be\n\nresource\u003d\u0027ports\u0027\n\nThe resource_name is singular.","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":36083,"name":"Nikita Kushnarenko","display_name":"Nikita Kushnarenko","email":"NKushnarenko@itkey.com","username":"NickKush"},"change_message_id":"b38a7c94473919bd1ef078fce005d1a8d8968bb5","unresolved":false,"context_lines":[{"line_number":1562,"context_line":"                \"Port has fixed ip that attached to floating ip\")"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"                raise exc.BadRequest("},{"line_number":1565,"context_line":"                    resource\u003dport_def.RESOURCE_NAME,"},{"line_number":1566,"context_line":"                    msg\u003derr_msg"},{"line_number":1567,"context_line":"                )"},{"line_number":1568,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c886910b_9c06aa04","line":1565,"range":{"start_line":1565,"start_character":20,"end_line":1565,"end_character":51},"in_reply_to":"ae943f4a_0a07eac4","updated":"2023-06-23 18:29:56.000000000","message":"Change it to be more consistent. Thank you!","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"289006bb8bf0d9be7bd871c06cf3bc821bf80f84","unresolved":true,"context_lines":[{"line_number":1588,"context_line":"        # Check if fixed ip allocated in FIP while being deleted"},{"line_number":1589,"context_line":"        if \u0027fixed_ips\u0027 in new_port:"},{"line_number":1590,"context_line":"            new_fixed_ips \u003d set(port[\u0027ip_address\u0027] for port in new_port[\u0027fixed_ips\u0027] if \u0027ip_address\u0027 in port)"},{"line_number":1591,"context_line":"            db_fixed_ips \u003d set(port.ip_address for port in db_port.fixed_ips)"},{"line_number":1592,"context_line":"            deleted_fixed_ips \u003d db_fixed_ips.difference(new_fixed_ips)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"            if deleted_fixed_ips:"}],"source_content_type":"text/x-python","patch_set":4,"id":"2c2f0027_83b73bde","line":1591,"updated":"2023-06-13 19:14:38.000000000","message":"If we only care about floating IPs, the above code should filter based on IPv4.","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":36083,"name":"Nikita Kushnarenko","display_name":"Nikita Kushnarenko","email":"NKushnarenko@itkey.com","username":"NickKush"},"change_message_id":"b38a7c94473919bd1ef078fce005d1a8d8968bb5","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"        # Check if fixed ip allocated in FIP while being deleted"},{"line_number":1589,"context_line":"        if \u0027fixed_ips\u0027 in new_port:"},{"line_number":1590,"context_line":"            new_fixed_ips \u003d set(port[\u0027ip_address\u0027] for port in new_port[\u0027fixed_ips\u0027] if \u0027ip_address\u0027 in port)"},{"line_number":1591,"context_line":"            db_fixed_ips \u003d set(port.ip_address for port in db_port.fixed_ips)"},{"line_number":1592,"context_line":"            deleted_fixed_ips \u003d db_fixed_ips.difference(new_fixed_ips)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"            if deleted_fixed_ips:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba660f00_6fb45030","line":1591,"in_reply_to":"2c2f0027_83b73bde","updated":"2023-06-23 18:29:56.000000000","message":"Added check for v4. Should be fine now","commit_id":"9e260dd8baa201dc22e6e25e4f26b73ac7ebc0ba"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"23726a4fef00bc4916079137add701c8b7e5e7c1","unresolved":true,"context_lines":[{"line_number":1581,"context_line":"            self._check_mac_addr_update(context, db_port,"},{"line_number":1582,"context_line":"                                        new_mac, current_owner)"},{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"        # Check if fixed ip allocated in FIP while being deleted"},{"line_number":1585,"context_line":"        if \u0027fixed_ips\u0027 in new_port:"},{"line_number":1586,"context_line":"            new_fixed_ips \u003d set("},{"line_number":1587,"context_line":"                port[\u0027ip_address\u0027] for port in new_port[\u0027fixed_ips\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"8a1010d1_67f9cd74","line":1584,"range":{"start_line":1584,"start_character":8,"end_line":1584,"end_character":64},"updated":"2023-06-21 13:35:57.000000000","message":"Instead of creating this check here, this should be addressed in the L3 module, more specifically in the ``L3_NAT_dbonly_mixin`` class, using the event PRECOMMIT_UPDATE for ports.","commit_id":"b8c8cb7bb2afb7bf82cf25fb662aa236ab6f9fe5"},{"author":{"_account_id":36083,"name":"Nikita Kushnarenko","display_name":"Nikita Kushnarenko","email":"NKushnarenko@itkey.com","username":"NickKush"},"change_message_id":"f2e55f58b108628a615a054c0ce68745ecb70dd7","unresolved":false,"context_lines":[{"line_number":1581,"context_line":"            self._check_mac_addr_update(context, db_port,"},{"line_number":1582,"context_line":"                                        new_mac, current_owner)"},{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"        # Check if fixed ip allocated in FIP while being deleted"},{"line_number":1585,"context_line":"        if \u0027fixed_ips\u0027 in new_port:"},{"line_number":1586,"context_line":"            new_fixed_ips \u003d set("},{"line_number":1587,"context_line":"                port[\u0027ip_address\u0027] for port in new_port[\u0027fixed_ips\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5667ae7f_64555098","line":1584,"range":{"start_line":1584,"start_character":8,"end_line":1584,"end_character":64},"in_reply_to":"8a1010d1_67f9cd74","updated":"2023-06-23 18:31:12.000000000","message":"Agree, moved this check in l3 module. Thank you!","commit_id":"b8c8cb7bb2afb7bf82cf25fb662aa236ab6f9fe5"}],"neutron/db/l3_db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"293f479d57301570b95e3756ba359cd54ceda32e","unresolved":true,"context_lines":[{"line_number":1681,"context_line":"        deleted_fixed_ips \u003d original_fixed_ips - updated_fixed_ips"},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":"        for ip in deleted_fixed_ips:"},{"line_number":1684,"context_line":"            fip_exists \u003d l3_obj.FloatingIP.objects_exist("},{"line_number":1685,"context_line":"                payload.context.elevated(),"},{"line_number":1686,"context_line":"                fixed_port_id\u003dport_original[\u0027id\u0027],"},{"line_number":1687,"context_line":"                fixed_ip_address\u003dnetaddr.IPAddress(ip)"},{"line_number":1688,"context_line":"            )"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"            if fip_exists:"},{"line_number":1691,"context_line":"                msg \u003d _(\"Port\u0027s fixed ip has Floating IP associated\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"783fad31_d97d8edb","line":1688,"range":{"start_line":1684,"start_character":12,"end_line":1688,"end_character":13},"updated":"2023-07-06 15:44:07.000000000","message":"Instead of making a call per IP address, collect all of them and make a single \"objects_exist\" call with\n```\n  fixed_ip_addresses\u003d[netaddr.IPAddress(ip) for ip in deleted_fixed_ips]\n```","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"293f479d57301570b95e3756ba359cd54ceda32e","unresolved":true,"context_lines":[{"line_number":1688,"context_line":"            )"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"            if fip_exists:"},{"line_number":1691,"context_line":"                msg \u003d _(\"Port\u0027s fixed ip has Floating IP associated\")"},{"line_number":1692,"context_line":"                raise n_exc.BadRequest(resource\u003d\u0027ports\u0027, msg\u003dmsg)"},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"    def _delete_floatingip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"78efe651_558ef8b5","line":1691,"range":{"start_line":1691,"start_character":45,"end_line":1691,"end_character":56},"updated":"2023-07-06 15:44:07.000000000","message":"a floating IP","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"293f479d57301570b95e3756ba359cd54ceda32e","unresolved":true,"context_lines":[{"line_number":1688,"context_line":"            )"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"            if fip_exists:"},{"line_number":1691,"context_line":"                msg \u003d _(\"Port\u0027s fixed ip has Floating IP associated\")"},{"line_number":1692,"context_line":"                raise n_exc.BadRequest(resource\u003d\u0027ports\u0027, msg\u003dmsg)"},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"    def _delete_floatingip(self, context, id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"e7b76737_b051f5fb","line":1691,"range":{"start_line":1691,"start_character":38,"end_line":1691,"end_character":40},"updated":"2023-07-06 15:44:07.000000000","message":"s/ip/IP","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"293f479d57301570b95e3756ba359cd54ceda32e","unresolved":true,"context_lines":[{"line_number":1469,"context_line":"                { \u0027ip_address\u0027: \u002710.0.0.11\u0027},"},{"line_number":1470,"context_line":"                { \u0027ip_address\u0027: \u002710.0.0.12\u0027}]}}"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            self._update(\u0027ports\u0027, port_id, data, expected_code\u003dwebob.exc.HTTPBadRequest.code)"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    def test_update_non_existent_port(self):"},{"line_number":1475,"context_line":"        ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":9,"id":"f80b8224_9c8e3c87","line":1472,"range":{"start_line":1472,"start_character":12,"end_line":1472,"end_character":93},"updated":"2023-07-06 15:44:07.000000000","message":"Check the same but just adding and removing a fixed IP address *not* associated to the FIP.","commit_id":"2cb976755494d00ef81b2b29ff1a6e3e575ae70b"}]}
