)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"6483315327f1269c0530877040efbaf2d1f29357","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Fernando Royo \u003cfroyo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-06-08 11:51:05 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve response time for subnet creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When several subnets are created over the same network"},{"line_number":10,"context_line":"the reponse time is linearly increased as the total"},{"line_number":11,"context_line":"subnets increases."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch improves some methods called during subnet"},{"line_number":14,"context_line":"CRUD in order to reduce number of requests to DB."},{"line_number":15,"context_line":"Especially when it comes to subnets under the same network."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1977831"},{"line_number":18,"context_line":"Change-Id: I0fccf36a2035e8f6c2fa8dab0307358da600c8f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"44571787_715a5093","line":15,"range":{"start_line":7,"start_character":0,"end_line":15,"end_character":59},"updated":"2022-06-09 22:56:21.000000000","message":"I may be missing something, but I don\u0027t think this commit message reflects what is being done in the patch. If I\u0027m understanding correctly, this patch optimizes the querying of subnets for port create and update operations, presumably in the case where a network has a high number of subnets. Or am I missing somehting?\n\nIf my understanding is correct, then, for the sake of future Neutron developers trying to understand what we did in 2022, this commit message should be updated. Also, maybe the description of the problem in the Launchpad bug should be updated.\n\nOther than that, the patch seems fine\n\nAm I misunderstanding something?","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"d2b44cf24044a3860738cefdcea3509c63b54fd5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Fernando Royo \u003cfroyo@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-06-08 11:51:05 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve response time for subnet creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When several subnets are created over the same network"},{"line_number":10,"context_line":"the reponse time is linearly increased as the total"},{"line_number":11,"context_line":"subnets increases."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch improves some methods called during subnet"},{"line_number":14,"context_line":"CRUD in order to reduce number of requests to DB."},{"line_number":15,"context_line":"Especially when it comes to subnets under the same network."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1977831"},{"line_number":18,"context_line":"Change-Id: I0fccf36a2035e8f6c2fa8dab0307358da600c8f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"70bdb109_9b4e2757","line":15,"range":{"start_line":7,"start_character":0,"end_line":15,"end_character":59},"in_reply_to":"44571787_715a5093","updated":"2022-06-13 08:05:23.000000000","message":"No, you are totally right. The issue was identified by the scenario reported in the commit msg, but right, that finally the operation improved has been related to port operations. thx for the proposal","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d8e6ee44_00ed5bd6","updated":"2022-06-07 15:25:52.000000000","message":"You need also to provide some UTs (or FT) testing this new code.","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a62046c0_ea1650dc","in_reply_to":"d8e6ee44_00ed5bd6","updated":"2022-06-08 09:56:36.000000000","message":"Added some UTs to evaluate calls to DB","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fe1445db_f5e8bd34","updated":"2022-06-09 10:53:41.000000000","message":"All comments are nits","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2d99ce22341d218b4ec4bce3f504342dde5d6a86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2b1a49eb_e9c0c341","updated":"2022-06-13 10:41:30.000000000","message":"recheck neutron-functional-with-uwsgi timeout","commit_id":"c25097b0b0da2af9021699036a69cd10e66533b1"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"3557882fc58834f286f260c6b5070557d6680ca2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7909d250_b6b69ca6","updated":"2022-06-13 13:35:05.000000000","message":"recheck neutron-tempest-plugin-openvswitch-iptables_hybrid unrelated","commit_id":"c25097b0b0da2af9021699036a69cd10e66533b1"}],"neutron/objects/subnet.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":364,"context_line":"        :raises: FixedIpsSubnetsNotOnSameSegment"},{"line_number":365,"context_line":"        \"\"\""},{"line_number":366,"context_line":"        segment_ids \u003d []"},{"line_number":367,"context_line":"        subnet_ids \u003d [ip[\u0027subnet_id\u0027] for ip in fixed_ips if \u0027subnet_id\u0027 in ip]"},{"line_number":368,"context_line":"        subnets \u003d query.filter(cls.db_model.id.in_(subnet_ids)).all()"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        for fixed_ip in fixed_ips:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ea1de16_188ce832","line":367,"range":{"start_line":367,"start_character":58,"end_line":367,"end_character":78},"updated":"2022-06-07 15:25:52.000000000","message":"+1, subnet_id is not mandatory in fixed_ips","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        :raises: FixedIpsSubnetsNotOnSameSegment"},{"line_number":365,"context_line":"        \"\"\""},{"line_number":366,"context_line":"        segment_ids \u003d []"},{"line_number":367,"context_line":"        subnet_ids \u003d [ip[\u0027subnet_id\u0027] for ip in fixed_ips if \u0027subnet_id\u0027 in ip]"},{"line_number":368,"context_line":"        subnets \u003d query.filter(cls.db_model.id.in_(subnet_ids)).all()"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        for fixed_ip in fixed_ips:"}],"source_content_type":"text/x-python","patch_set":1,"id":"67a8b698_c79c737e","line":367,"range":{"start_line":367,"start_character":58,"end_line":367,"end_character":78},"in_reply_to":"5ea1de16_188ce832","updated":"2022-06-08 09:56:36.000000000","message":"This is removed in new patch, but yes some UTs revealed to me that this was necessary 😊","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":384,"context_line":"            elif \u0027ip_address\u0027 in fixed_ip:"},{"line_number":385,"context_line":"                ip \u003d netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027])"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"                for s in query.all():"},{"line_number":388,"context_line":"                    if ip in netaddr.IPNetwork(s.cidr):"},{"line_number":389,"context_line":"                        subnet \u003d s"},{"line_number":390,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac81e962_a7e8c733","line":387,"range":{"start_line":387,"start_character":16,"end_line":387,"end_character":36},"updated":"2022-06-07 15:25:52.000000000","message":"We are also executing a query here that could be avoided too.\n\nMy recommendation: to execute query.all() at the beginning of the method (without the filter \"in_(subnet_ids)\"). This query will return all subnets from this network and you will be able to execute current L374 code (same as now) AND use it in L387 too.","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            elif \u0027ip_address\u0027 in fixed_ip:"},{"line_number":385,"context_line":"                ip \u003d netaddr.IPNetwork(fixed_ip[\u0027ip_address\u0027])"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"                for s in query.all():"},{"line_number":388,"context_line":"                    if ip in netaddr.IPNetwork(s.cidr):"},{"line_number":389,"context_line":"                        subnet \u003d s"},{"line_number":390,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":1,"id":"c0da96fa_9b70345d","line":387,"range":{"start_line":387,"start_character":16,"end_line":387,"end_character":36},"in_reply_to":"ac81e962_a7e8c733","updated":"2022-06-08 09:56:36.000000000","message":"good catch!","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                subnets \u003d self._plugin.get_subnets("},{"line_number":301,"context_line":"                    context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":302,"context_line":"            except n_exc.SubnetNotFound:"},{"line_number":303,"context_line":"                LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for ip in ip_subnets:"},{"line_number":306,"context_line":"                ip_addr \u003d ip[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"4d0f078f_54df7a5f","line":303,"range":{"start_line":303,"start_character":65,"end_line":303,"end_character":66},"updated":"2022-06-07 15:25:52.000000000","message":"nit: extra space","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                subnets \u003d self._plugin.get_subnets("},{"line_number":301,"context_line":"                    context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":302,"context_line":"            except n_exc.SubnetNotFound:"},{"line_number":303,"context_line":"                LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for ip in ip_subnets:"},{"line_number":306,"context_line":"                ip_addr \u003d ip[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a85ec7b_fc42f912","line":303,"range":{"start_line":303,"start_character":65,"end_line":303,"end_character":66},"in_reply_to":"4d0f078f_54df7a5f","updated":"2022-06-08 09:56:36.000000000","message":"Done","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":302,"context_line":"            except n_exc.SubnetNotFound:"},{"line_number":303,"context_line":"                LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for ip in ip_subnets:"},{"line_number":306,"context_line":"                ip_addr \u003d ip[\u0027ip_address\u0027]"},{"line_number":307,"context_line":"                address +\u003d \u0027 \u0027 + ip_addr"},{"line_number":308,"context_line":"                subnet \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"06e56197_6ccc8755","line":305,"range":{"start_line":305,"start_character":12,"end_line":305,"end_character":33},"updated":"2022-06-07 15:25:52.000000000","message":"If \"not subnets\", this loop is not necessary.","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            except n_exc.SubnetNotFound:"},{"line_number":303,"context_line":"                LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for ip in ip_subnets:"},{"line_number":306,"context_line":"                ip_addr \u003d ip[\u0027ip_address\u0027]"},{"line_number":307,"context_line":"                address +\u003d \u0027 \u0027 + ip_addr"},{"line_number":308,"context_line":"                subnet \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"e84ba931_ea628da3","line":305,"range":{"start_line":305,"start_character":12,"end_line":305,"end_character":33},"in_reply_to":"06e56197_6ccc8755","updated":"2022-06-08 09:56:36.000000000","message":"Done","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":312,"context_line":"                        sub for sub in subnets if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":313,"context_line":"                    ][0]"},{"line_number":314,"context_line":"                except IndexError:"},{"line_number":315,"context_line":"                    LOG.debug(\u0027Subnet not found for ip address %s\u0027, (ip_addr))"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                if subnet:"},{"line_number":318,"context_line":"                    cidrs +\u003d \u0027 {}/{}\u0027.format(ip[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"85130f0c_3d5a751e","line":315,"range":{"start_line":315,"start_character":20,"end_line":315,"end_character":78},"updated":"2022-06-07 15:25:52.000000000","message":"After this log message, you can \"continue\" because there is nothing to check.","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                        sub for sub in subnets if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":313,"context_line":"                    ][0]"},{"line_number":314,"context_line":"                except IndexError:"},{"line_number":315,"context_line":"                    LOG.debug(\u0027Subnet not found for ip address %s\u0027, (ip_addr))"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                if subnet:"},{"line_number":318,"context_line":"                    cidrs +\u003d \u0027 {}/{}\u0027.format(ip[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2d92459_931d7ceb","line":315,"range":{"start_line":315,"start_character":20,"end_line":315,"end_character":78},"in_reply_to":"85130f0c_3d5a751e","updated":"2022-06-08 09:56:36.000000000","message":"Done","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c7e05cc282f4cd2f8f0919da4217b8be5b82231","unresolved":true,"context_lines":[{"line_number":650,"context_line":"                try:"},{"line_number":651,"context_line":"                    subnets \u003d self._plugin.get_subnets("},{"line_number":652,"context_line":"                        context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":653,"context_line":"                except n_exc.SubnetNotFound:"},{"line_number":654,"context_line":"                    LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"                for subnet in subnets:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a59cf3a_de61d0d2","line":653,"range":{"start_line":653,"start_character":16,"end_line":653,"end_character":44},"updated":"2022-06-07 15:25:52.000000000","message":"\"get_subnets\" do not raise \"SubnetNotFound\"; \"get_subnet\" does\n\nWhat you can do here is iterate over the result, something like:\n\nfor subnet in self._plugin.get_subnets(...):\n   if not subnet[\u0027enable_dhcp\u0027]: ...","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"40c2923f8851416233173856f80260da40109557","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                try:"},{"line_number":651,"context_line":"                    subnets \u003d self._plugin.get_subnets("},{"line_number":652,"context_line":"                        context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":653,"context_line":"                except n_exc.SubnetNotFound:"},{"line_number":654,"context_line":"                    LOG.debug(\"Cannot find subnets for port fixed ips \")"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"                for subnet in subnets:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f187888_eb8e83de","line":653,"range":{"start_line":653,"start_character":16,"end_line":653,"end_character":44},"in_reply_to":"8a59cf3a_de61d0d2","updated":"2022-06-08 09:56:36.000000000","message":"Done","commit_id":"4cf081a622b10ff2335b9461be420af885fec9d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":303,"context_line":"                    address +\u003d \u0027 \u0027 + ip_addr"},{"line_number":304,"context_line":"                    subnet \u003d None"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"                    try:"},{"line_number":307,"context_line":"                        subnet \u003d ["},{"line_number":308,"context_line":"                            sub"},{"line_number":309,"context_line":"                            for sub in subnets"},{"line_number":310,"context_line":"                            if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":311,"context_line":"                        ][0]"},{"line_number":312,"context_line":"                    except IndexError:"},{"line_number":313,"context_line":"                        LOG.debug(\u0027Subnet not found for ip address %s\u0027,"},{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce8ec14b_5f3fdead","line":312,"range":{"start_line":306,"start_character":20,"end_line":312,"end_character":38},"updated":"2022-06-09 10:53:41.000000000","message":"We don\u0027t need to iterate over all subnets to create the list, only to find the first match:\n\ntry:\n  next(s for s in subnets if s[\u0027id\u0027] \u003d\u003d ip[\u0027subnet_id\u0027])\nexcept StopIteration:\n  ...","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                    address +\u003d \u0027 \u0027 + ip_addr"},{"line_number":304,"context_line":"                    subnet \u003d None"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"                    try:"},{"line_number":307,"context_line":"                        subnet \u003d ["},{"line_number":308,"context_line":"                            sub"},{"line_number":309,"context_line":"                            for sub in subnets"},{"line_number":310,"context_line":"                            if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":311,"context_line":"                        ][0]"},{"line_number":312,"context_line":"                    except IndexError:"},{"line_number":313,"context_line":"                        LOG.debug(\u0027Subnet not found for ip address %s\u0027,"},{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"f3157b92_c0d7c008","line":312,"range":{"start_line":306,"start_character":20,"end_line":312,"end_character":38},"in_reply_to":"ce8ec14b_5f3fdead","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":311,"context_line":"                        ][0]"},{"line_number":312,"context_line":"                    except IndexError:"},{"line_number":313,"context_line":"                        LOG.debug(\u0027Subnet not found for ip address %s\u0027,"},{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    if subnet:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d40b2bc0_176b01e2","line":314,"range":{"start_line":314,"start_character":34,"end_line":314,"end_character":43},"updated":"2022-06-09 10:53:41.000000000","message":"unneeded parenthesis","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                        ][0]"},{"line_number":312,"context_line":"                    except IndexError:"},{"line_number":313,"context_line":"                        LOG.debug(\u0027Subnet not found for ip address %s\u0027,"},{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    if subnet:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e80a8650_73ce84ef","line":314,"range":{"start_line":314,"start_character":34,"end_line":314,"end_character":43},"in_reply_to":"d40b2bc0_176b01e2","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    if subnet:"},{"line_number":318,"context_line":"                        cidrs +\u003d \u0027 {}/{}\u0027.format(ip[\u0027ip_address\u0027],"},{"line_number":319,"context_line":"                                                subnet[\u0027cidr\u0027].split(\u0027/\u0027)[1])"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4ae68773_d88f77f2","line":317,"range":{"start_line":317,"start_character":20,"end_line":317,"end_character":30},"updated":"2022-06-09 10:53:41.000000000","message":"The try/catch will guarantee that subnet is something else than None.","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                                  (ip_addr))"},{"line_number":315,"context_line":"                        continue"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"                    if subnet:"},{"line_number":318,"context_line":"                        cidrs +\u003d \u0027 {}/{}\u0027.format(ip[\u0027ip_address\u0027],"},{"line_number":319,"context_line":"                                                subnet[\u0027cidr\u0027].split(\u0027/\u0027)[1])"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f22dd21f_7500955c","line":317,"range":{"start_line":317,"start_character":20,"end_line":317,"end_character":30},"in_reply_to":"4ae68773_d88f77f2","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":642,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":643,"context_line":"                network \u003d self._plugin.get_network(context, port[\u0027network_id\u0027])"},{"line_number":644,"context_line":"                subnet_ids \u003d ["},{"line_number":645,"context_line":"                    _ip[\"subnet_id\"]"},{"line_number":646,"context_line":"                    for _ip in port[\"fixed_ips\"]"},{"line_number":647,"context_line":"                    if \"subnet_id\" in _ip"},{"line_number":648,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"141fb082_cd50cd14","line":645,"range":{"start_line":645,"start_character":24,"end_line":645,"end_character":25},"updated":"2022-06-09 10:53:41.000000000","message":"nit: we use single quotes to limit strings.","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                context \u003d n_context.get_admin_context()"},{"line_number":643,"context_line":"                network \u003d self._plugin.get_network(context, port[\u0027network_id\u0027])"},{"line_number":644,"context_line":"                subnet_ids \u003d ["},{"line_number":645,"context_line":"                    _ip[\"subnet_id\"]"},{"line_number":646,"context_line":"                    for _ip in port[\"fixed_ips\"]"},{"line_number":647,"context_line":"                    if \"subnet_id\" in _ip"},{"line_number":648,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b14f2de_210f30a6","line":645,"range":{"start_line":645,"start_character":24,"end_line":645,"end_character":25},"in_reply_to":"141fb082_cd50cd14","updated":"2022-06-09 11:15:21.000000000","message":"I test \"black\" to format long lines, and it was the culprit ... 😐","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a10940bb2178d9c42d2f71a32e1a854aa3c13130","unresolved":true,"context_lines":[{"line_number":289,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":290,"context_line":"            ]"},{"line_number":291,"context_line":"            subnets \u003d self._plugin.get_subnets("},{"line_number":292,"context_line":"                    context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":293,"context_line":"            if subnets:"},{"line_number":294,"context_line":"                for ip in ip_subnets:"},{"line_number":295,"context_line":"                    ip_addr \u003d ip[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"e5704278_531a847b","line":292,"updated":"2022-06-13 19:55:08.000000000","message":"so IIUC here, as we are making only one DB query, is main improvement in that patch, correct?","commit_id":"c25097b0b0da2af9021699036a69cd10e66533b1"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"897d049e55a94141ba75debe95fd12f0bb59ccc4","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":290,"context_line":"            ]"},{"line_number":291,"context_line":"            subnets \u003d self._plugin.get_subnets("},{"line_number":292,"context_line":"                    context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":293,"context_line":"            if subnets:"},{"line_number":294,"context_line":"                for ip in ip_subnets:"},{"line_number":295,"context_line":"                    ip_addr \u003d ip[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"95432c23_f0427e1b","line":292,"in_reply_to":"e5704278_531a847b","updated":"2022-06-14 06:51:56.000000000","message":"right, replace the request inside de loop for one done outside including all the subnet_ids in the filter. This approach is done in several points inside this file L291 and L643 and similar approach in file subnet.py on L367","commit_id":"c25097b0b0da2af9021699036a69cd10e66533b1"}],"neutron/tests/unit/objects/test_subnet.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":282,"context_line":"        fixed_ips \u003d ["},{"line_number":283,"context_line":"            {\u0027subnet_id\u0027: subnet_data[\u0027id\u0027], \u0027ip_address\u0027: \u002710.0.0.2\u0027},"},{"line_number":284,"context_line":"            {\u0027subnet_id\u0027: subnet2_data[\u0027id\u0027], \u0027ip_address\u0027: \u002710.0.1.2\u0027}]"},{"line_number":285,"context_line":"        candidate_subnet \u003d subnet.Subnet.find_candidate_subnets("},{"line_number":286,"context_line":"            self.context, network[\u0027id\u0027], None, None, True, fixed_ips)"},{"line_number":287,"context_line":"        self.assertEqual(2, len(candidate_subnet))"},{"line_number":288,"context_line":"        self.assertNotEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"ce6b3010_010e1466","line":285,"range":{"start_line":285,"start_character":41,"end_line":285,"end_character":63},"updated":"2022-06-09 10:53:41.000000000","message":"nit: testing should be done on the modified method, in this case \"_query_filter_by_fixed_ips_segment\".","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        fixed_ips \u003d ["},{"line_number":283,"context_line":"            {\u0027subnet_id\u0027: subnet_data[\u0027id\u0027], \u0027ip_address\u0027: \u002710.0.0.2\u0027},"},{"line_number":284,"context_line":"            {\u0027subnet_id\u0027: subnet2_data[\u0027id\u0027], \u0027ip_address\u0027: \u002710.0.1.2\u0027}]"},{"line_number":285,"context_line":"        candidate_subnet \u003d subnet.Subnet.find_candidate_subnets("},{"line_number":286,"context_line":"            self.context, network[\u0027id\u0027], None, None, True, fixed_ips)"},{"line_number":287,"context_line":"        self.assertEqual(2, len(candidate_subnet))"},{"line_number":288,"context_line":"        self.assertNotEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"0137a1a6_355c0629","line":285,"range":{"start_line":285,"start_character":41,"end_line":285,"end_character":63},"in_reply_to":"ce6b3010_010e1466","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":1837,"context_line":"                context.current, context.network.current, mock.ANY)"},{"line_number":1838,"context_line":"            umd.assert_called_once_with(mock.ANY, \u0027id\u0027, subnet\u003dsubnet)"},{"line_number":1839,"context_line":""},{"line_number":1840,"context_line":"    def test__get_port_options_just_one_call_to_db_for_subnets(self):"},{"line_number":1841,"context_line":"        with mock.patch.object(self.mech_driver._plugin, \u0027get_subnets\u0027) as \\"},{"line_number":1842,"context_line":"                mock_get_subnets:"},{"line_number":1843,"context_line":"            port \u003d {\u0027id\u0027: \u0027virt-port\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7e702df3_4a648f36","line":1840,"range":{"start_line":1840,"start_character":30,"end_line":1840,"end_character":62},"updated":"2022-06-09 10:53:41.000000000","message":"not needed, doesn\u0027t describe the test, only the implementation","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":1837,"context_line":"                context.current, context.network.current, mock.ANY)"},{"line_number":1838,"context_line":"            umd.assert_called_once_with(mock.ANY, \u0027id\u0027, subnet\u003dsubnet)"},{"line_number":1839,"context_line":""},{"line_number":1840,"context_line":"    def test__get_port_options_just_one_call_to_db_for_subnets(self):"},{"line_number":1841,"context_line":"        with mock.patch.object(self.mech_driver._plugin, \u0027get_subnets\u0027) as \\"},{"line_number":1842,"context_line":"                mock_get_subnets:"},{"line_number":1843,"context_line":"            port \u003d {\u0027id\u0027: \u0027virt-port\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1849b65f_f291954c","line":1840,"range":{"start_line":1840,"start_character":30,"end_line":1840,"end_character":62},"in_reply_to":"7e702df3_4a648f36","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":1859,"context_line":"                mock.ANY,"},{"line_number":1860,"context_line":"                filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"    def test_update_port_just_one_call_to_db_for_subnets(self):"},{"line_number":1863,"context_line":"        with mock.patch.object("},{"line_number":1864,"context_line":"                self.mech_driver._ovn_client, \u0027is_metadata_port\u0027) as \\"},{"line_number":1865,"context_line":"                mock_is_metadata_port, \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"c1832e0c_8552e3a8","line":1862,"range":{"start_line":1862,"start_character":30,"end_line":1862,"end_character":56},"updated":"2022-06-09 10:53:41.000000000","message":"ditto","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":1859,"context_line":"                mock.ANY,"},{"line_number":1860,"context_line":"                filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"    def test_update_port_just_one_call_to_db_for_subnets(self):"},{"line_number":1863,"context_line":"        with mock.patch.object("},{"line_number":1864,"context_line":"                self.mech_driver._ovn_client, \u0027is_metadata_port\u0027) as \\"},{"line_number":1865,"context_line":"                mock_is_metadata_port, \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"c1b0d157_b4c787de","line":1862,"range":{"start_line":1862,"start_character":30,"end_line":1862,"end_character":56},"in_reply_to":"c1832e0c_8552e3a8","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad20578dd6a3393aa8c2a9b10edad5c3b8efcbd4","unresolved":true,"context_lines":[{"line_number":1886,"context_line":"            subnet_ids \u003d ["},{"line_number":1887,"context_line":"                ip[\u0027subnet_id\u0027]"},{"line_number":1888,"context_line":"                for ip in port.get(\u0027fixed_ips\u0027, [])"},{"line_number":1889,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":1890,"context_line":"            ]"},{"line_number":1891,"context_line":""},{"line_number":1892,"context_line":"            mock_is_metadata_port.return_value \u003d [True]"}],"source_content_type":"text/x-python","patch_set":2,"id":"c35f5f52_6690bd65","line":1889,"range":{"start_line":1889,"start_character":16,"end_line":1889,"end_character":36},"updated":"2022-06-09 10:53:41.000000000","message":"you are creating this port, you know subnet_id is in the fixed_ips","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2cfc061d958339d581bf22979d0d7084b6a55f4b","unresolved":false,"context_lines":[{"line_number":1886,"context_line":"            subnet_ids \u003d ["},{"line_number":1887,"context_line":"                ip[\u0027subnet_id\u0027]"},{"line_number":1888,"context_line":"                for ip in port.get(\u0027fixed_ips\u0027, [])"},{"line_number":1889,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":1890,"context_line":"            ]"},{"line_number":1891,"context_line":""},{"line_number":1892,"context_line":"            mock_is_metadata_port.return_value \u003d [True]"}],"source_content_type":"text/x-python","patch_set":2,"id":"33461480_cb051cbe","line":1889,"range":{"start_line":1889,"start_character":16,"end_line":1889,"end_character":36},"in_reply_to":"c35f5f52_6690bd65","updated":"2022-06-09 11:15:21.000000000","message":"Ack","commit_id":"b004991a693b31aa0e845f6badb09af77fa00ee5"}]}
