)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"837910cabdc677347f2c9cae51b46fe1a1379100","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"OVN creates localport [1] for each network that has metadata"},{"line_number":10,"context_line":"and allocate IP address from subnet within this network that has"},{"line_number":11,"context_line":"DHCP enabled. The traffic from this port will never go outside"},{"line_number":12,"context_line":"the chassis."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"While using multiple segments with subnet linked to each segment"},{"line_number":15,"context_line":"OVN needs to create an allocation of IP address for each of those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f493fa4_ac76ef3c","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":11},"updated":"2020-04-29 14:00:45.000000000","message":"What happens when replying to a external port?","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"6ca8c48a194bf4f339d64ff0fc58b5127223547d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"OVN creates localport [1] for each network that has metadata"},{"line_number":10,"context_line":"and allocate IP address from subnet within this network that has"},{"line_number":11,"context_line":"DHCP enabled. The traffic from this port will never go outside"},{"line_number":12,"context_line":"the chassis."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"While using multiple segments with subnet linked to each segment"},{"line_number":15,"context_line":"OVN needs to create an allocation of IP address for each of those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f493fa4_6d65e5b4","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":11},"in_reply_to":"1f493fa4_ac76ef3c","updated":"2020-04-30 13:33:27.000000000","message":"Good question. I\u0027ll need to ask someone from Core OVN team because its not clearly said in the documentation.","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a748fc99c191792ab1e3aaf66b6b275b3bc8be92","unresolved":false,"context_lines":[{"line_number":718,"context_line":"                ovn_service_port \u003d ("},{"line_number":719,"context_line":"                    old_port_db.get(\u0027device_owner\u0027) \u003d\u003d \u0027network:dhcp\u0027 and"},{"line_number":720,"context_line":"                    old_port_db.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":721,"context_line":"                distributed_service \u003d True if ovn_service_port else False"},{"line_number":722,"context_line":"                valid_subnets \u003d self._ipam_get_subnets("},{"line_number":723,"context_line":"                    context, old_port[\u0027network_id\u0027], host,"},{"line_number":724,"context_line":"                    service_type\u003dold_port.get(\u0027device_owner\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_470254b6","line":721,"updated":"2020-04-21 15:02:27.000000000","message":"pep8: R1719: The if expression can be replaced with \u0027bool(test)\u0027 (simplifiable-if-expression)","commit_id":"192a1f67e70625f3e346e56cc15ac41ceacf5b76"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4169238b664bae17b77b2b0cad4d593ccbddebdd","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    old_port_db.get(\u0027device_owner\u0027) \u003d\u003d"},{"line_number":726,"context_line":"                    const.DEVICE_OWNER_DHCP and"},{"line_number":727,"context_line":"                    old_port_db.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":728,"context_line":"                distributed_service \u003d ovn_service_port or False"},{"line_number":729,"context_line":"                valid_subnets \u003d self._ipam_get_subnets("},{"line_number":730,"context_line":"                    context, old_port[\u0027network_id\u0027], host,"},{"line_number":731,"context_line":"                    service_type\u003dold_port.get(\u0027device_owner\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_43f63a65","line":728,"updated":"2020-04-28 09:29:45.000000000","message":"I don\u0027t understand why this line is needed. \"ovn_service_port\" defined above will always be True or False, right? Or am I missing something?","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f93b5c6b7f07ab6137199f0dde48828d41c81124","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                    old_port_db.get(\u0027device_owner\u0027) \u003d\u003d"},{"line_number":726,"context_line":"                    const.DEVICE_OWNER_DHCP and"},{"line_number":727,"context_line":"                    old_port_db.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":728,"context_line":"                distributed_service \u003d ovn_service_port or False"},{"line_number":729,"context_line":"                valid_subnets \u003d self._ipam_get_subnets("},{"line_number":730,"context_line":"                    context, old_port[\u0027network_id\u0027], host,"},{"line_number":731,"context_line":"                    service_type\u003dold_port.get(\u0027device_owner\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_58862015","line":728,"in_reply_to":"1f493fa4_43f63a65","updated":"2020-04-28 14:22:31.000000000","message":"Yes. To be deleted. Thanks","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"837910cabdc677347f2c9cae51b46fe1a1379100","unresolved":false,"context_lines":[{"line_number":721,"context_line":"            # Check that any existing IPs are valid on the new segment"},{"line_number":722,"context_line":"            new_host_requested \u003d host and host !\u003d old_host"},{"line_number":723,"context_line":"            if old_ips and new_host_requested and not fixed_ips_requested:"},{"line_number":724,"context_line":"                distributed_service \u003d ("},{"line_number":725,"context_line":"                    old_port_db.get(\u0027device_owner\u0027) \u003d\u003d"},{"line_number":726,"context_line":"                    const.DEVICE_OWNER_DHCP and"},{"line_number":727,"context_line":"                    old_port_db.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":728,"context_line":"                valid_subnets \u003d self._ipam_get_subnets("},{"line_number":729,"context_line":"                    context, old_port[\u0027network_id\u0027], host,"},{"line_number":730,"context_line":"                    service_type\u003dold_port.get(\u0027device_owner\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_b8aaa515","line":727,"range":{"start_line":724,"start_character":16,"end_line":727,"end_character":67},"updated":"2020-04-29 14:00:45.000000000","message":"1) I would like someone else to review this change. Those kind of exceptions should be generally approved and **documented**.\n\n2) Because you are using the same logic the three times \"_ipam_get_subnets\" is called, I would suggest to move this logic to \"ipam_pluggable_backend.py\" and create a method.","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"6ca8c48a194bf4f339d64ff0fc58b5127223547d","unresolved":false,"context_lines":[{"line_number":721,"context_line":"            # Check that any existing IPs are valid on the new segment"},{"line_number":722,"context_line":"            new_host_requested \u003d host and host !\u003d old_host"},{"line_number":723,"context_line":"            if old_ips and new_host_requested and not fixed_ips_requested:"},{"line_number":724,"context_line":"                distributed_service \u003d ("},{"line_number":725,"context_line":"                    old_port_db.get(\u0027device_owner\u0027) \u003d\u003d"},{"line_number":726,"context_line":"                    const.DEVICE_OWNER_DHCP and"},{"line_number":727,"context_line":"                    old_port_db.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":728,"context_line":"                valid_subnets \u003d self._ipam_get_subnets("},{"line_number":729,"context_line":"                    context, old_port[\u0027network_id\u0027], host,"},{"line_number":730,"context_line":"                    service_type\u003dold_port.get(\u0027device_owner\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_ed70d574","line":727,"range":{"start_line":724,"start_character":16,"end_line":727,"end_character":67},"in_reply_to":"1f493fa4_b8aaa515","updated":"2020-04-30 13:33:27.000000000","message":"1) Aight! Sure, its gonna be documented with this patch.\n\n2) yes, that is good idea, let me do this.","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"}],"neutron/db/ipam_pluggable_backend.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89221dd93de43cd22252606f5b049400e32cd805","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                                         service_type\u003dp.get(\u0027device_owner\u0027),"},{"line_number":244,"context_line":"                                         fixed_configured\u003dfixed_configured,"},{"line_number":245,"context_line":"                                         fixed_ips\u003dfixed_ips,"},{"line_number":246,"context_line":"                                         distributed_service\u003ddistributed_service)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        v4, v6_stateful, v6_stateless \u003d self._classify_subnets("},{"line_number":249,"context_line":"            context, subnets)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_5263e71a","line":246,"updated":"2020-04-16 20:43:29.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"ba8b9d83a2921428531f0c1daea07de7b57f99f5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89221dd93de43cd22252606f5b049400e32cd805","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                context, network_id\u003dport[\u0027network_id\u0027], host\u003dhost,"},{"line_number":361,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"},{"line_number":362,"context_line":"                fixed_ips\u003dchanges.add + changes.original,"},{"line_number":363,"context_line":"\t\tdistributed_service\u003ddistributed_service)"},{"line_number":364,"context_line":"        except ipam_exc.DeferIpam:"},{"line_number":365,"context_line":"            subnets \u003d []"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_32661b2b","line":363,"updated":"2020-04-16 20:43:29.000000000","message":"pep8: E101 indentation contains mixed spaces and tabs","commit_id":"ba8b9d83a2921428531f0c1daea07de7b57f99f5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89221dd93de43cd22252606f5b049400e32cd805","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                context, network_id\u003dport[\u0027network_id\u0027], host\u003dhost,"},{"line_number":361,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"},{"line_number":362,"context_line":"                fixed_ips\u003dchanges.add + changes.original,"},{"line_number":363,"context_line":"\t\tdistributed_service\u003ddistributed_service)"},{"line_number":364,"context_line":"        except ipam_exc.DeferIpam:"},{"line_number":365,"context_line":"            subnets \u003d []"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_926d6f06","line":363,"updated":"2020-04-16 20:43:29.000000000","message":"pep8: W191 indentation contains tabs","commit_id":"ba8b9d83a2921428531f0c1daea07de7b57f99f5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"89221dd93de43cd22252606f5b049400e32cd805","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"},{"line_number":362,"context_line":"                fixed_ips\u003dchanges.add + changes.original,"},{"line_number":363,"context_line":"\t\tdistributed_service\u003ddistributed_service)"},{"line_number":364,"context_line":"        except ipam_exc.DeferIpam:"},{"line_number":365,"context_line":"            subnets \u003d []"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # Check if the IP\u0027s to add are OK"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_7270a3dd","line":364,"updated":"2020-04-16 20:43:29.000000000","message":"pep8: E101 indentation contains mixed spaces and tabs","commit_id":"ba8b9d83a2921428531f0c1daea07de7b57f99f5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a748fc99c191792ab1e3aaf66b6b275b3bc8be92","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        ovn_service_port \u003d ("},{"line_number":236,"context_line":"            port.get(\u0027device_owner\u0027) \u003d\u003d \u0027network:dhcp\u0027 and"},{"line_number":237,"context_line":"            port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":238,"context_line":"        distributed_service \u003d True if ovn_service_port else False"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        subnets \u003d self._ipam_get_subnets("},{"line_number":241,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_07f84cc2","line":238,"updated":"2020-04-21 15:02:27.000000000","message":"pep8: R1719: The if expression can be replaced with \u0027bool(test)\u0027 (simplifiable-if-expression)","commit_id":"192a1f67e70625f3e346e56cc15ac41ceacf5b76"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a748fc99c191792ab1e3aaf66b6b275b3bc8be92","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            ovn_service_port \u003d ("},{"line_number":357,"context_line":"                port.get(\u0027device_owner\u0027) \u003d\u003d \u0027network:dhcp\u0027 and"},{"line_number":358,"context_line":"                port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":359,"context_line":"            distributed_service \u003d True if ovn_service_port else False"},{"line_number":360,"context_line":"            subnets \u003d self._ipam_get_subnets("},{"line_number":361,"context_line":"                context, network_id\u003dport[\u0027network_id\u0027], host\u003dhost,"},{"line_number":362,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_e7f440d2","line":359,"updated":"2020-04-21 15:02:27.000000000","message":"pep8: R1719: The if expression can be replaced with \u0027bool(test)\u0027 (simplifiable-if-expression)","commit_id":"192a1f67e70625f3e346e56cc15ac41ceacf5b76"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4169238b664bae17b77b2b0cad4d593ccbddebdd","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        ovn_service_port \u003d ("},{"line_number":236,"context_line":"            port.get(\u0027device_owner\u0027) \u003d\u003d constants.DEVICE_OWNER_DHCP and"},{"line_number":237,"context_line":"            port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":238,"context_line":"        distributed_service \u003d ovn_service_port or False"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        subnets \u003d self._ipam_get_subnets("},{"line_number":241,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_c301aa3a","line":238,"updated":"2020-04-28 09:29:45.000000000","message":"and same comment here","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f93b5c6b7f07ab6137199f0dde48828d41c81124","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        ovn_service_port \u003d ("},{"line_number":236,"context_line":"            port.get(\u0027device_owner\u0027) \u003d\u003d constants.DEVICE_OWNER_DHCP and"},{"line_number":237,"context_line":"            port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":238,"context_line":"        distributed_service \u003d ovn_service_port or False"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        subnets \u003d self._ipam_get_subnets("},{"line_number":241,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_987b8826","line":238,"in_reply_to":"1f493fa4_c301aa3a","updated":"2020-04-28 14:22:31.000000000","message":"Done","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4169238b664bae17b77b2b0cad4d593ccbddebdd","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            ovn_service_port \u003d ("},{"line_number":357,"context_line":"                port.get(\u0027device_owner\u0027) \u003d\u003d constants.DEVICE_OWNER_DHCP and"},{"line_number":358,"context_line":"                port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":359,"context_line":"            distributed_service \u003d ovn_service_port or False"},{"line_number":360,"context_line":"            subnets \u003d self._ipam_get_subnets("},{"line_number":361,"context_line":"                context, network_id\u003dport[\u0027network_id\u0027], host\u003dhost,"},{"line_number":362,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_23fb2e47","line":359,"updated":"2020-04-28 09:29:45.000000000","message":"and here","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f93b5c6b7f07ab6137199f0dde48828d41c81124","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            ovn_service_port \u003d ("},{"line_number":357,"context_line":"                port.get(\u0027device_owner\u0027) \u003d\u003d constants.DEVICE_OWNER_DHCP and"},{"line_number":358,"context_line":"                port.get(\u0027device_id\u0027).startswith(\u0027ovn\u0027))"},{"line_number":359,"context_line":"            distributed_service \u003d ovn_service_port or False"},{"line_number":360,"context_line":"            subnets \u003d self._ipam_get_subnets("},{"line_number":361,"context_line":"                context, network_id\u003dport[\u0027network_id\u0027], host\u003dhost,"},{"line_number":362,"context_line":"                service_type\u003dport.get(\u0027device_owner\u0027), fixed_configured\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_f8744c38","line":359,"in_reply_to":"1f493fa4_23fb2e47","updated":"2020-04-28 14:22:31.000000000","message":"Done","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"}],"neutron/objects/subnet.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4169238b664bae17b77b2b0cad4d593ccbddebdd","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if 1 \u003c len(segment_ids) and not allow_multiple_segments:"},{"line_number":397,"context_line":"                raise segment_exc.FixedIpsSubnetsNotOnSameSegment()"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        segment_id \u003d None if not segment_ids else segment_ids[0]"},{"line_number":400,"context_line":"        return query.filter(cls.db_model.segment_id \u003d\u003d segment_id)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_e38946ca","line":399,"updated":"2020-04-28 09:29:45.000000000","message":"in case if allow_multiple_segments \u003d\u003d True, is it still good to always return first segment? Or should You choose some specific one maybe?","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f93b5c6b7f07ab6137199f0dde48828d41c81124","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if 1 \u003c len(segment_ids) and not allow_multiple_segments:"},{"line_number":397,"context_line":"                raise segment_exc.FixedIpsSubnetsNotOnSameSegment()"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        segment_id \u003d None if not segment_ids else segment_ids[0]"},{"line_number":400,"context_line":"        return query.filter(cls.db_model.segment_id \u003d\u003d segment_id)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_b8a3e49d","line":399,"in_reply_to":"1f493fa4_e38946ca","updated":"2020-04-28 14:22:31.000000000","message":"Let me think more about it and validate how it works here.\nFor now the metadata port has two IP addresses allocated.","commit_id":"42bec81783200fb625c75afaf4c9bd1197675687"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"837910cabdc677347f2c9cae51b46fe1a1379100","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if 1 \u003c len(segment_ids) and not allow_multiple_segments:"},{"line_number":397,"context_line":"                raise segment_exc.FixedIpsSubnetsNotOnSameSegment()"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        segment_id \u003d None if not segment_ids else segment_ids[0]"},{"line_number":400,"context_line":"        return query.filter(cls.db_model.segment_id \u003d\u003d segment_id)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @classmethod"},{"line_number":403,"context_line":"    def _query_filter_by_segment_host_mapping(cls, query, host):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_5801e137","line":400,"range":{"start_line":399,"start_character":8,"end_line":400,"end_character":66},"updated":"2020-04-29 14:00:45.000000000","message":"This is going to filter the subnets for segment_id.\n\nIn case of \"allow_multiple_segments\", query should not be filtered.","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"6ca8c48a194bf4f339d64ff0fc58b5127223547d","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if 1 \u003c len(segment_ids) and not allow_multiple_segments:"},{"line_number":397,"context_line":"                raise segment_exc.FixedIpsSubnetsNotOnSameSegment()"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        segment_id \u003d None if not segment_ids else segment_ids[0]"},{"line_number":400,"context_line":"        return query.filter(cls.db_model.segment_id \u003d\u003d segment_id)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @classmethod"},{"line_number":403,"context_line":"    def _query_filter_by_segment_host_mapping(cls, query, host):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f493fa4_6d0a05d2","line":400,"range":{"start_line":399,"start_character":8,"end_line":400,"end_character":66},"in_reply_to":"1f493fa4_5801e137","updated":"2020-04-30 13:33:27.000000000","message":"++, I will fix this","commit_id":"2430693edd659d970b8c35658106fdfe1a776fb0"}],"neutron/tests/unit/db/test_ipam_backend_mixin.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"93d0a9ab7d400b14f0048ffb21894c7a0767b3ff","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.mixin._get_subnet_object \u003d mock.Mock("},{"line_number":89,"context_line":"            side_effect\u003d_get_subnet_object)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test__is_distributed_service(self):"},{"line_number":92,"context_line":"        port \u003d {\u0027device_owner\u0027:"},{"line_number":93,"context_line":"                \u0027%snova\u0027 % constants.DEVICE_OWNER_COMPUTE_PREFIX,"},{"line_number":94,"context_line":"                \u0027device_id\u0027: uuidutils.generate_uuid()}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_806e5dfd","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":36},"updated":"2020-06-03 11:48:27.000000000","message":"We test only new convention here. I believe neutron services will be restarted after alembics.\n\nThe second is that no one creates a new subnet after alembics but before restart of neutron API :)","commit_id":"b987cd60df0c50e7b1d0c0534514cc20bd769455"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4f9d4bdbcc8fb472439be5a19447087cde2f3654","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_utils import uuidutils"},{"line_number":24,"context_line":"import webob.exc"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron.common import _constants"},{"line_number":27,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":28,"context_line":"from neutron.db import ipam_backend_mixin"},{"line_number":29,"context_line":"from neutron.db import portbindings_db"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf51134e_a3b84ce5","line":26,"updated":"2020-07-03 17:50:11.000000000","message":"pep8: F401 \u0027neutron.common._constants\u0027 imported but unused","commit_id":"91c1aa400a38b4e19a6481c10426db316d1520a2"}],"neutron/tests/unit/db/test_ipam_pluggable_backend.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d6af50ee9a8e90ecc0c20504d23db6b4e8380932","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        changes_mock \u003d mock.Mock(return_value\u003dchanges)"},{"line_number":717,"context_line":"        fixed_ips_mock \u003d mock.Mock(return_value\u003dchanges.add)"},{"line_number":718,"context_line":"        mocks[\u0027ipam\u0027] \u003d ipam_pluggable_backend.IpamPluggableBackend()"},{"line_number":719,"context_line":"        mocks[\u0027ipam\u0027]._get_changed_ips_for_port \u003d changes_mock"},{"line_number":720,"context_line":"        mocks[\u0027ipam\u0027]._ipam_get_subnets \u003d mock.Mock(return_value\u003d[])"},{"line_number":721,"context_line":"        mocks[\u0027ipam\u0027]._test_fixed_ips_for_port \u003d fixed_ips_mock"},{"line_number":722,"context_line":"        mocks[\u0027ipam\u0027]._update_ips_for_pd_subnet \u003d mock.Mock(return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_15db267d","line":719,"range":{"start_line":719,"start_character":50,"end_line":719,"end_character":62},"updated":"2020-07-22 09:06:03.000000000","message":"nit: This could be just \"mock.Mock(return_value\u003dchanges)\" instead of putting it first into this \"changes_mock\" variable which is used only here.","commit_id":"8d1512afb07a9a77958c44f2e7f5d47865c8a475"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"2801da47e8a84dc5c86581845f241284c6635f7f","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        changes_mock \u003d mock.Mock(return_value\u003dchanges)"},{"line_number":717,"context_line":"        fixed_ips_mock \u003d mock.Mock(return_value\u003dchanges.add)"},{"line_number":718,"context_line":"        mocks[\u0027ipam\u0027] \u003d ipam_pluggable_backend.IpamPluggableBackend()"},{"line_number":719,"context_line":"        mocks[\u0027ipam\u0027]._get_changed_ips_for_port \u003d changes_mock"},{"line_number":720,"context_line":"        mocks[\u0027ipam\u0027]._ipam_get_subnets \u003d mock.Mock(return_value\u003d[])"},{"line_number":721,"context_line":"        mocks[\u0027ipam\u0027]._test_fixed_ips_for_port \u003d fixed_ips_mock"},{"line_number":722,"context_line":"        mocks[\u0027ipam\u0027]._update_ips_for_pd_subnet \u003d mock.Mock(return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_b5423a0e","line":719,"range":{"start_line":719,"start_character":50,"end_line":719,"end_character":62},"in_reply_to":"bf51134e_15db267d","updated":"2020-07-22 09:08:56.000000000","message":"Aight, thanks. I\u0027ll fix that with new PS, if it will be needed.","commit_id":"8d1512afb07a9a77958c44f2e7f5d47865c8a475"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d6af50ee9a8e90ecc0c20504d23db6b4e8380932","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        mocks[\u0027ipam\u0027] \u003d ipam_pluggable_backend.IpamPluggableBackend()"},{"line_number":719,"context_line":"        mocks[\u0027ipam\u0027]._get_changed_ips_for_port \u003d changes_mock"},{"line_number":720,"context_line":"        mocks[\u0027ipam\u0027]._ipam_get_subnets \u003d mock.Mock(return_value\u003d[])"},{"line_number":721,"context_line":"        mocks[\u0027ipam\u0027]._test_fixed_ips_for_port \u003d fixed_ips_mock"},{"line_number":722,"context_line":"        mocks[\u0027ipam\u0027]._update_ips_for_pd_subnet \u003d mock.Mock(return_value\u003d[])"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"        port_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_f5d5d248","line":721,"range":{"start_line":721,"start_character":49,"end_line":721,"end_character":63},"updated":"2020-07-22 09:06:03.000000000","message":"ditto","commit_id":"8d1512afb07a9a77958c44f2e7f5d47865c8a475"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"df882193183f1a614e95a3e720e264e9ae154249","unresolved":false,"context_lines":[{"line_number":2000,"context_line":"            options\u003d{\u0027network_name\u0027: \u0027phys_net2\u0027},"},{"line_number":2001,"context_line":"            tag\u003d300,"},{"line_number":2002,"context_line":"            type\u003d\u0027localnet\u0027)"},{"line_number":2003,"context_line":"        segments \u003d segments_db.get_network_segments("},{"line_number":2004,"context_line":"            self.context, net[\u0027id\u0027])"},{"line_number":2005,"context_line":"        self.assertEqual(len(segments), 3)"},{"line_number":2006,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_020c39a3","line":2003,"updated":"2020-06-01 15:55:49.000000000","message":"pep8: F821 undefined name \u0027segments_db\u0027","commit_id":"fc8e009b5e478392806322243356fcf8bd62a9ee"}]}
